tensorflow学习(七)caffe模型训练结果转换为tensorflow格式

tensorflow官方认定的转换工具为https://github.com/ethereon/caffe-tensorflow。我们尝试一下转换一个caffe训练的图像识别模型

caffe-tensorflow安装

git clone https://github.com/ethereon/caffe-tensorflow

生成模型训练代码

利用convert.py可以将caffe网络定义的deploy.prototxt文件转换为tensorflow的python实现,不过这种转换之后的模型代码还需要import kaffe模块,虽然kaffe.tensorflow.Network没有其他依赖,可以单独加载到新代码中即可使用,方便移植,我还是更倾向于转换之后参考这个代码重新写一份。调用方式如下:

./convert.py ./deploy.prototxt --code-output-path=./myNetTensorflow.py

转换训练好的模型

也可以将caffemodel的weights和biases参数读取出来转换为npy的格式,并通过numpy.load()读取数据。转换数据的脚本如下:

./convert.py ./deploy.prototxt --caffemodel=./mynet.caffemodel --data-output-path=./myNetTensorflow.npy

由于转换过来的npy数据的类型比奇怪,是0-d array,要将其取出来需要如下读取方式

params = np.load()
params = params.item()

注意事项

  • caffe的模型应该是较新的版本,才能转换

  • 并不是所有的caffe模型都能转换为tensorflow,比如caffe的padding支持很多方式,tensorflow目前只支持SAMEVALID