`

深度学习框架的比较(MXNet, Caffe, TensorFlow, Torch, Theano)

 
阅读更多

1. 基本概念

1.1 MXNet相关概念

    深度学习目标:如何方便的表述神经网络,以及如何快速训练得到模型

    CNN(卷积层):表达空间相关性(学表示)

    RNN/LSTM:表达时间连续性(建模时序信号)
    命令式编程(imperative programming):嵌入的较浅,其中每个语句都按原来的意思执行,如numpy和Torch就是属于这种

    声明式语言(declarative programing):嵌入的很深,提供一整套针对具体应用的迷你语言。即用户只需要声明要做什么,而具体执行则由系统完成。这类系统包括Caffe,Theano和TensorFlow。命令式编程显然更容易懂一些,更直观一些,但是声明式的更利于做优化,以及更利于做自动求导,所以都保留。  

  浅嵌入,命令式编程 深嵌入,声明式编程
如何执行a=b+1 需要b已经被赋值。立即执行加法,将结果保存在a中。 返回对应的计算图(computation graph),我们可以之后对b进行赋值,然后再执行加法运算
优点 语义上容易理解,灵活,可以精确控制行为。通常可以无缝的和主语言交互,方便的利用主语言的各类算法,工具包,bug和性能调试器。 在真正开始计算的时候已经拿到了整个计算图,所以我们可以做一系列优化来提升性能。实现辅助函数也容易,例如对任何计算图都提供forward和backward函数,对计算图进行可视化,将图保存到硬盘和从硬盘读取。
缺点 实现统一的辅助函数和提供整体优化都很困难。 很多主语言的特性都用不上。某些在主语言中实现简单,但在这里却经常麻烦,例如if-else语句 。debug也不容易,例如监视一个复杂的计算图中的某个节点的中间结果并不简单。

    目前现有的系统大部分都采用上两种编程模式的一种。与它们不同的是,MXNet尝试将两种模式无缝的结合起来。在命令式编程上MXNet提供张量运算,而声明式编程中MXNet支持符号表达式。用户可以自由的混合它们来快速实现自己的想法。例如我们可以用声明式编程来描述神经网络,并利用系统提供的自动求导来训练模型。另一方便,模型的迭代训练和更新模型法则中可能涉及大量的控制逻辑,因此我们可以用命令式编程来实现。同时我们用它来进行方便的调式和与主语言交互数据。

 

1.2 深度学习的关键特点

      (1)层级抽象

      (2)端到端学习

2. 比较表

比较项 Caffe Torch Theano TensorFlow MXNet
主语言 C++/cuda C++/Lua/cuda Python/c++/cuda C++/cuda C++/cuda
从语言 Python/Matlab - - Python Python/R/Julia/Go
硬件 CPU/GPU CPU/GPU/FPGA CPU/GPU CPU/GPU/Mobile CPU/GPU/Mobile
分布式 N N N Y(未开源) Y
速度 中等 中等
灵活性 一般
文档 全面 全面 中等 中等 全面
适合模型 CNN CNN/RNN CNN/RNN CNN/RNN CNN/RNN?
操作系统 所有系统 Linux, OSX 所有系统 Linux, OSX 所有系统
命令式 N Y N N Y
声明式 Y N Y Y Y
接口 protobuf Lua Python C++/Python Python/R/Julia/Go
网络结构 分层方法 分层方法 符号张量图 符号张量图 ?
注:1)使用符号张量图描述模型,增加新的层更加方便;而分层方法增加新的层需要自己实现(forward,backward和gradient更新函数)。

3.详细描述

3.1 MXNet

   MXNet的系统架构如下图所示:

 

    从上到下分别为各种主语言的嵌入,编程接口(矩阵运算,符号表达式,分布式通讯),两种编程模式的统一系统实现,以及各硬件的支持。

    MXNet的设计细节包括:符号执行和自动求导;运行依赖引擎;内存节省。

3.2 Caffe    

    优点:

    1)第一个主流的工业级深度学习工具。
    2)它开始于2013年底,由UC Berkely的Yangqing Jia老师编写和维护的具有出色的卷积神经网络实现。在计算机视觉领域Caffe依然是最流行的工具包。

    3)专精于图像处理

    缺点:    

    1)它有很多扩展,但是由于一些遗留的架构问题,不够灵活且对递归网络和语言建模的支持很差。

    2)基于层的网络结构,其扩展性不好,对于新增加的层,需要自己实现(forward, backward and gradient update)

3.3 TensorFlow

   优点:

   1) Google开源的其第二代深度学习技术——被使用在Google搜索、图像识别以及邮箱的深度学习框架。

   2)是一个理想的RNN(递归神经网络)API和实现,TensorFlow使用了向量运算的符号图方法,使得新网络的指定变得相当容易,支持快速开发。

   3)TF支持使用ARM/NEON指令实现model decoding

   4)TensorBoard是一个非常好用的网络结构可视化工具,对于分析训练网络非常有用

   5)编译过程比Theano快,它简单地把符号张量操作映射到已经编译好的函数调用

   缺点:

   1) 缺点是速度慢,内存占用较大。(比如相对于Torch)

   2)支持的层没有Torch和Theano丰富,特别是没有时间序列的卷积,且卷积也不支持动态输入尺寸,这些功能在NLP中非常有用。

    

   

3.4 Torch

    优点:    

    1)Facebook力推的深度学习框架,主要开发语言是C和Lua

    2)有较好的灵活性和速度
    3)它实现并且优化了基本的计算单元,使用者可以很简单地在此基础上实现自己的算法,不用浪费精力在计算优化上面。核心的计算单元使用C或者cuda做了很好的优化。在此基础之上,使用lua构建了常见的模型

    4)速度最快,见convnet-benchmarks

    5)支持全面的卷积操作:

          - 时间卷积:输入长度可变,而TF和Theano都不支持,对NLP非常有用;

          - 3D卷积:Theano支持,TF不支持,对视频识别很有用
    缺点

    1)是接口为lua语言,需要一点时间来学习。

    2)没有Python接口

    3)与Caffe一样,基于层的网络结构,其扩展性不好,对于新增加的层,需要自己实现(forward, backward and gradient update)

    4)RNN没有官方支持

3.5 Theano

    优点:

    1)2008年诞生于蒙特利尔理工学院,主要开发语言是Python

    2)Theano派生出了大量深度学习Python软件包,最著名的包括Blocks和Keras

    3)Theano的最大特点是非常的灵活,适合做学术研究的实验,且对递归网络和语言建模有较好的支持

    4)是第一个使用符号张量图描述模型的架构

    5)支持更多的平台

    6)在其上有可用的高级工具:Blocks, Keras等

    缺点:

   1)编译过程慢,但同样采用符号张量图的TF无此问题

   2)import theano也很慢,它导入时有很多事要做

   3)作为开发者,很难进行改进,因为code base是Python,而C/CUDA代码被打包在Python字符串中

参考资料:

1)MXNet设计和实现简介

2)Evaluation of Deep Learning Toolkits

3)TensorFlow vs. Theano vs. Torch comparison

 

 

原方链接:http://blog.csdn.net/myarrow/article/details/52064608

 

分享到:
评论

相关推荐

    深度学习框架Caffe在图像分类中的应用.pdf

    3. 深度学习开源框架的兴起:随着GPU计算的普及,大量深度学习开源框架涌现,如Caffe、Theano、Torch、CXXNet和MXNet等。Caffe以其易用性和强大的性能成为了众多框架中较为成熟和完善的选择。 4. Caffe框架在图像...

    deeplearning-cfn:使用CloudFormation(CFN),MXNet和TensorFlow在AWS上进行分布式深度学习

    AWS CloudFormation深度学习模板使用 (提供MXNet,TensorFlow,Caffe,Theano,Torch和CNTK框架)启动实例和执行分布式深度学习所需的其他AWS资源的集群。 使用此模板,我们将继续致力于使 。 AWS CloudFormation...

    10个深度学习框架

    5. **MXNet**:Apache MXNet是由亚马逊AWS支持的深度学习框架,支持多语言接口,如Python、Julia、R等,同时具有高效和可扩展的特点。 6. **Theano**:Theano是一个早期的深度学习框架,提供数学表达式的编译和优化...

    人工智能发展需警惕深度学习框架.pdf

    目前,国际上较为知名的深度学习框架包括TensorFlow、Theano、Torch、Caffe、CNTK、MXNet、DL4J、DSSTNE、Paddle、Keras、Lasagne等。TensorFlow作为Google开发并开源的分布式深度学习框架,成为了最受欢迎的深度...

    linux-Deepo开箱即用的深度学习Docker镜像集十余种深度学习框架于一身

    Deepo:开箱即用的深度学习Docker镜像,集十余种深度学习框架于一身:theano, tensorflow, sonnet, pytorch, keras, lasagne, mxnet, cntk, chainer, caffe, torch。

    深度学习框架演进(2021)(25页).pdf

    这篇报告深入探讨了深度学习框架的历史演变,从早期的Torch、Theano到Caffe,再到如今广泛应用的TensorFlow和MXNet,以及中国的PaddlePaddle等框架。 1. **深度学习框架简史** - Torch:2002年推出的Torch是一个...

    [从0到1]关于深度学习,这里比你想的还要全.pdf

    深度学习的开源框架有TensorFlow、CNTK、Torch、Caffe、Theano、Mxnet等。TensorFlow和CNTK由于有谷歌和微软的后续技术支持,可以作为研究学习的开发工具平台。这些框架可以帮助开发者快速搭建深度学习模型,并且...

    CS224d-Lecture7

    对于深度学习框架的生态系统,存在多种不同的框架可供选择,包括但不限于Torch、Caffe、Theano(及其衍生库Keras和Lasagne)、CuDNN以及Mxnet等。在选择框架时,需要考虑的因素包括模型规范方式(配置文件如Caffe和...

    不同的深度学习框架下训练好的模型保存的格式不同,对于模型的改进和部署记录本人在模型转换过程中的一些记录.zip

    在实际应用中,不同的深度学习框架因其特点和优势,被广泛采用。然而,这些框架之间的模型保存格式并不统一,这给模型的跨框架迁移、改进和部署带来了挑战。 本资料集是作者在模型转换过程中的一些实践记录,旨在...

    TensorFlow in 1 Day: Make your own Neural Network完整版

    整个内容涵盖了深度学习的基础概念、TensorFlow框架的介绍、与其它深度学习框架的比较、TensorFlow的安装和配置、以及如何在云端使用TensorFlow。通过这样的全面介绍,即使是初学者也能够在一天之内掌握如何使用...

    深度学习工具箱

    4. Caffe:Caffe(Convolutional Architecture for Fast Feature Embedding)是一个速度极快的深度学习框架,特别适合卷积神经网络(CNN)。它强调计算效率和可扩展性,广泛应用于计算机视觉任务。Caffe的配置文件...

    AWS 人工智能概览II.pdf

    AWS的AI/ML产品堆栈包括应用服务(如Lex、Polly、Translate、Rekognition、Transcribe、Comprehend)、平台服务(如Amazon SageMaker、Amazon Mechanical Turk)、框架(如Apache MXNet、TensorFlow、Theano、Keras...

    GitHub上最受欢迎的57个深度学习开源项目

    涵盖了深度学习的多个方面,包括 TensorFlow、Caffe、Neural style、Deep Dream、Keras、RocAlphaGo、TensorFlow Models、Neural Doodle、CNTK、TensorFlow Examples、ConvNet JS、Torch、OpenFace、MXNet、Theano、...

    深度学习库.zip

    4. Caffe:加州大学伯克利分校开发的一个速度极快的深度学习框架,专注于计算机视觉任务。Caffe以其高效的计算和内存管理在工业界得到广泛应用。 5. MXNet:亚马逊AWS推荐的深度学习库,支持多种编程语言(如Python...

    GitHub上最受欢迎的57个深度学习开源项目.docx

    14. MXNet:轻量级、跨平台的深度学习框架,支持多种编程语言,兼顾灵活性和效率,特别适合分布式和移动设备的应用。 15. Theano:Python 库,用于定义、优化和求解数学表达式,尤其适用于处理多维数组的深度学习...

    深度学习模型转换器:针对不同深度学习框架软件的深度学习模型的转换器转换

    - Caffe:一种轻量级、速度快的深度学习框架,特别适合计算机视觉任务。 - TensorFlow:由Google开发,广泛应用于学术界和工业界,支持灵活的模型构建和大规模分布式训练。 - Keras:高级神经网络API,运行于...

    深度学习500问-Tan-03第三章 深度学习基础1

    常见的深度学习框架有Caffe、Torch、MXNet、CNTK、Theano、TensorFlow和Keras等。每个框架都有其特点,开发者应根据项目需求和自身技能选择合适的一个。\n\n**深层表示的优势**\n\n深度神经网络的多层结构允许学习多...

    GitHub上最受欢迎的57个深度学习开源项目.pdf

    Leaf是一个开放的机器学习框架,结合了多种框架的优点,如TensorFlow、Torch和Caffe,强调模块化、性能和跨平台兼容性。 最后,Char-RNN是一种用于生成文本的循环神经网络模型,常用于创作诗歌或模仿特定写作风格。...

Global site tag (gtag.js) - Google Analytics