對CNN中pooling層(池化層)的理解
自己在學習CNN過程中,查詢網上一些資料,對pooling層有了一些理解,記錄下來,也供大家參考:
pooling層(池化層)的輸入一般來源於上一個卷積層,主要有以下幾個作用:
1.保留主要的特徵,同時減少下一層的引數和計算量,防止過擬合
2. 保持某種不變性,包括translation(平移),rotation(旋轉),scale(尺度),常用的有mean-pooling和max-pooling
mean-pooling(平均值)
對一塊小區域取平均值,假設pooling的窗大小是2x2,
1.forward:就是在前面卷積層的輸出的不重疊地進行2x2的取平均值降取樣,就得到mean-pooling的值。舉例:
2x2區域取平均值
不重疊的4個2x2區域分別mean-pooling
2.backward:把一個值分成四等分放到前面2x2的格子區域裡面就好了。舉例:
四等分(2/4= 1/2) 放到2x2的區域
四個值分別Backword
max-pooling(最大值)
即對一小塊區域取最大值,假設pooling的窗大小是2x2,
1.forward:就是在前面卷積層的輸出的不重疊地進行2x2的取最大值降取樣,就得到max-pooling的值。舉例:
2x2區域取最大值
不重疊的4個2x2區域分別max-pooling
2.backward:在max-pooling前向傳播時,只取最大值,其他值無作用.
因此反向傳播時,只關注最大值,所以將殘差傳遞到該最大值的位置,區域內其他2*2-1=3個位置置零
四個值分別Backward
Caffe中池化層的配置
池化層的配置資訊如下:
1 2 3 4 5 6 7 8 9 10 11 |
top: 'pool1'
|