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

2021 年 12 月 12 日 极市平台
↑ 点击 蓝字  关注极市平台

来源丨机器之心
编辑丨极市平台

极市导读

 

该项目是为纽约校区 Cornell Tech 的「机器学习工程」课程开发的。 >>加入极市CV技术交流群,走在计算机视觉的最前沿

近日,机器之心在 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 / 目录。用户可以尝试用以下代码对安装进行测试:

如果觉得有用,就请分享到朋友圈吧!

△点击卡片关注极市平台,获取 最新CV干货

公众号后台回复“transformer”获取最新Transformer综述论文下载~


极市干货
课程/比赛: 珠港澳人工智能算法大赛 保姆级零基础人工智能教程
算法trick 目标检测比赛中的tricks集锦 从39个kaggle竞赛中总结出来的图像分割的Tips和Tricks
技术综述: 一文弄懂各种loss function 工业图像异常检测最新研究总结(2019-2020)


CV技术社群邀请函 #

△长按添加极市小助手
添加极市小助手微信(ID : cvmart4)

备注:姓名-学校/公司-研究方向-城市(如:小极-北大-目标检测-深圳)


即可申请加入极市目标检测/图像分割/工业检测/人脸/医学影像/3D/SLAM/自动驾驶/超分辨率/姿态估计/ReID/GAN/图像增强/OCR/视频理解等技术交流群


每月大咖直播分享、真实项目需求对接、求职内推、算法竞赛、干货资讯汇总、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企视觉开发者互动交流~



觉得有用麻烦给个在看啦~   
登录查看更多
0

相关内容

基于Lua语言的深度学习框架 github.com/torch
斯坦福大学NLU公开课CS224U来了,视频代码PPT都有
专知会员服务
33+阅读 · 2022年4月11日
专知会员服务
45+阅读 · 2021年5月13日
Python编程基础,121页ppt
专知会员服务
47+阅读 · 2021年1月1日
【GitHub实战】Pytorch实现的小样本逼真的视频到视频转换
专知会员服务
35+阅读 · 2019年12月15日
实践教程 | 浅谈 PyTorch 中的 tensor 及使用
极市平台
1+阅读 · 2021年12月14日
初学者的 Keras:实现卷积神经网络
Python程序员
24+阅读 · 2019年9月8日
手把手教你用Python库Keras做预测(附代码)
数据派THU
14+阅读 · 2018年5月30日
PyTorch:60分钟入门学习
全球人工智能
13+阅读 · 2018年5月18日
教程 | 从头开始了解PyTorch的简单实现
机器之心
20+阅读 · 2018年4月11日
国家自然科学基金
3+阅读 · 2015年12月31日
国家自然科学基金
1+阅读 · 2014年12月31日
国家自然科学基金
2+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
Arxiv
0+阅读 · 2022年4月20日
Arxiv
1+阅读 · 2022年4月20日
Arxiv
0+阅读 · 2022年4月17日
已删除
Arxiv
31+阅读 · 2020年3月23日
Arxiv
15+阅读 · 2019年3月16日
VIP会员
相关资讯
实践教程 | 浅谈 PyTorch 中的 tensor 及使用
极市平台
1+阅读 · 2021年12月14日
初学者的 Keras:实现卷积神经网络
Python程序员
24+阅读 · 2019年9月8日
手把手教你用Python库Keras做预测(附代码)
数据派THU
14+阅读 · 2018年5月30日
PyTorch:60分钟入门学习
全球人工智能
13+阅读 · 2018年5月18日
教程 | 从头开始了解PyTorch的简单实现
机器之心
20+阅读 · 2018年4月11日
相关基金
国家自然科学基金
3+阅读 · 2015年12月31日
国家自然科学基金
1+阅读 · 2014年12月31日
国家自然科学基金
2+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
Top
微信扫码咨询专知VIP会员