LetNet5網路結構詳解
LetNet5
這個是其網路結構。
下面我們詳細介紹該網路結構,在此之前,先約定一些稱呼:feature maps(f.maps)是每層網路的特徵圖;stride是卷積核的步長;C1層的特徵圖大小為28×28×6,其中28×28表示特徵圖的高度×寬度,6表示特徵圖的通道數;該層使用的卷積核大小5×5×1×6,表示高度×寬度×輸入通道數×輸出通道數。
首先是輸入層,輸入影像大小統一歸一化為32×32,在正式輸入網路之前,其灰度值也要進行歸一化。
第一個卷積層C1,
其經過大小為5×5×1×6的卷積核(stride=1),生成特徵圖為28×28×6,不使用填充,步長為1。輸入的影像是一個單通道的影像,因此,特徵圖的數量就等於卷積核的數量,每個輸出通道都與一個輸入通道相連。C1層包含了5×5×1×6+6=156個可訓練的引數,以及28×28×6=4704個節點,每個節點都是經過一個5×5的卷積和一個偏置項計算所得到的,連線數為5×5+1=26個,所以C1層一共有4704×26=122304個連線。
池化層S2,
其首先對C1層輸出中的2×2相鄰的區域求和,再取平均值,然後乘以一個權值和加上一個偏置值,將結果通過Sigmoid函式進行對映。這是一個2×2的取樣核,stride=2,生成特徵圖為14×14×6。注意,這裡的池化層雖然沒有卷積核,但有訓練引數。其包括6×2=12個訓練引數,分別是求和的權重和偏移量,共(4+1)×6×14×14=5880個連線。早期的LeNet5使用平均池化,後來使用最大池化。
卷積層C3,
經過大小為5×5×6×16的卷積核(stride=1),其生成特徵圖為10×10×16。其輸入是6個通道,輸出是16個通道,這裡經過了一個編碼,
C3層的前6個特徵圖與S2層相鄰的3個特徵圖相連,接下來的6個特徵圖與S2層相鄰的4個特徵圖相連,再接下來的3個特徵圖與S2層部分不相鄰的4個特徵圖相連,最後一個特徵圖與S2層的所有特徵圖相連。這其實是一個非常主觀的設定,輸出的16個通道並沒有與輸入的每個通道相連。它的設計初衷有兩個:第一是減小計算量;第二是打破對稱性。實際上,在後來的網路設計中,很少會遵循這樣的設計準則。
可以求出C3層有6×(5×5×3+1)+9×(5×5×4+1)+1×(5×5×6+1)=1516個引數,與S2層的連線一共有10×10×1516=151600個。
池化層S4,
其經過2×2的取樣核(stride=2),生成特徵圖為5×5×16。S4層有32個可訓練引數、2000個連線。S4層的池化方式與S2層相同,輸入是10×10×16,輸出是5×5×16。S4層一共有16×2=32個引數,與C3層一共有(4+1)×5×5×16=2000個連線。
卷積層C5,
它由120個5×5的卷積核組成,每個卷積核都與S4層中每個大小為5×5的特徵圖進行卷積,所以每個C5層的卷積核都會輸出一個1×1的結果,有點類似於全域性平均池化和全連線層,但C5層是一個卷積層而不是一個全連線層,如果這個LeNet5網路的輸入變得更大而其他保持不變,那麼這個輸出將大於1×1。C5層與S4層共有120×(5×5×16+1)=48120個連線。
全連線層F6,
它的輸入為1×1×120,輸出為1×1×84,總引數量為120×84。F6層有84×(120+1)=10164個可訓練的連線,84這個數字有當時的設計背景,與ASCII碼錶示的7×12的點陣圖大小相等。F6層將輸入向量與權重向量求點積,然後加上偏置項,用Sigmoid函式產生輸出。
輸出全連線層,
其輸入為1×1×84,輸出為1×1×10,總引數量為84×10個,其中10就是分類的類別數。輸出層是由歐式徑向基函式(RBF)組成的。每個輸出對應一個RBF,每個RBF都有84維的輸入向量。每個RBF都有一個輸出,最後輸出層會輸出一個10維的向量。
注意,雖然是分類任務,但這裡並沒有採用現在廣泛使用的Softmax損失,即交叉熵,而採用了一個歐式距離,稱為Gaussian Connection,其等價於一個全連線層加上一個歐式損失層。
LeNet5是早期非常經典的卷積神經網路,也是網路成功商業化的代表,但它的輸入影像太小,加上資料不足,在早期並沒有在除手寫數字識別之外的其他計算機視覺任務上取得大的突破。
摘錄於《深度學習之模型設計》
相關文章
- OSI七層網路結構詳解
- Swin-Transformer網路結構詳解ORM
- 轉載:ResNet50網路結構圖及結構詳解
- ResNet詳解:網路結構解讀與PyTorch實現教程PyTorch
- 詳細展示RNN的網路結構RNN
- [總結] 容器技術架構、網路和生態詳解架構
- 一文詳解隨機神經網路結構搜尋 (SNAS)隨機神經網路
- RNN 結構詳解RNN
- 1.2網際網路的網路結構
- Transformer各層網路結構詳解!面試必備!(附程式碼實現)ORM面試
- Tomcat結構原理詳解Tomcat
- 容器技術架構、網路和生態詳解架構
- 網路拓撲結構
- linux網路模式詳解Linux模式
- JavaScript --- Map集合結構詳解JavaScript
- MachO 檔案結構詳解Mac
- JavaScript — Map集合結構詳解JavaScript
- 資料結構:棧詳解資料結構
- 網路管理體系結構
- Android技能樹 — 網路小結(1)之網路體系結構Android
- Docker的網路模式詳解Docker模式
- 網路命令ifconfig用法詳解。
- 網路安全——防火牆詳解防火牆
- 詳解 Docker 容器網路配置Docker
- 3.10 solidity資料結構詳解Solid資料結構
- 線性表的結構詳解
- Go 結構體標籤詳解Go結構體
- Angular專案目錄結構詳解Angular
- 高階資料結構詳解資料結構
- yolov7的結構 詳解YOLO
- 深度殘差收縮網路:(三)網路結構
- LSTM變種-GRU網路結構
- Keras輸出網路結構圖Keras
- Pytorch網路結構視覺化PyTorch視覺化
- 408-計算機網路-網路體系結構計算機網路
- JVM之記憶體結構詳解JVM記憶體
- 位元組碼檔案結構詳解
- NumPy之:結構化陣列詳解陣列