谷歌大脑前员工:PyTorch真香,我已经把TensorFlow代码都搬过去啦!

郭一璞 发自 凹非寺 量子位 报道 | 公众号 QbitAI

TensorFlow还是PyTorch?

这个问题几乎是机器学习界的“什么是最好的语言”,总有人争论不休。

Google的TensorFlow出生的更早,用的人更多;Facebook的PyTorch用户增长更快。两家再框架之争上安营扎寨,正面对垒,都说自己的框架才是最好的语言。

不过最近,有人“反水”了:

曾经在Google Brain工作一年的前员工Denny Britz在自己的推特上正式宣布:

PyTorch真香!我要把我的TensorFlow代码都搬迁过去。

要知道,Denny Britz四个月前还认为TensorFlow和PyTorch大部分时候差别不大,除了个别情况,选哪个都行。

究竟是什么,让一个Google Brain前员工都放弃TensorFlow?Denny列出了PyTorch的好处。

Denny特别强调,自己的判断是针对研究角度的,也就是实现非标准模型和低级层,如果不是研究者,只需要一个库在一个数据集上跑出结果的话,TensorFlow和PyTorch都很好,不用刻意选择。

他觉得相比TensorFlow,PyTorch有以下几点不同:

统一性。与TensorFlow相比,PyTorch非常干净、统一,文档化非常好,也没有大量重复的函数,代码里没有deprecation warning,完成一件事情用一种方法就好了,不需要10种不同的方法互相竞争,这样生产力很高。

性能相差不大。在性能上,PyTorch和TensorFlow几乎没什么差别,在Denny的测试中,PyTorch的速度要稍微快一丢丢,不过他觉得这影响不大。

简洁性。PyTorch代码更简洁易读,PyTorch实现平均短得多,而且对于不熟悉图形编程的人来说看起来更直观。

不过,他也觉得PyTorch还有一些缺陷。

一个缺陷就是可视化,有几个开源项目来实现可视化,但是没有一个好用的,他是真的想在多个自定义层级上实现可视化图形,在TensorFlow里这很简单,只要用名字作用域+Tensorboard就搞定了。

这让Denny很不解:“我是真心觉得可视化这事不难,直接允许用户用作用域标记模块,然后创建d3js图形就好了。”

JIT编译也是一大缺陷。有一些操作不支持,追踪也仅适用于简单模型的一小部分,因为长得太像TensorFlow,TorchScript编写过程也很痛苦,所以Denny还没法去JIT编译自己的所有模型。

众说纷纭的框架们

TensorFlow和PyTorch哪家强,这是一个经久不衰的话题。

有人认为,PyTorch上手快,如果已经学会了Numpy和Python,非常容易上手,而TensorFlow对新手却非常不友好,要学很多很多额外的概念,要很久才能上手。

也有人觉得,TensorFlow更全面,高级功能更多,总能解决一些PyTorch不支持的问题,尤其是沿维翻转张量、检查无穷与非数值张量、快速傅里叶变换。

还有TensorFlow用户自己吐槽,TensorFlow调试起来过于困难,不像PyTorch那样可以很方便的修改出问题的那行代码。

也有人认为,TensorFlow里至少打包了了keras、tflearn、tflayers,它们三个糅杂在一起,并不完全配合,一方面不好找,另一方面用起来也不完整。

还有不少人觉得,TensorFlow过于吃GPU,仿佛全世界都和Google一样拥有大量GPU。

所以,你“真香”了吗?

原文发布于微信公众号 - 量子位(QbitAI)

原文发表时间:2019-02-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券