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 个元素。