Machine learning 能否仅从网络的前3层复制权重?不完全是微调,但几乎是重塑

Machine learning 能否仅从网络的前3层复制权重?不完全是微调,但几乎是重塑,machine-learning,neural-network,deep-learning,caffe,conv-neural-network,Machine Learning,Neural Network,Deep Learning,Caffe,Conv Neural Network,在caffe中,我希望仅在使用ImageNet数据集训练的alexnet体系结构的前两层中使用预训练权重,我希望在这两层之后添加softmax分类器。我想知道如何从包含更大网络结构(真正的“深层”网络结构)的权重文件中只提取前两层的权重 Caffe使用层的“name”为层的水滴指定权重。 如果更改顶层的“”名称”s,caffe将不会从原始的.caffemodel文件复制权重。添加到的答案- 如果不需要完整权重文件, 要提取所需层的权重,请使用: net = caffe.Net(prototxt,

在caffe中,我希望仅在使用ImageNet数据集训练的alexnet体系结构的前两层中使用预训练权重,我希望在这两层之后添加softmax分类器。我想知道如何从包含更大网络结构(真正的“深层”网络结构)的权重文件中只提取前两层的权重

Caffe使用层的
“name”
为层的
水滴指定权重。
如果更改顶层的“
”名称”
s,caffe将不会从原始的
.caffemodel
文件复制权重。

添加到的答案-
如果不需要完整权重文件,
要提取所需层的权重,请使用:

net = caffe.Net(prototxt, caffemodel, caffe.TRAIN)
outnet = caffe.Net(predefined_prototxt_with_desired_layers_only, caffe.TRAIN)
layers_to_copy = ['conv1', 'conv2', 'conv3']
for layer in layers_to_copy:
    for i in range(0, len(net.params[layer])): #this is for copying both weights and bias, in case bias exists
        outnet.params[layer][i].data[...]=np.copy(net.params[layer][i].data[...])

outnet.save(new_caffemodel_name)