深度学习框架

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

对比与选择目录深度学习概念深度学习各种框架如何选择深度学习框架深度学习框架概念让我们用一个例子来理解这个概念。考虑左面的图像集合。此图像中有各种类别,猫、骆驼、鹿、大象等。我们的任务是将这些图像分类到相应的类(或类别)中。卷积神经网络(CNN)对于此类图像分类任务非常有效。所以我们需要去实现这个模型,但是如果你开始从头开始编写CNN,那么获得工作模型将是几天后(甚至是几周),而这就是深度学习框架真正改变了这尴尬的局面。深度学习框架是一种界面、库或工具,它使我们在无需深入了解底层算法的细节的情况下,能够更容易、更快速地构建深度学习模型。深度学习框架利用预先构建和优化好的组件集合定义模型,为模型的实现提供了一种清晰而简洁的方法。利用恰当的框架来快速构建模型,而无需编写数百行代码,一个良好的深度学习框架具备以下关键特征:1.针对性能进行了优化2.易于理解和编码3.良好的社区支持4.并行化进程以减少计算5.自动计算渐变深度学习各种框架Caffe官网:Github:Caffe由加州大学伯克利的PHD贾扬清开发,全称ConvolutionalArchitectureforFastFeatureEmbedding。Caffe是一个清晰而高效的深度学习框架。①基于的C++/CUDA架构,支持命令行、Python和Matlab接口;②可以在CPU和GPU直接无缝切换,同时支持多GPU;;③主要用在计算机视觉领域,在该领域Caffe依然是最流行的工具包,它有很多扩展;④目前由伯克利视觉学中心(BerkeleyVisionandLearningCenter,BVLC)进行维护。CaffeCaffe的广泛性体现在,让只要会C++编程的人员就可以编写深度学习代码,降低了深度学习的门槛。随着Caffe框架的迅速流行,它逐步形成了自己强大的用户社区。在学术界,目前每天都有以Caffe框架作为底层实现的研究成果发布,而在工业界,已经有许多产品使用Caffe作为其深度学习算法实现的内核。从学术界到工业界,大家可以共享同一套底层代码,基于同一套平台进行研究、交流和生产。Caffe作为快速开发和工程应用是非常适合的。Caffe官方提供了大量examples,照着examples写,cafffe只要求会写prototxt就行,它的训练过程、梯度下降算法等等都实现封装好了,懂了prototxt的语法了,基本就能自己构造神经网络了。Caffe缺点:由于一些遗留的架构问题,对RNN模型支持的不够完善。CaffeCaffe因为知名度较高,被广泛地应用于前沿的工业界和学术界,许多提供源码的深度学习的论文都是使用Caffe来实现其模型的。在计算机视觉领域Caffe应用尤其多,可以用来做人脸识别、图片分类、位置检测、目标追踪等。虽然Caffe主要是面对学术圈和研究者的,但它的程序运行非常稳定,代码质量比较高,所以也很适合对稳定性要去严格的生产环境,可以算是第一个主流的工业级深度学习框架。因为Caffe的底层是基于C++的,因此可以在各种硬件环境编译并具有良好的移植性,支持Linux、Max和Windows系统,也可以编译部署到移动设备系统如Android和IOS上。Caffe也提供了Python语言接口pycaffe;Caffe的配置文件使用.prototxt文件,使用许多顺序连接的Layer来描述神经网络结构。TensorFlow官网:Github:TensorFlow是谷歌发布的机器学习系统,是一个利用数据流图(DataFlowGraphs)进行数值计算的开源软件库。与2015年11月在GitHub上开源,并在2016年4月补充了分布式版本,从2017年1月的1.0版本后,API接口趋于稳定。前端支持phython、C++、Java等多种开发语言,后端使用C++、CUDA等写成。TensorFlow实现的算法可以在众多异构的系统上方便地移植,比如Android手机、iPhone、普通的CPU服务器,乃至大规模GPU集群。支持CNN、RNN和LSTM算法,这都是目前在Image,Speech和NLP最流行的深度神经网络模型。TensorFlowTensorFlowTensorFlow的特点:1.机动性:TensorFlow并不只是一个规则的neuralnetwork库,事实上如果可以将用户的计算表示成dataflowgraph形式,就可以使用TensorFlow。2.可适性强:可应用在不同设备上,cpus,gpu,移动设备,云平台等。3.多种编程语言可选:TensorFlow很容易使用,有python接口和C++接口。其他语言可以使用SWIG工具使用接口。(SWIG-SimplifiedWrapperandInterfaceGenerator,是一个非常优秀的开源工具,支持将C/C++代码与任何主流脚本语言相集成。)4.最优化表现:充分利用硬件资源,TensorFlow可以将graph的不同计算单元分配到不同设备执行。Torch官网:Github:Torch并没有跟随Python的潮流,它底层用C++语言实现,用Lua对接口进行封装,被Facebook人工智能研究实验室应用和维护。包括Google、Twitter、NYU、Purdue等组织都大量使用Torch;网上很多RNN的例子都是用torch写的,所以torch是学习RNN的一个很好的途径。Torch的目标是让设计科学计算算法变得便捷,包含了大量的机器学习、计算机视觉、信号处理、并行计算、图像、视频、音频的库,同时和Caffe类似,拥有大量的训练好的深度学习模型。Torch的nn库支持神经网络、自编码器、线性回归、卷积网络、循环神经网络等,同时支持定制的损失函数及梯度计算。Torch优点:对卷积网络的支持非常好;Torch通过很多非官方的扩展支持大量的RNN;构建模型简单;高度模块化;快速高效的GPU支持;运行在LuaJIT上,与C++、C#以及Java等工业语言相比速度较快,也不需额外编译;可嵌入到iOS、Android和FPGA后端的接口。缺点:对初学者缺乏规范的例子。需要先迈过Lua这个门槛,不过对于如果熟悉Python,lua也能很快上手。需要luaJIT(采用C语言写的Lua代码的解释器)的支持,虽然性能不错,但是集成却存在着较大的障碍。Theano官网:Github:Theano于2008年发布,是由LISA集团(现MILA)在加拿大魁北克的蒙特利尔大学(YoshuaBengio主导)开发。Theano是一个完全基于Python的符号计算库。用起来简单方便,可以作为入门选择之一。用它可以很方便的将数学表达式通过theano表达出来。后续几乎所有深度学习框架都借鉴了Theano的符号计算思想。支持Linux、Mac和Windows。对CNN支持很好,同时它的符号运算API支持循环控制,让RNN的实现非常简单并且高性能。Theano优点:灵活性好,能很快的验证新的想法基于Python封装能让使用者快速上手。缺点:模型较大时编译时间较长:运算时需要将用户的Python代码转换成CUDA代码,再编译为二进制可执行文件,编译复杂模型的时间非常久。Theano在导入时也比较慢,而且一旦设定了选择某块GPU,就无法切换到其他设备。目前,Theano在CUDA和cuDNN上不支持多GPU,只在自己的gpuarray库上支持GPU训练,速度暂时比不上CUDA版本。输出的错误信息不够友好,对初学者有一定难度。Keras官网:keras.ioGithub:Keras是一个简约、高度模块化的神经网络库,通过Python封装了神经网络各类常见模块,包括CNN、RNN等,底层支持基于Theano和Tensorflow运行。利用Keras能快速地搭建模型,对初学者是个不错的选择。同时支持CNN和RNN,支持级联的模型或任意的图结构模型(可以让某些数据跳过某些Layer和后面的Layer对接,使得创建Inception等复杂网络变得容易);底层使用Theano或Tensorflow,用Keras训练模型相比于前两者基本没有什么性能损耗(还可以享受前两者持续开发带来的性能提升),只是简化了编程的复杂度,节约了尝试新网络结构的时间。Keras模型越复杂,Keras优势表现越显著。尤其是在高度依赖权值共享、多模型组合、多任务学习等模型上,Keras表现非常突出。Keras所有的模块都是简洁、易懂、完全可配置,并且基本上没有任何使用限制,神经网络、损失函数、优化器、初始化、激活函数和正则化等模块都是可以自由组合的。Keras包括绝大部分state-of-art的Trick,包括Adam、RMSProp、BatchNormalization、PReLU、ELU、LeakyReLu等。同时,新的模块也很容易添加,这让Keras非常适合最前沿的研究。缺点:目前只支持单卡运算,对于大规模模型不适合;文档有些部分对初学者门槛较高,可能需要深入源码。MXNet官网:mxnet.ioGithub:MXNet核心库使用C++源文件,Android、ios都可以编译。开发人员还可以使用多种语言:Python,C++,R,Scala,Julia,Matlab和Java。MXNet强调提高内存使用的效率,甚至能在智能手机上运行诸如图像识别等任务。MXNet是开源深度学习计算平台,它是DMLC分布式机器学习通用工具包的重要部分。它支持Linux,windows和Mac平台,支持很多种语言,很容易上手学习,运用起来也很灵活。作为2016年的开源新秀之一,MANet值得注意的特征是其紧凑的大小和跨平台的可移植性。MXNet优点:可移植性高。支持分布式并行计算,是各个框架中率先支持多个CPU或GPU上训练模型以提高速度。在多个GPU上运行它可获得的加速是是呈高度线性的——在128个GPU上,MXNet的运行速度比在单个GPU上快109倍。显存利用高效,并且可以灵活的运行在移动设备上。同时支持声明式和命令式编程。缺点:教程少,学习难度更大稍微杂乱,低级Tensor操作符很少,灵活性一般。CNTK官网:cntk.ioGithub:CNTK(ComputationalNetworkToolkit)是微软研究院开源的深度学习框架。目前已经发展成为一个通用的跨平台的深度学习系统,在语音识别领域的使用尤其广泛。CNTK支持各种前馈网络,包括MLP、CNN、RNN、LSTM、Sequence-to-Sequence等模型。CNTK拥有产品级的代码质量,支持多GPU的分布式训练。CNTK拥有很高的灵活度,和Caffe一样通过配置文件定义网络结构,再通过命令行程序执行训练,支持AdaGrad、RmsProp等优化方法。扩展性好,除了内置的大量运算核,还允许用户定义自己的计算节点,支持高度的定制化。CNTKCNTK在2016年9月发布了对强化学习

1 / 35
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功