詳解深度學習之經典網絡架構——LeNet

 

1、基本簡介

LeNet-5出自論文Gradient-Based Learning Applied to Document Recognition,是一種用於手寫體字符識別的很是高效的卷積神經網絡。網絡

 

2、LeNet網絡的基本結構

LeNet5 這個網絡雖然很小,可是它包含了深度學習的基本模塊:卷積層,池化層,全連接層。是其餘深度學習模型的基礎, 這裏咱們對LeNet5進行深刻分析。同時,經過實例分析,加深對與卷積層和池化層的理解。架構

詳解深度學習之經典網絡架構——LeNet

 

LeNet-5共有7層,不包含輸入,每層都包含可訓練參數;每一個層有多個Feature Map,每一個FeatureMap經過一種卷積濾波器提取輸入的一種特徵,而後每一個FeatureMap有多個神經元。函數

 

各層參數詳解:學習

 

一、INPUT層-輸入層編碼

首先是數據 INPUT 層,輸入圖像的尺寸統一歸一化爲32*32。spa

注意:本層不算LeNet-5的網絡結構,傳統上,不將輸入層視爲網絡層次結構之一。3d

 

二、C1層-卷積層blog

輸入圖片:32*32圖片

卷積核大小:5*5rem

卷積核種類:6

輸出featuremap大小:28*28 (32-5+1)=28

神經元數量:28*28*6

可訓練參數:(5*5+1) * 6(每一個濾波器5*5=25個unit參數和一個bias參數,一共6個濾波器)

鏈接數:(5*5+1)*6*28*28=122304

詳細說明:對輸入圖像進行第一次卷積運算(使用 6 個大小爲 5*5 的卷積核),獲得6個C1特徵圖(6個大小爲28*28的 feature maps, 32-5+1=28)。咱們再來看看須要多少個參數,卷積核的大小爲5*5,總共就有6*(5*5+1)=156個參數,其中+1是表示一個核有一個bias。對於卷積層C1,C1內的每一個像素都與輸入圖像中的5*5個像素和1個bias有鏈接,因此總共有156*28*28=122304個鏈接(connection)。有122304個鏈接,可是咱們只須要學習156個參數,主要是經過權值共享實現的。

 

三、S2層-池化層(下采樣層)

輸入:28*28

採樣區域:2*2

採樣方式:4個輸入相加,乘以一個可訓練參數,再加上一個可訓練偏置。結果經過sigmoid

採樣種類:6

輸出featureMap大小:14*14(28/2)

神經元數量:14*14*6

可訓練參數:2*6(和的權+偏置)

鏈接數:(2*2+1)*6*14*14

S2中每一個特徵圖的大小是C1中特徵圖大小的1/4。

詳細說明:第一次卷積以後緊接着就是池化運算,使用 2*2核 進行池化,因而獲得了S2,6個14*14的 特徵圖(28/2=14)。S2這個pooling層是對C1中的2*2區域內的像素求和乘以一個權值係數再加上一個偏置,而後將這個結果再作一次映射。因而每一個池化核有兩個訓練參數,因此共有2x6=12個訓練參數,可是有5x14x14x6=5880個鏈接。

 

四、C3層-卷積層

輸入:S2中全部6個或者幾個特徵map組合

卷積核大小:5*5

卷積核種類:16

輸出featureMap大小:10*10 (14-5+1)=10

C3中的每一個特徵map是鏈接到S2中的全部6個或者幾個特徵map的,表示本層的特徵map是上一層提取到的特徵map的不一樣組合

存在的一個方式是:C3的前6個特徵圖以S2中3個相鄰的特徵圖子集爲輸入。接下來6個特徵圖以S2中4個相鄰特徵圖子集爲輸入。而後的3個以不相鄰的4個特徵圖子集爲輸入。最後一個將S2中全部特徵圖爲輸入。

則可訓練參數爲:6*(3*5*5+1)+6*(4*5*5+1)+3*(4*5*5+1)+1*(6*5*5+1)=1516

鏈接數:10*10*1516=151600

詳細說明:第一次池化以後是第二次卷積,第二次卷積的輸出是C3,16個10x10的特徵圖,卷積核大小是 5*5. 咱們知道S2 有6個 14*14 的特徵圖,怎麼從6 個特徵圖獲得 16個特徵圖了? 這裏是經過對S2 的特徵圖特殊組合計算獲得的16個特徵圖。具體以下:

詳解深度學習之經典網絡架構——LeNet

 

C3的前6個feature map(對應上圖第一個紅框的6列)與S2層相連的3個feature map相鏈接(上圖第一個紅框),後面6個feature map與S2層相連的4個feature map相鏈接(上圖第二個紅框),後面3個feature map與S2層部分不相連的4個feature map相鏈接,最後一個與S2層的全部feature map相連。卷積核大小依然爲5*5,因此總共有6*(3*5*5+1)+6*(4*5*5+1)+3*(4*5*5+1)+1*(6*5*5+1)=1516個參數。而圖像大小爲10*10,因此共有151600個鏈接。

詳解深度學習之經典網絡架構——LeNet

 

C3與S2中前3個圖相連的卷積結構以下圖所示:

詳解深度學習之經典網絡架構——LeNet

 

上圖對應的參數爲 3*5*5+1,一共進行6次卷積獲得6個特徵圖,因此有6*(3*5*5+1)參數。 爲何採用上述這樣的組合了?論文中說有兩個緣由:1)減小參數,2)這種不對稱的組合鏈接的方式有利於提取多種組合特徵。

 

五、S4層-池化層(下采樣層)

輸入:10*10

採樣區域:2*2

採樣方式:4個輸入相加,乘以一個可訓練參數,再加上一個可訓練偏置。結果經過sigmoid

採樣種類:16

輸出featureMap大小:5*5(10/2)

神經元數量:5*5*16=400

可訓練參數:2*16=32(和的權+偏置)

鏈接數:16*(2*2+1)*5*5=2000

S4中每一個特徵圖的大小是C3中特徵圖大小的1/4

詳細說明:S4是pooling層,窗口大小仍然是2*2,共計16個feature map,C3層的16個10x10的圖分別進行以2x2爲單位的池化獲得16個5x5的特徵圖。這一層有2x16共32個訓練參數,5x5x5x16=2000個鏈接。鏈接的方式與S2層相似。

 

六、C5層-卷積層

輸入:S4層的所有16個單元特徵map(與s4全相連)

卷積核大小:5*5

卷積核種類:120

輸出featureMap大小:1*1(5-5+1)

可訓練參數/鏈接:120*(16*5*5+1)=48120

詳細說明:C5層是一個卷積層。因爲S4層的16個圖的大小爲5x5,與卷積核的大小相同,因此卷積後造成的圖的大小爲1x1。這裏造成120個卷積結果。每一個都與上一層的16個圖相連。因此共有(5x5x16+1)x120 = 48120個參數,一樣有48120個鏈接。C5層的網絡結構以下:

詳解深度學習之經典網絡架構——LeNet

 

七、F6層-全鏈接層

輸入:c5 120維向量

計算方式:計算輸入向量和權重向量之間的點積,再加上一個偏置,結果經過sigmoid函數輸出。

可訓練參數:84*(120+1)=10164

詳細說明:6層是全鏈接層。F6層有84個節點,對應於一個7x12的比特圖,-1表示白色,1表示黑色,這樣每一個符號的比特圖的黑白色就對應於一個編碼。該層的訓練參數和鏈接數是(120 + 1)x84=10164。ASCII編碼圖以下:

詳解深度學習之經典網絡架構——LeNet

F6層的鏈接方式以下:

詳解深度學習之經典網絡架構——LeNet

 

八、Output層-全鏈接層

Output層也是全鏈接層,共有10個節點,分別表明數字0到9,且若是節點i的值爲0,則網絡識別的結果是數字i。採用的是徑向基函數(RBF)的網絡鏈接方式。假設x是上一層的輸入,y是RBF的輸出,則RBF輸出的計算方式是:

詳解深度學習之經典網絡架構——LeNet

上式w_ij 的值由i的比特圖編碼肯定,i從0到9,j取值從0到7*12-1。RBF輸出的值越接近於0,則越接近於i,即越接近於i的ASCII編碼圖,表示當前網絡輸入的識別結果是字符i。該層有84x10=840個參數和鏈接。

詳解深度學習之經典網絡架構——LeNet

上圖是LeNet-5識別數字3的過程

 

3、總結

LeNet-5是一種用於手寫體字符識別的很是高效的卷積神經網絡。

卷積神經網絡可以很好的利用圖像的結構信息。

卷積層的參數較少,這也是由卷積層的主要特性即局部鏈接和共享權重所決定。

 

想了解更多的朋友能夠直接私我。(關注主頁有驚喜)

若是你有不一樣看法也可直接在評論下方指教!

相關文章
相關標籤/搜索