测试期间的批量归一化
Batch normalization during testing
对于测试期间的批量归一化,如何计算每个激活输入(在每个层和输入维度中)的均值和方差?记录训练的均值和方差,计算整个训练集的均值和方差,还是计算整个测试集的均值和方差?
很多人说要预先计算均值和方差,但是如果用计算整个测试集的均值和方差的方法,是不是就不需要计算整个测试的均值和方差了在执行前向传播时设置(不是 "pre")?
非常感谢您的帮助!
当你预测测试时,你总是使用训练的统计数据——无论是简单的转换还是批量归一化。
我建议您尝试 cs231n 课程以了解更多相关信息。以下是我在执行此代码时对批归一化进行编码的方式:github link.
如果测试统计数据与训练数据有显着差异,这意味着测试总体上不同,模型将无法正常工作。在这种情况下,您无论如何都需要找到不同的训练数据。但更准确地说 - 当您在以某种方式处理的数据上训练模型时,它无法很好地处理以不同方式处理的数据。
假设只有 1 个测试样本 - i。 e.您想为一个客户或其他任何人做出预测。在这种情况下,您根本无法计算测试统计信息。其次,让我们进行批量归一化。数据被归一化,值现在显示原始数据与某个平均值有多少标准偏差。因此模型将使用此信息进行训练)。如果您使用测试统计数据对测试数据进行归一化,则值将显示与不同平均值的偏差。
在训练时记录经验均值和方差,例如 运行 平均值,稍后用于测试集,而不是计算每个测试批次的均值和方差。
对于测试期间的批量归一化,如何计算每个激活输入(在每个层和输入维度中)的均值和方差?记录训练的均值和方差,计算整个训练集的均值和方差,还是计算整个测试集的均值和方差?
很多人说要预先计算均值和方差,但是如果用计算整个测试集的均值和方差的方法,是不是就不需要计算整个测试的均值和方差了在执行前向传播时设置(不是 "pre")?
非常感谢您的帮助!
当你预测测试时,你总是使用训练的统计数据——无论是简单的转换还是批量归一化。
我建议您尝试 cs231n 课程以了解更多相关信息。以下是我在执行此代码时对批归一化进行编码的方式:github link.
如果测试统计数据与训练数据有显着差异,这意味着测试总体上不同,模型将无法正常工作。在这种情况下,您无论如何都需要找到不同的训练数据。但更准确地说 - 当您在以某种方式处理的数据上训练模型时,它无法很好地处理以不同方式处理的数据。
假设只有 1 个测试样本 - i。 e.您想为一个客户或其他任何人做出预测。在这种情况下,您根本无法计算测试统计信息。其次,让我们进行批量归一化。数据被归一化,值现在显示原始数据与某个平均值有多少标准偏差。因此模型将使用此信息进行训练)。如果您使用测试统计数据对测试数据进行归一化,则值将显示与不同平均值的偏差。
在训练时记录经验均值和方差,例如 运行 平均值,稍后用于测试集,而不是计算每个测试批次的均值和方差。