卷積層輸出大小尺寸計算及padding爲 “SAME” 和 “VALID”的計算


簡介

卷積之後的尺寸大小計算公式爲:

  • 輸入圖片大小 W×W
  • Filter大小 F×F
  • 步長strides  S
  • padding的像素數 P
  • 輸出大小爲NxN

我們可以得出

                                                \large N= \tfrac{W-F+2*P}{S}+1                                                                         (公式1)

長寬不等時,卷積之後的計算公式也是如此,只需分別計算即可。

在實際操作時,我們還會碰到 padding的兩種方式 “SAME” 和 “VALID”,padding = “SAME”時,會在圖像的周圍填 “0”,padding = “VALID”則不需要,即 P=0。一般會選“SAME”,以來減緩圖像變小的速度,二來防止邊界信息丟失(即有些圖像邊界的信息發揮作用較少)。

注意!!!

此時可能會發現,按照這兩中方式,按照上面的公式怎麼不對呀

其實公式是沒有問題的,

  1. padding = “VALID”:   P=0
  2. padding = “SAME”:   kernel_size=1時,P=0;kernel_size=3時,P=1;kernel_size=5時,P=2,以此類推。

問題可能也就出在上面

tensorflow官網給出了另一種計算方式,也是正確的:

padding = “SAME”時:

                                                \large N= \left \lceil \tfrac{W}{S} \right \rceil   ( 解釋:輸入w / 步長s 之後向上取整)                            (公式2)

padding = “VALID”時:

                                              \large N= \left \lceil \tfrac{W-F+1}{S} \right \rceil (也是向上取整)                                                       (公式2)

舉例說明

  • 輸入是5*5,
  • 卷積核是3*3,
  • 步長S = 2

padding= “SAME”時:

       根據公式1:

                                            \large N= \tfrac{W-F+2*P}{S}+1=\tfrac{5-3+2*1}{2}+1 = 3

       根據公式2:

                                           \large N= \left \lceil \tfrac{W}{S} \right \rceil=\left \lceil \tfrac{5}{2} \right \rceil=\left \lceil 2.5 \right \rceil=3

padding= “VALID”時:

根據公式1:

                                            \large N= \tfrac{W-F+2*P}{S}+1=\tfrac{5-3+2*0}{2}+1 = 2

 根據公式3:

                                           \large N= \left \lceil \tfrac{W-F+1}{S} \right \rceil=\left \lceil \tfrac{5-3+1}{2} \right \rceil=\left \lceil 1.5 \right \rceil=2

編程結果

如下: 

 

 

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