测试期间的批量标准化

时间:2017-08-04 02:26:21

标签: machine-learning neural-network deep-learning normalization batch-normalization

对于测试期间的批量标准化,如何计算每个激活输入的平均值和方差(在每个层和输入维度中)?是否记录训练的均值和方差,计算整个训练集的均值和方差,或计算整个测试集的均值和方差?

许多人说你必须预先计算均值和方差,但如果你使用计算整个测试集的均值和方差的方法,你不需要计算整个测试的均值和方差在执行前向传播时设置(不是"前")?

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:2)

当你预测测试时,你总是使用火车的统计数据 - 无论是简单的转换还是批量规范化。

我建议尝试使用cs231n课程来了解更多相关信息。以下是我在执行此代码时编写批量规范化的方式:github link

如果测试统计数据与列车显着不同,这意味着测试总体上不同,模型不能很好地工作。在这种情况下,您无论如何都需要找到不同的训练数据。但更确切地说 - 当你训练数据模型,以某种方式处理时,它在数据上运行良好,并以不同的方式处理。

让我们想象一下只有一个测试样本 - 我。即你想为一个客户或其他什么做出预测。在这种情况下,您根本无法计算测试统计数据。其次,让我们进行批量标准化。数据被归一化,现在的值显示原始数据与特定平均值的差异。因此模型将使用此信息进行培训)。如果使用测试统计数据对测试数据进行标准化,则值将显示与不同平均值的偏差。

答案 1 :(得分:0)

在训练时记录经验均值和方差记录,例如运行平均值,然后将其用于测试集,而不是计算每个测试批次的均值和方差。