mmdnn是微软出的工具,能够在各种深度学习模型之间转换训练好的模型
安装:pip install mmdnn
举例:将tensorflow模型转换为caffe模型,需要安装好tensorflow和pycaffe,
之后运行命令:mmconvert -sf tensorflow -in model.ckpt-0.meta -iw model.ckpt-0 --dstNode coord_output heatmap_output -df caffe -om outmodel
其含义分别是mmconvert 是mmdnn中的命令,-sf 是source framework 源框架,-in是网络结构 , -iw是权重, --dstNode是输出值的节点,也就是tensorflow中输出模型参数的那个tensor的“name“,可以写多个,-df是dest framework,-om是要得到的caffe模型名
注意事项:
(1)placeholder需要填写shape参数,否则报错:shape = [shape[0], shape[-1]] + shape[1:-1] list index out of range 并且不能写-1这种自适应性质的参数,
(2)无法转换caffe中不存在的层,比如tf.reduce_sum
(3)转出来的模型有input层,这个层可以直接去掉。当然可以不管
(4)转出来的模型还会有flatten层,这是在tf中用于将卷积层reshape成能送入全连接的操作。但是在caffe中可以不使用该操作。所以该层可以直接去掉,只需要修改下层的bottom使模型能接上就行。当然也可以不去掉。
(5)在tf.nn.conv2d时strides最好都是1,我这里strides不为1的时候转出来的caffe模型里padding有错