Image processing Caffe将AlexNet的预训练权重复制到具有两个AlexNet的自定义网络
我试图建立一个包含两个图像输入的网络。每幅图像都将通过一个网络,同时进行后期融合,融合后输出。我用下面的图表来说明我需要什么(ps:对不起,我的英语不是很好) 我的网络在caffe prototxt模型定义文件中定义,该文件包含精确的AlexNet,该AlexNet在池5中定义了两次。对于第一个网络,层的名称与中相同,而对于第二个网络,我在每个层名称上添加了一个“_1”后缀。 我的问题是如何复制预先设定的重量 例如:每个网络的卷积层1如下所示。请注意,对于Image processing Caffe将AlexNet的预训练权重复制到具有两个AlexNet的自定义网络,image-processing,neural-network,deep-learning,caffe,convolution,Image Processing,Neural Network,Deep Learning,Caffe,Convolution,我试图建立一个包含两个图像输入的网络。每幅图像都将通过一个网络,同时进行后期融合,融合后输出。我用下面的图表来说明我需要什么(ps:对不起,我的英语不是很好) 我的网络在caffe prototxt模型定义文件中定义,该文件包含精确的AlexNet,该AlexNet在池5中定义了两次。对于第一个网络,层的名称与中相同,而对于第二个网络,我在每个层名称上添加了一个“_1”后缀。 我的问题是如何复制预先设定的重量 例如:每个网络的卷积层1如下所示。请注意,对于conv1,可以轻松复制预训练权重,因
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
}
}
}
我假设您正在尝试在初始化后对整个网络进行微调,否则您可以简单地使用从AlexNet提取的特征,并在FC层开始培训。对于微调,您需要复制第一个网络(具有相同名称的网络)上的权重,并让第二个网络与第一个网络共享权重。看一看线程。或者更确切地说是埃文·谢尔玛的回复。我做了类似的事情,在这里你可以看到暹罗网络和相同的AlexNet。这里是是的,我正在尝试微调,而不仅仅是特征提取。感谢您指出这些有用的链接。我仍然不明白政府如何分担这些重量。你能举几个例子吗。此外,我不知道它被称为暹罗网。如果你看一下对我指出的评论的回复,有OP发布的文件。你能用mnist数据集训练两个相同的AlexNet吗@您是在自己的数据集上还是在mnist数据集上进行培训@kcc__我正在使用我自己的大约80K图像数据集。我还没受过训练。你试过MNIST了吗?当我运行caffe时,我的GPU会关闭,我想这是由于PSU,所以我订购了一个新的。我目前正在运行四个实验。1.使用mnist数据集上的LeNet的暹罗网络,2。在mnist数据集上使用AlexNet的暹罗网络,3。在我自己的数据集上使用LeNet的暹罗网络,2。在我自己的数据集上使用AlexNet的暹罗网络。我和AlexNet没有很好的集群@我想用mnist数据集上的LeNet计算暹罗网络的精度。你知道我们怎么做吗@kcc__