编译命令
先阅读MNN相应平台的编译教程,如Android。
追加 -DMNN_BUILD_TRAIN=ON 即可编译 MNN 训练框架
另外有两个相关编译宏
- MNN_BUILD_TRAIN_MINI : 对于移动端/嵌入式设备,建议设置 MNN_BUILD_TRAIN_MINI = ON,不编译内置的Dataset,Models ,这部分在移动端/嵌入式设备上一般有其他解决方案。
- MNN_USE_OPENCV : 部分 PC 上的 demo 有用到,与 dataset 处理相关
编译产物
- MNNExpress : 提供 MNN 算子构图能力,也支持类似 numpy 的矩阵乘功能,需要集成
- MNNTrain :训练框架库,需要集成
- 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/ 路径下,可参考实现自己需要的功能