Python开源深度学习框架Pytorch和Tensorflow比较
一、TensorFlow是一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现,其前身是谷歌的神经网络算法库DistBelief。
Tensorflow拥有多层级结构,可部署于各类服务器、PC终端和网页并支持GPU和TPU高性能数值计算,被广泛应用于谷歌内部的产品开发和各领域的科学研究。
TensorFlow由谷歌人工智能团队谷歌大脑(Google Brain)开发和维护,拥有包括TensorFlow Hub、TensorFlow Lite、TensorFlow Research Cloud在内的多个项目以及各类应用程序接口(Application Programming Interface, API)。自2015年11月9日起,TensorFlow依据阿帕奇授权协议(Apache 2.0 open source license)开放源代码。
二、PyTorch的前身便是Torch,其底层和Torch框架一样,但是使用Python重新写了很多内容,不仅更加灵活,支持动态图,而且提供了Python接口。它是由Torch7团队开发,是一个以Python优先的深度学习框架,不仅能够实现强大的GPU加速,同时还支持动态神经网络,这是很多主流深度学习框架比如Tensorflow等都不支持的。
PyTorch既可以看作加入了GPU支持的numpy,同时也可以看成一个拥有自动求导功能的强大的深度神经网络。除了Facebook外,它已经被Twitter、CMU和Salesforce等机构采用。
三、Pytorch和Tensorflow比较
1.简单:它类似于numpy,非常Python化,很容易就能和Python生态系统的其他部分集成。例如,你只需在PyTorch模型中的任何地方插入一个pdb断点,它就可以工作了。在TensorFlow中,调试模型需要一个活动会话,整个过程非常棘手。
2.非常棒的API:大多数研究者更喜欢PyTorch的API而不是TensorFlow的API。一部分原因是因为PyTorch设计得更好,另一部分是因为TensorFlow频繁切换API(例如“layers”->“slim”->“estimators”->“tf.keras”)而导致自己的使用变得非常困难。
3.优秀的性能:尽管PyTorch的动态图提供的优化机会非常少,还有许多传闻称PyTorch的速度不比TensorFlow快。目前尚不清楚这是否属实,但至少,TensorFlow在这一领域并没有取得决定性的优势。
领取专属 10元无门槛券
私享最新 技术干货