深度学习框架这么多,本文带你全攻略(2)
2017-05-09 编辑:
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和Java)的能力。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之间的竞争是预料之中的。随着软件供应商开发具有最先进的智能产品,从而在你提供的数据中获得最大收益。风险是,你会购买一种产品,是建立在专有基础上的,还是建立在开源基础上的?有了开放源码,你会很难选择哪个深入学习框架是最适合的。在专有的方法中,你的退出策略是什么?我们不应以短期来看,因为,人工智能的回报在于其学习能力的成熟度。
来源:机器人圈
相关阅读:
相关推荐: