有没有一种简单的方法可以通过使用pycaffe接口重命名caffe网络中的层?
我浏览了网络手术示例,但找不到我需要的示例。
例如,我想加载一个经过训练的 Caffe 模型,并将conv1
层的名称及其对应的 blob 更改为new-conv1
.
有没有一种简单的方法可以通过使用pycaffe接口重命名caffe网络中的层?
我浏览了网络手术示例,但找不到我需要的示例。
例如,我想加载一个经过训练的 Caffe 模型,并将conv1
层的名称及其对应的 blob 更改为new-conv1
.
我不知道直接的方法,但这里有一个解决方法:
给定一个预训练的 Caffe 模型my_model.caffemodel
及其网络架构net.prototxt
。复制net.prototxt
(比如说net_new.prototxt
),并将conv1
层的名称更改为(如果需要,new-conv1
您可以更改名称)。bottom
top
import caffe
net_old = caffe.Net('net.prototxt','my_model.caffemodel',caffe.TEST)
net_new = caffe.Net('net_new.prototxt','my_model.caffemodel',caffe.TEST)
net_new.params['new-conv1'][0].data[...] = net_old.params['conv1'][0].data[...] #copy filter across 2 nets
net_new.params['new-conv1'][1].data[...] = net_old.params['conv1'][1].data[...] #copy bias
net_new.save('my_model_new.caffemodel')