【问题标题】:Do you need to standardize inputs if you are using Batch Normalization?如果您使用批量标准化,您是否需要标准化输入?
【发布时间】:2017-02-17 06:18:34
【问题描述】:

我一直在玩 Keras 中的批量标准化。我想知道批量归一化是否也对神经网络的输入进行归一化。这是否意味着我不需要将我的网络输入标准化并依赖 BN 来完成?

【问题讨论】:

    标签: machine-learning neural-network normalization keras


    【解决方案1】:

    虽然您当然可以将其用于此目的,但批量归一化并不是为此而设计的,并且由于样本量有限(样本量是您的批量大小),您很可能会在归一化中引入抽样误差。

    我不建议使用批量标准化来标准化您的输入的另一个因素是,它引入了校正术语 gamma 和 beta(训练参数),如果不禁用它们会扭曲您的训练数据。

    对于您的测试数据的规范化,我建议对完整的训练集使用 z-score 规范化(例如,通过 sklearn 的 StandardScaler)或一些适当的替代方法,但不是批量规范化。

    【讨论】:

    • 那么,你是说如果我使用BatchNormalization中的所有标准参数(除了momentum=1和epsilon = 0)作为第一层,它本质上等于z-score归一化?跨度>
    • 是的,但使用较小的样本来估计均值和方差(即您的批量大小)。
    猜你喜欢
    • 2020-02-25
    • 1970-01-01
    • 2017-10-21
    • 2019-11-13
    • 2021-09-08
    • 2023-01-20
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多