通过 pycaffe 重命名 Caffe 图层
Rename Caffe layers through pycaffe
是否有使用 pycaffe 接口重命名 caffe 网络中层的简单方法?
我查看了 net surgery 示例,但找不到我需要的示例。
例如,我想加载一个经过训练的Caffe模型并将conv1
层及其对应的blob的名称更改为new-conv1
。
我不知道直接的方法,但这里有一个解决方法:
给定预训练的 Caffe 模型 my_model.caffemodel
及其网络架构 net.prototxt
。复制net.prototxt
(比如net_new.prototxt
),并将conv1
层的名称更改为new-conv1
(您可以更改bottom
和[=的名称18=] 如果你愿意的话)。
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')
是否有使用 pycaffe 接口重命名 caffe 网络中层的简单方法?
我查看了 net surgery 示例,但找不到我需要的示例。
例如,我想加载一个经过训练的Caffe模型并将conv1
层及其对应的blob的名称更改为new-conv1
。
我不知道直接的方法,但这里有一个解决方法:
给定预训练的 Caffe 模型 my_model.caffemodel
及其网络架构 net.prototxt
。复制net.prototxt
(比如net_new.prototxt
),并将conv1
层的名称更改为new-conv1
(您可以更改bottom
和[=的名称18=] 如果你愿意的话)。
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')