簡體   English   中英

Caffe conv層的重量和尺寸

[英]Caffe conv layer weights and dimensions

我偶然發現了這篇很好的文章 ,它直觀地解釋了如何運行。

現在試圖了解caffe conv層內部正在發生的事情:

輸入數據形狀為1 x 13 x 19 x 19,以及128個濾波器轉換層:

layers {
  name: "conv1_7x7_128"
  type: CONVOLUTION
  blobs_lr: 1.
  blobs_lr: 2.
  bottom: "data"
  top: "conv2"
  convolution_param {
    num_output: 128
    kernel_size: 7
    pad: 3
    weight_filler {
      type: "xavier"
      }
      bias_filler {
      type: "constant"
      }
    }
}

如果我理解正確,圖層輸出形狀是1 x 128 x 19 x 19。

net->layers()[1]->blobs()查看圖層的權重形狀:

layer  1: type Convolution  'conv1_7x7_128'
  blob 0: 128 13 7 7
  blob 1: 128

看起來blob 0具有所有的重量:每個平面一個7x7矩陣(13)每個濾波器(128)。

在1 x 13 x 19 x 19數據上使用blob 0進行卷積,如果我理解正確,我們最終得到128 x 13 x 19 x 19輸出(有填充,因此每個7x7矩陣為每個像素生成一個數字)

  • 128 x 13 x 19 x 19如何變成圖層的1 x 128 x 19 x 19輸出?

  • blob 1中的128個權重是多少?

獎金問題:什么是blobs_lr

您正在引用舊版本的caffe原型文本格式。 調整為新格式將給你

layer {  # layer and not layer*s*
  name: "conv1_7x7_128"
  type: "Convolution"  # tyoe as string
  param { lr_mult: 1. }  # instead of blobs_lr
  param { lr_mult: 2. }  # instead of blobs_lr 
  bottom: "data"
  top: "conv2"
  convolution_param {
    num_output: 128
    kernel_size: 7
    pad: 3
    weight_filler {
      type: "xavier"
      }
      bias_filler {
      type: "constant"
      }
    }
}

如果您輸入的數據shape 1 x 13 x 19 x 19,則表示您的batch_size為1,您有13個通道,空間尺寸為19 x 19。
應用128個7 x 7過濾器(每個過濾器應用於所有13個輸入通道)意味着您有128個shape 13 x 7 x 7的過濾器(這是您第一層參數的shape )。 使用單個輸出通道1 x 1 x 19 x 19應用每個濾波器結果,因為您有128個這樣的濾波器,最終得到1 x 128 x 19 x 19輸出。

第二層的參數是偏差項 - 每個濾波器結果的附加標量。 您可以通過添加來關閉偏差項

bias_term: false

到你層的convolution_param

您可以在此處閱讀有關卷積圖層的更多信息。

至於獎金問題,Eliethesaiyan在他的評論中已經很好地回答了這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM