1. 程式人生 > >卷積層以及池化層的輸出維度

卷積層以及池化層的輸出維度

在學習tensorflow時,總是對各種各樣的引數煩的死去活來,尤其是卷積核的長寬高步長什麼的,特別“迷人”。因此本人搜尋了很多的資料,進行了綜合,並加上了自己的理解,供大家學習參考。

一、輸入的四個維度

1)batch_size:說白了,就是圖片的個數。

2)height/weight:圖片的高和寬。

3)channels:圖片的通道數,黑白照片就是1,RGB就是3。

例如我們的輸入是X =【333,28,28,3】,則代表我們有333個寬和高都是28的黑白照片(單通道照片)。

二、卷積核的四個維度

1)height/weight:卷積核矩陣的維度

2)inchannels:與輸入的通道數相等。如何理解這個引數的意思呢?這個引數代表的是我們所操作的影象的通道數。例如,我們有上例的X的通道數為3,那這個inchannels也是3。我們要做的是,將這個卷積核分別與圖片A的三個通道卷積,相加作為輸出。

3)outchannel:輸出的特徵數。這個引數是自己選定的。

現在假設我們X=【333,28,28,3】的輸入,W=【5,5,3,32】。那麼輸出是什麼呢?首先輸出圖片數不變,仍是333。其次,我們先假設圖片大小也不變(後文會討論)。我們的操作是,對於任意333張中的任意一張圖片A,用32個卷積核去卷積,這樣我們每張圖片就會得到32個特徵,那麼得到的新圖片的通道數就是32(對應前面的RGB的通道數是3)。因此我們的得到的輸出是【333,28,28,32】(假設得到的圖片大小不變).如下圖所示。

4)、步長的維度

步長的維度一般設定【1,a,a,1】。第一個和第四個分別代表跳過照片的數量和跳過維度的數量,因為我們要訓練每一張照片和每一個維度,所以上述都設定為1(以上是我的猜測QAQ)。中間的則代表我們在照片長寬跳過的畫素數。這裡,網上有兩個盛傳的公式:

卷積:((W-F+2P)/S )+ 1

池化:(W-F)/S + 1.

例如池化矩陣的大小和步長都是2*2的。那麼池化後的高:(28-2)/2 +1 = 14,寬:(28-2)/2 + 1 =14.

關於池化層和卷積層的引數問題就講到這裡。本文寫的相當倉促,所以可能會有大量的漏洞和不足,望指正。