Caffe转mxnet模型——mmdnn中提到了使用mmdnn对模型进行转换,当时对转换的命令不是很清楚,最近重新查了一些,整理下mmdnn的转换命令。
一步转换
mmdnn的一步转换命令是mmconvert,源于mmdnn/conversion/_script/convert.py,其参数为:
命令 | 含义 |
---|---|
-sf | 输入模型类型 |
-in | 输入模型网络(如果网络文件独立) |
-iw | 输入权重文件 |
-df | 输出模型类型 |
-om | 输出模型名称 |
期间会产生 .py、.npy为中间模型结构,为目标模型的code形式。另外,像TensorFlow模型需要指定输出节点,如–dstNode MMdnn_Output,但–dstNode这个key值我在convert.py中没有找到,不知道运行会不会有问题。
示例:
mmconvert -sf tensorflow -in imagenet_resnet_v2_152.ckpt.meta -iw imagenet_resnet_v2_152.ckpt --dstNode MMdnn_Output -df pytorch -om tf_to_pytorch_resnet_152.pth
python -m mmdnn.conversion._script.convertToIR -sf tensorflow -in imagenet_resnet_v2_152.ckpt.meta -iw imagenet_resnet_v2_152.ckpt --dstNode MMdnn_Output -df pytorch -om tf_to_pytorch_resnet_152.pth
分步转换
1、转IR
mmdnn转换其它模型到IR格式的命令是mmtoir,源于mmdnn/conversion/_script/convertToIR.py,其参数为:
命令 | 含义 |
---|---|
-f | 输入模型类型 |
-n | 输入模型网络(如果网络文件独立) |
-w | 输入权重文件 |
–inputShape | 输入尺寸(可选) |
-node | 输出节点(TensorFlow) |
-o | 中间文件名称.json、.pb、.npy |
示例:
mmtoir -f tensorflow -n imagenet_resnet_v2_152.ckpt.meta -w imagenet_resnet_v2_152.ckpt --inputShape 3,112,112 -node MMdnn_Output -o converted
python -m mmdnn.conversion._script.convertToIR -f tensorflow -n imagenet_resnet_v2_152.ckpt.meta -w imagenet_resnet_v2_152.ckpt --inputShape 3,112,112 -node MMdnn_Output -o converted
2、IR转输出模型Code
mmdnn转换IR格式到其它模型的code形式的命令是mmtocode,源于mmdnn/conversion/_script/IRToCode.py,其参数为:
命令 | 含义 |
---|---|
-f | 输出模型类型 |
-n | IR模型结构 |
-w | IR模型权重 |
-o | 输出模型结构 |
-dw | 输出模型权重(可选) |
示例:
mmtocode -f pytorch -n converted.pb -w converted.npy -o converted_pytorch.py -dw converted_pytorch.npy
python -m mmdnn.conversion._script. IRToCode -f pytorch -n converted.pb -w converted.npy -o converted_pytorch.py -dw converted_pytorch.npy
3、导出最终模型
mmdnn导出最终目标模型的命令是mmtomodel,源于mmdnn/conversion/_script/IRToModel.py,其参数为:
命令 | 含义 |
---|---|
-f | 输出模型类型 |
-in | 输出模型结构 |
-iw | IR模型权重 |
-o | 输出模型名称 |
示例:
mmtomodel -f pytorch -in converted_pytorch.py -iw converted_pytorch.npy -o converted_pytorch.pth
python -m mmdnn.conversion._script. IRToModel -f pytorch -in converted_pytorch.py -iw converted_pytorch.npy -o converted_pytorch.pth