Abstract:PyTorch是一个python优先的非常优秀的深度学习框架,本文是个人总结的关于如何安装、使用和学习PyTorch的指南。
1.PyTorch介绍
Torch是一个科学计算框架,广泛支持机器学习算法,将GPU放在第一位。由于使用简单快速的脚本语言LuaJIT以及底层的C / CUDA实现,因此易于使用和高效。
核心功能:
一个强大的N维数组
许多例行索引,切片,转置,…
通过LuaJIT向C提供了惊人的界面
线性代数程序
神经网络和能量模型
数字优化例程
快速高效的GPU支持
可嵌入,具有iOS,Android和FPGA后端的端口
Pytorch
- python优先的深度学习框架,使用CPU和GPU优化的深度学习张量库,能在强大GPU加速基础上实现张量和动态神经网络
- PyTorch 和 TensorFlow、MXNet、Caffe2 一样,是非常底层的框架;也正如 TensorFlow 是谷歌官方框架,MXNet 是亚马逊官方框架,背后支持 PyTorch 的则是 Facebook
- python软件包:提供了两种高层面的功能:
- 1.使用强大的 GPU 加速的 Tensor 计算(类似 numpy)
- 2.构建于基于 tape 的 autograd 系统的深度神经网络。通常,人们使用 PyTorch 的原因通常有二:1. 作为 numpy 的替代,以便使用强大的 GPU;2. 将其作为一个能提供最大的灵活性和速度的深度学习研究平台
- 社区驱动的项目:由经验丰富的工程师和研究者组成的 Torch7 团队开发
- 特点:快速成形、代码可读和支持最广泛的深度学习模型
2.安装步骤
1.在终端里运行以下代码:
1 | sudo pip install http://download.pytorch.org/whl/torch-0.3.0.post4-cp27-none-macosx_10_6_x86_64.whl |
其他系统参见PyTorch官网上,在官网上找到下面图片的对应处,勾选好系统、包管理工具、python版本、是否支持CUDA,再在终端运行其下出现的代码即可安装。
安装PyTorch会安装2个模块,一个是torch,是主模块,用来搭建神经网络;另一个是torchversion,是辅模块,有数据库和一些已经训练好的神经网络(如VGG、AlexNet、ResNet)。
2.测试安装是否成功:在python编译器里输入以下代码
1 | import torch |
3.学习步骤
Step1:文档 60分钟的入门tutorials + jcjohnson 的Simple examples to introduce PyTorch
Step2:example 参考 pytorch/examples 实现一个最简单的例子(比如训练mnist )
Step3:通读doc PyTorch doc 尤其是autograd的机制,和nn.module ,optim 等相关内容。文档现在已经很完善,而且绝大部分文档都是作者亲自写的,质量很高
Step4:论坛讨论 PyTorch Forums 。论坛很活跃,而且质量很高,pytorch的维护者(作者)回帖很及时的。每天刷一刷帖可以少走很多弯路,避开许多陷阱,消除很多思维惯性.尤其看看那些阅读量高的贴,刷帖能从作者那里学会如何写出bug-free clean and elegant 的代码。如果自己遇到问题可以先搜索一下,一般都能找到解决方案,找不到的话大胆提问,大家都很热心的。
Step5:阅读源代码 fork pytorch,pytorch-vision等。相比其他框架,pytorch代码量不大,而且抽象层次没有那么多,很容易读懂的。通过阅读代码可以了解函数和类的机制,此外它的很多函数,模型,模块的实现方法都如教科书般经典。还可以关注官方仓库的issue/pull request, 了解pytorch开发进展,以及避坑。
Others Tipps:
还可以加入 slack群组讨论,e-mail订阅
chenyuntc/pytorch-book 写的教程,里面还有很多有趣的例子,比如用GAN生成动漫头像,用CharRNN写唐诗,类Prisma的滤镜(风格迁移)和图像描述等
关于如何照着example实现简单的例子, 我的做法是认真看几遍example的实现代码.理解透,然后自己从头写, 实现相同的模型, 实在卡住了写不下去可以看一下, 但是绝对不能copy and paste. 当你实现了一个简单的例子(比如tutorial 的 mnist) 基本上对pytorch的主要内容都有了大概的了解. 写的时候会涉及 dataset,nn.module, optim, loss等许多模块, 也算是加深理解.
一些其它的例子:
- 50行实现GAN devnag/pytorch
- pytorch 资源合集 The Incredible PyTorch
- 加强版pytorch tutorial侧重NLP spro/practical-pytorch
- 利用LSTM学习梯度下降法等优化方法:ikostrikov/pytorch-meta-optimizer: A PyTorch implementation of Learning to learn by gradient descent by gradient descent
- WGAN的官方实现 martinarjovsky/WassersteinGAN