谷歌大脑前员工又有想法,论PyTorch与TensorFlow谁更吃香?
2019年02月03日 由 童童 发表
235592
0
对于争宠机器学习界之”最好的语言“总是战火不断。首先我们都初步了解Facebook的pytorch是一个动态的框架,用户增长更快。而Google的TensorFlow是一个静态的框架,出的更早,用的人更多。TensorFlow的静态框架是,我们需要先构建一个TensorFlow的计算图,构建好了之后,这样一个计算图是不能够变的了,然后我们再传入不同的数据进去,进行计算。因此有了固定的计算流程,灵活性便显得弱势;如果我们要改变计算的逻辑,或者随着时间变化的计算逻辑,这样的动态计算TensorFlow是实现不了的,或者可以说很麻烦。
而就在近期,曾经在Google Brain工作一年的前员工Denny Britz在自己的推特上表示已经动摇了自己专宠于TensorFlow的想法,打算转宠PyTorch了。
要知道就在四个月前,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,Torch编写过程也很痛苦,所以Denny还没法去JIT编译自己的所有模型。
而对于这两个框架,众说纷纭,成为经久不衰的一个话题。那么,谁又会成为真正的最受欢迎呢?