当前位置: 首页 > 知识库问答 >
问题:

批量规范化而不是输入规范化

宰父嘉胜
2023-03-14

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

在keras函数中,它应该是这样的:

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

共有1个答案

锺离声
2023-03-14

你可以做到这一点。但是批处理规范的好处是,除了激活分布稳定之外,均值和std偏差可能会随着网络的学习而迁移。

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

 类似资料:
  • 我使用Tensorflow 1.14.0和Keras 2.2.4。以下代码实现了一个简单的神经网络: 20个时代后的最终val\u损失为0.7751。当我取消注释添加批处理规范化层的唯一注释行时,val\u损失变为1.1230。 我的主要问题要复杂得多,但同样的事情也会发生。因为我的激活是线性的,所以我把批处理规范化放在激活之后还是之前并不重要。 问题:为什么批处理规范化帮不上忙?是否有什么可以更

  • BatchNormalization层 keras.layers.normalization.BatchNormalization(epsilon=1e-06, mode=0, axis=-1, momentum=0.9, weights=None, beta_init='zero', gamma_init='one') 该层在每个batch上将前一层的激活值重新规范化,即使得其输出数据的均值接

  • BatchNormalization层 keras.layers.normalization.BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True, beta_initializer='zeros', gamma_initializer='ones', moving_mean_initia

  • 我了解批次归一化有助于更快的训练,将激活转向单位高斯分布,从而解决梯度消失问题。批次规范行为在训练(使用每个批次的平均值/var)和测试时间(使用训练阶段的最终运行平均值/var)中的应用不同。 另一方面,实例归一化作为对比度归一化,如本文所述https://arxiv.org/abs/1607.08022。作者提到,输出样式化的图像不应依赖于输入内容图像的对比度,因此实例规范化有助于实现。 但是

  • 在TensorFlow中执行批量规格化的正确方法是什么?(即,我不想计算连续均值和方差)。我当前的实现基于tf。nn。batch\u normalization(批次规格化),其中x是具有形状的卷积层的输出。[批次大小、宽度、高度、通道数]。我想在通道方面执行批处理规范。 但这种实施的结果非常糟糕。与tensorflow比较。承包商。苗条的batch\u norm显示其票价较低(同样糟糕的培训表现

  • 我想使用Batchnormalization来规范化批次维度,但keras中的批次维度自然是无维度的。那我该怎么办呢。 keras示例显示,conv2d的轴为-1,这表示通道尺寸。 轴:整数,应规格化的轴(通常是特征轴)。例如,在具有data\u format=“channels\u first”的Conv2D层之后,在BatchNormalization中设置axis=1。