經典卷積神經網絡的結構通常知足以下表達式:網絡
輸出層 -> (卷積層+ -> 池化層?)+ -> 全鏈接層+框架
上述公式中,「+」表示一個或者多個,「?」表示一個或者零個,如「卷積層+」表示一個或者多個卷積層,「池化層?」表示一個或者零個池化層。「->」表示 forward 方向。函數
下面將分別介紹 LeNet-5、AlexNet 和 VGG-16 結構。學習
1. LeNet-5(modern)
圖 1 LeNet-5spa
1.1 LeNet-5 結構:
- 輸入層
圖片大小爲 32×32×1,其中 1 表示爲黑白圖像,只有一個 channel。blog
- 卷積層
filter 大小 5×5,filter 深度(個數)爲 6,padding 爲 0, 卷積步長 $s=1$,輸出矩陣大小爲 28×28×6,其中 6 表示 filter 的個數。圖片
- 池化層
average pooling,filter 大小 2×2(即 $f=2$),步長 $s=2$,no padding,輸出矩陣大小爲 14×14×6。ci
- 卷積層
filter 大小 5×5,filter 個數爲 16,padding 爲 0, 卷積步長 $s=1$,輸出矩陣大小爲 10×10×16,其中 16 表示 filter 的個數。get
- 池化層
average pooling,filter 大小 2×2(即 $f=2$),步長 $s=2$,no padding,輸出矩陣大小爲 5×5×16。注意,在該層結束,須要將 5×5×16 的矩陣flatten 成一個 400 維的向量。深度學習
- 全鏈接層(Fully Connected layer,FC)
neuron 數量爲 120。
- 全鏈接層(Fully Connected layer,FC)
neuron 數量爲 84。
- 全鏈接層,輸出層
如今版本的 LeNet-5 輸出層通常會採用 softmax 激活函數,在 LeNet-5 提出的論文中使用的激活函數不是 softmax,但其如今不經常使用。該層神經元數量爲 10,表明 0~9 十個數字類別。(圖 1 其實少畫了一個表示全鏈接層的方框,而直接用 $\hat{y}$ 表示輸出層。)
1.2 LeNet-5 一些性質:
- 若是輸入層不算神經網絡的層數,那麼 LeNet-5 是一個 7 層的網絡。(有些地方也可能把 卷積和池化 看成一個 layer)(LeNet-5 名字中的「5」也能夠理解爲整個網絡中含可訓練參數的層數爲 5。)
- LeNet-5 大約有 60,000 個參數。
- 隨着網絡愈來愈深,圖像的高度和寬度在縮小,與此同時,圖像的 channel 數量一直在增長。
- 如今經常使用的 LeNet-5 結構和 Yann LeCun 教授在 1998 年論文中提出的結構在某些地方有區別,好比激活函數的使用,如今通常使用 ReLU 做爲激活函數,輸出層通常選擇 softmax。
2. AlexNet
圖 2 AlexNet
2.1 AlexNet 結構:
- 輸入層:圖像大小爲 227×227×3,其中 3 表示輸入圖像的 channel 數(R,G,B)爲 3。
- 卷積層:filter 大小 11×11,filter 個數 96,卷積步長 $s = 4$。(filter 大小隻列出了寬和高,filter矩陣的 channel 數和輸入圖片的 channel 數同樣,在這裏沒有列出)
- 池化層:max pooling,filter 大小 3×3,步長 $s = 2$。
- 卷積層:filter 大小 5×5,filter 個數 256,步長 $s = 1$,padding 使用 same convolution,即便得卷積層輸出圖像和輸入圖像在寬和高上保持不變。
- 池化層:max pooling,filter 大小 3×3,步長 $s = 2$。
- 卷積層:filter 大小 3×3,filter 個數 384,步長 $s = 1$,padding 使用 same convolution。
- 卷積層:filter 大小 3×3,filter 個數 384,步長 $s = 1$,padding 使用 same convolution。
- 卷積層:filter 大小 3×3,filter 個數 256,步長 $s = 1$,padding 使用 same convolution。
- 池化層:max pooling,filter 大小 3×3,步長 $s = 2$;池化操做結束後,將大小爲 6×6×256 的輸出矩陣 flatten 成一個 9216 維的向量。
- 全鏈接層:neuron 數量爲 4096。
- 全鏈接層:neuron 數量爲 4096。
- 全鏈接層,輸出層:softmax 激活函數,neuron 數量爲 1000,表明 1000 個類別。
2.2 AlexNet 一些性質:
- 大約 60million 個參數;
- 使用 ReLU 做爲激活函數。
3. VGG-16
圖 3 VGG-16
3.1 VGG-16 結構:
- 輸入層
- 卷積層
- 卷積層
- 池化層
- 卷積層
- 卷積層
- 池化層
- 卷積層
- 卷積層
- 卷積層
- 池化層
- 卷積層
- 卷積層
- 卷積層
- 池化層
- 卷積層
- 卷積層
- 卷積層
- 池化層
- 全鏈接層
- 全鏈接層
- 全鏈接層,輸出層
3.2 VGG-16 一些性質:
- VGG-16 中的 16 表示整個網絡中有 trainable 參數的層數爲 16 層。(trainable 參數指的是能夠經過 back-propagation 更新的參數)
- VGG-16 大約有 138million 個參數。
- VGG-16 中全部卷積層 filter 寬和高都是 3,步長爲 1,padding 都使用 same convolution;全部池化層的 filter 寬和高都是 2,步長都是 2。
References
Course 4 Convolutional Neural Networks by Anderw Ng
《TensorFLow實戰Google深度學習框架》