我正在尝试改变caffemodel卷积层的大小(这是this question的后续问题)。虽然有一个如何进行网络手术的教程,但它只展示了如何将权重参数从一个caffemodel复制到另一个相同大小的caffemodel。
相反,我需要向我的卷积滤波器添加一个新通道(全部为0),以便将其大小从当前的(
现在我可以执行这个:
但是似乎保存的模型没有改变。我已经读过实际卷积权重存储在
相反,我需要向我的卷积滤波器添加一个新通道(全部为0),以便将其大小从当前的(
64
x3
x3
x3
)更改为(64
x4
x3
x3
)。
假设卷积层被称为'conv1'
。这是我迄今为止尝试过的:
# Load the original network and extract the fully connected layers' parameters.
net = caffe.Net('../models/train.prototxt',
'../models/train.caffemodel',
caffe.TRAIN)
现在我可以执行这个:
net.blobs['conv1'].reshape(64,4,3,3);
net.save('myNewTrainModel.caffemodel');
但是似乎保存的模型没有改变。我已经读过实际卷积权重存储在
net.params['conv1'][0].data
而不是net.blobs
中,但我无法弄清如何重新塑造net.params
对象。有人有想法吗?