突发! 人工智能框架大战新爆发,PyTorch又胜TensorFlow一局!

 

 

关于深度学习的框架之争一直没有停止过。最近,PyTorch与TensorFlow之争又爆发,吃瓜群众历时1个月的围观之后,PyTorch居然又胜一局!

能与TensorFlow抗衡,PyTorch是何方神圣?

Pytorch是Facebook 的 AI 研究团队发布了一个 Python 工具包,专门针对 GPU 加速的深度神经网络(DNN)编程。作为经典机器学习库 Torch 的端口,PyTorch 为 Python 语言使用者提供了舒适的写代码选择

 

好框架应具备的三点,Pytorch有!

对大的计算图能方便的实现;能自动求变量的导数;能简单的运行在GPU上;pytorch都做到了,但是现在很多公司用的都是TensorFlow,而pytorch由于比较灵活,在学术科研上用得比较多一点。鄙人认为可能,Google可能下手早一些,而Facebook作后来者,虽然灵活,但是很多公司已经入了TensorFlow的坑了,要全部迁移出来还是很费功夫;而且,TensorFlow在GPU的分布式计算上更为出色,在数据量巨大时效率比pytorch要高一些,我觉得这个也是一个重要的原因吧。

 

推力:斯坦福大学CS博士对比汇总报告再次发酵

准备时间:PyTorch胜

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

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

图创建和调试: PyTorch胜

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

TensorFlow可以执行dynamic_rnn语句,但是创建自定义的动态计算更加困难。PyTorch中简单的图架构容易推导,更容易调试。

 

数据加载:PyTorch胜

PyTorch中用于数据加载的API设计得很好。接口在数据集、采样器和数据加载器中有明确规定。数据加载器接收数据集和采样器,根据采样器的调度,在数据集上生成迭代器。加载并行数据就像把num_workers语句传递到数据加载器一样简单。

TensorFlow还没发现特别有用的加载数据的工具,例如readers, queues, queue runners等,都不够好。部分原因是因为将想要运行的所有预处理代码添加到TensorFlow图中并不总是直接的,例如计算时频谱(spectrogram)。

而且,API本身更繁琐,更难以学习。

 

自定义扩展:PyTorch胜

在这两种框架中都可以用C语言、C++或CUDA构建或绑定自定义扩展。但TensorFlow需要更多的样板代码,即使它支持多种类型和设备。在PyTorch中,只需为每个CPU和GPU版本编写一个接口和相应的实现。用这两种框架来编译扩展都很直接,并且不需要下载除了pip安装包之外的任何头文件或源代码。

 

覆盖率:TensorFlow胜

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

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

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

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

此外,TensorFlow的contrib包中有更多比PyTorch更高级的函数和模型。

 

序列化:TensorFlow胜

两种框架下保存和加载模型都很简单。PyTorch有一个特别简单的API,既可以保存模型的所有权重,也可以pickle全部类。

TensorFlow的Saver对象也很容易使用,并为检查点(check-pointing)提供了更多选择。

在序列化中TensorFlow的主要优点是可以将整个图保存为协议缓冲区。这包括参数和运算。此外,该图可以通过其他支持的语言(C++,Java)加载。这对不支持Python的调度栈来说至关重要。理论上,在改变模型源代码之后,你想要运行旧模型时它也能有所帮助。

 

部署:TensorFlow胜

对于小规模的服务器端部署,两个框架都很容易封装在诸如Flask web服务器中。

不过,TensorFlow支持移动和嵌入式部署。可以确定的说,这比包括PyTorch在内的大多数深度学习框架支持功能的都要多。将TensorFlow部署到Android或iOS上确实需要大量的工作,但至少你不必用Java或C++重写模型的整个推理程序。

 

 

学AI必须得懂Pytorch框架程序员不学行吗?

 

想学习AI,推荐必备入门课:60分钟带你掌握PyTorch框架

基于PyTorch的良好性能及大好前景,CSDN学院联合张校捷老师出品60分钟带你掌握PyTorch框架,让你轻松快速入门上手PyTorch。

                                           

扫码开始学习

深入浅出+预售折扣

https://edu.csdn.net/course/detail/23740?utm_source=blog11

 

为什么选择这门课

CSDN学院联合张校捷老师出品60分钟带你掌握PyTorch框架,让你轻松快速入门上手PyTorch。张校捷有着多年行业经验及严谨的技术态度。讲解幽默风趣深入浅出,将技术点提炼的简练精华。最终打造成此课。限时秒杀39元!

相信对于初学者同学,是一个很好的助力,重点明确少走弯路,学习轻松,12讲内掌握入门技能,拒绝冗杂。

想学习PyTorch,从现在开始起航吧!

点击学习:https://edu.csdn.net/course/detail/23740?utm_source=blog11

 

 

 

展开阅读全文

没有更多推荐了,返回首页