LeNet-5是一種用於手寫體字符識別的很是高效的卷積神經網絡。原文下載。git
LeNet-5網絡結構

- LeNet-5共有7層,不包含輸入層;
- 網絡結構能夠描述爲:卷積=>下采樣=>卷積=>下采樣=>卷積=>全鏈接=>全鏈接
各層參數詳解
INPUT層-輸入層
首先是數據 INPUT 層,輸入圖像的尺寸統一歸一化爲32*32。github
C1層-卷積層
- 輸入圖片:32x32
- 卷積核大小:5x5
- 卷積核種類:6
- 輸出featuremap大小:28x28 (32-5+1)=28
- 神經元數量:28x28x6
- 可訓練參數:(5x5+1) x 6(每一個濾波器5x5=25個unit參數和一個- - bias參數,一共6個濾波器)
- 鏈接數:(5x5+1)x6x28x28=122304
S2層-池化層(下采樣層)
- 輸入:28x28
- 採樣區域:2x2
- 採樣方式:4個輸入相加,乘以一個可訓練參數,再加上一個可訓練偏置。結果經過sigmoid
- 採樣種類:6
- 輸出featureMap大小:14x14(28/2)
- 神經元數量:14x14x6
- 鏈接數:(2x2+1)x6x14x14
S2中每一個特徵圖的大小是C1中特徵圖大小的1/4。web
C3層-卷積層
- 輸入:S2中全部6個或者幾個特徵map組合
- 卷積核大小:5x5
- 卷積核種類:16
- 輸出featureMap大小:10x10 (14-5+1)=10
C3中的每一個特徵map是鏈接到S2中的全部6個或者幾個特徵map的,表示本層的特徵map是上一層提取到的特徵map的不一樣組合存在的一個方式是:C3的前6個特徵圖以S2中3個相鄰的特徵圖子集爲輸入。接下來6個特徵圖以S2中4個相鄰特徵圖子集爲輸入。而後的3個以不相鄰的4個特徵圖子集爲輸入。最後一個將S2中全部特徵圖爲輸入。則:網絡
可訓練參數:6x(3x5x5+1)+6x(4x5x5+1)+3x(4x5x5+1)+1x(6x5x5+1)=1516app
鏈接數:10x10x1516=151600函數

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

採起這種方式的緣由:spa
- 減小參數;
- 這種不對稱的組合鏈接的方式有利於提取多種組合特徵。
S4層-池化層(下采樣層)
- 輸入:10x10
- 採樣區域:2x2
- 採樣方式:4個輸入相加,乘以一個可訓練參數,再加上一個可訓練偏置。結果經過sigmoid
- 採樣種類:16
- 輸出featureMap大小:5x5(10/2)
- 神經元數量:5x5x16=400
- 鏈接數:16x(2x2+1)55=2000
S4中每一個特徵圖的大小是C3中特徵圖大小的1/4。 3d
C5層-卷積層
- 輸入:S4層的所有16個單元特徵map(與s4全相連)
- 卷積核大小:5x5
- 卷積核種類:120
- 輸出featureMap大小:1x1(5-5+1)
- 可訓練參數/鏈接:120x(16x5x5+1)=48120
F6層-全鏈接層
- 輸入:c5層的120維向量
- 計算方式:計算輸入向量和權重向量之間的點積,再加上一個偏置,結果經過sigmoid函數輸出。
- 可訓練參數:84x(120+1)=10164
Output層-全鏈接層
Output層也是全鏈接層,共有10個節點,分別表明數字0到9,且若是節點i的值爲0,則網絡識別的結果是數字i。採用的是徑向基函數(RBF)的網絡鏈接方式。假設x是上一層的輸入,y是RBF的輸出,則RBF輸出的計算方式是:orm
${y_i} = \sum\limits_j {{{({x_j} - {\omega _i}_j)}^2}}$
${{\omega _i}_j}$的值由i的比特圖編碼肯定,i從0到9,j取值從0到7*12-1。RBF輸出的值越接近於0,則越接近於i,即越接近於i的ASCII編碼圖,表示當前網絡輸入的識別結果是字符i。該層有84x10=840個參數和鏈接。
以下圖是識別數字3的過程:
