如何2小时快速入门MxNet?


【如何2小时快速入门MxNet?】一、MXnet的安装及使用
开源地址:https://github.com/dmlc/mxnet
如下是单节点的具体安装和实验流程 。参考于官方文档:http://mxnt.ml/en/latest/build.html#building-on-linux
1.1、基本依赖的安装
sudo apt-get update
sudo apt-get install -y build-essential git libblas-dev libopencv-dev
1.2、下载mxnet
git clone --recursive https://github.com/dmlc/mxnet
1.3、安装cuda
详见博客:http://blog.csdn.net/a350203223/article/details/50262535
1.4、编译支持GPU的MXnet
将mxnet/目录里找到mxnet/make/子目录 。把该目录下的config.mk复制到mxnet/目录 。用文本编辑器打开 。找到并修改以下两行:
USE_CUDA = 1
USE_CUDA_PATH = /usr/local/cuda
修改之后 。在mxnet/目录下编译
make -j4
1.5、安装Python支持
cd python;
python setup.py install
有些时候需要安装setuptools和numpy(sudo apt-get install python-numpy) 。
1.6、运行Mnist手写体识别实例
MNIST手写数字识别 。数据集包含6万个手写数字的训练数据集以及1万个测试数据集 。每个图片是28x28的灰度图 。在mxnet/example/image-classification里可以找到MXnet自带MNIST的识别样例 。我们可以先运行一下试试:
cd mxnet/example/image-classification
python train_mnist.py
在第一次运行的时候会自动下载MNIST数据集 。
以上的命令是使用默认的参数运行 。即使用mlp网络 。在cpu上计算 。
如果使用lenet网络 。在GPU上实现加速 。则使用如下命令:
python train_mnist.py --gpus 0 --network lenet
想要搞清楚一个框架怎么使用 。第一步就是用它来训练自己的数据 。这是个很关键的一步 。
二、MXnet数据预处理
整个数据预处理的代码都集成在了toosl/im2rec.py中了 。这个首先要造出一个list文件 。lst文件有三列 。分别是index label 图片路径 。如下图所示:

如何2小时快速入门MxNet?

文章插图
我这个label是瞎填的 。所以都是0 。另外最新的MXnet上面的im2rec是有问题的 。它生成的list所有的index都是0 。不过据说这个index没什么用.....但我还是改了一下 。把yield生成器换成直接append即可 。
执行的命令如下:
sudo python im2rec.py --list=True /home/erya/dhc/result/try /home/erya/dhc/result/ --recursive=True --shuffle=true --train-ratio=0.8
每个参数的意义在代码内部都可以查到 。简单说一下这里用到的:--list=True说明这次的目的是make list 。后面紧跟的是生成的list的名字的前缀 。我这里是加了路径 。然后是图片所在文件夹的路径 。recursive是是否迭代的进入文件夹读取图片 。--train-ratio则表示train和val在数据集中的比例 。
执行上面的命令后 。会得到三个文件:
如何2小时快速入门MxNet?

文章插图
然后再执行下面的命令生成最后的rec文件:
sudo python im2rec.py /home/erya/dhc/result/try_val.lst/home/erya/dhc/result --quality=100
以及 。sudo python im2rec.py /home/erya/dhc/result/try_train.lst/home/erya/dhc/result --quality=100
来生成相应的lst文件的rec文件 。参数意义太简单就不说了..看着就明白 。result是我存放图片的目录 。
如何2小时快速入门MxNet?

文章插图
这样最终就完成了数据的预处理 。简单的说 。就是先生成lst文件 。这个其实完全可以自己做 。而且后期我做segmentation的时候 。label就是图片了..
三、非常简单的小demo
先上代码:
如何2小时快速入门MxNet?

文章插图

    推荐阅读