深度学习工具

深度学习工具

目前比较流程的深度学习工具主要有Caffe,Torch & Overfeat,MxNet,TensorFlow,Theano等。web

Caffe

Caffe(快速特征植入的卷积神经网络),有伯克利视觉和学习中心开发的基于C++/CUDA/Python实现的卷积神经网络框架,提供了面向命令行、Matlab和Python的绑定接口。其前身为DeCAF,做者为贾杨清。算法

Caffe特性:编程

  • 它实现了前馈卷积神经网络架构(CNN),而不是递归网络架构(RNN)
  • 速度快,缘由是利用了MKL、OpenBLAS、cuBLAS等计算库,支持GPU加速。
  • 适合作特征提取,实际上适合作二维图像数据的特征提取。
  • 彻底开源,遵循BSD-2协议。
  • 提供了一整套工具集,可用于模型训练、预测、微调、发布、数据预处理,以及良好的自动测试
  • 它带有一系列参考模型和快速上手例程
  • 它在国内外有比较活跃的社区,有不少衍生吧项目,如Caffe for Windows、Caffe with OpenCL、NVIDIA DIGITS二、R_CNN等。
  • Caffe代码组织良好,可读性强,经过掌握Caffe代码能够很容易学习其余框架。

综上,Caffe是深度学习初学者入门的首先。数组

Torch & OverFeat

Torch是一个出现较早的支持大部分机器学习算法的科学计算框架。目前已有四个版本,分别为Torch 一、Torch 三、Torch 五、Torch 7。Torch使用轻量脚本语言Lua及其C/CUDA扩展模块实现,底层数值计算经过高效的OpenMP/SSE/CUDA加速,同时具有灵活性和速度优点。得益于Lua的轻量接口,Torch能够很容易接入第三方软件。网络

Torch为机器学习提供了相似于Matlab的环境,目前纽约大学(NYU)、Facebook AI实验室和Google DeepMind Torch均使用该框架作深度学习研究。**Torch不只支持CPU/GPU上运行,甚至支持嵌入式设备如iOS、Android、FPGA。
**
Torch彻底开源,遵循BSD协议,主要内置8个包:架构

torch:主包,提供Tensors基本数据类型和操做、简单的序列化接口和其余基本功能。框架

lab & plot:提供标准的相似于Matlab的函数,用于建立、变换、打印Tensors。机器学习

qt – Qt和Lua的彻底绑定,实现Torch 7 Tensors和QImage之间的透明转换,美观的图形界面很是适合快读开发交互式演示程序。分布式

nn:提供了一组标准神经网络模块,以及一组容器模块,可用于定义任意有向(无环或有环)图。显示描述图结构,使用可插入模块,避免了复杂的图解析器,或者其余中间件编译器。svg

image:图像处理包,提供了全部标准图像处理函数(如载入/保存图像、缩放/旋转、色彩空间变换、卷积、高斯核等)。

optim:提供最陡降低法、共轭梯度法和有限内存下BFGS等优化算法包。

unsup:包括几个非监督学习算法,如K-means、稀疏编码、自动编码器。

third-party:进一步封装,增长便携的软件包。

MxNet

MxNet是一个面向效率和灵活性设计的深度学习框架,吸引了多种不一样框架优势,加入了更多新的功能,如更加方便的多卡和多机分布式运行,目前MxNet比cxxnet块40%,并且GPU显存使用少了一半。

MxNet提供了两种编程接口:

N维数组接口,相似于Matlab或Python中的numpy.ndarray或torch.tensor。它独有的优点在于经过背后的engine能够在性能和内存使用上优于其余框架。

符号接口,能够快速构建一个神经网络,实现自动求导功能。

目前MxNet还在快速发展中,之后目标是更多的语言绑定(目前支持比较好的是Python,立刻会有Julia和R)、更好的文档和更多的应用(语言建模、语音、机器翻译、视频)发展

TensorFlow

Google在2011年推出人工深度学习系统——DistBelief。经过DistBelief,Google可以扫描数据中心数以千计的核心,并创建更大的神经网络。这个系统将Google应用中的语音识别率提升了25%,以及在Google Photos中创建了图片搜索,并驱动了Google的图片字幕匹配实验。DistBelief还存在很多不足和限制。它很难被设置,和Google内部的基础设施联系也过于紧密,这致使研究代码机会不可能分享。

针对以上问题,Google在2015年Google Research Blog宣布推出新一代人工智能学习系统——TensorFlow。

TensorFlow是一个异构分布式系统上的大规模机器学习框架,移植性好(小到移动设备如手机,大到大规模集群,都能支持),支持多种深度学习模型。根据Google说法,TensorFlow是综合的、灵活的、可移植的、易用的,更为关键的,它是开源的。同时,TensorFlow的速度相比前代DistBelief有了不小的提高,在一些跑分测试中,TensorFlow的得分是第一代系统的两倍。尽管如此,TensorFlow的效率仍然比不过其余大部分开源框架。不过,随着TensorFlow源码逐步开放,对新硬件、新设备、新的加速如cuDNN的支持力度不断提高,其成为目前极具潜力的深度学习。

Theano

Theano是由LISA开发的基于Python的深度学习框架,能够定义好数学表达式并高效地优化,求值。

Theano支持机器学习中的逻辑回归、多层感知器、深度卷积网络等监督学习方法,以及自编码器、降噪自编码器、限制玻尔兹曼机、深度置信网络等非监督/半监督学习方法,在国内外教育领域很是受欢迎。Thenao有个致命的短板,就是计算速度慢,虽然有GPU加速,但仍然不如其余框架高效,故只适合研究人员使用,不适合线上环境部署。

CNTK

CNTK是微软推出的开源深度学习框架,经过一系列步骤构成有向图来表达网络。

CNTK的优势是高性能、高灵活性、可扩展性好。CNTK支持CNN、LSTM、RNN等流行的网络结构,支持分布式训练。在纯CPU、单GPU、多GPU、多机多GPU硬件平台下都具备较高的性能

CNTK支持双机8 GPU并行处理,而其余框架只支持单GPU或单机多GPU(TensorFlow、Torch 7 Caffe)。从单GPU对比性能来看,Theano是性能最低的,而CNTK、Torch、Caffe相差不大。单机4 GPU的性能对比结果显示了CNTK具备极高的效率GitHub上也有对常见的深度学习框架卷积计算性能对比状况。

虽然CNTK有上述优势,但同时要看到微软对自家Windows支持竭尽全力,致使CNTK对Windows平台支持最好,不推荐做为深度学习初学者入门工具,而是选择拥有更大的社区的Caffe。


参考文献: 深度学习-21天实战caffe