主流深度学习框架对比

2018-02-25 02:39加日拉·买买提热衣木常富蓉刘晨要秀宏
电子技术与软件工程 2018年7期
关键词:深度学习

加日拉·买买提热衣木 常富蓉 刘晨 要秀宏

摘要 目前使用的深度学习框架较多,每个框架都有自己的特点。这些深度学习框架都完美支持深度神经网络,深度学习训练模型通常是建立在大数据基础上,但是性能和训练成本有所不同。本文对比TensorFlow、Caffe、MXNet等5个主流的深度学习框架,分别简述各自的优点和缺点。

【关键词】TensorFlow 深度学习 Caffe

1 框架对比

1.1 TensorFlow

对于刚开始学深度学习的人来说,它是他们最喜欢的深度学习框架,但在这里我想强调一个事实。在它的官网上,它被定义为一个用于机器智能的开源软件库,但我觉得应该这么定义:它是一个使用数据流图进行数值计算的开源软件库。在这里,他们没有将它包含在深度学习框架范围内,而是和Theano -起被包含在图编译器类别中。

1.1.1 TensorFlow的优点

(1)将科研和产品联系在一起。在谷歌,科学家用它尝试新的算法,产品团队则用它来训练和使用计算模型,并直接提供给在线用户。

(2)真正的可移植性。它在CPU和GPU上运行,比如说可以运行在台式机、服务器、手机移动设备等等。

(3)高度的灵活性。它不是一个严格的“神经网络”库。只要你可以将你的计算表示为一个数据流图。

(4)支持多种语言。

(5)性能最优化。由于它给予了线程、队列、异步操作等以最佳的支持。

1.1.2 TensorFlow的缺点

(1)调试较难,调试时出现各种古怪的小问题较多。

(2)底层接口写起来繁琐,高层接口又不灵活,而且它的高层封装不好实现。

(3)它主要面向超大数据量的训练,因此计算速度相对较慢。

(4)各个版本之间的兼容性较差,需要进一步完善。

1.2 Keras

Keras是一个高层神经网络API,它由纯Python编写而成并基Tensorflow、Theano以及CNTK后端。它的句法是相当明晰的,学习文档也非常好,而且它支持Python语言。我们也能很直观地了解它的指令、函数和每个模块之间的链接方式。用它实现一个功能非常简,只需几行代码就能构建一个神经网络。

1.2.1 Keras的优点

(1)简易和快速的原型设计。

(2)支持CNN和RNN,或二者的结合。

(3)无缝CPU和GPU切换。

(4)学习较容易。

1.2.2 Keras的缺点

(1)不支持seq2seq,因此实现NLP功能较复杂。

(2) 在TensorFlow backend时,

比TensorFlow较慢。

(3)没有增强学习工具箱,自己修改实现很麻烦。

(4)封装得较高级,训练细节不能修改,不合适算法研究。

1.3 Caffe

它不只是最老牌的框架之一,而是老牌中的老牌。起初的时候它并不是一个通用框架,而仅仅关注计算机视觉,但它具有非常好的通用性。平时CaffeNet架构的训练时间在它中比在Keras中少5倍。如果想给它来一点新改变,那就需要使用C++和CUDA編程,不过也可以使用Python或Matlab接口进行一些小改变。它在图像处理、视频处理领域广泛应用。

1.3.1 Caffe的优点

(1)速度快。谷歌数据标准提升了效率。

(2)采用此模型的论文较多。

(3)相对稳定。

(4)迁移性较好。

1.3.2 Caffe的缺点

(1)安装调试较难。

(2)各个版本之间的兼容性较差。

(3)学习文档较少。

(4)不够灵活。

1.4 MXNet

它致力于提供兼顾性能与灵活性的深度学习框架。作为亚马逊的优秀深度学习框架,它也算是性能最好的深度学习框架之一。它提供了类似于Theano与TensorFlow的数据流图,并且支持多GPU配置,提供了类似于Lasagne与Blocks的相对高阶的模型构建快,还能运行在多种硬件设备上。它提供了基于Python、R、Julia、C++、Scala、Matlab、JavaScript的多种接口。如果专注于效率,那么它是较好的选择。

1.4.1 MXNet的优点

(1)相当快的评测结果。

(2)彻底的灵活性。

(3)支持多GPU训练。

(4)支持多种设备。

1.4.2 MXNet的缺点

(1)学习社区较小,学习文档较少。

(2)数据流图比Theano差。

(3)安装调试较麻烦。

1.5 CNTK

它是微软公司在深度学习与人工智能领域的研究成果计算网络工具。据微软研究员说法,它在语音和图像辨识能力方面。在公开的基准测试上的表现来看,这个工具似乎很强劲,支持纵向和横向的推移。它目前支持的语言是C++,微软将来会推出支持C#和Python语言的版本。

1.5.1 CNTK的优点

(1)速度较快。

(2)支持多GPU训练。

(3)很容易上手。

(4)学习文档较规范。

1.5.2 CNTK的缺点

(1)学习社区较小。

(2)不支持移动设备。

(3)只支持C++语言。

参考文献

[1]何希平,刘波,深度学习理论与实践[M].北京:科学出版社,2017.

[2]张重生,深度学习:原理与应用实践[M].北京:电子工业出版社,2016,

[3]阿布胥嘉幸,机器学习之路[M].北京:电子工业出版社,2017.

[4] Antonio Gulli. Deep Learning withKeras [M]. Packt Publishing, 2017.

[5]乐毅.深度学习 Caffe之经典模型详解与实战[M].北京:电子工业出版社.2016.

[6]谢梁.Keras快速上手:基于Py thon的深度学习实战[M].北京:电子工业出版社.2017.

猜你喜欢
深度学习
从合坐走向合学:浅议新学习模式的构建
搭建深度学习的三级阶梯
有体验的学习才是有意义的学习
利用网络技术促进学生深度学习的几大策略
MOOC与翻转课堂融合的深度学习场域建构
大数据技术在反恐怖主义中的应用展望
构建“单元整合、主题牵引”诗歌鉴赏“深度学习”课堂的策略