这篇文章我想来比较一下Theano和mxnet,Torch(Torch基本没用过,所以只能说一些直观的感觉)。我主要从以下几个方面来计较它们:

1.学习框架的成本,接口设计等易用性方面。

  三个框架的学习成本在我看来是

  Theano>Torch>mxnet

  因为Torch底层语言是lua,一种类似python和js的脚本语言,熟悉python或者js的同学学起来应该挺容易(可我偏偏不会脚本语言),但毕竟lua是一种比较小众的语言,所以对于大多数人来说还是需要花费一定的学习成本,因为我实在是没有太多的接触过,所以我只能凭感觉把它排在第二。对于刚从Theano转到mxnet的我来说,第一各感觉就是编程变的容易了,举一个非常简单的例子,在Theano中,定义一个Symbolic scalar还得先查查文档向量对应什么,矩阵对应什么(简直难受的要命),而mxnet中对应的symbolic variable只有一个方法。下图仅仅是Theano Symbolic scalar类型的一部分,当一个初学者使用时会带来极大的不便。

  我为什么会觉得mxnet最容易学的一个重要原因是:虽然mxnet底层是由c++实现,但它提供了python,lua,R,Go和js等多种语言接口(最近好像还加入了jvm语言scala的接口),这使得使用不同语言的人都可以快速的使用上mxnet而不需要跨过一个语言的鸿沟。这也是为什么我觉得mxnet上手最容易。

2.框架的社区活跃程度,普及性

  首先我们来看看三个框架在github上的star和fork数:

 

  然后是贡献热度图:

  三个框架中,最老牌的要数Theano,框架出现的时间最久,贡献热度也稳定。torch是三个中star数最多的,但是贡献热度确不是很高,mxnet是一个新兴的框架,这个框架的贡献者热情非常高涨,一些新近出现的模型可以找到(今天就有新加上了14年的一个比较新的神经语言模型)。所以,三个框架theano和troch已经比较稳定,而且也有大量的论文实验都是基于着两个框架的,mxnet出现的时间不久,但社区热情很高,一些前沿的算法和模型都有mxnet的实现版本。

3.框架性能和可扩展性

  三个框架中,theano和torch都只支持单机版,mxnet支持分布式,mxnet还强调能可以在多种设备上使用。从这个角度来看,theano和torch更适合于研究来使用,而mxnet是有可能和google的tensorflow一样应用到实际的生产环境中去的。

  

  左右两张图分别比较了mxnet与torch和torch与theano的运行速度,虽然这只是在特点例子下的比较,但还是可以清楚的看到,torch和mxnet结合gpu加速计算的能力高于theano。

  以上就是我对这三个框架的一些比较,纯属个人愚见,每个框架都有自己的好处和不足,真正使用哪个框架完全取决于个人的情况,希望我这点比较能提供一点帮助。

  

mxnet,theano与torch的简单比较的更多相关文章

  1. 转:TensorFlow和Caffe、MXNet、Keras等其他深度学习框架的对比

    http://geek.csdn.net/news/detail/138968 Google近日发布了TensorFlow 1.0候选版,这第一个稳定版将是深度学习框架发展中的里程碑的一步.自Tens ...

  2. 【神经网络与深度学习】chainer边运行边定义的方法使构建深度学习网络变的灵活简单

    Chainer是一个专门为高效研究和开发深度学习算法而设计的开源框架. 这篇博文会通过一些例子简要地介绍一下Chainer,同时把它与其他一些框架做比较,比如Caffe.Theano.Torch和Te ...

  3. Ubuntu16.04+cuda8.0rc+opencv3.1.0+caffe+Theano+torch7搭建教程

    https://blog.csdn.net/jywowaa/article/details/52263711 学习中用到深度学习的框架,需要搭建caffe.theano和torch框架.经过一个月的不 ...

  4. TensorFlow 简单实例

    TF 手写体识别简单实例: TensorFlow很适合用来进行大规模的数值计算,其中也包括实现和训练深度神经网络模型.下面将介绍TensorFlow中模型的基本组成部分,同时将构建一个CNN模型来对M ...

  5. Amazon宣布将MXNet作为AWS的深度学习框架——貌似性能比tf高啊

    Amazon公司的Werner Vogels于上周宣布Amazon深度学习框架将会正式选用MXNet,并且AWS将会通过增加源代码贡献.改进文档以及支持来自其它框架的可视化.开发以及迁移工具,为实现M ...

  6. Theano2.1.17-基础知识之剖析theano的函数

    来自:http://deeplearning.net/software/theano/tutorial/profiling.html Profiling Theano function note:该方 ...

  7. MXNet 分布式环境部署

    MXNet 分布式环境部署 1. MxNet 分布式介绍 先忽略吧, 回头在填上去 2. 分布式部署方法 假设有两台主机ip地址分别是xxx.xxx.xxx.114 和 xxx.xxx.xxx.111 ...

  8. Windows中安装Pytorch和Torch

    近年来,深度学习框架如雨后春笋般的涌现出来,如TensorFlow.caffe.caffe2.PyTorch.Keras.Theano.Torch等,对于从事计算机视觉/机器学习/图像处理方面的研究者 ...

  9. GitHub 上 57 款最流行的开源深度学习项目

    转载:https://www.oschina.net/news/79500/57-most-popular-deep-learning-project-at-github GitHub 上 57 款最 ...

随机推荐

  1. webpack2 项目构建一

    最近工作忙,学习被暂停了,还是网上多看看资料,多学习学习一下,看到一些好的资料,自己想整理一下,这不,webpack2项目构建都还没有弄懂,webpack3就已经发布了,说实话周末现在真不想看书和研究 ...

  2. 【Atcoder ARC060F】最良表現 / Best Representation

    Atcoder ARC060 F 题意:给一个串,求将其分成最少的没有循环节的串的种数. 思路:先求KMP的\(fail\)数组.然后发现最少的串数只有三种可能:\(1\).\(2\).\(n\). ...

  3. ubuntu开机自动运行用Qt写的程序

    这里介绍一种在ubuntu系统开机自动运行使用Qt编写的程序的方法.首先要注意要自动运行Qt编的程序,不需要先打开Qt,而是直接运行编译好的与工程名同名的可执行文件即可,比如我要运行的工程为QRDec ...

  4. 关于Http 传输二维json

    传输一维的好说 public static String doPost(String url) { String result = new String(); OutputStream out = n ...

  5. oracle if/else功能的实现的3种写法

    转载:oracle中if/else功能的实现的3种写法 以下是内容留存: 1.标准sql规范 一.单个IF . if a=... then ......... end if; . if a=... t ...

  6. VC++编写简单串口上位机程序

    VC++编写简单串口上位机程序   转载: http://blog.sina.com.cn/s/articlelist_1809084904_0_1.html VC++编写简单串口上位机程序 串口通信 ...

  7. [Spark][Python]Spark 访问 mysql , 生成 dataframe 的例子:

    [Spark][Python]Spark 访问 mysql , 生成 dataframe 的例子: mydf001=sqlContext.read.format("jdbc").o ...

  8. springboot 读取 yml 配置的几种方式

    前言:在springboot 项目中一般默认的配置文件是application.properties,但是实际项目中我们一般会使用application.yml 文件,下面就介绍一下在springbo ...

  9. js类型----你所不知道的JavaScript系列(5)

    ECMAScirpt 变量有两种不同的数据类型:基本类型,引用类型.也有其他的叫法,比如原始类型和对象类型等. 1.内置类型 JavaScript 有七种内置类型: • 空值(null) • 未定义( ...

  10. BugkuCTF 矛盾

    前言 写了这么久的web题,算是把它基础部分都刷完了一遍,以下的几天将持续更新BugkuCTF WEB部分的题解,为了不影响阅读,所以每道题的题解都以单独一篇文章的形式发表,感谢大家一直以来的支持和理 ...