卷積神經網路鼻祖LeNet網路分析

dicksonjyl560101發表於2018-12-14

卷積神經網路鼻祖LeNet網路分析

 

https://blog.csdn.net/weixin_42137700/article/details/85005009

 

 

1998 年,被成為是現代卷積神經網路的鼻祖LeNet,被Yann LeCun正式提出。 下圖是廣為流傳LeNet的網路結構,它可以用麻雀雖小,五臟俱全來形容,其中卷積層、池化層、全連線層,這些都是現代卷積神經網路的基本元件。

 

總體來說LeNet是從輸入INPUT->C1卷積層->S2池化層->C3卷積層->S4池化層->C5卷積層->F6全連線層->輸出OUTPUT,如下圖所示。

 

1 LeNet 輸入

LeNet 的輸入影像是32*32的大小,這要比mnist資料集中字母28*28要大。 也就是說,要對mnist的資料進行兩圈值為零的畫素填充。畫素填充的目的是為了讓影像邊緣的區域,也能出現在卷積過程感受野的中心。

 

2 LeNet 的C1卷積層

C1 層是LeNet的第一個卷積層,它的輸入是32*32大小的影像,然後經過卷積過程,輸出為6個通道28*28大小的特徵影像。 其中卷積核的大小為5*5,在LeNet中都使用了5*5大小的卷積核。

 

卷積過程的滑動步長為1, 所以輸出特徵影像的計算方式為:32-5+1=28,因此輸出特徵圖的大小為28*28。

因為輸入為1通道的影像,然後用了6個卷積核,所以輸出為6通道的特徵影像。C1層的引數計算方式為(5*5+1)*6=156,其中每個卷積核為5*5,還帶有一個偏置項。

 

3 LeNet 的S2池化層

LeNet 的第2層即S2是個池化層,在之前的文章中也為大家介紹過池化(pooling)過程,它是在做下采樣操作,目的是在保留特徵影像主要資訊的同時,降低卷積神經網路的引數數量。

 

常見的池化有兩種:

(1)Max-Pooling,選擇Pooling視窗中的最大值作為取樣值;

(2)Mean-Pooling, 將Pooling視窗中的所有值相加取平均,以平均值作為取樣值。

 

在S2中的池化,選擇的是特徵影像2*2大小的視窗區域進行池化,因此特徵影像的大小縮減了一倍,即從28*28的大小,變為14*14的大小。池化過程不影響特徵圖通道的數目,S2層池化過程如下圖所示。

 

 

4 卷積與池化的重複

在卷積神經網路中,卷積與池化可以重複多次,可以一層卷積帶有一層的池化如LeNet中的C1->S2,C3->S4,也可以多層卷積後再跟一個池化層。

 

在這裡大家可以去思考一個問題,也就是怎樣計算C3層的引數數目(提示,可以結合C1層的計算方式和之前文章中介紹的卷積知識去推算)。

 

在這裡還需要注意的是C5層,它是一個比較特殊的卷積層,它的輸入是16通道5*5大小的特徵影像,而輸出是一個120的向量。C5層可以有兩種實現,第一種是使用5*5大小的卷積核進行卷積,第二種是將16通道5*5大小的特徵影像拉平,然後再做全連線。

 

 

5 全連線

在實際LeNet的編碼實現中,F6層和Output層都可以用全連線來實現。 其中F6是120->84的全連線,而Output是84->10的全連線,最後的10對應10種類別。

 

F6 層引數數量的計算為(120+1)*84=10164,這個跟多層感知器全連線引數的計算方式是一樣的,每個全連線都帶有一個偏置項。

 

後記

LeNet 是學習卷積神經網路的一個非常好的示例,通過學習LeNet可以對卷積神經網路設計有基礎的認識,比如卷積核大小,通道數目,全連線結構等等,為以後深入學習卷積神經網路設計打下比較好的基礎。另外,在現在的卷積神經網路中經常會使用ReLU作為啟用函式,並採用批歸一化BN,DropOut等處理 ,在後續的文章還會為大家帶來更多的分享,歡迎大家關注我們。

 

本文作者:寬濤老師

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2285291/,如需轉載,請註明出處,否則將追究法律責任。

相關文章