编译命令

先阅读MNN相应平台的编译教程,如Android
追加 -DMNN_BUILD_TRAIN=ON 即可编译 MNN 训练框架

另外有两个相关编译宏

  • MNN_BUILD_TRAIN_MINI : 对于移动端/嵌入式设备,建议设置 MNN_BUILD_TRAIN_MINI = ON,不编译内置的Dataset,Models ,这部分在移动端/嵌入式设备上一般有其他解决方案。
  • MNN_USE_OPENCV : 部分 PC 上的 demo 有用到,与 dataset 处理相关

编译产物

  1. MNNExpress : 提供 MNN 算子构图能力,也支持类似 numpy 的矩阵乘功能,需要集成
  2. MNNTrain :训练框架库,需要集成
  3. runTrainDemo.out:运行训练框架demo的入口程序

运行demo程序

运行编译出来的 runTrainDemo.out

./runTrainDemo.out

可以看到输出

Usage: ./runTrainDemo.out CASENAME [ARGS] Valid Case: DataLoaderDemo DataLoaderTest DistillTrainQuant ImageDatasetDemo LinearRegress MatMulGradTest MnistInt8Train MnistTrain

MnistTrainSnapshot

MobilenetV2PostTrain

MobilenetV2Train

MobilenetV2TrainQuant

MobilenetV2Transfer NNGrad

NNGradV2

NNGradV3

OctaveMnist

PostTrain

PostTrainMobilenet

QuanByMSE

QuanMnist

TestMSE

列出了所有可供使用的demo示例,如果我们想运行MNIST模型的训练,则执行

./runTrainDemo.out MnistTrain

可以看到输出

usage: ./runTrainDemo.out MnistTrain /path/to/unzipped/mnist/data/ [depthwise]

提示我们需要下载MNIST数据集并解压,然后在命令行中指定解压出来的MNIST数据的路径即可,最后一个参数可选,如果设置,则训练的是一个使用depthwise卷积的MNIST模型。

所有的可执行demo都在 MNN_ROOT/tools/train/source/demo/ 路径下,可参考实现自己需要的功能