cnn 系列文章 ----strides,padding詳解,基於andrew ng的DeepLearning
慣例,還是分享一句歌詞呢。
《詩話小鎮》 歲月如流沙蒼老了風華 那誓言未長大 流年斑駁眉心硃砂 你畫上哪個她 繁華褪盡薄了紅紗
約定符號:
- 輸入影象:
- 過濾器:
- paddig(填充):
stride(步長):
padding
1. padding概念引入
當使用一個的過濾器對的影象進行卷積操作後,會得到的輸出影象。 此時輸出影象大小為:
但是這樣會帶來兩個缺點:- 影象會越來越小
- 如上圖,原影象左上角綠色區域紙杯一個過濾器使用,而中間紅色區域會被多個過濾器使用,這就意味著邊緣資訊的丟失
為此引入padding(填充)的操作,即在卷積操作之前,先在影象邊緣進行畫素填充,畫素值可以是0也可以是影象邊緣畫素,填充寬度為p,例如在上圖中使用畫素0對影象邊緣填充,寬度p=1,此時輸出影象和輸入影象維度相等,並且影象左上角的畫素被多個過濾器使用,邊緣資訊丟失的更少。 此時,輸出影象的維度為:
2. padding填充模式
padding=’VALID’
此時,即不填充, 輸出影象為
padding=’SAME’
此時輸入和輸出影象維度相同,此時:
注意: 一般 為奇數,主要有兩個好處:
- p可以取整數
- 奇數過濾器有一箇中點,也稱錨點(anchor),便於確認過濾器的位置
stride (卷積步長)
不同於之前一次想左移動一格,此時向左移動兩格, 同樣的,也是向下移動兩格
最終的輸出影象大小為
假設stride移動步長為s,則最後的輸出影象為:
其中, 為向下取整比如上圖中:
GRB多通道影象的卷積
比如在,過濾器的大小不在是而是,最後的3對應為通道數(channels)。
卷積過程:比如第一個與R通道卷積,會得到一個數,同理,第二個與G通道卷積,第三個與B通道卷積,然後將三個數累加,作為的左上角第一個位置值,接下來依次在影象上滑動,最終得到的輸出。
我們肯定不能只在影象中檢測一種特徵,而是同時要檢測水平,垂直,45度邊緣等特徵,此時就要使用多個過濾器了。假設我們使用兩個過濾器,最終的輸出為,這裡的2是使用兩過濾器的結果,同樣,若是使用5個過濾器呢?輸出結果就是了。下面是計算的例子:
單層卷積
上一節,得到兩個的矩陣,通過python的廣播機制在兩個矩陣上加入偏差bias,然後經過非線性函式relu,即可得到單層卷積網路的輸出。 圖示如下:
公示表示如下: