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