mxnet 运行自己的数据

本文结合了以下两个博客的内容:

http://blog.csdn.net/shuzfan/article/details/50037273

http://blog.csdn.net/sunshine_in_moon/article/details/50266739

第一个博客讲的很详细,第二个博客作为补充


mxnet上训练主要包含三部分:

1. 数据格式的形成: mxnet已经自带工具

2. 迭代器实现数据与网络的关联

3. 自身网络的设计与运行


1. 数据格式的形成:

(1)生成图片列表:在mxnet/tools/下,有工具make_list.py, 通过执行以下代码:

python make_list.py --exts=.jpg --recursive=True ~/lfw ~/lfw/image 
将在~/lfw/下生成image.lst文件,里面包含了图片的index,label和路径

(2)生成RecordIO格式的数据:在bin下,应该有im2rec的可执行文件

im2rec ~/lfw/image_list.lst ~/lfw/ ~/lfw/output_lfw.rec resize=128 
将生成output_lfw.rec,这就是所需的格式


2.迭代器的生成:

模仿example/image-classification/train_imagenet.py的例子自己实现


3.构建模型开始训练

这里参照第一个博客的方法:

(1)新建一个文件夹,将/example/image-classification文件夹下find_mxnet.py、symbol_alexnet.py、train_imagenet.py和train_model.py这4个文件copy进来; 


(2)保持find_mxnet.py文件不变,在symbol_alexnet.py中按照里面Alexnet网络的构建方法来建立自己的网络。最后最好再把文件名改为自己的网络名,如mynet.py; 


(3)将train_imagenet.py最好也修改一下名字,如改为train_xx.py.将第40行代码中的’symbol’删除,否则你的网络文件就必须以‘symbol’开始命名,如symbol_mynet.py.

net = importlib.import_module('symbol_' + args.network).get_symbol(args.num_classes)
改为:
net = importlib.import_module(args.network).get_symbol(args.num_classes)

剩下的就是要在parser.add_argument中修改默认值了,否则你在调用mynet.py就必须准确的指定每一个参数。 


(4)写一个脚本文件,运行脚本文件就可以开始训练了

python train_xx.py --data-dir=xx --model-prefix==xx --gpus=0
# 如果想要在每次epoch结束时保存一个模型,那么model-prefix就不能为空







你可能感兴趣的:(deep,learning)