Keras 2 API文档 / 层API / 归一化层 / GroupNormalization 层

GroupNormalization 层

[源代码]

GroupNormalization

tf_keras.layers.GroupNormalization(
    groups=32,
    axis=-1,
    epsilon=0.001,
    center=True,
    scale=True,
    beta_initializer="zeros",
    gamma_initializer="ones",
    beta_regularizer=None,
    gamma_regularizer=None,
    beta_constraint=None,
    gamma_constraint=None,
    **kwargs
)

Group normalization 层。

Group Normalization 将通道划分为组,并在每个组内计算均值和方差进行归一化。经验表明,在一定范围内的小批量大小下,其准确率比 Batch Normalization 更稳定,前提是学习率与批量大小成线性比例调整。

与 Layer Normalization 的关系:如果组的数量设置为 1,则此操作几乎与 Layer Normalization 相同(有关详细信息,请参阅 Layer Normalization 文档)。

与 Instance Normalization 的关系:如果组的数量设置为输入维度(组的数量等于通道的数量),则此操作与 Instance Normalization 相同。

参数

  • groups: 整数,Group Normalization 的组数。取值范围为 [1, N],其中 N 为输入维度。输入维度必须能被组数整除。默认为 32
  • axis: 整数或列表/元组。用于归一化的轴或轴。通常,这是特征轴/轴。遗漏的轴通常是批次轴/轴。-1 是输入的最后一个维度。默认为 -1
  • epsilon: 添加到方差中的一个小浮点数,以避免除以零。默认为 1e-3
  • center:如果为 True,则将 beta 的偏移量添加到归一化张量。如果为 False,则忽略 beta。默认为 True
  • scale: 如果为 True,则乘以 gamma。如果为 False,则不使用 gamma。当下一层是线性的(例如 nn.relu)时,可以禁用此选项,因为缩放将由下一层完成。默认为 True
  • beta_initializer:beta 权重的初始化器。默认为零。
  • gamma_initializer:gamma 权重的初始化器。默认为一。
  • beta_regularizer:beta 权重的可选正则化器。默认为 None。
  • gamma_regularizer:gamma 权重的可选正则化器。默认为 None。
  • beta_constraint:beta 权重的可选约束。默认为 None。
  • gamma_constraint: gamma 权重的可选约束。默认为 None。 # 输入形状 任意。当将此层用作模型中的第一层时,请使用关键字参数 input_shape(整数元组,不包括样本轴)。 # 输出形状 与输入形状相同。

调用参数

  • inputs:输入张量(任何秩)。
  • mask: mask 参数是一个张量,用于指示在计算均值和方差时输入张量中每个位置的权重。

参考: - Yuxin Wu & Kaiming He, 2018