如果您使用批量标准化,您是不是需要标准化输入?

Posted

技术标签:

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

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

那么,你是说如果我使用BatchNormalization中的所有标准参数(除了momentum=1和epsilon = 0)作为第一层,它本质上等于z-score归一化?跨度> 是的,但使用较小的样本来估计均值和方差(即您的批量大小)。

以上是关于如果您使用批量标准化,您是不是需要标准化输入?的主要内容,如果未能解决你的问题,请参考以下文章

测试期间的批量标准化

分支嵌套

pandas:是不是可以使用任意长的布尔标准过滤数据帧?

是否有任何函数可以从标准输入中获取无限的输入字符串

Ruby 的标准库中是不是有优先级队列数据结构实现?

批量标准化和辍学的顺序?