为什么推理时一定要冻结?

BN 基础已拆回第二讲架构支撑;Source/Norm/Tent 三臂保留适应参考。 已按模块/目标/统计的实际职责拆分,原页面整体保留归档。

同一个通道:先选择参照统计,再作可学习变换x̂ = (x − μ) / √(σ² + ε)y = γ x̂ + β同一BN checkpoint蓝色:μ、σ²的来源紫色:γ、βSource固定源统计固定Norm当前目标 batch固定,无梯度Tent当前目标 batch按熵梯度更新本课Norm/Tent禁用running buffers,不累积统计 · 无目标标签参与适应

部署时只有模型与无标签图像,先看BN究竟有哪两步。每个通道用均值与方差规范化,再由可学习的γ、β缩放和平移。蓝色统计回答“参照哪组数据”,紫色参数回答“怎样再变换”。同一激活与不同batch同伴一起估计统计,规范化结果便可能改变;这不需要梯度。把三臂放回同一图:Source使用固定源统计与参数;Norm改用目标batch统计、不做参数更新;Tent再用熵更新所选BN affine。当前batch估计、累积running buffers、参数梯度是三个动作。本课Norm/Tent禁用running buffers,标签不进入适应。

原始说明

部署时只有模型与无标签图像,先看BN究竟有哪两步。每个通道用均值与方差规范化,再由可学习的γ、β缩放和平移。蓝色统计回答“参照哪组数据”,紫色参数回答“怎样再变换”。同一激活与不同batch同伴一起估计统计,规范化结果便可能改变;这不需要梯度。把三臂放回同一图:Source使用固定源统计与参数;Norm改用目标batch统计、不做参数更新;Tent再用熵更新所选BN affine。当前batch估计、累积running buffers、参数梯度是三个动作。本课Norm/Tent禁用running buffers,标签不进入适应。 BN公式依据PyTorch BatchNorm2d;每通道统计覆盖N×H×W,当前前向方差为biased估计。Source eval使用源running统计并冻结;本课Norm/Tent均track_running_stats=False且running_mean/var=None,只有Tent更新所选BN affine。详细预测时点集中在熵更新页。Tent 2020-06-18预印本/ICLR 2021。

torch.nn.BatchNorm2d.html

tent.py

Tent · ICLR 2021