CNN中難點分析--對卷積層(Convolution)與池化層(Pooling)的理解

在這裏插入圖片描述
傳統機器學習通過特徵工程提取特徵,作爲Input參數進行輸入,從而擬合一個相對合適的w參數,而CNN利用卷積層感知局部特徵,然後更高層次對局部進行綜合操作,從而得到全局信息,池化層層提取主要特徵,從而自動提取特徵。

1、池化層的理解

pooling池化的作用則體現在降採樣:保留顯著特徵、降低特徵維度,增大kernel的感受野。另外一點值得注意:pooling也可以提供一些旋轉不變性。

池化層可對提取到的特徵信息進行降維,一方面使特徵圖變小,簡化網絡計算複雜度並在一定程度上避免過擬合的出現;一方面進行特徵壓縮,提取主要特徵。
  最大池採樣在計算機視覺中的價值體現在兩個方面:(1)、它減小了來自上層隱藏層的計算複雜度;(2)、這些池化單元具有平移不變性,即使圖像有小的位移,提取到的特徵依然會保持不變。由於增強了對位移的魯棒性,這樣可以忽略目標的傾斜、旋轉之類的相對位置的變化,以此提高精度,最大池採樣方法是一個高效的降低數據維度的採樣方法。
  需要注意的是:這裏的pooling操作是特徵圖縮小,有可能影響網絡的準確度,因此可以通過增加特徵圖的深度來彌補(這裏的深度變爲原來的2倍)。

在CNN網絡中卷積池之後會跟上一個池化層,池化層的作用是提取局部均值與最大值,根據計算出來的值不一樣就分爲均值池化層與最大值池化層,一般常見的多爲最大值池化層。池化的時候同樣需要提供filter的大小、步長。

tf.nn.max_pool(value, ksize, strides, padding, name=None)

參數是四個,和卷積很類似:

第一個參數value:需要池化的輸入,一般池化層接在卷積層後面,所以輸入通常是feature map,依然是[batch, height, width, channels]這樣的shape

第二個參數ksize:池化窗口的大小,取一個四維向量,一般是[1, height, width, 1],因爲我們不想在batch和channels上做池化,所以這兩個維度設爲了1

第三個參數strides:和卷積類似,窗口在每一個維度上滑動的步長,一般也是[1, stride,stride, 1]

第四個參數padding:和卷積類似,可以取’VALID’ 或者’SAME’

返回一個Tensor,類型不變,shape仍然是[batch, height, width, channels]這種形式

舉例:池化輸出特徵圖計算和卷積計算公式相同,區別是池化是求卷積區域中的max,不涉及卷積計算。

1)pooling(kernel size 2×2,padding 0,stride 232*32*16->pooling之後(32-2+0/2 + 1 =16*16

     pool3 = tf.nn.max_pool(layer3,[1,2,2,1],[1,2,2,1],padding='SAME')    // p = (f-1)/2=(2-1)/2=0,,所以padding='SAME'或“VALID”輸出一樣2)pooling(kernel size 3×3,padding 0,stride 132*32*16->pooling之後(32-3+0/1 + 1 = 30*30

    pool3 = tf.nn.max_pool(layer3,[1,3,3,1],[1,1,1,1])   

2、padding的理解

之前在討論卷積神經網絡的時候,我們是使用filter來做元素乘法運算來完成卷積運算的。目的是爲了完成探測垂直邊緣這種特徵。但這樣做會帶來兩個問題。

卷積運算後,輸出圖片尺寸縮小;
越是邊緣的像素點,對於輸出的影響越小,因爲卷積運算在移動的時候到邊緣就結束了。中間的像素點有可能會參與多次計算,但是邊緣像素點可能只參與一次。所以我們的結果可能會丟失邊緣信息。
  那麼爲了解決這個問題,我們引入padding, 什麼是padding呢,就是我們認爲的擴充圖片, 在圖片外圍補充一些像素點,把這些像素點初始化爲0.

padding的用途:

(1)保持邊界信息,如果沒有加padding的話,輸入圖片最邊緣的像素點信息只會被卷積核操作一次,但是圖像中間的像素點會被掃描到很多遍,那麼就會在一定程度上降低邊界信息的參考程度,但是在加入padding之後,在實際處理過程中就會從新的邊界進行操作,就從一定程度上解決了這個問題。

(2)可以利用padding對輸入尺寸有差異圖片進行補齊,使得輸入圖片尺寸一致。

(3)卷積神經網絡的卷積層加入Padding,可以使得卷積層的輸入維度和輸出維度一致。

(4)卷積神經網絡的池化層加入Padding,一般都是保持邊界信息和

padding模式:SAME和VALID

SAME:是填充,填充大小, p = (f-1)/2;VALID:是不填充,直接計算輸出。

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