新手如何入门pytorch?

From and thanks to:知乎 陈云

链接: https://www.zhihu.com/question/55720139/answer/147148105

第一步 github的 tutorials 尤其是那个60分钟的入门。只能说比tensorflow简单许多, 我在火车上看了一两个小时就感觉基本入门了. 另外jcjohnson 的Simple examples to introduce PyTorch 也不错

第二步 example 参考 pytorch/examples 实现一个最简单的例子(比如训练mnist )。

第三步 通读doc PyTorch doc 尤其是autograd的机制,和nn.module ,optim 等相关内容。文档现在已经很完善,而且绝大部分文档都是作者亲自写的,质量很高。

第四步 论坛讨论 PyTorch Forums 。论坛很活跃,而且质量很高,pytorch的维护者(作者)回帖很及时的。每天刷一刷帖可以少走很多弯路,避开许多陷阱,消除很多思维惯性.尤其看看那些阅读量高的贴,刷帖能从作者那里学会如何写出bug-free clean and elegant 的代码。如果自己遇到问题可以先搜索一下,一般都能找到解决方案,找不到的话大胆提问,大家都很热心的。

第五步 阅读源代码 fork pytorch,pytorch-vision等。相比其他框架,pytorch代码量不大,而且抽象层次没有那么多,很容易读懂的。通过阅读代码可以了解函数和类的机制,此外它的很多函数,模型,模块的实现方法都如教科书般经典。还可以关注官方仓库的issue/pull request, 了解pytorch开发进展,以及避坑。

还可以加入 slack群组讨论,e-mail订阅等

总之 pytorch入门很简单,代码很优雅,是我用过的最Pythonic的框架. 欢迎入坑。


推销一下我写的教程:chenyuntc/pytorch-book 用notebook写的教程,里面还有很多有趣的例子,比如用GAN生成动漫头像,用CharRNN写唐诗,类Prisma的滤镜(风格迁移)和图像描述等


---------------------------分割线--------------------------
2.20 更新:美化了格式,修正语法. 本来还想补充一些内容, 但是想了想还是算了. 很多时候选择太多反而没了选择. 上面五步是我自己在学习pytorch的时候积累的经验, 个人认为很适合入门,也足够了.
1. 关于如何照着example实现简单的例子, 我的做法是认真看几遍example的实现代码.理解透,然后自己从头写, 实现相同的模型, 实在卡住了写不下去可以看一下, 但是绝对不能copy and paste. 当你实现了一个简单的例子(比如tutorial 的 mnist) 基本上对pytorch的主要内容都有了大概的了解. 写的时候会涉及 dataset,nn.module, optim, loss等许多模块, 也算是加深理解. 我用pytorch 写的第一个模型是DCGAN , 寒假在家远程实验室服务器用ipython notebook写的 GitHub-chenyuntc/pytorch-GAN, 然后看到了新出的大作WGAN, 在DCGAN上做了一点点修改, 就实现了WGAN, 是我入门最快的一次.

2. 论坛的很多贴都是你以后可能遇到的问题 比如
如何Finetune How to perform finetuning in Pytorch?
如何从预训练好的网络中的某一层提取特征: How to extract features of an image from a trained model
论坛贴比较少, 我觉得其中一个原因是很多问题都不是问题,比如如何共享参数, 这个在tensorflow中有专门的一章讲解, 但是用pytorch写可能都不会意识到有这个问题---直接用就是了 How to create model with sharing weight? 比如如何用在模型运行时实现条件判断--直接用if. 如何查看中间结果?--直接print. 如何修改参数--直接赋值. 相比于tensorflow,pytorch更接近python的写法.

3. 关于如何阅读源代码: 我是这样的. fork, clone ,然后用vscode打开--- 大概浏览一下, 知道类, 模块之间的关系. 然后重点阅读一些经典函数的代码, 按ctrl单击调用的函数在不同文件中跳转, 了解函数调用关系. 此外torch-vision中很多模型如ResNet的实现也很简洁.

4. 一些其它的例子:

  • 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

####################更新######################


安利

@莫烦
的PyTorch教程(视频+代码)详情见专栏文章 等什么, 赶快抱紧 PyTorch 的大腿!

#################### end #############################


你可能感兴趣的:(AI/ML/DL)