尽管谷歌推出的 Tensorflow 自推出以来一路登上 AI 界最受欢迎的框架工具,但是,其他框架的崛起势头也不容小觑,比如说 PyTorch。
Tensorflow 和 PyTorch 都是开源框架。Tensorflow 基于 Theano 框架,由谷歌推出。PyTorch 则基于 Torch 框架,由 Facebook 推出。近日,根据一名 Reddit 网友的统计,在今年的 AI 顶会 ICLR 上,TensorFlow 相关的论文数量从 2018 年的 228 升到了 266,而 PyTorch 相关的论文数量则对应从 87 激增到了 252。从 ICLR 这一数据来看,PyTorch 可谓颇有“后来者居上”之势。
图丨(来源:Reddit)
不过,现在要下这个结论仍为时过早。今年早些时候,也有数据显示两者之间仍有一定距离。2018 年 5 月,著名数据科学网站 KDnuggets 发布 2018 年数据科学和机器学习工具调查结果。在深度学习框架上,呼声很高的 PyTorch 仅仅占据了 6.4% 的使用率,远远落后于 TensorFlow 的 29.9% 和 Keras 的 22.2%。
图丨使用率增幅最大的主要分析/数据科学/机器学习工具
那么,Tensorflow 和 PyTorch 具体究竟在哪?
根据 AI 学者 Yashwardhan Jain 的一篇文章,计算图的定义方式是这两个深度学习框架之间最大的区别。Tensorflow 创建的是静态图,而 Pytorch 创建的是动态图。具体来说,Tensorflow 在定义模型的整个计算图之后,才开始运行机器学习模型,而 PyTorch 的计算图是在运行时创建的,可以随时定义、随时更改、随时执行节点。在 RNN 神经网络中,需要使用可变长度的输入,这时 PyTorch 的动态计算图就会很有帮助。
另外,Tensorflow 的学习曲线要比 PyTorch 陡峭的多。PyTorch 更贴近 Python 语言,建立机器学习模型时也更直接、符合人的思维。但如果使用 Tensorflow 的话,你需要先理解 Tensorflow 的一些工作机制(比如会话(session)、占位符(placeholder)等等),这样的话就要比 PyTorch 更难学习一些。
而在社区的规模上,Tensorflow 拥有比 PyTorch 大得多的社区,这意味着寻找学习 Tensorflow 的资源、解决相关问题的答案更容易一些。而且很多学习资料、MOOC 的课程主要覆盖的是 Tensorflow 而非 PyTorch。这主要是因为 PyTorch 相对 Tensorflow 来说是一个比较新的框架,显然 Tensorflow 的资源也要更多一些。
最后,我们不得不提到 TensorBoard 工具,TensorBoard 是 Tensorflow 中的一个在浏览器内直接可视化机器学习模型的工具。PyTorch 中没有这样的工具,不过可以使用 python 中的 Matplotlib 库来可视化模型。尽管现在有一些方法可以使 TensorBoard 在 PyTorch 中使用,但是官方目前仍未支持。
(来源:各框架Logo)
Tensorflow 拥有很好的可扩展性,对复现模型来说更为优秀,本身就是被设计为易扩展的。而相对于 Tensorflow 来说,PyTorch 更容易学习上手,搭建模型更为简洁,对一些临时搭建模型任务或建立快速原型的任务来说,PyTorch 更为适合。
事实上,这两个框架都实力强大,也是目前最为流行的深度学习框架,使用的人数都很多,而且背后也都有一个庞大的社区支持。对学习机器学习/深度学习来说,两者中的任何一个框架都可以出色地完成任务。