一 基本知識準備
1.卷積(Convolutional)
顧名思義,卷積層由一組卷積單元(又稱"卷積核")組成,可以把這些卷積單元理解為過濾器,每個過濾器都會提取一種特定的特征

對卷積層功能的理解
- 一般認為影像的空間聯系是區域的像素聯系比較密切,而距離較遠的像素相關性較弱,因此,每個神經元沒必要對全域影像進行感知,只要對區域進行感知,然后在更高層將區域的資訊綜合起來得到全域資訊,
- 給定一張輸入圖片,用一個卷積核去掃這張圖,卷積核里面的數就叫權重,這張圖每個位置是被同樣的卷積核掃的,所以權重是一樣的,這也就是權值共享,
- 如權值共享的部分所說我們用一個卷積核操作只能得到一種特征可能獲取不到全部特征,這么一來我們就引入了多核卷積,用不同的卷積核來學習不同的特征(每個卷積核學習到不同的權重)來提取原圖特征,需要注意的是,在多核卷積的程序中每個卷積核的大小應該是相同的,
下面的動態圖形象地展示了卷積層的計算程序:

2、池化層(POOL)
卷積層的過濾器負責從影像中查找規律,過濾器越多則引數越多,這意味著卷積層的維度可能很龐大,我們需要一種方法來降低維數,這就是卷積網路中的池化層(又名"下采樣層")所扮的角色,
對池化層功能的理解
- 降低了圖片尺寸,也就是增大了感受野,感受野就是數字矩陣中的一個數字所對應的原圖中的區域大小,因為池化是在某個范圍內選擇一個數字,也就是讓這個數字代表這個范圍內的所有的像素得值,這樣做雖然也丟失了一些圖片資訊,但是同時增加了魯棒性,
- 增加平移不變性,圖片中某個目標單純的位置的移動,不應該影響識別結果,而池化捕捉的恰好是目標的特征,并不是目標所在的位置,因此增加了平移不變性,
- 提升訓練速度,因為在保留特征資訊的前提下,降低了圖片的尺寸,
池化主要有3種形式:一般池化,重疊池化和金字塔池化,
(1)一般池化
池化視窗的尺寸為n*n,一般情況下池化視窗都是正方形的,步長(stride)等于n,此時池化視窗之間是沒有重疊的,對于超出數字矩陣范圍的,只計算范圍內的或者范圍外的用0填充再計算,又可以分為最大值池化,均值池化,
- 最大值池化
池化視窗范圍內的最大值作為采樣的輸出值,
假如輸入是一個4×4矩陣,執行最大池化是一個2×2矩陣,每次滑動2步,執行程序非常簡單,把4×4的輸入拆分成不同的區域,把這些區域用不同顏色來標記,對于2×2的輸出,輸出的每個元素都是其對應顏色區域中的最大元素值,

對于每個2 * 2的視窗選出最大的數作為輸出矩陣的相應元素的值,比如輸入矩陣第一個2 * 2視窗中最大的數是6,那么輸出矩陣的第一個元素就是6,如此類推,
- 均值池化
普通均值池化就是將池化視窗范圍內的平均值作為采樣的輸出值,這種池化不如最大池化常用,


3.激勵層
把卷積層輸出結果做非線性映射,

CNN采用的激勵函式一般為ReLU(The Rectified Linear Unit/修正線性單元),它的特點是收斂快,求梯度簡單,但較脆弱,影像如下,

激勵層的實踐經驗:
①不要用sigmoid!不要用sigmoid!不要用sigmoid!
② 首先試RELU,因為快,但要小心點
③ 如果2失效,請用Leaky ReLU或者Maxout
④ 某些情況下tanh倒是有不錯的結果,但是很少
4.全連接層
兩層之間所有神經元都有權重連接,通常全連接層在卷積神經網路尾部,也就是跟傳統的神經網路神經元的連接方式是一樣的:

一般CNN結構依次為
1.INPUT
2.[[CONV -> RELU]N -> POOL?]M
3.[FC -> RELU]*K
4.FC
5.卷積層的填充(padding)公式
直接對原始影像做卷積,會存在兩個問題,一是每次卷積后影像(特征圖)都會縮小,這樣卷不了幾次就沒了; 二是相比于圖片中間的點,圖片邊緣的點在卷積中被計算的次數很少,導致邊緣的資訊易于丟失,
為了解決這個問題,我們可以采用填充的方法,我們每次卷積前,先給圖片周圍都補一圈空白,讓卷積之后圖片跟原來一樣大,同時,原來的邊緣也被計算了更多次,

比如,我們把(8,8)的圖片給補成(10,10),那么經過(3,3)的filter之后,就是(8,8),沒有變,
能夠保證輸入的資料和輸出的資料具有相同的空間尺寸,假設零填充個數為p,卷積核為f * f,卷積核滑動步長為s,則p應設定為

計算卷積層輸出大小的公式
假設原始輸入影像為m * m,輸出影像為n * n,零填充個數為p,卷積核為f * f,卷積核滑動步長為s,則輸出尺寸為

計算卷積后引數個數
假設輸入影像為(m,m,d),其中d為影像深度(通道數),卷積核為f * f,卷積核個數為n,則weight個數為
bias個數:n
計算池化層輸出大小的公式
池化層很少使用零填充,假設原始輸入影像為m * m,輸出影像為n * n,卷積核為f * f,卷積核滑動步長為s,則輸出尺寸為

代碼整理好會在我的下一篇文章中分享出來

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/200721.html
標籤:python
上一篇:TAGNN代碼解讀
