C1(卷積)→S2(下采樣)→C3(卷積)→S4(下采樣)→C5(卷積)→F6(全連接)。各層參數:核大小、步長、輸入輸出通道數、連接模式(全連接/指定連接)。
五個雙層 vector 映射表:
weight2io_:[層索引][核索引] → 權重索引對out2wi_:[層索引][輸出特征索引] → 輸入特征索引對in2wo_:[層索引][輸入特征索引] → 輸出特征索引對bias2out_:[層索引][偏置索引] → 輸出特征索引out2bias_:[層索引][輸出特征索引] → 偏置索引外層索引層號,內層索引該層內的核/特征。因為每層含多個核,每核含多個權重,二維數組語義更清晰。
示例:C1 層 6 個 5×5 核 → weight2io_[0] 有 6 個 vector,每個含 25 對索引。
#define io_connection vector<vector<pair<int,int>>>
便於聲明上述五個同類型變量。
卷積運算 → 係數擴展 → 加偏置 → 激活函數 → 遞歸傳遞。核心在 Lambda 封裝的三階段並行計算。
back_propagation 涉及梯度計算、權重更新、誤差回傳,結構複雜,後續專文填坑。
網絡構造採用 net << layer1 << layer2 鏈式調用,中間層初始化參數難以觀察,需特殊調試技巧。