测试期间批量归一化

问题描述 投票:0回答:2

我正在研究一个向量大小为 140*6 的二维时间序列问题,使用 CNN 进行二元分类。我没有使用任何缩放和归一化技术,而是在训练期间直接将数据输入到具有 3 个隐藏层的 CNN 和批量大小为 256 的批量归一化层。因为我必须使用批量大小 1 实时测试它,批量归一化将如何工作然后没有计算任何训练层的任何平均值或标准偏差。并且稍后还应该在最终测试期间将批量归一化用于前向传递,或者仅应计算训练层的平均值和标准偏差并使用。

tensorflow deep-learning time-series conv-neural-network batch-normalization
2个回答
1
投票

测试期间不使用批量归一化。原因是批量归一化用于缓解训练数据中不同批次之间的协方差漂移问题。协方差变化会导致训练出不好的模型,因此我们使用它。它在测试过程中不起任何作用。

如果您使用批量大小为 1 的批量标准化,那么,这只是实例标准化。


1
投票

这个问题已于两年前提出,但我认为接受的答案不正确!在测试期间使用批量归一化(至少保留批量归一化层),但您可以使用训练数据的均值和方差的运行平均值(在训练过程中存储)对特征激活进行归一化。因此,它不是测试期间实际的批量归一化,而是使用保存的训练统计数据进行线性变换。因此,如果您使用批量大小 1 进行测试,则只需使用训练数据保存的运行平均值。

以下线程回答了问题:测试期间批量归一化

© www.soinside.com 2019 - 2024. All rights reserved.