通过 pycaffe 重命名 Caffe 图层

Rename Caffe layers through pycaffe

是否有使用 pycaffe 接口重命名 网络中层的简单方法?

我查看了 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')