深度学习框架这么多,本文带你全攻略

Posted 雷课

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习框架这么多,本文带你全攻略相关的知识,希望对你有一定的参考价值。

本文全面介绍了目前在GitHub上最流行的几种深度学习框架,同时进行了详细的对比。机器人圈希望通过此文,圈友可以加深对开源深度学习框架的理解,并在学习过程中更好地选择适合自己的框架类型,提高效率。

深度学习框架这么多,本文带你全攻略

Caffe是一种流行的视觉识别深度学习网络。

Caffe 2继续强力支持视觉类型问题,但增加了自然语言处理、手写识别和时间序列预测的循环神经网络(RNN)和长短期记忆网络(LSTM)。

MXNet支持深度学习架构,如卷积神经网络(CNN)和循环神经网络(RNN),包括长短期记忆网络(LTSM)。

然而,随着Facebook最新宣布其改变航向,使Caffe 2成为主要的深入学习框架,以便在移动设备上部署深入学习。

DL4J具有丰富的深层网络架构支持:受限玻尔兹曼机(RBM)、深信度神经网络(DBN)、卷积神经网络(CNN)、循环神经网络(RNN),RNTN和长短期记忆网络(LTSM)。

开源深度学习神经网络即将到来,几种框架均通过专有解决方案提供先进的机器学习和人工智能的功能。如何确定哪个开源框架最适合你呢?

在“大数据-智能数据的路线图”一文中,我描述了一套机器学习架构,它提供包括图像、手写、视频、语音识别、自然语言处理和对象识别等高级功能。没有一种完善的深度学习网络可以解决你“所有”的业务问题。希望下面的内容能够为你的业务提供最适合目的框架的见解。

以下有关深度学习框架的内容,总结了GitHub中最流行的开源深度网络库。排名基于开发者在GitHub收到的星星数。(数字来源于2017年5月初)

TensorFlow

深度学习框架这么多,本文带你全攻略

Google的TensorFlow来自早期的名为DistBelief V2的Google库,它是作为Google Brain项目一部分而开发的专有深度网络库。有些人形容TensorFlow是对Theano的重新设计。

当开源TensorFlow后,谷歌立即获得了大量的关注。TensorFlow支持广泛的功能,如图像、手写、语音识别、预测,以及自然语言处理。TensorFlow于2015年11月9日以Apache 2.0许可开源。

TensorFlow在2017年2月15日发布了1.0版本。此版本是八个先前版本的累积,它解决了TensorFlow很多不完整的核心功能和性能问题。以下是TensorFlow成功的性能介绍。

TensorFlow提供以下工具:

TensorFlow编程接口包括Python和C ++。随着版本1.0的公布,将支持Java、GO、R和Haskell API的alpha版本接口。此外,TensorFlow在Google和Amazon Cloud Environment中获得支持。

随着 TensorFlow r0.12 版的发布,这一开源软件库现已支持 Windows7、10 和 Server 2016。该开源软件库可以在ARM架构上编译和优化,因为它使用C ++ Eigen库。这意味着你可以在各种服务器或移动设备上部署经过培训的模型,而无需实现单独的模型解码器或加载Python解释器。

TensorFlow支持精细的网格层,允许用户构建新的复杂层类型,而不用低级语言实现。子图执行允许你在图的任何边缘引入和检索自由数据的结果,这对于调试复杂的计算图非常有帮助。

分布式TensorFlow引入了版本0.8,允许模型并行,这意味着模型的不同部分在不同的设备上可以并行训练。

该框架正在斯坦福大学、加州大学伯克利分校、多伦多大学和优达学城(Udacity)上推出相关课程。

Caffe

深度学习框架这么多,本文带你全攻略

Caffe是领导Facebook AI平台工程的贾扬清的心血结晶。Caffe可能是第一个主流的行业级深度学习工具包,开创于2013年底。由于其优良的卷积模型,它是计算机视觉界最受欢迎的工具包之一,并在2014年获得了ImageNet挑战赛中获得胜利。Caffe在BSD 2-Clause开源许可后发布。

速度使得Caffe成为研究实验和商业部署的完美选择。Caffe可以使用单个Nvidia K40 GPU每天处理超过6000万张图片。对于推理,速度为1毫秒/图,对于学习过程,速度为4毫秒/图,最新版本的库的速度更快。

Caffe是基于C++的,可以在各种设备上编译。它是跨平台的,包括一个Windows的端口。Caffe支持C ++、Matlab和Python的编程接口。Caffe拥有一个庞大的用户社区,为自己的深层网络存储库(称为“Model Zoo”)做出贡献。AlexNet和GoogleNet是社区可用的两种流行的用户网络。

Caffe是视觉识别的流行深度学习网络。但是,Caffe不支持像TensorFlow,CNTK和Theano那样的细粒度网络层。构建复合层类型必须以低级语言完成。由于其传统的架构,它对常规网络和语言建模的支持,总体上很差。

Caffe 2

深度学习框架这么多,本文带你全攻略

Facebook的贾扬清和他的团队正在研究Caffe 2。在2017年4月18日,Facebook根据BSD许可协议开源了Caffe 2。Caffe 2与Caffe有何不同? Caffe 2更侧重于模块化和卓越的移动和大规模部署。像TensorFlow一样,Caffe 2将使用C ++ Eigen库来支持ARM架构。

Caffe模型可以轻松地转换为具有实用程序脚本的Caffe 2模型。Caffe设计选择使其成为处理视觉类型问题的理想选择。Caffe 2继续强力支持视觉类型问题,但增加了自然语言处理、手写识别,以及时间序列预测的循环神经网络(RNN)和长短期记忆网络(LSTM)。

希望Caffe 2在不久的将来会超越Caffe,因为深度学习社区中大众所热捧。

CNTK

深度学习框架这么多,本文带你全攻略

Microsoft Cognitive Toolkit(CNTK)是一种深度神经网络,最初是为了提高语音识别而开发的。CNTK支持RNN和CNN类型的神经模型,使其成为处理图像、手写和语音识别问题的最佳候选。CNTK支持使用Python或C++编程接口的64位Linux和Windows操作系统,并根据MIT许可发布。

CNTK与TensorFlow和Theano的组成相似,其网络被指定为向量运算的符号图,如矩阵的加法/乘法或卷积。此外,像TensorFlow和Theano一样,CNTK允许构建网络层的细粒度。构建块(操作)的细粒度允许用户创造新的复合层类型,而不用低级语言实现(如Caffe)。

像Caffe一样,CNTK也是基于C++的、具有跨平台的CPU/GPU支持。 CNTK在Azure GPU Lab提供了最高效的分布式计算性能。目前,CNTK对ARM架构的缺乏支持,限制了其在移动设备上的功能。

MXNet

深度学习框架这么多,本文带你全攻略

MXNet(发音为“mix-net”)起源于卡内基梅隆大学和华盛顿大学。MXNet是一个功能齐全,可编程和可扩展的深入学习框架,支持最先进的深入学习模式。 MXNet提供了混合编程模型(命令式和声明式)和大量编程语言的代码(包括Python、C++、R、Scala、Julia、Matlab和javascript)的能力。2017年1月30日,MXNet进入Apache基金会,成为Apache的孵化器项目。

MXNet支持深度学习架构,如卷积神经网络(CNN)和循环神经网络(RNN),包括长短期记忆网络(LTSM)。该框架为成像、手写、语音识别,预测和自然语言处理提供了出色的功能。有些人称MXNet是世界上最好的图像分类器。

MXNet具有强大的技术,包括扩展能力,如GPU并行性和内存镜像、编程器开发速度和可移植性。此外,MXNet与Apache Hadoop YARN(一种通用的,分布式的应用程序管理框架)集成,使MXNet成为TensorFlow的竞争对手。

MXNet的区别就是支持生成对抗网络(GAN)模型的唯一深层网络框架。

另一个区别是,亚马逊首席技术官 Werner Vogels选择公开支持MXNet:“今天,我们宣布MXNet将成为我们的深入学习框架。”Vogel接着说:“我们计划在现有和即将推出的新服务中使用它“。苹果公司在2016年收购Graphlab / Dato / Turi之后也传闻使用它。

Torch

深度学习框架这么多,本文带你全攻略

Torch由Facebook的Ronan Collobert和SoumithChintala、Twitter的Clement Farabet(现在在Nvidia),以及Google Deep Mind的KorayKavukcuoglu共同开发。Torch的主要贡献者是Facebook,Twitter和Nvidia。Torch获得BSD 3开源许可。然而,随着Facebook最新宣布其改变航向,使Caffe 2成为主要的深入学习框架,以便在移动设备上部署深入的学习。

Torch以Lua编程语言实现。 Lua不是主流语言,只有在你的员工熟练掌握之前,才会影响开发人员的整体效率。

Torch缺乏TensorFlow的分布式应用程序管理框架或者在MXNet或Deeplearning4J中支持YARN。缺乏大量的API编程语言也限制了开发人员。

DL4J

深度学习框架这么多,本文带你全攻略

Deeplearning4J(DL4J)是由Java和Scala编写的Apache 2.0授权的开放源码,分布式神经网络库。DL4J是SkyMind的Adam Gibson的创意,是唯一与Hadoop和Spark集成的商业级深度学习网络,它协调多个主机线程。DL4J是独特的深度学习框架,因为它使用Map-Reduce来训练网络,同时依靠其他库来执行大型矩阵操作。

DL4J框架内置GPU支持,这是训练过程的重要功能,并支持YARN、Hadoop分布式应用程序管理框架。DL4J支持丰富的深层网络架构:RBM、DBN、卷积神经网络(CNN)、循环神经网络(RNN)、RNTN,和长短期记忆网络(LTSM)。DL4J还包括名为Canova的矢量库的支持。

DL4J在Java中开源,本质上就比Python快。它与Caffe一样快,用于使用多个GPU的非平凡的图像识别任务。该框架为图像识别,欺诈检测和自然语言处理提供了出色的功能。

Theano

Theano由蒙特利尔大学学习算法学院(MILA)积极维护。以Theano的创始人YoshuaBengio为首,该实验室拥有约30-40名教师和学生,是深入学习研究的重要贡献者。Theano支持快速开发高效的机器学习算法,并通过BSD许可发布。

Theano架构相当简单,整个代码库和接口是Python,其中C/CUDA代码被打包成Python字符串。对一个开发者来说这很难驾驭、调试和重构。

Theano开创了使用符号图来编程网络的趋势。Theano的符号API支持循环控制,即所谓的扫描,这使得实现RNN更容易、更高效。

Theano缺乏分布式应用程序管理框架,只支持一种编程开发语言。Theano是学术研究的一个很好的工具,在一个CPU上比TensorFlow更有效地运行。然而,在开发和支持大型分布式应用程序时,可能会遇到挑战。

开源或专有

随着深入学习的不断成熟,你将会发现TensorFlow,Caffe 2和MXNet之间的竞争是预料之中的。随着软件供应商开发具有最先进的智能产品,从而在你提供的数据中获得最大收益。风险是,你会购买一种产品,是建立在专有基础上的,还是建立在开源基础上的?有了开放源码,你会很难选择哪个深入学习框架是最适合的。在专有的方法中,你的退出策略是什么?我们不应以短期来看,因为,人工智能的回报在于其学习能力的成熟度。


以上是关于深度学习框架这么多,本文带你全攻略的主要内容,如果未能解决你的问题,请参考以下文章

带你测试对比深度学习框架!TensorFlow,Keras,PyTorch...哪家强?(附数据集)

如此多的深度学习框架,为什么我选择PyTorch?

AI:Python与人工智能相关的库/框架(机器学习&深度学习&数据科学/计算机视觉/自然语言处理)的简介案例应用之详细攻略

人工智能:TensorFlow 带你进入深度学习的世界

飞桨开源框架2.0,带你走进全新高层API,十行代码搞定深度学习模型开发

Transformer入门篇-深度万字长文带你轻松入门深度学习框架