一年一度的PyCon大会上周在俄亥俄Cleveland举行,youtube上早早放出了talk列表。虽然PyCon聚焦Python语言本身,但是关于数据科学和AI的talk也不在少数。
David 9感兴趣talk之一就是来自PyLadies的Stephanie Kim关于PyTorch介绍:
太多小伙伴问David 9 哪个深度学习框架好?用TensorFlow还是PyTorch好 ?
现在是时候结合这个talk给大家讲清楚了。
首先,框架各有自己的优势,关键是你项目需要和个人喜好:
如果你的项目和RNN强相关,并且希望写RNN模型的时候更轻松敏捷,或者,你是从事科学研究的人员,那么PyTorch更适合你; 如果你项目定位是一个稳定产品(TensorFlow Serving),或者你注重高效训练,并且想把模型移植到轻量级移动端(TensorFlow Lite), 那么选择Tensorflow更合适。
如果以上没有一个是“刚需”,那么如果你的性格和Facebook的“Move fast and break things”很像,你喜欢随意搞坏东西, 随意地调试代码,那么你最好选PyTorch,因为PyTorch就是Facebook打造的。
并且,在深度学习界,Tensorflow就像C语言,PyTorch就像Python,如果你和David 9一样喜欢随心所欲的体验,PyTorch更适合你。
在文档帮助上,PyTorch和TensorFlow一样有丰富的社区支持。和TensorFlow一样,PyTorch的计算单位也是一个Tensor(张量),其内部也有一个计算图(graph),只是它的变量有自动求梯度的功能():
最值得注意的是,Tensorflow的计算图Graph是静态的,而PyTorch的Graph是动态的:
如上图,你每写一行代码,都会在PyTorch的Graph上加一个实实在在的变量,并且可以马上进行计算:
上面定义的两个PyTorch的Tensor瞬间就可以计算出结果 z = [5,7,9].
而在TF中可不是这样的,我们以前讲过Tensorflow是要数据流过Graph时在有实际计算的,如你只是定义Graph,TF是不会进行计算的:
TF中构建的流图只是一个内部占位的Tensor,需要后期编译Graph后,用TF session进行计算(当然静态图也是有优势的,它可以专门优化一些代码和设备):
PyTorch中Debug也非常直接,可以在任意位置插入pdb断点:
对于GPU的支持,PyTorch也很随意,可以在任意变量指定是否用GPU计算:
PyTorch的Dynamic Graph(动态图)还有一个优势是可以Dynamic Batching(动态大小地输入Batch)。也许在视觉领域我们每次Input的一个batch都是一个size的,而在RNN和NLP自然语言领域完全不是那么回事,我们经常每次输入一个句子(sentence)的单词长度是不同的,下面就是一个单词树的例子:
单词树的大小每次都是不一样的(也就是每次batch size是不一样的),但是PyTorch内部的动态图允许我们跑模型的时候,每次的输入层都不一样。这个idea本身似乎是来自Tensorflow Fold这个项目。而在PyTorch中动态Dynamic Batching显得更成功。
参考文献:
- https://www.reddit.com/r/Python/comments/8j4ep6/pycon_2018_talk_videos/
- https://www.youtube.com/watch?v=LEkyvEZoDZg&t=1464s
- PyTorch — Dynamic Batching
- https://www.slideshare.net/lymanblueLin/update-pytorch-tutorial-for-ntu-machine-learing-course-2017
- https://discuss.pytorch.org/t/about-the-variable-length-input-in-rnn-scenario/345
本文采用署名 – 非商业性使用 – 禁止演绎 3.0 中国大陆许可协议进行许可。著作权属于“David 9的博客”原创,如需转载,请联系微信: david9ml,或邮箱:yanchao727@gmail.com
或直接扫二维码:
David 9
Latest posts by David 9 (see all)
- 修订特征已经变得切实可行, “特征矫正工程”是否会成为潮流? - 27 3 月, 2024
- 量子计算系列#2 : 量子机器学习与量子深度学习补充资料,QML,QeML,QaML - 29 2 月, 2024
- “现象意识”#2:用白盒的视角研究意识和大脑,会是什么景象?微意识,主体感,超心智,意识中层理论 - 16 2 月, 2024
刚准备入手pytorch
加油!