Altifigence Academy

11 / 24 · 概念

连接 ReLU 与最大池化

uint8 输出零点为 100 时,对 [98,103;101,97] 应用 ReLU 和 2×2 最大池化。

包含后处理级

推理可能在卷积之后继续。ReLU 对每个真实值和零取较大者。最大池化选择空间窗口中的最大值。前者逐元素执行,后者改变空间尺寸,需要不同的完成条件。本课程通路先重新量化,再应用 ReLU,然后执行无填充、步幅二的 2×2 最大池化。向下取整约定会丢弃最后不完整的行或列。

对于原始量化输出,真实零对应输出零点 zy。正比例因子保持顺序,因此 ReLU 使用 max(q,zy)。zy=128 时,若把 uint8 编码与字面值零比较,会错误地保留负真实值。

运算链计算示例

累加器 [−2,4;6,−8] 在乘数 0.5、零点零下变为 [−1,2;3,−4]。ReLU 得到 [0,2;3,0],池化选择三。空间降采样与数值缩放是不同概念。最大池化选择已有编码,因此在此练习中保持其比例。

零点为 128 时,编码 [126,132;134,120] 经 ReLU 后变为 [128,132;134,128],池化结果为编码 134。即使存储表示改变,参考仍然是真实零。平均池化引入除法和舍入,因此不能与此实现互换。

ReLU 之前的负数窗口 [−8,−5;−3,−6] 最大值为 −3。如果错误地在填充边界插入零,就会让不存在的样本胜出。有填充的实现必须排除该位置,或使用规定的最小值。可运行的池化函数不支持填充。

融合各级可能减少中间存储器流量,但验证时应保留可观察数值。分别比较累加器、重新量化编码、激活值和池化输出。4×4 输入产生四个池化值;依据规定的向下取整规则,3×3 输入产生一个。测试中应记录不完整窗口策略。一手定义见 ONNX Relu 和 ONNX MaxPool。

自己试试

uint8 输出零点为 100 时,对 [98,103;101,97] 应用 ReLU 和 2×2 最大池化。

阅读解释

ReLU 将下限限制为编码 100,得到 [100,103;101,100]。最大池化选择 103,并保持输出比例。

你的选择适用于此浏览器,可随时在页脚更改。