? ? ? ? 一個簡單的經典CNN網絡結構由:輸入層、卷積層、池化層、全連接層和輸出層,這五種神經網絡層結構組成。它最最經典的實例是LeNet-5,它最早被設計用于手寫數字識別任務,包含兩個卷積層、兩個池化層、幾個全連接層,以及最后的輸出層。
一、先用文字介紹一下這五層分別在做什么
(1)輸入層
????????輸入通常是經過預處理的圖像數據,例如,將圖像調整到特定尺寸(如32x32x3)并進行歸一化,使得像素值范圍在0到1之間,或者被標準化為均值為0,標準差為1的形式。
(2)卷積層
? ? ? ? 卷積層是CNN的關鍵組成部分,又可以拆分成下面4分部分逐一理解:
- 卷積核(Filter/Kernels):每個卷積層包含多個可學習的濾波器(或稱為卷積核),這些濾波器在輸入圖像上滑動,執行卷積操作(相乘后求和),從而檢測圖像中的特定特征,如邊緣、線條、紋理等。
- 步長(Stride):濾波器在圖像上移動的步長,決定了輸出特征圖的空間分辨率。
- 填充(Padding):通常為了保持輸出特征圖的尺寸或避免邊界信息的丟失,會在圖像邊緣添加零(Zero Padding)。
- 激活函數:如ReLU(Rectified Linear Unit)用于增加網絡的非線性。
(3)池化層
? ? ? ? 池化層的負責減少特征圖的空間尺寸,降低計算復雜度,同時保持最重要的特征。最常見的池化類型是最大池化(Max Pooling),它在每個池化區域取最大值作為輸出。池化同樣有步長和大小的參數,比如常用的2x2大小,步長為2。
(4)全連接層
????????在一系列卷積和池化層之后,特征圖會被展平(Flatten)成一維向量,然后傳遞給全連接層。全連接層負責將學到的特征映射到分類標簽或其他輸出形式。全連接層是傳統神經網絡的一部分,常用于模型的最終分類或回歸任務。
(5)輸出層
????????對于分類任務,輸出層通常使用Softmax激活函數,將神經元的輸出轉換為概率分布,表示每個類別的預測概率。輸出層的神經元數量等于分類任務的類別總數。
二、再用可視化加深對經典CNN結構的理解
(1)經典CNN結構?

????????CNN有個特點,5個層組成(輸入層、卷積層、池化層、全連接層和輸出層),在神經網絡的隱藏層部分,卷積層和池化層交替出現,最后跟上幾個全連接層再跟輸出層。
????????重復的卷積層與池化層的組合目的是為了學習更深層次、更復雜的特征,每次這樣的組合都會使網絡能夠捕捉到更高層次的抽象特征,如從邊緣逐步過渡到形狀、紋理乃至對象的部分和整體。

(2)這樣的網絡結構設計會出現一種現象
????????經過這樣的網絡結構后,圖像的尺寸會減小,圖像的通道數
會增大。?這種變化反映了網絡從原始像素數據中提取并逐步構建更高級、更抽象特征的過程。對此現象稍作解釋:
① 圖像尺寸減小:
- 卷積層:卷積層本身不一定會減少圖像尺寸,但可以通過設置合適的填充(padding)和步長(stride)來控制輸出尺寸。無填充且步長大于1的卷積會縮小輸出尺寸。
- 池化層:池化層的主要作用之一就是減少空間維度(高度和寬度),通常在每個維度上減半,從而顯著減小圖像尺寸,同時保持最重要的特征。
② 通道數增大:
- 卷積層:每個卷積層通過不同的卷積核學習不同的特征,每個卷積核會產生一個新的通道。因此,卷積層后的通道數通常會增加,具體增加的數量等于該層中濾波器(卷積核)的數量。
- 池化層:池化操作不會改變通道數,它只影響空間維度。
- 全連接層:進入全連接層之前,所有之前的層(包括卷積層和池化層)的輸出會被“展平”成一維向量,此時不再討論“通道”這個概念,而是關注于神經元的總數。