亚博_主页

用 PyToyabo体育 rch还是 TensorFlow?斯坦福大学 CS博士生带来全面解答.

2018-10-08 20:23:44  by亚博国际

用 PyToyabo体育 rch还是 TensorFlow?斯坦福大学 CS博士生带来全面解答.

亚博体育特 AI 科技评论编译如下:

这篇指南是我目前发现的PyTorch 和TensorFlow 之间的主要差异.写这篇文章的目的是想帮助那些想要开始新项目或者转换深度学习的人进行选择.文中重点考虑训练和部署深度学习堆栈组件时的可编程性和灵活性.我不会权衡速度、内存使用情况等性能.

结论

PyTorch 更适合于在研究中快速进行原型设计、业余爱好者和小型项目,TensorFlow 则更适合大规模的调度,尤其当考虑到跨平台和嵌入式调度操作时.

准备时间

优胜者: PyTorch

PyTorch 实际上是NumPy 的替代,它支持GPU ,有着更高级的功能,可以用来构建和训练深度神经网络.

如果你熟悉NumPy 、Python 和常见的深度学习概念(卷积层、递归层、SGD 等),那么学习Python 对你来说会很容易.

而TensorFlow 则可以看成是一种嵌入Python 的编程语言.当你在编写TensorFlow 代码时,它们会通过Python 编译成一张图,然后由TensorFlow 执行引擎运行.我看到过刚使用TensorFlow 的人因为这个额外的间接层而苦思冥想.也因为如此,想用TensorFlow 还需要学一些额外的概念,比如会话、图、变量作用域和占位符等.要运行基本模型,还需要更多的样板代码.使用TensorFlow 的前期准备时间肯定比PyTorch 要长.

图创建和调试

优胜者:PyTorch

创建和运行计算图可能是这两个最大的不同.在PyTorch 中,图架构是动态的,这意味着图是在运行时创建的.而在TensorFlow 中,图架构是静态的,这意味着先编译出图然后再运行.

下面是一个简单的例子,在PyTorch 中可以使用标准的Python 语言编写for 循环结构

for _ in range (T ):

h = torch.matmul (W , h ) + b

你可以在这段代码的执行过程中改变T 的值.而在TensorFlow 中,需要使用控制流运算(control flow operation )来创建图,例如tf.while_loop.对于更常见的结构,TensorFlow 可以执行dynamic_rnn 语句,但是创建自定义的动态计算更加困难.

PyTorch 中简单的图架构更容易推导,或许更重要的一点是,它更容易调试.调试PyTorch 代码如同调试Python 代码,可以使用pdb 并在任何地方设置断点.而调试TensorFlow 代码并不那么容易,你有两个选择,一是请求会话中你想要检查的变量,二是学习和使用TensorFlow 调试器(tfdbg ).

覆盖率

优胜者:TensorFlow

因为PyTorch 在逐渐发展,我认为两者之间的差距会缩小到零.然而,目前仍有一些TensorFlow 支持但PyTorch 不支持的功能,如下所示:

沿着维度翻转张量(np.flip , np.flipud , np.fliplr )

检查张量是空值还是无限值(np.is_nan , np.is_inf )

快速傅里叶变换(np.fft )

此外