我正在尝试将预训练模型的大小为 3x3x3 的层“con_1”的学习权重复制到新层“con_1_1”,以便新层的大小为 6x3x3(6 个 channel )。我实际上是在尝试将大小为 3x3x3 的权重复制到 6x3x3。我怎样才能使用 pycaffe 做到这一点。
layer name: 'con_1'
size: 3x3x3
new layer name: 'con_1_1'
size: 6x3x3
con_1_1 should be [con_1, con_1] % just concatenation of two con_1 weights
最佳答案
您必须使用 .prototxt 文件和 .caffemodel 文件读取网络。然后将原始网络中的权重复制到一个变量中,然后将它们复制到编辑后的网络中。
net = caffe.Net('path/to/conv.prototxt', 'path/to/conv.caffemodel', caffe.TEST)
W = net.params['con_1'][0].data[...]
b = net.params['con_1'][1].data[...]
net = caffe.Net('path/to/conv2.prototxt', 'path/to/conv2.caffemodel', caffe.TEST)
W_1 = numpy.concatenate(W, W, axis=2)
b_1 = numpy.concatenate(b, b, axis=0)
net.params['con_1_1'][0].data[...] = W_1
net.params['con_1_1'][1].data[...] = b_1
关于caffe - net surgery pycaffe 复制权重和 reshape ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38873549/