我正在尝试构建一个包含两个图像输入的网络。每个图像将与后期融合同时通过网络,将融合并提供一个输出。我使用下面的图表来显示我需要的东西(ps:对不起,我的英语不太好)
我的网络在caffe prototxt模型定义文件中定义,其中包含两次精确定义的AlexNet,直到Pool 5.对于第一个网络,图层的名称与AlexNet中的名称相同,而对于第二个网络,我添加了“每个图层名称的后缀为_1“。 我的问题是我如何复制预定的重量?
对于Eg:每个网络的卷积层1如下。请注意,对于conv1
,可以轻松复制预训练的权重,因为图层名称与预训练模型中的图层名称相同。然而,conv1_1
同样不同,所以我恐怕不能复制预训练的重量?或者,即使图层名称不同,有没有办法做到这一点?
layer {
name: "conv1"
type: "Convolution"
bottom: "data1"
top: "conv1"
param {
lr_mult: 0
decay_mult: 1
}
param {
lr_mult: 0
decay_mult: 0
}
convolution_param {
num_output: 96
kernel_size: 11
stride: 4
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "conv1_1"
type: "Convolution"
bottom: "data2"
top: "conv1_1"
param {
lr_mult: 0
decay_mult: 1
}
param {
lr_mult: 0
decay_mult: 0
}
convolution_param {
num_output: 96
kernel_size: 11
stride: 4
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
value: 0
}
}
}
答案 0 :(得分:1)
我假设您在初始化后尝试微调整个网络,否则您可以简单地使用从AlexNet提取的功能并在FC层开始训练。对于微调,您需要在第一个网络上复制权重(一个具有相同名称),并使第二个网络与第一个网络共享权重。看看this主题。或者更确切地说是this来自Evan Shelmar的回复。
答案 1 :(得分:1)
我做了类似的事情,在这里你可以看到具有相同AlexNet的Siamese Network。 Identical AlexNet for Siamese Network。这是prototxt file