博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MxNet使用总览
阅读量:4259 次
发布时间:2019-05-26

本文共 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
  • 1
  • 2

step2是安装OpenBLAS,这是一个计算加速库,当你step4要编译openlab的时候如果这个地方没有安装好openlab就会报错。 

Step 2 Install OpenBLAS.

$ sudo apt-get install -y libopenblas-dev liblapack-dev
  • 1

安装opencv,opencv主要用在图像数据导入和预处理。 

Step 3 Install OpenCV.

$ sudo apt-get install -y libopencv-dev
  • 1

前面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
  • 1
  • 2
  • 3

如果你没编译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
  • 1

step 2:先升级pip命令,然后用pip install -e .表示install a project in editable mode,就可以在任何地方import mxnet了。

$ cd python$ pip install --upgrade pip$ pip install -e .
  • 1
  • 2
  • 3

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中是怎么做图像预处理的。

你可能感兴趣的文章
AES加密
查看>>
使用Github进行合作开发
查看>>
Impala入门笔记(转载)
查看>>
cloudera Manager中监控数据的存储
查看>>
Kafka简要介绍
查看>>
Maven环境的搭建
查看>>
hbase 学习梳理
查看>>
浅谈医学大数据(中)
查看>>
阿里巴巴数据产品经理工作总结
查看>>
大数据的特点及作用
查看>>
IBM朱辉:大数据分析的5个高复制使用场景及案例分享(含PPT)
查看>>
Java返回对象快捷键
查看>>
STL中的Iterator
查看>>
C语言拾遗
查看>>
数据库查询语句拾遗
查看>>
STL中的Vector
查看>>
C++中的trivial、standard layout、POD
查看>>
阿里中间件三大存储系统
查看>>
Tair源码阅读1---ConfigServer
查看>>
STL中的RB-tree
查看>>