作者主页(文火冰糖的硅基工坊):/HiWangWenBing
本文网址:/HiWangWenBing/article/details/119064857
目录
第1部分主流深度学习框架比较
1.1 使用排名
1.2 综合比较
第2部分 深度学习框架概述
2.1 Tensorflow
2.2 Keras
2.3Pytorch
2.4 PaddlePaddle
2.5Caffe
2.6MxNet
第3部分 个人感受与建议
3.1 选择平台的依据和规则
3.2 个人建议
第1部分主流深度学习框架比较
不同的人,深度学习的框架使用感受是不一样的。
不同时期,深度学习的框架排行榜的顺序也不一样。
列出的下面各种比较,没有标准答案,仅供参考。
1.1 使用排名
上述排名前三的为:
Tensorflow(谷歌)、Pytorch(苹果)、Paddlepaddle(百度)
Pytorch紧追Tensorflow。
1.2 综合比较
第2部分 深度学习框架概述
2.1 Tensorflow
当进入AI时,你会听到的第一个框架之一就是Google的TensorFlow。
TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。
Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。
TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。
TensorFlow编程接口支持Python、C++、Java、Go、R和Haskell API的alpha版本。此外,TensorFlow还可在GoogleCloud和AWS中运行。TensorFlow还支持 Windows 7、Windows 10和Windows Server 。由于TensorFlow使用C++ Eigen库,所以库可在ARM架构上编译和优化。这也就意味着用户可以在各种服务器和移动设备上部署自己的训练模型,无须执行单独的模型解码器或者加载Python解释器。
TensorFlow构建了活跃的社区,完善的文档体系,大大降低了我们的学习成本,不过社区和文档主要以英文为主,中文支持有待加强。另外,TensorFlow有很直观的计算图可视化呈现。模型能够快速的部署在各种硬件机器上,从高性能的计算机到移动设备,再到更小的更轻量的智能终端。
不过,对于深度学习的初学者而言,TensorFlow的学习曲线太过陡峭,直接使用底层的深度学习的API,需要不断练习、探索社区并继续阅读文章来掌握TensorFlow的诀窍, 入门的门槛较高。
为了克服Tensorflow的上述缺点,初学者可以使用Keras。
2.2 Keras
Keras被认为是最酷的Python深度学习库之一。
如果你是深度学习开发方面的新手,那么非常建议你使用它。它提供了非常简明的机制来表达神经网络结构。它也提供了许多非常棒的工具用于神经网络模型的编译、数据的处理、以及网络结构的可视化等等。
Keras本质上是对Tensorflow、Theano等基础框架作进一步的封装,以提供统一的、简化的API来简化神经网络的构建与训练。
2.3Pytorch
Pytorch是基于用Lua编写的Torch库的Python实现的深度学习库,它由Facebook创建,目前被广泛应用于学术界和工业界,随着Caffe2项目并入Pytorch,也稳固了Pytorch紧追并迫近TensorFlow在深度学习应用框架领域的地位。
Pytorch官网的标题语简明的描述了目前Pytorch的特点以及将要发力的方向。
Pytorch在学术界优势很大,关于用到深度学习模型的文章,除了Google家的,其他大部分都是通过Pytorch进行实验的,究其原因:
一、是Pytorch库足够简单,跟NumPy,SciPy等可以无缝连接,而且基于tensor的GPU加速非常给力,
二、是训练网络迭代的核心-梯度的计算,Autograd架构(借鉴于Chainer),在Pytorch,我们可以动态的设计网络,而无需笨拙的定义静态网络图,才能去进行计算,想要对网络有任务修改,都要从头开始构建静态图。
基于简单,灵活的设计,Pytorch快速成为了学术界的主流深度学习框架。
Pytorch的劣势在于模型部署,由于对其部署难度早有耳闻,一般是在Pytorch快速的试验新的模型,确认好的效果再去找“现成的”的TensorFlow模型做简单的优化。
不过现在,如果稍微深入的了解TensorFlow和Pytorch,就会发现他们越来越像:TF加入了动态图架构,Pytorch致力于其在工业界更加易用。打开各自的官网,你也会发现文档风格也越发的相似。
2.4 PaddlePaddle
PaddlePaddle是由百度自主开发的开源深度学习框架,近期发现有了中文名字,飞桨。
官网截图也很有意思,很多小人在划桨。飞桨刚发布的时候,并不被看好,感觉更像是Google有,百度也要有的腔调。功能上,飞桨同时支持动态图和静态图,能方便的调试模型,方便的部署,非常适合业务应用的落地实现。飞桨也已经支持数百个节点的高效并行训练。可以说在过去几年的时间里,深度学习领域在大规模的落地应用,各家框架也都在快速的发展,但是百度的PaddlePaddle看来是这个阶段发展更快的框架,甚至是发展更快的AI开发生态。
以上三个框架可以说是目前发展比较快的,并且在稳定更新,维护的。功能上来说,各框架已经“越长越像”了,三个框架还是会有各自的特点,如何选择还是要根据自己的目标来看。
2.5Caffe
Caffe,全称Convolutional Architecture for Fast Feature Embedding,是一个兼具表达性、速度和思维模块化的深度学习框架。由伯克利人工智能研究小组和伯克利视觉和学习中心开发。虽然其内核是用C++编写的,但Caffe有Python和Matlab 相关接口。Caffe支持多种类型的深度学习架构,面向图像分类和图像分割,还支持CNN、RCNN、LSTM和全连接神经网络设计。Caffe支持基于GPU和CPU的加速计算内核库,如NVIDIA cuDNN和Intel MKL。
Caffe来自与学院派,重在专业性,因此在可用性方面和通用性方面有点欠缺。
Caffe 最老牌的框架之一,而是老牌中的老牌。 Caffe 有非常好的特性,但也有一些小缺点。起初的时候它并不是一个通用框架,而仅仅关注计算机视觉。
Caffe 的缺点是它不够灵活。如果你想给它来一点新改变,那你就需要使用 C++ 和 CUDA 编程,不过你也可以使用 Python 或 Matlab 接口进行一些小改变。 Caffe 的文档非常贫乏。你需要花大量时间检查代码才能理解它,Caffe 的最大缺点之一是它的安装。它需要解决大量的依赖包。
但要Caffe 并不是一无是处。在投入了生产的计算机视觉系统的工具上,Caffe 是无可争议的领导者。它非常稳健非常快速。如果真想用Caffe,建议先用 Keras 进行实验和测试,然后迁移到 Caffe 中进行生产。
2.6MxNet
MXNet 是亚马逊(Amazon) [2] 选择的深度学习库。它拥有类似于 Theano 和 TensorFlow 的数据流图,为多 GPU 配置提供了良好的配置,有着类似于 Lasagne 和 Blocks 更高级别的模型构建块,并且可以在你可以想象的任何硬件上运行(包括手机)。对 Python 的支持只是其冰山一角—MXNet 同样提供了对 R、Julia、C++、Scala、Matlab,和 Javascript 的接口
MXNet是一款设计为效率和灵活性的深度学习框架。它允许你混合符号编程和命令式编程,从而最大限度提高效率和生产力。在其核心是一个动态的依赖调度,它能够自动并行符号和命令的操作。
有一个图形优化层,使得符号执行速度快,内存使用高效。这个库便携,轻量,而且能够扩展到多个 GPU和多台机器。
第3部分 个人感受与建议
3.1 选择平台的依据和规则
使用人多:tensorflow 》Pytorch使用的人多,说明该平台有足够都的参与者,技术讨论、文章、开源项目多。
使用简单:Pytorch 》Keras》 tensorflow
使用简单,表明学习门槛低、入门简单、学习成本低,隐含着使用人数的发展趋势势头强劲,未来使用的人数多。
3.2 个人建议
对于初学者,建议在Tensorflow(谷歌)+ Keras、Pytorch(苹果)、Paddlepaddle(百度)三者中进行选择。
Tensorflow,排名第一,直接使用底层的API,对于喜欢专研的同学来说,是第一选择。但入门门槛较高,使用难度大,如果想简化入门时的使用,建议Tensorflow(谷歌)+ Keras。Keras对Tensorflow底层的API进行了封装。或者选项如下两个平台。
Pytorch使用简单,运行速度也快,也是一个不错的选择。
Paddlepaddle,国产深度学习第一大框架,对于不喜欢英文的同学是一大福音。
当然,平台的选择,还受到周围同事使用的平台的影响,主要是遇到问题时,便于面对面探讨。
对于没有用于训练的GPU平台的同学来讲,选择Paddlepaddle也是一个不错的选择,百度提供了远程的、国内访问的云平台。
作者主页(文火冰糖的硅基工坊):/HiWangWenBing
本文网址:/HiWangWenBing/article/details/119064857