批量归一化而不是输入归一化

Posted

技术标签:

【中文标题】批量归一化而不是输入归一化【英文标题】:Batch normalization instead of input normalization 【发布时间】:2018-03-28 01:41:37 【问题描述】:

我可以在输入层之后立即使用批量规范化层而不规范化我的数据吗?我可以期望获得类似的效果/性能吗?

在 keras 函数式中,它会是这样的:

x = Input (...)
x = Batchnorm(...)(x)
...

【问题讨论】:

【参考方案1】:

你可以做到。但是,除了激活分布稳定之外,batchnorm 的好处是均值和标准差可能会随着网络的学习而迁移。

实际上,在输入层之后设置 batchnorm 是一个花哨的数据预处理步骤。它有时很有帮助(例如在线性回归中)。但是一次计算整个训练样本的均值和方差比逐批学习更容易、更有效。请注意,batchnorm 在性能方面并不是免费的,您不应滥用它。


【讨论】:

如何提前标准化整个数据(例如通过standardscaler)并同时使用批量标准化? 如果要标准化输入,是否需要始终在 Inputlayer 之后添加 BN 层?如果我在 Inputlayer 之前添加 BN 会发生什么? @AleB 查看kaggle.com/ryanhol***/…,您可以添加BN 作为输入,它充当sklearn.StandardScaler()

以上是关于批量归一化而不是输入归一化的主要内容,如果未能解决你的问题,请参考以下文章

4-16 归一化,抽象类,接口类,多态

「深度学习一遍过」必修12:激活函数池化归一化泛化正则化

Batch Normalization:批量归一化

归一化输入梯度消失/爆炸小批量梯度下降

归一化输入梯度消失/爆炸小批量梯度下降

批归一化(Batch Normalization)