十一维的风MXNET

[MXnet] Simple Introduction to t

2016-05-20  本文已影响5719人  ToeKnee

MXnet的学习笔记,这次主要是MXnet提供的example的综述介绍。关于MXnet在OSX下的编译安装,可以看这里Mac下编译安装MXNet!!!

简介


MXnet的样例程序分为5个部分,分别是

  1. Deep Learning Examples 包括各种深度学习应用与比赛的实例
  2. Languages Binding Examples 包括各种MXnet已支持或开发中的多语言实现样例(C++/ R/ Julia/ Go/ JNI/ JavaScript 等,以及为移动端开发而设计的Amalgamation代码整合工具)
  3. IPython Notebooks MXnet的一些基本教程,基于IPython的Notebook格式,要想在OSX上配置IPython及使用Notebook的步骤见这里

IPython is an awesome tool that allows you to combine Python codes with rich text to create meaningful & interactive contents.

  1. Mobile App Examples 各种移动平台(iOS/ Android)上如何使用MXnet的示例
  2. Web Predictive Services 使用MXnet搭建的Web Service实例
  3. Others 其他的东西

下面主要介绍一下第一部分Deep Learning Examples里的例子,以及第六部分“其他的东西”。

Deep Learning Examples


基本上按照应用的网络结构来区分,可以把MXnet中深度学习的示例分为三大类,基于CNNRNN、以及自动编码机(Auto Encoder)的神经网络。

一、基于CNN的样例

1. Image classification 图像分类

实现了在MNIST、CIFAR、ImageNet-1k、ImageNet-Full 等数据集上的图像识别,实现了基于多GPU的训练以及分布式训练。 [./mxnet/example/image-classification]
实现的网络结构包括

LeNet和MLP的网络结构都定义在train_mnist.py中,其他网络的结构都定义在对应的symbol_*net.py里。
对于不同的训练数据集,MXnet提供了不同的训练接口 train_mnist.pytrain_cifar10.pytrain_imagenet.py
根据提供的参数不同,train_*.py可以支持多种训练和结果输出方式,除了神经网络训练中常见的设定迭代次数、batch-size学习率、动态学习率的因子和迭代次数、以及指定训练集和测试集的相关参数外,还支持:

2. Image Segmentation 图像分割

基于VGG16网络,使用FCN(Fully Conventional Network)模型进行图像分割,可以选择自己训练或者下载预训练过的模型直接进行图像分割。[~/mxnet/example/fcn-xs]

3. Image Identification 图像识别

4. Image Artistic Style 图像艺术风格

来自文章A Neural Algorithm of Artistic Style,搭建了一个基于深度神经网络来分解图像的内容风格,并把提取出的风格和其他的内容结合起来,生成新的图像。就像这样子

输入:梵高的“星夜”风格和一张风景图片 输出:“星夜”风的风景图
网络结构选择的是VGG19,更详细一点的介绍可以看这里:[MXnet] Neural Art
[~/mxnet/example/neural-style]

5. Text Classification 文本分类

来自文章Convolutional Neural Networks for Sentence Classification,MXnet例子中实现的做了简化(具体怎么简化还没有细看)。
实现的时候基于这篇博客,网络结构 looks roughly as follows
[~/mxnet/example/cnn_text_classification]

Bedrooms after 5 epochs

还是挺像真实的卧室的~

8. Bayesian Methods 贝叶斯方法

使用优化的贝叶斯方法来进行深度网络训练,以降低网络过拟合的问题。
[~/mxnet/example/bayesian-methods]

二、基于RNN的样例

1. Natural Language Processing 自然语言处理

使用了MXnet底层的Symbol接口实现的RNN例子。 [~/mxnet/example/rnn]

2. Array Sorting 数组排序

使用Bidirection LSTM进行数组排序。
[~/mxnet/example/bi-lstm-sort]

3. Speech Recognition 语音识别

使用LSTM进行语音识别,借助Kaldi Speech Recognition Toolkit进行预处理,网络结构定义在 lstm_proj.py 中。
[~/mxnet/example/speech-demo]

三、基于自动编码机Auto Encoder的样例

在MXnet上实现了自动编码机(Auto Encoder)网络,使用了MNIST数据集进行测试。 [~/mxnet/example/audoencoder] [~/mxnet/example/dec]

Others 其他东西


在MXnet的例子中,还有几个没有被囊括进来的:

一点感受


因为对CNN的了解比较多一点,主要是看了一下基于CNN的例子的代码。
感觉上用MXnet定义神经网络结构确实比较方便友好,比如Image Classification中的例子,用不同的网络对同一个数据集进行训练,只需要简单的通过调用MXnet内置的高阶Symbol API,指定卷积层、非线性转化(激活)层、池化(下采样)层、全连接层、Softmax层等等的参数和连接方式,由于MXnet已经预先把每一层用Symbol的方式生成了计算图,只要在使用时指定参数即可。
基于CNN的网络的训练过程基本上类似,都通过调用 train_model.py ,把设定好的网络结构、网络参数、训练数据集、测试数据集等等传到统一的接口进行训练。
可能使用MXnet实现基于CNN的不同应用最大的区别就在于网络结构、参数的指定,以及数据集的处理(通过 train_*.py 中的 get_iterator 方法,与参数服务器Parameter Server相关)。
由于现在还是起步阶段,对于基于RNN和Auto Encoder的例子实现还没有做更深入的分析,对于MXnet内部Symbol和KVstore的实现机制也只是粗略的了解,在之后的研究学习中将做进一步探究。

上一篇下一篇

猜你喜欢

热点阅读