深度学习库比较

 

深度学习库比较

库名 主语言 从语言 速度 灵活性 文档 适合模型 平台 上手难易 开发者 模式
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 Caption

2.Caffe

  1. Caffe57是纯粹的C++/CUDA架构,支持命令行、Python和MATLAB接口;可以在CPU和GPU173直接无缝切换:
  2. Caffe::set_mode(Caffe::GPU);

2.1 Caffe的优势

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

2.2 Caffe 架构

2.2.1 预处理图像的leveldb构建

  1. 输入:一批图像和label (2和3)
  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教程系列之LMDB

3.pytorch框架

  1. pytorch,语法类似numpy,非常高效;基于pytorch开发深度学习算法,方便快速,适合cpu和gpu计算。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 一起运行,比如 NumPy、SciPy 和 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)

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的时候,train和validation的data 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. 1)Facebook力推的深度学习框架,主要开发语言是C和Lua
  2. 2)有较好的灵活性和速度
  3. 3)它实现并且优化了基本的计算单元,使用者可以很简单地在此基础上实现自己的算法,不用浪费精力在计算优化上面。核心的计算单元使用C或者cuda做了很好的优化。在此基础之上,使用lua构建了常见的模型
  4. 4)速度最快,见convnet-benchmarks
  5. 5)支持全面的卷积操作:
  6. 时间卷积:输入长度可变,而TF和Theano都不支持,对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. 1)2008年诞生于蒙特利尔理工学院,主要开发语言是Python
  2. 2)Theano派生出了大量深度学习Python软件包,最著名的包括Blocks和Keras
  3. 3)Theano的最大特点是非常的灵活,适合做学术研究的实验,且对递归网络和语言建模有较好的支持
  4. 4)是第一个使用符号张量图描述模型的架构
  5. 5)支持更多的平台
  6. 6)在其上有可用的高级工具:Blocks, Keras等

6.2.2 缺点

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

6.3 Theano教程

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

@liuyugang 2017-04-16 11:52 字数 4204 阅读 6

时间: 2024-10-29 19:10:36

深度学习库比较的相关文章

百度DMLC分布式深度机器学习开源项目(简称“深盟”)上线了如xgboost(速度快效果好的Boosting模型)、CXXNET(极致的C++深度学习库)、Minerva(高效灵活的并行深度学习引擎)以及Parameter Server(一小时训练600T数据)等产品,在语音识别、OCR识别、人脸识别以及计算效率提升上发布了多个成熟产品。

百度为何开源深度机器学习平台? 有一系列领先优势的百度却选择开源其深度机器学习平台,为何交底自己的核心技术?深思之下,却是在面对业界无奈时的远见之举. 5月20日,百度在github上开源了其深度机器学习平台.此番发布的深度机器学习开源平台属于"深盟"的开源组织,其核心开发者来自百度深度学习研究院(IDL),微软亚洲研究院.华盛顿大学.纽约大学.香港科技大学,卡耐基·梅陇大学等知名公司和高校. 通过这一开源平台,世界各地的开发者们可以免费获得更优质和更容易使用的分布式机器学习算法源码,

各种编程语言的深度学习库整理

Python 1. Theano是一个python类库,用数组向量来定义和计算数学表达式.它使得在Python环境下编写深度学习算法变得简单.在它基础之上还搭建了许多类库. 1.Keras是一个简洁.高度模块化的神经网络库,它的设计参考了Torch,用Python语言编写,支持调用GPU和CPU优化后的Theano运算. 2.Pylearn2是一个集成大量深度学习常见模型和训练算法的库,如随机梯度下降等.它的功能库都是基于Theano之上. 3.Lasagne是一个搭建和训练神经网络的轻量级封装

64位Win7下安装并配置Python3的深度学习库:Theano

注:本文全原创,作者:ZMAN  (http://www.cnblogs.com/zmanone/) 这两天在安装Python的深度学习库:Theano.尝试了好多遍,CMake.MinGW.BLAS.APLACK等等都装了试着自己编译,网上教程也搜了一大堆,但都没成功.昨晚回家清理干净电脑,又小心翼翼地装了一遍,成功,今天来公司又装了一遍,也成功,现把步骤记录如下: (注:本步骤适用于WIN7 64位操作系统,Python版本为3.4.3 64bit) 1. 请将电脑清理干净.包括之前装的Mi

mxnet深度学习库简介

摘要: MXNet是一个深度学习库, 支持C++, Python, R, Scala, Julia, Matlab以及JavaScript等语言; 支持命令和符号编程; 可以运行在CPU,GPU,集群,服务器,台式机或者移动设备上. mxnet是cxxnet的下一代, cxxnet借鉴了Caffe的思想, 但是在实现上更加干净. MXNet安装: 这里针对的是Ubuntu 12+以上的系统的安装过程, 首先安装git(如果你电脑上还没有的话): # Install git if not alre

python-灰色预测平均房价趋势kera深度学习库的介绍

#######编程环境:Anaconda3 (64-bit)->Spyder(python3.5)from keras.models import Sequential #引入keras库 from keras.layers.core import Dense, Activation model = Sequential() #建立模型 model.add(Dense(12,input_dim=2)) #输入层2节点,隐藏层12个节点(这个节点数可以自行设置)model.add(Activati

TensorFlow-谷歌深度学习库 命令行参数

程序的入口: tf.app.run tf.app.run( main=None, argv=None ) 运行程序,可以提供'main'函数以及函数参数列表.处理flag解析然后执行main函数. 什么是flag解析呢? 由于深度学习神经网络往往需要对各种Hyperparameter调优,比如学习率,卷积核参数设置等等, 这时使用命令行调参是非常方便的. 需要用到TensorFlow框架中的tf.app.flags组件 tf.app.flags组件中提供很多自带的设置不同类型命令行参数以及其默认

JavaScript深度学习库

ConvNetJS is a Javascript library for training Deep Learning models (Neural Networks) entirely in your browser. Open a tab and you're training. No software requirements, no compilers, no installations, no GPUs, no sweat. http://cs.stanford.edu/people

深度学习库

http://deeplearning4j.org/

Anaconda3配置TensorFlow深度学习库

前言:目前Google已经发布了TensorFlow的Windows版本,只支持64位Python3.5,我们使用Anaconda3配置使用. 1.下载Anaconda3并打开Anaconda Navigator URL:https://www.continuum.io/downloads 2.新建TensorFlow环境 3.打开TensorFlow终端 并输入以下命令 pip install --ignore-installed --upgrade https://storage.googl