本文共 1970 字,大约阅读时间需要 6 分钟。
写这篇博文的初衷是希望能整理下自己在使用MxNet过程中对这个框架的理解。详细的介绍都给出了链接,这篇相当于一个概括,希望能对这个框架有一个总的认识,内容会不断补充,有疑问的欢迎交流,谢谢。
1、下载MxNet并编译
MxNet的官方网址: 我这里选择如下安装方式:然后按照 Build the MXNet core shared library 介绍的4个步骤进行安装即可:
step1主要是更新一些工具和git,apt-get就是从网上获取并安装的意思。
Step 1 Install build tools and git.$ sudo apt-get update$ sudo apt-get install -y build-essential git
step2是安装OpenBLAS,这是一个计算加速库,当你step4要编译openlab的时候如果这个地方没有安装好openlab就会报错。
Step 2 Install OpenBLAS.$ sudo apt-get install -y libopenblas-dev liblapack-dev
安装opencv,opencv主要用在图像数据导入和预处理。
Step 3 Install OpenCV.$ sudo apt-get install -y libopencv-dev
前面3个step可以看成是准确工作,step4是拉取mxnet项目,然后编译,注意编译的时候有几个参数,如果要用GPU的话,USE_CUDA是必须要有的,另外USE_CUDNN是NVIDIA的一个深度神经网络加速库,一般也是需要的,如果没有的话最多速度慢一些,但是可以跑,建议用。
Step 4 Download MXNet sources and build MXNet core shared library.$ git clone --recursive https://github.com/dmlc/mxnet$ cd mxnet$ make -j $(nproc) USE_OPENCV=1 USE_BLAS=openblas USE_CUDA=1 USE_CUDA_PATH=/usr/local/cuda USE_CUDNN=1
如果你没编译mxnet就在python环境中import mxnet,就会出现找不到mxnet的错误。
上面这些运行成功后,你可以在mxnet/python/目录下进入python环境,并且import mxnet成功,但是如果想要在任何地方都可以成功import mxnet,还需要以下操作: step 1:安装一些需要的库$ sudo apt-get install -y python-dev python-setuptools python-numpy python-pip
step 2:先升级pip命令,然后用pip install -e .表示install a project in editable mode,就可以在任何地方import mxnet了。
$ cd python$ pip install --upgrade pip$ pip install -e .
2、训练模型的入口
我们知道训练一个模型需要定义一个网络结构,然后喂给这个网络数据,最后训练得到合适的模型。又因为现在基本上都是在预训练模型上做fine-tune,所以这里直接介绍MxNet里面fine-tune的快速操作。可以参看博文:。 在fine-tune.py这个脚本中,最重要的是调用了fit.fit()函数训练,这个fit.py脚本的介绍可以看博客:。这个脚本也是在最终训练之前封装好的一个脚本。那么具体训练的细节在哪呢?答案是base_module.py和module.py。base_module.py是MxNet训练模型的基类的脚本,而module.py则是继承base_module里面的基类的具体实现,包括前向和后向传递等等,相关的博文介绍可以参看:和。3、关于数据读取和预处理
fine-tune.py这个脚本是MxNet官方写好的,默认的数据读入方式是.rec,类似Caffe里面的LMDB,关于数据读取,可以参看博文:。这种.rec格式的数据一般需要较多的存储空间,当你需要灵活增减数据时候需要重新生成新的.rec文件,不是很灵活,因此推荐使用lst列表和原始图像结合的数据读取方式,可以参看博文:。这种数据读取的方式还涉及图像预处理的部分,原来的MxNet项目中没有相应的例子,可以参看博文:。了解在mxnet.image.ImageIter中是怎么做图像预处理的。