首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

tiny_cnn 卷積神經網絡源碼深度解析(8):partial_connected_layer 映射機制與雙層 Vector 結構

     編輯:關於C++

LeNet-5 架構回顧

C1(卷積)→S2(下采樣)→C3(卷積)→S4(下采樣)→C5(卷積)→F6(全連接)。各層參數:核大小、步長、輸入輸出通道數、連接模式(全連接/指定連接)。

partial_connected_layer 成員變量

五個雙層 vector 映射表:

  • weight2io_:[層索引][核索引] → 權重索引對
  • out2wi_:[層索引][輸出特征索引] → 輸入特征索引對
  • in2wo_:[層索引][輸入特征索引] → 輸出特征索引對
  • bias2out_:[層索引][偏置索引] → 輸出特征索引
  • out2bias_:[層索引][輸出特征索引] → 偏置索引

雙層 Vector 設計動機

外層索引層號,內層索引該層內的核/特征。因為每層含多個核,每核含多個權重,二維數組語義更清晰。
示例:C1 層 6 個 5×5 核 → weight2io_[0] 有 6 個 vector,每個含 25 對索引。

宏定義簡化

#define io_connection vector<vector<pair<int,int>>>

便於聲明上述五個同類型變量。

前向傳播流程預告

卷積運算 → 係數擴展 → 加偏置 → 激活函數 → 遞歸傳遞。核心在 Lambda 封裝的三階段並行計算。

反向傳播挖坑

back_propagation 涉及梯度計算、權重更新、誤差回傳,結構複雜,後續專文填坑。

流式構造調試難點

網絡構造採用 net << layer1 << layer2 鏈式調用,中間層初始化參數難以觀察,需特殊調試技巧。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved