几种深度学习框架的简单介绍

Posted 深度学习与神经网络

tags:

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

1.Torch7 


Torch7 主语言为 Lua 语言,Lua 语言是一种类似于 C 语言编写的开源库,开发者提供了 C 语言和 C++的接口,因此 Torch7 能够较好的嵌入 C 语言应用中,在嵌入式开发的领域中Torch7拥有独特的优势。Torch7 与其它深度学习框架最大的不同是使用了 Lua,多数深度学习框架使用的是 Python。使用 Lua 语言计算速度非常快而且可以与任何 C语言库相连。


Torch7 的另一个特点是依赖于张量类,张量类拓展了 Lua 的基本数据类型,扩展了多维数组类型。Torch7 拓展了 Intel 平台的 SSE 操作,线性代数配合现有的 BLAS/Lapack(如 Intel的 MKL)工具。并且支持并行计算构架:Open MP 和 CUDA  GPU,上述张量库大量使用了这两种并行计算技术。在使用者的角度来说,CUDA 和 Open MP 还可以无成本的在所有“Lua”脚本中加速。

 

2.Theano 


Theano 是 2010 年由蒙特利尔大学 Bergstra 等人在机器学习论坛上提出,并且对数学函数进行定义,自动导出梯度表达式,将表达式编译成可执行函数的方法进行了说明。Theano 最初是一个线性代数编辑器,针对用户特定的需求进行最优化的高效降维数学运算。


 Bergstra 等人于 2011 年阐述了如何使用 Theano 进行深度学习模型的训练。Theano同样使用了 CPU 和 GPU 两种方法进行数学计算的编译。Theano 拥有多种强大的工具,用以处理和优化符号表达式的图表。Theano 的“最优化”架构可以自动删除重复和多余的计算从而提高了数据的稳定性。


 Theano 能够进行快速的写入和执行。Theano 依赖于两个 Python 的库:Sci Py Num Py,因此能够很轻松的在精确的运算中加入操作,根据情况使用最优化版本代替原有版本。 Theano 同样也使用了 GPU 并行化计算,用 CUDA 定义了 n 维数组的类,通过嵌入GPU 的存储实现。

 

3.Pylearn2 


Pylearn2 是蒙特利尔大学 LISA 机器学习实验室开发的机器学习研究开发库,目的是进行机器学习的研究。Pylearn2 是基于 Theano 的拓展库。为了使目前最前沿的研究能够在 Pylearn2 上使用,Pylearn2 更多关注于灵活性和拓展性。目标用户是机器学习的研究人员。Pylearn2 的“用户友好性”,意味着研究人员能在短时间内对其代码原理有精确而深入的理解,并且使用它的研究人员都能够进行精确的配置。传统的深度学习研究中,却对使用者有较高的要求,使用者必须懂得实现基本数据分析的时候算法工作的细节。


Pylearn2 与其它的机器学习库不同,比如 scikit-learn 或 Open CV 的部分学习算法,STAIR 视觉库等等。Pylearn2 机器学习库是为了给用户提供较高的性能,用户并不需要很确切的理解算法是怎样使用的。


Pylearn2 的用户基础不同,设计目标不同。 Pylearn2 是基于 Theano 的,Theano 提供了一种独立于具体实现方法的描述性语言,独立的 Pylearn2 类提供了 CPU 和 GPU 两种方法。使用符号表达式作为 Pylearn2 主要参数的好处就是可以计算符号表达式的许多函数,这些参数不能使用单独的数值计算得出。


 Pylearn2 通过分解为可复用的部分实现了灵活性和扩展性。对大多数特征分解为三个元素:数据库、模型、训练算法类。数据库提供了需要训练的数据,模型存储参数并且可以生成 Theano 表达式(通过给定的输入数据可以进行一些有意义的操作,如计算空间中一点的概率密度,通过给定的输入特征推断出其类标签,等等)。对于一个特定的数据集,训练算法与模型相适应。这三个元素轮流模块化(数据集被模块化预处理,许多模型类处理为层级,训练算法能够最小化一个模块开销以及通过多种模块化回调函数改变算法特性以及模块化的终止规则)。

 

4.Caffe 


Caffe 框架于 2014 年提出,有较高的使用性。尤其是它的网络结构使用文本形式进行编辑,不需要对具体代码有非常深刻的了解,便可以构建自己的网络模型,也以对目前前沿的网络模型进行分析和改进。Caffe 框架也同样使用了 GPU 并行计算的技术,配合CUDA 能够进行高效的运算。在 CPU 和 GPU 之间切换只需要在配置文档中更改一条语句即可。


Caffe 框架为使用者提供了多个卷积神经网络的模型如 Le Net-5、Alex Net 

等,以及一些示例,使用者可以对这些模型直接进行分析,并不需要自己构造模型。同样对于基本的数据集如 CIFAR-10 数据集都有多个训练配置文档,有快速训练模型和完整训练模型。对于训练好的模型产生的数据还可以迁移到 Theano 上进行分析。

 

Caffe 深度学习框架用于两种语言的接口分别是 Python 和 MATLAB,目前的许多CVPR 最前沿的研究成果都是使用 Caffe 的接口进行应用和分析。Caffe 的官方网站上也提供了使用 Python 如何查看每一层特征提取的结果。

 

Caffe 深度学习框架是一个完全开源的框架,对于非商业用途如深度学习研究人员提供免费的代码,同样在 Git Hub 上有专门的 Caffe 深度学习论坛,可供研究人员对 Caffe的改进、应用等提供讨论。


5.TensorFlow


TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。


TensorFlow可被用于语音识别或图像识别等多项机器深度学习领域,对2011年开发的深度学习基础架构DistBelief进行了各方面的改进,它可在小到一部智能手机、大到数千台数据中心服务器的各种设备上运行。TensorFlow将完全开源,任何人都可以用。


Tensorflow 在CPU和GPU上运行,比如说可以运行在台式机、服务器、手机移动设备等等。想要在没有特殊硬件的前提下,在你的笔记本上跑一下机器学习的新想法?Tensorflow可以办到这点。准备将你的训练模型在多个CPU上规模化运算,又不想修改代码?Tensorflow可以办到这点。想要将你的训练好的模型作为产品的一部分用到手机app里?Tensorflow可以办到这点。你改变主意了,想要将你的模型作为云端服务运行在自己的服务器上,或者运行在Docker容器里?Tensorfow也能办到。


6.Mxnet


Mxnet是一个轻量化分布式可移植深度学习计算平台,支持多机多节点、多GPU的计算,其openMP+MPI/SSH+Cuda/Cudnn的框架计算速度很快,且能与分布式文件系统结合实现大数据的深度学习。


Mxet 0.11是MXNet正式加入Apache以后的第一个版本,官方网站搬到了Apache的服务器。0.11加入了动态图接口Gluon。Gluon学习了Keras,Chainer,和Pytorch的优点,并加以改进。接口更简单,且支持动态图(Imperative)编程。相比TF,Caffe2等静态图(Symbolic)框架更加灵活易用。同时Gluon还继承了MXNet速度快,省显存,并行效率高的优点,并支持静、动态图混用,比Pytorch更快;同时彻底解决MXNet文档不全的弱点。可以参考上篇文章。


Gluon采用Keras和Numpy风格API,并且Layer可以自动判断输入长度。用过Chainer和Pytorch的人想必都体会过每一层都要记住前一层输出长度的麻烦,从卷积层到全联接层过度时长度计算更是痛苦,往往要运行一遍才知道。在Gluon里则没有这种问题,每层只要指定输出长度,输入长度则可以由系统自动计算。

未完待续,近期会有一篇相关论文解读奉上。


以上是关于几种深度学习框架的简单介绍的主要内容,如果未能解决你的问题,请参考以下文章

从零实现深度学习框架——学习率调整策略介绍

pytorch深度学习框架介绍+简单回归问题

第八节课-深度学习软件

深度学习系列 Part

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

人工智能:TensorFlow深度学习框架介绍