如果您使用批归一化,是否需要标准化输入?

Do you need to standardize inputs if you are using Batch Normalization?

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

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

为什么我不建议使用批量归一化来归一化你的输入的另一个因素是它引入了校正项 gamma 和 beta(训练参数),如果不禁用它们会扭曲你的训练数据。

为了测试数据的规范化,我建议在完整的训练集上使用 z-score 规范化(例如,通过 sklearn 的 StandardScaler)或一些合适的替代方法,而不是批量规范化。