如何将.caffemodels导出到其他应用程序?

时间:2016-02-17 15:38:32

标签: caffe pycaffe matcaffe

是否可以在.caffemodel文件中翻译信息,以便可以通过(例如)Matlab读取。也就是说,有没有办法用原型文本编写你的模型并导入使用Caffe训练的权重?

如果答案是"不是,它是一个二进制文件并且将始终保持这种方式",是否有一些关于文件结构的文档,以便可以某种方式提取重要信息?

2 个答案:

答案 0 :(得分:2)

如您所知,.caffemodel由权重和偏见组成。 在给定原型文本的情况下,读取caffemodel的权重和偏差的简单方法是在Python中加载网络并读取权重。

您可以使用:

import caffe
net = caffe.Net(<prototxt-file>,<model-file>,<phase>);

并从net.params

访问参数

source

答案 1 :(得分:0)

我以VGG为例

from caffe.proto import caffe_pb2
net = caffe_pb2.NetParameter()
caffemodel = sys.argv[1]
with open(caffemodel, 'rb') as f:
    net.ParseFromString(f.read())
for i in net.layer:
    print i.ListFields()[0][-1]
#conv1
#relu1
#norm1
#pool1
#conv2
#relu2
#norm2
#pool2
#conv3
#relu3
#conv4
#relu4
#conv5
#relu5
#pool5
#fc6
#relu6
#drop6
#fc7
#relu7
#drop7
#fc8
#prob