經典卷積神經網路的結構一般滿足如下表示式:
輸出層 -> (卷積層+ -> 池化層?)+ -> 全連線層+
上述公式中,“+”表示一個或者多個,“?”表示一個或者零個,如“卷積層+”表示一個或者多個卷積層,“池化層?”表示一個或者零個池化層。“->”表示 forward 方向。
下面將分別介紹 LeNet-5、AlexNet 和 VGG-16 結構。
1. LeNet-5(modern)
圖 1 LeNet-5
1.1 LeNet-5 結構:
- 輸入層
圖片大小為 32×32×1,其中 1 表示為黑白影象,只有一個 channel。
- 卷積層
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。
- 卷積層
filter 大小 5×5,filter 個數為 16,padding 為 0, 卷積步長 $s=1$,輸出矩陣大小為 10×10×16,其中 16 表示 filter 的個數。
- 池化層
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深度學習框架》