Altifigence Academy

10 / 24 · 概念

im2col 與矩陣乘法

H=W=4、C=1,使用無填補的有效 3×3 核心,求原輸入元素數、P、K 與展開視窗元素數。

重新表達操作

im2col 將各輸入視窗攤平成向量,以進行矩陣乘法。我們每列放置一個視窗區塊。矩陣 A 有 P×K 個元素,P=HoWo、K=CRS。攤平權重構成矩陣 B 的各欄,形狀為 K×M。乘積 AB 的形狀為 P×M。其他慣例將視窗區塊放在欄,因此應確立各軸,而非從名稱推斷。

可以實際建立完整視窗矩陣,也可以按需產生視窗。兩者能產生相同數字,但儲存與頻寬不同。具有矩陣乘法引擎,不代表必須將完整展開矩陣寫到外部記憶體。

矩陣計算範例

對 [1,2,3;4,5,6;7,8,9] 與 2×2 視窗,A 的各列為 [1,2,4,5]、[2,3,5,6]、[4,5,7,8]、[5,6,8,9]。核心 [1,2;3,4] 產生權重欄 [1,2,3,4]。四個內積為 37,47,67,77。因此 4×4 乘上 4×1 得到 4×1,再折回 2×2 輸出。

原輸入有九個元素;展開矩陣有十六個。中心值五出現四次,角落值一出現一次。實際展開的表示方式,將空間重用變成重複儲存。一個權重向量在全部四個視窗間重用。配置儲存前,計算 P×K 並與 C×H×W 比較。輸出區域更大時,重複量可能很可觀。

多通道時,以相同 c,r,s 順序攤平視窗與權重。雙通道 1×1 視窗為 [x0,x1];只反轉權重通道會改變結果。先使用非對稱通道值。分組卷積形成獨立群組向量,不是無差別包含所有輸入通道。

與直接模型一致,驗證的是算術值,不是實體記憶體傳輸或 PE 同時操作。下一章會由串流產生等效視窗;後續分塊避免儲存完整展開張量。除了輸出值,也記錄中間矩陣尺寸與重複量,讓映射成本清楚可見。

自己試試看

H=W=4、C=1,使用無填補的有效 3×3 核心,求原輸入元素數、P、K 與展開視窗元素數。

查看解說

輸入有十六個元素。輸出為 2×2,因此 P=4、K=9。完整視窗矩陣有 36 個元素。按需視窗可避免儲存全部 36 個。

此選擇適用於本瀏覽器,隨時可從頁尾變更。