深度学习库比较

 

深度学习库比较

库名 主语言 从语言 速度 灵活性 文档 适合模型 平台 上手难易 开发者 模式
Tensorflo C++ cuda/python 中等 中等 CNN/RNN Linux,OSX Google 分布式/声明式
Caffe C++ cuda/python/Matlab 通常 全面 CNN 全部系统 中等 贾杨清 声明式
PyTorc python C/C++ 中等 中等 - -- 中等 FaceBook  
MXNet c++ cuda/R/julia 全面 CNN 全部系统 中等 李沐和陈天奇等 分布式/声明式/命令式
Torch lua C/cuda 全面 CNN/RNN Linux,OSX 中等 Facebook 命令式
Theano python c++/cuda 中等 中等 CNN/RNN Linux, OSX 蒙特利尔理工学院 命令式
 

1.TensorFlow 的优势是:

 
  1. 它有一个直观的结构 ,顾名思义它有 “张量流”,你能够轻松地可视每一个图中的每个部分。
  2. 轻松地在 cpu / gpu 上进行分布式计算
  3. 平台的灵活性 。能够随时随地运行模型,不管是在移动端、服务器仍是 PC 上。
 

1.1 TensorFlow 的限制

 
  1. 尽管 TensorFlow 是强大的,它仍然是一个低水平库,例如,它能够被认为是机器级语言,但对于大多数功能,您须要本身去模块化和高级接口,如 keras
  2. 它仍然在继续开发和维护,这是多么👍啊!
  3. 它取决于你的硬件规格,配置越高越好
  4. 不是全部变成语言能使用它的 API
  5. TensorFlow 中仍然有不少库须要手动导入,好比 OpenCL 支持。
  6. 上面提到的大多数是在 TensorFlow 开发人员的愿景,他们已经制定了一个路线图,计划库将来应该如何开发
 

1.2 ensorFlow工做流程

 
  1. 创建一个计算图, 任何的数学运算可使用 TensorFlow 支撑。
  2. 初始化变量, 编译预先定义的变量
  3. 建立 session 这是神奇的开始的地方
  4. session 中运行图, 编译图形被传递到 session ,它开始执行它。
  5. 关闭 session 结束此次使用。
 

1.3 入门教程

TensorFlow入门一-小石头的码疯窝 
TensorFlow之深刻理解Neural Style 
TensorFlow之深刻理解AlexNet-小石头的码疯窝 
TensoFlow之深刻理解GoogLeNet-小石头的码疯窝 
TensorFlow之深刻理解VGG\Residual Network 
TensorFlow之深刻理解Fast Neural Style 
风格画之最后一弹MRF-CNN-小石头的码疯窝 
深度学习之Neural Image Captionhtml

 

2.Caffe

 
  1. Caffe57是纯粹的C++/CUDA架构,支持命令行、PythonMATLAB接口;能够在CPUGPU173直接无缝切换:
  2. Caffe::set_mode(Caffe::GPU);
 

2.1 Caffe的优点

 
  1. 1.上手快:模型与相应优化都是以文本形式而非代码形式给出。
  2. 2.Caffe给出了模型的定义、最优化设置以及预训练的权重,方便当即上手。
  3. 3.速度快:可以运行最棒的模型与海量的数据。
  4. 4.CaffecuDNN结合使用,测试AlexNet模型,在K40上处理每张图片只须要1.17ms.
  5. 5.模块化:方便扩展到新的任务和设置上。
  6. 6.可使用Caffe提供的各层类型来定义本身的模型。
  7. 7.开放性:公开的代码和参考模型用于再现。
  8. 8.社区好:能够经过BSD-2参与开发与讨论。
 

2.2 Caffe 架构

此处输入图片的描述

 

2.2.1 预处理图像的leveldb构建

 
  1. 输入:一批图像和label 23
  2. 输出:leveldb 4
  3. 指令里包含以下信息:
  4. conver_imageset (构建leveldb的可运行程序)
  5. train/ (此目录放处理的jpg或者其余格式的图像)
  6. label.txt (图像文件名及其label信息)
  7. 输出的leveldb文件夹的名字
  8. CPU/GPU (指定是在cpu上仍是在gpu上运行code)
 

2.2.2 CNN网络配置文件

 
  1. Imagenet_solver.prototxt (包含全局参数的配置的文件)
  2. Imagenet.prototxt (包含训练网络的配置的文件)
  3. Imagenet_val.prototxt (包含测试网络的配置文件)
 

2.3 教程

Caffe教程系列之安装配置 
Caffe教程系列之LeNet训练 
Caffe教程系列之元素篇 
Caffe教程系列之Proto元素 
Caffe教程系列之LMDBpython

 

3.pytorch框架

 
  1. pytorch,语法相似numpy,很是高效;基于pytorch开发深度学习算法,方便快速,适合cpugpu计算。pytorch支持动态构建神经网络结构,从而能够提高挽留过结构的重用性。
  2. 这是一个基于Python的科学计算包,其旨在服务两类场合:
  3. 1.替代numpy发挥GPU潜能
  4. 2.一个提供了高度灵活性和效率的深度学习实验性平台
 

3.1 PyTorch优点

 
  1. 1.运行在 GPU CPU 之上、基础的张量操做库,
  2. 2.内置的神经网络库
  3. 3.模型训练功能
  4. 3.支持共享内存的多进程并发(multiprocessing )库。PyTorch开发团队表示:这对数据载入和 hogwild 训练十分有帮助。
  5. 4.PyTorch 的首要优点是,它处于机器学习第一大语言 Python 的生态圈之中,使得开发者能接入广大的 Python 库和软件。所以,Python 开发者可以用他们熟悉的风格写代码,而不须要针对外部 C 语言或 C++ 库的 wrapper,使用它的专门语言。雷锋网(公众号:雷锋网)获知,现有的工具包能够与 PyTorch 一块儿运行,好比 NumPySciPy Cython(为了速度把 Python 编译成 C 语言)。
  6. 4.PyTorch 还为改进现有的神经网络,提供了更快速的方法——不须要从头从新构建整个网络
 

3.2 PyTorch工具包

 
  1. 1.torch :相似 NumPy 的张量库,强 GPU 支持
  2. 2.torch.autograd :基于 tape 的自动区别库,支持 torch 之中的全部可区分张量运行。
  3. 3.torch.nn :为最大化灵活性未涉及、与 autograd 深度整合的神经网络库
  4. 4.torch.optim:与 torch.nn 一块儿使用的优化包,包含 SGD, RMSProp, LBFGS, Adam 等标准优化方式
  5. 5.torch.multiprocessing python 多进程并发,进程之间 torch Tensors 的内存共享。
  6. 6.torch.utils:数据载入器。具备训练器和其余便利功能。 Trainer and other utility functions for convenience
  7. 7.torch.legacy(.nn/.optim) :处于向后兼容性考虑,从 Torch 移植来的 legacy 代码。
 

3.3 教程

PyTorch深度学习:60分钟入门(Translation)c++

 

4 MXNet框架

 

4.1 优缺点

 

4.1.1 优势

 
  1. 1.速度快省显存。在复现一个caffe
  2. 2.支持多语言
  3. 3.分布式
 

4.1.2 缺点

 
  1. 1. API文档差。这个问题不少人也提过了,不少时候要看源码才能肯定一个函数具体是作什么的,看API描述有时候并不靠谱,由于文档有点过期。
  2. 2. 缺少完善的自定义教程。好比写data iter的时候,trainvalidationdata shape必须一致,这是我当时找了半天的一个bug
  3. 3.代码小bug有点多。mxnet的大神们开发速度确实是快,可是有的layer真的是有bug,暑假咱们就修了很多。
 

4.2 MXNet架构

此处输入图片的描述 

从上到下分别为各类主语言的嵌入,编程接口(矩阵运算,符号表达式,分布式通信),两种编程模式的统一系统实现,以及各硬件的支持。接下一章咱们将介绍编程接口,而后下一章介绍系统实现。以后咱们给出一些实验对比结果,以及讨论MXNet的将来。 

##4.2 MXNet编程接口 

1.Symbol : 声明式的符号表达式 
2.NDArray :命令式的张量计算 
3.KVStore :多设备间的数据交互 
4.读入数据模块 
5.训练模块 
算法

##4.3 MXNet教程 
安装GPU版mxnet并跑一个MNIST手写数字识别 
用MXnet实战深度学习之二:Neural art编程

#5. Torch框架 
##5.1 Torch诞生 

Torch诞生已经有十年之久,可是真正起势得益于去年Facebook开源了大量Torch的深度学习模块和扩展。Torch另一个特殊之处是采用了不怎么流行的编程语言Lua(该语言曾被用来开发视频游戏)。 
服务器

 

5.2 Torch优缺点

 

5.2.1 优势

 
  1. 1Facebook力推的深度学习框架,主要开发语言是CLua
  2. 2)有较好的灵活性和速度
  3. 3)它实现而且优化了基本的计算单元,使用者能够很简单地在此基础上实现本身的算法,不用浪费精力在计算优化上面。核心的计算单元使用C或者cuda作了很好的优化。在此基础之上,使用lua构建了常见的模型
  4. 4)速度最快,见convnet-benchmarks
  5. 5)支持全面的卷积操做:
  6. 时间卷积:输入长度可变,而TFTheano都不支持,对NLP很是有用;
  7. 3D卷积:Theano支持,TF不支持,对视频识别颇有用
 

5.2.2 缺点

 
  1. 1)是接口为lua语言,须要一点时间来学习。
  2. 2)没有Python接口
  3. 3)与Caffe同样,基于层的网络结构,其扩展性很差,对于新增长的层,须要本身实现(forward, backward and gradient update
 

5.3 Torch教程

MXNet教程 
深度学习笔记(二)用Torch实现线性回归网络

 

6. Theano框架

 

6.2 Theano优缺点

 

6.2.1 优势

 
  1. 12008年诞生于蒙特利尔理工学院,主要开发语言是Python
  2. 2Theano派生出了大量深度学习Python软件包,最著名的包括BlocksKeras
  3. 3Theano的最大特色是很是的灵活,适合作学术研究的实验,且对递归网络和语言建模有较好的支持
  4. 4)是第一个使用符号张量图描述模型的架构
  5. 5)支持更多的平台
  6. 6)在其上有可用的高级工具:Blocks, Keras
 

6.2.2 缺点

 
  1. 1)编译过程慢,但一样采用符号张量图的TF无此问题
  2. 2import theano也很慢,它导入时有不少事要作
  3. 3)做为开发者,很难进行改进,由于code basePython,而C/CUDA代码被打包在Python字符串中
 

6.3 Theano教程

Theano 官方中文教程(翻译)(三)——多层感知机(MLP) 
Theano官方中文教程(翻译)(四)—— 卷积神经网络(CNN)session

 
 
  2017-04-16 11:52  字数 4204  阅读 6
相关文章
相关标签/搜索