本人对于 MXNet 官方文档的 github 翻译页面:
https://github.com/ironyoung/mxnet/blob/master/docs/tutorials/computer_vision/image_classification.md
这个教程中,我们将标签分配给某张图片,并得到标签符合程度的评分高低。下列图片 (source) 展示了一个例子:
获取教程中的源代码:GitHub.
训练
针对特定的数据集训练模型,使用 train_dataset.py
。例如:
- 为了训练一个 mnist 数据集上的 MLP 模型,使用以下命令:
python train_mnist.py
- 为了在每个训练迭代时保存中间模型,使用以下命令:
mkdir model; python train_mnist.py --model-prefix model/mnist
- 为了从第8个训练迭代时保存的模型重新开始训练,使用以下命令:
python train_mnist.py --model-prefix model/mnist --load-epoch 8
- 为了选择另一种初始学习速率,并且将其在每半次训练迭代时以 0.9 的比例进行衰减,使用以下命令:
python train_mnist.py --lr .1 --lr-factor .9 --lr-factor-epoch .5
- 为了使用 GPU 0 在 mnist 数据集上训练卷积神经网络,使用以下命令:
python train_mnist.py --network lenet --gpus 0
为了使用多块 GPU,需要指定列表;例如:
---gpus 0,1,3.
To see more options, use
--help
.
分布式训练
为了加速训练过程,可以利用多台电脑进行训练。
- 使用 2 个 workder 进程,快速测试你本地电脑的分布式训练:
../../tools/launch.py -n 2 python train_mnist.py --kv-store dist_sync
你可以任意使用同步的 SGD dist_sync
或者异步的 SGD
dist_async
(SGD:随机梯度下降法)。
- 如果你可以使用 SSH 连接多台电脑,并且 mxnet 文件夹可以被这些电脑访问到 (作为一整个 NFS 被安装;查看教程:Ubuntu),那么就可以在这些电脑上运行一个作业,首先通过在文件上保存他们的 hostname,例如: