卷積步長

狂小白發表於2021-01-02

文章目錄

卷積中的步長是構建卷積神經網路的一個基本操作

前幾篇的部落格都是步長為1的卷積神經網路例子,現在以步長為2的例子來說明步長不為1的情況。
下面是一個7x7的灰度影像的矩陣,以及一個3x3的過濾器,卷積運算之後的輸出結果應該為3x3的矩陣。在這裡插入圖片描述
具體計算過程:
在這裡插入圖片描述
還和之前一樣取左上方的3×3區域的元素的乘積,再加起來,最後結果為91。

在這裡插入圖片描述
之前我們移動藍框的步長是1,現在移動的步長是2,我們讓過濾器跳過2個步長,注意一下左上角,這個點移動到其後兩格的點,跳過了一個位置。然後你還是將每個元素相乘並求和,你將會得到的結果是100。
在這裡插入圖片描述
繼續將藍色框移動兩個步長,你將會得到83的結果。當你移動到下一行的時候,你也是使用步長2而不是步長1,所以我們將藍色框移動到這裡:
在這裡插入圖片描述
注意到我們跳過了一個位置,得到69的結果,現在你繼續移動兩個步長,會得到91,127,最後一行分別是44,72,74。

在這裡插入圖片描述

所以在這個例子中,我們用3×3的矩陣卷積一個7×7的矩陣,得到一個3×3的輸出。輸入和輸出的維度是由下面的公式決定的。如果你用一個 f × f f×f f×f的過濾器卷積一個 n × n n×n n×n的影像,你的padding p p p,步幅為 s s s,在這個例子中 s = 2 s=2 s=2,你會得到一個輸出,因為現在你不是一次移動一個步子,而是一次移動 s s s個步子,輸出於是變為 n + 2 p − f s + 1 × n + 2 p − f s + 1 \frac{n+2p - f}{s} + 1 \times \frac{n+2p - f}{s} + 1 sn+2pf+1×sn+2pf+1。在我們的這個例子裡, n = 7 n=7 n=7 p = 0 p=0 p=0 f = 3 f=3 f=3 s = 2 s=2 s=2   7 + 0 − 3 2 + 1 = 3 \ \frac{7 + 0 - 3}{2} + 1 =3  27+03+1=3,即3×3的輸出。

現在只剩下最後的一個細節了,如果商不是一個整數怎麼辦?在這種情況下,我們向下取整。 ⌊ ⌋ ⌊ ⌋ 這是向下取整的符號,這也叫做對 z z z進行地板除(floor),這意味著 z z z向下取整到最近的整數。這個原則實現的方式是,你只在藍框完全包括在影像或填充完的影像內部時,才對它進行運算。如果有任意一個藍框移動到了外面,那你就不要進行相乘操作,這是一個慣例。你的3×3的過濾器必須完全處於影像中或者填充之後的影像區域內才輸出相應結果,這就是慣例。因此正確計算輸出維度的方法是向下取整,以免 n + 2 p − f s \frac{n + 2p - f}{s} sn+2pf不是整數。
總結一下維度情況,如果你有一個的矩陣或者的影像,與一個的矩陣卷積,或者說的過濾器。Padding是,步幅為沒輸出尺寸就是這樣:
在這裡插入圖片描述

可以選擇所有的數使結果是整數是挺不錯的,儘管一些時候,你不必這樣做,只要向下取整也就可以了。

相關文章