9 / 24 · 概念
直接卷积参考
输入 [2,3]、权重 [4,−1]、偏置为一时,如果每次输入通道迭代都加一次偏置,会得到什么错误结果?
课时内容可免费阅读,选课后可保存学习进度。
优先建立易于检查的参考
黄金模型优先考虑约定是否清晰可见,而不是速度。先遍历输出通道、输出行和输出列,再归约输入通道及卷积核行列。计算每个输入坐标,并在边界之外提供零。这样可以定位第一个错误输出以及具体出现分歧的项,不必模仿硬件优化后的循环顺序。
每个输出只用 b[m] 初始化累加器一次。如果在归约内部加入偏置,会重复偏置。整数模型中,x 和 w 为中心化编码,偏置使用乘积比例。
多通道计算示例
两个 1×1 输入通道分别存储二和三。输出通道零的权重为 [4,−1],偏置为一,得到 1+8−3=6。输出通道一的权重为 [−2,5],偏置为 −1,得到 −1−4+15=10。共享累加器必须独立开始第二个输出,不能保留第一个结果。
输入 [1,2,3;4,5,6;7,8,9]、卷积核 [1,2;3,4] 的预期结果为 [37,47;67,77]。最先记录的乘积为 1,4,12,20,下一组为 2,6,15,24。检查一个手算位置;仅比较最终值可能掩盖相互抵消的错误。
将直接模型与结构独立的窗口块加点积模型比较。两者共享同一地址函数,可能共享同一错误。应结合独立结构与手算测试数据。保持随机种子可复现,保存失败张量。同时比较转换前累加器和最终输出编码,以定位数值故障。
model.mjs 接收 X[C][H][W] 和 W[M][C/G][R][S],隐含一个批次。它检查矩形张量、通道兼容性和分组,不导入框架模型。应使用不同值、负数和非对称权重,而不是全零测试数据。可与 ONNX Conv比较约定,同时记录教学模型的限制。
自己试试
输入 [2,3]、权重 [4,−1]、偏置为一时,如果每次输入通道迭代都加一次偏置,会得到什么错误结果?
阅读解释
正确结果为 1+8−3=6。重复加入偏置两次得到 8−3+2=7。应在通道归约之外初始化偏置。