Learning Caffe(11)---層參數詳解

輸入層

 

input_param詳細解釋:

  • dim:1  ——表示對待識別樣本進行數據增廣的數量,該值的大小可自行定義。但一般會進行5次crop(剪裁),將整幅圖像分爲多個flip。該值爲10則表示會將待識別的樣本分爲10部分輸入到網絡進行識別。如果相對整幅圖像進行識別而不進行圖像數據增廣,則可將該值設置爲1.
  • dim: ——該值表示處理的圖像的通道數,若圖像爲RGB圖像則通道數爲3,設置該值爲3;若圖像爲灰度圖,通道數爲1則設置該值爲1.
  • dim:28 ——圖像的長度,可以通過網絡配置文件(*_train_test.prototxt)中的數據輸入層中的crop_size來獲取。
  • dim:28——圖像的寬度,可以通過網絡配置文件(*_train_test.prototxt)中的數據輸入層中的crop_size來獲取。

注:測試的圖像的寬度和高度設置一定要和訓練時(原圖or截圖)的圖像的高度和寬度設置爲一致。若網絡配置文件中沒有設置crop_size,則說明訓練時使用的是原圖。

數據層

Batch_size:批尺寸,該參數決定一次訓練的樣本數目,影響到模型的優化程度和速度。

圖像數據層

當訓練的數據直接爲圖片時,使用圖像數據層。

卷積層

  • lr_mult:學習率係數,最終的學習率等於該學習率係數乘以超參數中的base_lr,第一個lr_mult表示權值的學習率係數,第二個表示偏置的學習率係數。
  • num_output:卷積核的個數,n個卷積核輸出n個feature map,代表n個特徵。
  • kernel_size: 卷積核的大小。如果卷積核的長和寬不等,需要用kernel_h和kernel_w分別設定。
  • stride: 卷積核移動的步長,默認爲1。也可以用stride_h和stride_w來設置。
  • pad:擴充的時候是左右、上下對稱的,比如卷積核的大小爲5*5,那麼pad設置爲2,則四個邊緣都擴充2個像素,即寬度和高度都擴充了4個像素,這樣卷積運算之後的特徵圖就不會變小。 也可以通過pad_h和pad_w來分別設定。

得出:

output_dimention:

例如:

width  = (image_width - kernel_width )/stride  + 1

(28 - 5) +1 = 24

輸入是28 * 28 * 1的圖像,卷積核大小爲5,移動的步長爲1,可以得出每個卷積核產生的feature map的大小爲24 * 24 ;     

卷積核的個數爲20,所以輸出的維度爲24 * 24 * 20。

num_parameters:

由於CNN通過感受野進行了權值共享,所以同一個feature Map中神經元權值共享,所以參數個數與神經元個數無關,與卷積核大小和FeatureMap個數相關。

每個卷積核5 * 5個參數,和20個偏置參數。

num_parameters = 5 * 5 * 1 * 20 + 20 = 520(單通道圖像 * 1)

倘若卷積層的輸入爲3維矩陣。

假設爲輸入11 * 11 * 20,卷積核參數爲kernel_size = 5, stride = 1, num_out_put = 50

輸出爲 7 * 7 * 50

總參數爲:5 * 5 * 20 * 50 + 50 = 2550(相當於20通道的圖像作爲輸入)

 

池化層

用於減少訓練參數規模。

  • Pool池化層類型。
  • Kernel_size:過濾器大小。
  • Stride:過濾器移動步長,一般這個參數是大於的,不然起不到減少訓練參數規模的效果。

得出:

output_dimention:

輸入爲上一層的輸出,爲24 * 24 * 20

(24 -  2)/2 +1 = 11

所以該層的輸出矩陣爲11 * 11 * 20

池化層沒有參數需要訓練

 

全連接層

 

  • lr_mult:學習率係數,最終的學習率等於該學習率係數乘以超參數中的base_lr,第一個lr_mult表示權值的學習率係數,第二個表示偏置的學習率係數。
  • num_output:卷積核的個數,n個卷積核輸出n個feature map,代表n個特徵。

全連接層卷積核大小等於輸入大小,卷積核不會移動,所以也不存在移動步長參數。

得出

output_dimention:

1 * 1 * 500 = 500 是一個長度爲500的一維向量。

num_parameters:

n * n * 500 + 500其中n爲該層的輸入維度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章