1-9 池化層(Pooling layers)


池化層(Pooling layers)

除了卷積層,卷積網絡也經常使用池化層來縮減模型的大小,提高計算速度,同時提高所提取特征的魯棒性。

假如輸入是一個 4×4 矩陣,用到的池化類型是最大池化( max pooling)。執行最大池化的樹池是一個 2×2 矩陣。執行過程非常簡單,把 4×4 的輸入拆分成不同的區域,我把這個區域用不同顏色來標記。對於 2×2的輸出,輸出的每個元素都是其對應顏色區域中的最大元素值。

為了計算出右側這 4 個元素值,我們需要對輸入矩陣的 2×2 區域做最大值運算。這就像是應用了一個規模為 2 的過濾器,因為我們選用的是 2×2 區域,即$f = 2$,步幅是 2,即$s = 2$,這些就是最大池化的超參數。

最大化操作的功能就是只要在任何一個象限內提取到某個特征,它都會保留在最大化的池化輸出里。所以最大化運算的實際作用就是,如果在過濾器中提取到某個特征,那么保留其最大值。如果沒有提取到這個特征,可能在右上象限中不存在這個特征,那么其中的最大值也還是很小,這就是最大池化的直觀理解。

我們來看一個有若干個超級參數的示例,輸入是一個 5×5 的矩陣。我們采用最大池化法,它的過濾器參數為 3×3,即$f = 3$,步幅為 1,即$s = 1$,輸出矩陣是 3×3。 之前講的計算卷積層輸出大小的公式同樣適用於最大池化,即$\frac{{n + 2p - f}}{s} + 1$。

以上就是一個二維輸入的最大池化的演示,如果輸入是三維的,那么輸出也是三維的。例如,輸入是 5×5×2,那么輸出是 3×3×2。計算最大池化的方法就是分別對每個通道執行剛剛的計算過程。一般來說,如果輸入是:$5 \times 5 \times {n_c}$,輸出就是:$3 \times 3 \times {n_c}$。${n_c}$個通道中每個通道都單獨執行最大池化計算。

另外還有一種類型的池化,平均池化,它不太常用,這種運算顧名思義,選取的不是每個過濾器的最大值,而是平均值。

目前來說,最大池化比平均池化更常用。但也有例外,就是深度很深的神經網絡,你可

以用平均池化來分解規模為 7×7×1000 的網絡的表示層,在整個空間內求平均值,得到

1×1×1000。但在神經網絡中,最大池化要比平均池化用得更多。

池化的超級參數包括過濾器大小f和步幅s常用的參數值為:

$f = 2$

$s = 2$

應用頻率非常高,其效果相當於高度和寬度縮減一半。也有使用:

$f = 3$

$s = 2$

你也可以根據自己意願增加表示padding 的其他超級參數,雖然很少這么用。最大池化時,往往很少用到超參數 padding,當然也有例外的情況。

最大池化很少用 padding。目前p最常用的值是 0,即:$p = 0$。

最大池化的輸入就是:${n_H} \times {n_W} \times {n_c}$。

假設沒有 padding,則輸出:

$\left\lfloor {\frac{{{n_H} - f}}{s} + 1} \right\rfloor  \times \left\lfloor {\frac{{{n_W} - f}}{s} + 1} \right\rfloor  \times {n_c}$

輸入通道與輸出通道個數相同,因為我們對每個通道都做了池化。需要注意的一點是,池化過程中沒有需要學習的參數。執行反向傳播時,反向傳播沒有參數適用於最大池化。只有這些設置過的超參數,可能是手動設置的,也可能是通過交叉驗證設置的。

最大池化只是計算神經網絡某一層的靜態屬性,沒有什么需要學習的,它只是一個靜態屬性。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM