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目前只支持
SAME
和VALID