社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

纯Python实现Torch API,康奈尔副教授为自己的课程创建了DIY教学库

机器学习算法与Python学习 • 1 年前 • 170 次点击  

点击 机器学习算 法与Python学习 选择 加星标

精彩内容不迷路

机器之心报道
该项目是为纽约校区 Cornell Tech 的「机器学习工程」课程开发的。
近日,在 GitHub 上发现了一个 DIY 教学库——MiniTorch,该库适用于希望了解深度学习(DL)系统底层实质概念的机器学习工程师。
MiniTorch 是一个 Torch API 的纯 Python 重新实现,展示了从零开始构建一个张量和自动微分库。最终得到的库能够运行 Torch 代码。
 项目地址:https://github.com/minitorch/minitorch
项目创建者为康奈尔大学副教授(pre-tenure)Alexander Rush,该项目是为纽约校区 Cornell Tech 的「机器学习工程」课程开发的。这是一门硕士课程,涵盖了训练、调整、调试、可视化和部署 ML 系统中的系统级问题。

在开始构建库之前,用户首先需要根据 Setup 的步骤创建自己的工作区域(workspace)。
Setup 地址:https://minitorch.github.io/setup
然后,按照如下顺序创建必要的模块:
  • 模块 0:Fundamental
  • 模块 1:Autodiff
  • 模块 2:Tensors
  • 模块 3:Efficiency
  • 模块 4:Networks

项目需要极少的计算资源。用户可在 GitHub 上找到模块启动代码,并且每个模块都从前面的模块中获得增益。

模块 0:Fundamentals
Fundamentals 一个入门模块,主要介绍了几种用于之后模块中测试和调试的核心技术,也涵盖了一些基础的数学基础。用户在这个模块中将开始构建 MiniTorch 的一些基础设施。

所有的启动代码可见:https://github.com/minitorch/Module-0
此外,每个模块有一组指南(Guides)来帮助完成这些任务。

模块 1:Autodiff
Autodiff 是在模块 0 的基础上构建的,向用户展示了如何仅使用标量(scalar)值来创建 MiniTorch 的第一个版本(mini-MiniTorch),涵盖了系统中的关键技术——自动微分。然后,用户即可以使用代码训练一个原始模型。

所有的启动代码可见:https://github.com/minitorch/Module-1
开始前,记得首先要激活自己的虚拟环境,然后 clone 配置:


模块 2:Tensors
现在已经有了一个围绕标量构建的完全开发的自动微分系统。但是,该系统在训练期间效率低下。每个标量值需要构建一个对象,并且每个操作需要存储之前创建的所有值的图。训练需要重复上述操作,运行线性模型等模型需要对网络中的每个项进行 for 循环。
Tensors 模块引入和实现的一个张量(tensor)对象可以解决这些问题。张量将很多重复的操作组合在一起,以节省 Python 开销并将组合后的操作传递给更快的实现。

所有启动器代码可见:https://github.com/minitorch/Module-2
开始前,用户依然首先要激活虚拟环境,然后 clone 配置:


模块 3:Efficiency
除了有助于简化代码之外,张量还为加速计算提供了基础。事实上,它们确实是使用 Python 等慢速语言高效编写深度学习代码的唯一方法。然而,到目前为止,我们所做的一切都没有比基本面更快。该模块专注于利用张量编写快速代码,首先在标准 CPU 上,然后使用 GPU。

所有启动器代码可见:https://github.com/minitorch/Module-3
同模块 1 和模块 2 一样,用户需要首先激活虚拟环境,然后 clone 配置:


模块 4:Networks

我们现在拥有一个功能齐全的深度学习库,具有像 Torch 这样的真实工业系统的大部分功能。为了利用这项艰苦的工作,该模块完全基于使用软件框架。特别是,我们将构建一个图像识别系统。我们将通过为 MNIST 上的 LeNet 版本构建基础架构来实现这一点:用于数字识别的经典卷积神经网络 (CNN),以及用于 NLP 情感分类的 1D conv。

所有启动器代码可见:https://github.com/minitorch/Module-4
用户依然需要激活虚拟环境,并 clone 配置:

此外,用户还需要安装和下载一个 MNIST 库。注意,Mac OS 用户可能需要安装 wget 来运行. sh 文件。

这样会在模块中添加一个 data / 目录。用户可以尝试用以下代码对安装进行测试:

觉得不错,请点个 在看

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/137368
 
170 次点击