有没有一种相对简单的方法可以从 Caffe Zoo 中的众多预训练模型之一中提取 Python 中的权重没有咖啡(也不是 pyCaffe)?即解析.caffemodel
转换为 hdf5/numpy 或任何 Python 可以读取的格式?
我找到的所有答案都使用带有 caffe 类或 Pycaffe 的 C++ 代码。
我查看了 pycaffe 的代码,看起来您确实需要 caffe 来理解二进制文件,这是唯一的解决方案吗?
我刚才必须解决这个问题。假设您有一个 .caffemodel (二进制原型格式),结果非常简单。
下载最新的caffe.proto https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto
编译成python库:
协议 --python_out=. caffe.proto
导入并解析
下面的示例代码
import numpy as np
import sys, os
import argparse
import caffe_pb2 as cq
f = open('VGG_ILSVRC_16_layers.caffemodel', 'r')
cq2 = cq.NetParameter()
cq2.ParseFromString(f.read())
f.close()
print "name 1st layer: " + cq2.layers[0].name
为我生产:
name 1st layer: conv1_1
显然你可以从你的对象中提取任何你想要的东西。作为示例,我刚刚打印了第一层的名称。
另外,您的模型可能会在图层数组(已弃用)或图层(无's')数组中表达图层,但您明白了要点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)