网络层的契约
为 affine、ReLU、normalization 建立 forward/backward 对偶契约。
为什么需要它
模块化只在 cache 身份和 shape 可追踪时才减少复杂度。
开始前应该已经会回答
- 能解释 upstream gradient
- 会推 bias gradient reduction
输入、输出与契约
- 输入
- x,w,b + upstream dout
- 输出
- out + dx,dw,db
- 每个 gradient 对应原对象 shape
- backward 使用同一次 forward cache
- 用全局可变状态偷传 cache
- 广播后忘记按被广播轴求和
用最小例子检查
用 N=2,D=3,C=2 手推 affine backward 的三个输出 shape。
如果你看到……
优先检查:broadcast reduction
优先检查:cache 顺序与接口
预测 → 实验 → 证据
- 先预测
- 组合层的数值梯度应与逐层链式组合一致。
- 做实验
- 对 affine-ReLU composite 做 sparse gradient check。
- 留证据
- 每个参数 relative error
- 非光滑点处理
- 输入规模
渐进提示
先独立排查 10–15 分钟,再按需展开。
提示 1
先测独立 layer
提示 2
再测 sandwich
提示 3
打印 cache 类型与 shape
闭卷检查 · 网络层的契约
- 每层独立通过
- 组合通过
- 能从计算图解释三条梯度