我是靠谱客的博主 欣慰酒窝,最近开发中收集的这篇文章主要介绍主流深度学习框架汇总,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近接手了一个项目,涉及深度学习的内容占了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在图像识别、欺诈检测和自然语言处理方面表现出众。
 

最后

以上就是欣慰酒窝为你收集整理的主流深度学习框架汇总的全部内容,希望文章能够帮你解决主流深度学习框架汇总所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部