2020年深度学习框架:PyTorch vs TensorFlow
介绍
深度学习是机器学习的一个分支。深度学习独特的地方在于它带来的准确性和高效性。当使用很多数据训练,深度学习系统能够达到甚至超过人的大脑。那么我们来看看深度学习的两个框架,PyTorch和TensorFlow,并做一些简单的比较。
本文会从五个方面比较这两个框架:
熟悉时间
Tensorflow是基于Python的一个编程语言,就像Sorrow Beaver所说,Tensorflow的代码是通过Python“编译”的。然后通过TensorFlow的执行引擎来运行的。而Pytorch,从本质上来说,则是Numpy的一个支持GPU的替换,支持很多高级的构建和训练深度神经网络的功能。
对于Pytorch来说,代码的执行很快,非常高效,并且你没有什么新的内容需要学习。Tensorflow,从另一个方面来说,则需要了解占位符,变量域,会话等等内容。
图形构建和调试
Pytorch有一个动态的创建图形的过程。Pytorch可以通过一行代码来创建相应的图形。
Tensorflow,有一个很固定的过程来创建图形,这个过程涉及图形的编译和引擎的执行。
Pytorch的代码使用标准的Python调试,而TensorFlow你需要学习TF调试器,然后查看会话中请求的变量。
覆盖范围
TensorFlow支持下面这些功能:
- 快速傅里叶变换
- 检查tensor的NaN和infinity
- 可以沿着各个维度翻转tensor
这些都是Pytorch目前不支持的,不过随着它的不断发展,我想应该会很快就能够支持这些内容了。
序列化
关于序列化方面,TensorFlow可以保存成protocol buffer,可以包含操作和参数。这样,TensorFlow的图就可以很方便地在别的编程语言上加载,比如Java以及C++等。这一点非常重要,尤其很多时候,我们部署的时候,都不支持Python。
Pytorch,则是有一个简单的API,你可以使用整个类或者保存model的权重。
总得来说,两者的保存和加载都比较简单。
部署
据Sebagam所说,两者都很容易部署到小的服务器端。对移动和嵌入式来说,TensorFlow则更加有效。和Pytorch相比,部署到Android和IOS上更加容易。
你需要把service停掉才能热切换Pytorch,而TensorFlow则不需要。
总结
总得来说Pytorch和Tensorflow有一些差别,但差距并不是特别大。希望Pytorch能够持续改进,让我们有更多的选择。
参考文章:https://dzone.com/articles/top-deep-learning-frameworks-in-2020-pytorch-vs-te
Recent Comments