簡體   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