假设我使用的是64个数据点的批量大小。在训练过程中,我更新了均值和方差的指数移动平均值,并在测试时使用这些平均值。
我有两个测试案例:(1) 数据点A + 其他63个独特的数据点,(2) 数据点A重复64次
我期望发生的情况:在测试时,数据点A的输出在两种情况下应该相同,因为使用了平均的均值和方差进行归一化。
在我的实现中发生的情况:每个测试案例的输出不同,即每个测试样本的输出取决于批次中提供的其他样本,这是由于归一化造成的。
我的期望是错误的,还是我的期望是正确的,我需要专注于调试我的实现?
回答:
在测试时不应进行归一化调整。你需要区分网络的训练时间和测试时间。在训练过程中,你适应归一化,一旦完成 – 计算整个训练集上的归一化(或至少是具有代表性的批次),然后固定它并在预测阶段使用固定的归一化。