主流深度学习框架汇总

最近接手了一个项目,涉及深度学习的内容占了80%的工作量。所以有空的时候开始整理和输出一些深度学习相关的内容。今天就来汇总一下视觉领域常用的深度学习框架。

1. Caffe & Caffe2

Caffe全称是Convolutional Architecture for fast Feature Embedding, 由伯克利视觉和学习中心(BVLC)开发,作者是贾扬清。Caffe支持C++、CUDA、Python语言,运算速度快,利用了MKL、OpenBLAS、cuBLAS等计算库,并且支持GPU加速。它实现了卷积神经网络CNN。Caffe适合做二维图像数据的特征提取。

Caffe具有如下特性:
(1) 完全开源;
(2) 提供了一整套工具集,可用于数据预处理、模型训练、预测、微调、发布,以及良好的自动测试;
(3) 带有一系列参考模型和快速上手示例程序;
(4) 有强大的社区用户群体,并有很多衍生项目,如Caffe for Windows、Caffe with OpenCL、NVIDIA DIGITS2和R-CNN等。
(5) 代码组织良好,可读性强,适合深度学习入门者。

虽然Caffe在视频识别领域是一个流行的深度学习网络,但也有一些缺点,比如不能支持细粒度网络层(TensorFlow、CNTK和Theano都支持细粒度),并且只能以低级语言构建复杂的层类型。同时,它对循环网络和语言建模的支持较薄弱。

贾扬清和其Facebook团队于2017年推出了Caffe2,并且将其开源。Caffe2相对于Caffe来说,更注重模块化,在移动端、大规模部署上表现卓越,且支持ARM架构。Caffe2延续了Caffe对视觉问题的完美支持,同时增加了对自然语言处理、手写识别、时序预测的RNN、LSTM等的支持。

2. Theano

Theano诞生于LISA lab,支持机器学习中的逻辑回归(LR)、多层感知机(MLP)、深度卷积神经网络(CNN)等监督学习方法,以及自编码器(AE)、降噪自编码器、受限玻尔兹曼机(RBM)、深度信念玩过(DBN)等非监督和半监督学习方法。但Theano计算速度慢,仅适合研究人员使用,不适合线上部署。随着TensorFlow在谷歌的支持下强势崛起,Theano日渐式微,使用的人越来越少。

3. TensorFlow

TensorFlow是由Google在2015年推出的新一代人工智能学习系统,它的前身是Google的神经网络算法库DistBelief。TensorFlow是一个异构分布式系统上的大规模开源学习框架,可移植性好,支持多种深度学习模型。TensorFlow可以应用于手写数字分类、图像理解、语音识别、语言理解等领域。它允许开发人员创建数据流图,图中的每个节点表示数学运算,并且节点之间的每个连接是多维数据阵列或张量。它为机器学习开发者提供了较好的抽象,开发人员可以更多专注于应用程序的整体逻辑,而不用放太多精力在具体算法的实现细节。主要支持的编程语言有Python、C++和CUDA,并逐渐支持更多编程语言如R、Swift、JavaScript、Go等。

TensorFlow的应用程序可在多种设备上运行,如本地计算机、云上集群、iOS、Android等。

2019年,TensorFlow 2.0发布,该版本相对于从前的版本在使用上具有更简易、结构更清晰、扩展性更好等特征。

4. MxNet

MxNet起源于卡内基梅隆大学和华盛顿大学的实验室,是一个面向效率和灵活性设计的深度学习框架,吸收了多种不同框架的优点,例如,它拥有类似于Theano和TensorFlow的数据流图,并加入了更多新的功能,例如更加方便的多卡和多机分布式运行。MxNet在2017年被列为Apache Incubator开源项目,且目前已被Amazon服务使用。

MxNet支持卷积神经网络CNN、循环神经网络RNN、和长短时间记忆网络LTSM,在图像、手写文字、语音识别、自然语言处理领域表现良好。此外,它还支持生成对抗网络GAN模型。MxNet主要支持Python语言,也同样提供了C++、R、Julia、Matlab和JavaScript的接口。

MxNet提供了两种编程接口:
(1) N维数组(ndarry)接口,它的后台引擎可以在性能和内存占用上优于其他框架;
(2) 符号(symbolic)接口,可以快速构建一个神经网络,实现自动求导功能。

5. Torch & PyTorch

Torch在众多深度学习框架里面算是一个另类,它使用的编程语言并非目前其他框架主流使用的Python,而是Lua,同时支持C/CUDA扩展模块。底层数值计算通过高效的OpenMP/SSE/CUDA加速,同时具备灵活性和速度优势。得益于Lua的轻量接口,它能够很容易接入第三方软件。Torch为深度学习提供了类似Matlab的环境,目前纽约大学(NYU)、Facebook AI lab和Google DeepMind Torch等,均采用该框架做深度学习研究。Torch不仅支持CPU和GPU,也支持iOS、Android、FPGA等嵌入式设备。
Torch完全开源。

虽然Torch有以上优点,但是毕竟Lua不是主流开发语言,框架本身也缺乏TensorFlow的分布式应用程序管理框架,因此限制了它的普及。

PyTorch是由来自Facebook FAIR和其他多家实验室的成员开发而成,可以简单的认识为Torch的Python版。该架构结合了Torch7高效灵活的GPU加速后端库与直观的Python前端,具有代码可读性好、快速成形和支持最广泛的深度学习模型等优点。由于其灵活性和速度,该框架在推出后迅速得到了开发者和研究人员的青睐。

6. CNTK

CNTK全称是Computational Network Toolkit,是由微软提出的深度学习框架,它通过一个有向图将神经网络描述为一系列计算步骤。在该有向图中,叶节点表示输入值或网络参数,其他节点表示输入后的矩阵运算。CNTK 自2015年4月起已获得开源许可。
CNTK支持前馈DNN、CNN、RNN、LSTM等网络,支持分布式训练,具有高灵活性、高性能、扩展性好的优点。CNTK最大的优点就是支持多GPU和多机多GPU。

但CNTK的出身也使得它有一定的短板,比如它对Windows支持较好,但对移动设备的支持就比较弱,尤其是它不支持ARM架构。

7. Deeplearning4J

最后提一下Deeplearning4J,简称DL4J,最初由SkyMind公司开发,是唯一集成了Hadoop和Spark的商业级深度学习框架。DL4J支持RBM、DBN、CNN、RNN、RNTN和LTSM等深度网络,同时还对矢量化库Canova提供支持。它是由Java和Scala语言编写的分布式神经网络库,在Apache 2.0协议下开源。DL4J使用Map-Reduce来训练网络,同时依赖其他库来执行大型矩阵操作。该框架支持任意数目的GPU并行执行,并支持分布式应用程序管理框架YARN。

DL4J在图像识别、欺诈检测和自然语言处理方面表现出众。
 

发布了57 篇原创文章 · 获赞 58 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/DeliaPu/article/details/99605758