雷锋网按:本文作者解浚源,原载于知乎,雷锋网已获其授权。
经过3个月的开发,MXNet 0.11版发布啦!0.11是MXNet正式加入Apache以后的第一个版本,官方网站搬到了Apache的服务器(注意:要在最上方Version处选择master才能看到包含Gluon的最新文档)。
这次最大的改进是加入了动态图接口Gluon。Gluon学习了Keras,Chainer,和Pytorch的优点,并加以改进。接口更简单,且支持动态图(Imperative)编程。相比TF,Caffe2等静态图(Symbolic)框架更加灵活易用。同时Gluon还继承了MXNet速度快,省显存,并行效率高的优点,并支持静、动态图混用,比Pytorch更快。
同时为了彻底解决MXNet文档不全的弱点,我们还特地邀请了前CMU知名教授Alex Smola和即将出任CMU教授的小网红Zachary Lipton联手为Gluon打造文档!
Gluon采用Keras和Numpy风格API,并且Layer可以自动判断输入长度。用过Chainer和Pytorch的人想必都体会过每一层都要记住前一层输出长度的麻烦,从卷积层到全连接层过渡时长度计算更是痛苦,往往要运行一遍才知道。在Gluon里则没有这种问题,每层只要指定输出长度,输入长度则可以由系统自动计算。
深度学习框架大体分为两类:以TensorFlow,caffe2为代表的静态图(Symbolic)框架和以Chainer,Pytorch为代表的动态图(Imperative)框架。静态图的优势在于速度快,省内存,便于线上部署。而动态图框架的优势是灵活,易用,debug方便,特别是在自然语言处理和增强学习等领域,比起静态图框架有显著优势。
Gluon同时支持灵活的动态图和高效的静态图,让你在享受动态编程的灵活易用的同时最小化性能的损失。而Gluon的HybridBlock和hybridize接口让你可以在静态动态间一键切换。0.11版Gluon比0.20版Pytorch快10%以上,在未来的一两个月我们会加入更多优化,再提高10%以上的性能。
深度学习的教材和样例虽多,但是教材往往重理论轻实践,而样例重实践却不系统。为了填补理论和实践之间的空白,并一举解决MXNet文档不全的弱项,我们特邀两位CMU教授Alex Smola和Zachary Lipton为Gluon撰写一部兼顾深度学习理论,动手编程,和实战应用的文档+教材。
Gluon教程包括深度学习理论讲解和代码实践。前五章每个例子都包括了两个版本。从零开始(from scratch)版本深入讲解所有细节,Gluon版本则着重演示高级封装的灵活高效。建议刚开始接触深度学习的同学从头开始顺序阅读,而已经有一定经验的同学可以跳过基础教程只看Gluon版。这套教程现在在Github上公开写作,共计划18章,已经完成了前五章。印刷出版和中文翻译也在计划中。我们保证每天更新,绝不弃坑,欢迎大家试读,也欢迎参与创作!
Tensorflow:Gluon同时支持静态图和动态图,在灵活性和速度上都有优势。但由于Gluon刚刚面市,在成熟度和线上部署方面还有不足。总的来说在做深度学习研究的同学不妨一试。
Pytorch:Gluon与Pytorch的相似度很高,而Gluon独特的静、动态图混合功能可以在不牺牲灵活性的前提下提高性能。如果你喜欢pytorch的简单易用又在乎性能,那么强烈建议你试一试Gluon。
Apache MXNet官方网站:https://mxnet.incubator.apache.org/
0.11 新特性:https://github.com/apache/incubator-mxnet/releases
安装指南:https://mxnet.incubator.apache.org/versions/master/get_started/install.html
Gluon教程:http://gluon.mxnet.io/
Gluon讲座PPT: https://github.com/zackchase/mxnet-slides/blob/master/kdd-mxnet-slides.pdf
Gluon深度学习样例:https://github.com/apache/incubator-mxnet/tree/master/example/gluon