学习DL框架的未来发展,TensorFlow/MXNet/Torch, 选哪个?
Posted 机器学习研究会
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习DL框架的未来发展,TensorFlow/MXNet/Torch, 选哪个?相关的知识,希望对你有一定的参考价值。
知乎上的问题:
DL framework的学习成本还是不小的,以后未来的发展来看,你建议选哪个?
请主要对比分析下4个方面吧:
1. 实现新计算单元(layer)和网络结构的便利性
如:RNN, bidirectional RNN, LSTM, GRU, attention机制, skip connections等。
2. 实现不同学习任务的便利性
classification和regression自不用说,其他的: multi-label, multi-task, adversarial learning, reinforcement learning等。
3. 调试和排查问题的便利性
这个很重要啊,所以没考虑Theano了。
4. 社区和支持
MXnet没有大公司在推,随着TF/Torch的发展,怕会逐渐被冷落啊
知乎用户【lau phunter】关于MXNet的回答:
我先从技术角度客观评论一下MXNet和其他平台的对比,帮助楼主选择平台,兼回答一下楼上楼下对MXnet的一些疑问。
讨论一个机器学习系统需要从两方面来讨论,骨骼和肉。骨骼代表一个框架的架构设计思想,,肉代表了比如operator实现了那些,外部样例的支持程度等。肉必须要长在骨头上,骨头的好坏决定了一个框架最终可以走多远和它的扩展性,肉长多少决定了在已有设计框架下面功能的全面性。
从骨骼上面,mxnet的设计思路优于TF
包括TF在内的图计算框架都有一个限制,就是需要用户把所有的计算全部都表示成一张图来高效运行。这么做不论是在逻辑上,调试上以及和运行环境的交互(python)上面都是有一定劣势。这也是为什么torch采取了支持用户把计算拆分成多步来做,用户可以直接利用lua来选择下一步执行什么。用户可以比较简单地对计算进行模块分割,并且根据比如输入长度的不同来直接动态改变需要运行哪一个步骤。
简单来说,Torch为代表的过程式计算更加灵活。但是基于图计算的框架也提供了比如自动多卡并行调度,内存优化等便利条件。
MXNet结合了这两种编程思路, 允许用户自由把图计算和过程计算混合起来, 并且可以对多步执行进行自动多卡调度, 使得程序在需要优化的部分可以非常优化,而必要的时候可以通过过程计算来实现一些更加灵活的操作, 并且所有的操作都可以自动并行(TF只能并行一个图的执行,但是不能并行像torch这样的多步执行的操作)。结果就是MX可以利用更短的代码来实现TF需要深度修改的东西才可以实现的哦东西,如支持变长LSTM的bucketing API需要大约10行python。
为什么TF和Torch会成为这样不同的设计也有它们自己的原因。TF由G的优秀工程师设计,更加注重性能和优化。Torch本身是researcher设计的,更加注重灵活性。真正好的设计需要兼顾这两方面的需求,DMLC的同学因为同时有系统和机器学习的背景,才会做出结合两者优点的设计。这样的设计思路是深度学习框架的未来,也会影响包括TF和torch在内的框架的转变。
原文链接:
https://www.zhihu.com/question/46587833
以上是关于学习DL框架的未来发展,TensorFlow/MXNet/Torch, 选哪个?的主要内容,如果未能解决你的问题,请参考以下文章