繁体   English   中英

Caffe将AlexNet的预训练权重复制到具有两个AlexNet的自定义网络

[英]Caffe Copy PreTrained Weights of AlexNet to custom network that has Two AlexNets

我正在尝试建立一个包含两个图像输入的网络。 每个图像将通过网络与后期融合同时进行,后期融合将合并并提供一个输出。 我使用下面的图表显示我的需要(ps:对不起,我的英语不太好)

在此处输入图片说明

我的网络在caffe prototxt模型定义文件中定义,该文件包含到池5定义两次的精确AlexNet。对于第一个网络,各层的名称与AlexNet中的名称相同,而对于第二个网络,我为每个层名称添加了“ _1”后缀。 我的问题是我该如何复制保留的重量?

例如:每个网络的卷积层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
    }
  }
}

我假设您正在尝试在初始化后微调整个网络,否则您可以简单地使用从AlexNet提取的功能并在FC层开始培训。 为了进行微调,您将需要在第一个网络(具有相同名称的网络)上复制权重,并使第二个网络与第一个网络共享权重。 看一下这个线程。 或者说这个埃文Shelmar答复。

我做了类似的事情,在这里您可以看到带有相同AlexNet的暹罗网络。 与Siamese网络相同的AlexNet 这是prototxt文件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM