如果您使用批量标准化,您是不是需要标准化输入?
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归一化?跨度> 是的,但使用较小的样本来估计均值和方差(即您的批量大小)。以上是关于如果您使用批量标准化,您是不是需要标准化输入?的主要内容,如果未能解决你的问题,请参考以下文章