为什么keras Batchnorm中只有一个动量参数?

Why is there just one momentum parameter in keras Batchnorm?

我是 CNN 的新手,正在使用 keras 在 CNN 中实现 Batchnorm。 Batch norm 层有 4*Feature_map(of prev layer) 个参数。其中如下:

  1. 2 是 gamma 和 beta
  2. 另外2个是mini-batches的均值和方差的指数移动平均数

现在,均值和方差的指数移动平均定义为:

 running_mean = momentum * running_mean + (1 - momentum) * sample_mean
 running_var = momentum * running_var + (1 - momentum) * sample_var

在keras的BatchNormalization函数中,我看到只有一个超参数叫做动量。

BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True, beta_initializer='zeros', gamma_initializer='ones', moving_mean_initializer='zeros', moving_variance_initializer='ones', beta_regularizer=None, gamma_regularizer=None, beta_constraint=None, gamma_constraint=None, **kwargs)

我的问题是为什么 运行 均值和 运行 方差没有单独的动量超参数?

均值和 STD 的指数移动平均数是这些框架在后台处理的内容。此外,这些不是可学习的参数(运行 均值和 STD),因此它们不可训练,我猜想用于计算这两个值的动量(均值和方差的指数移动平均值)是与在 batchNorm 层中确定的相同。正如我所说,运行 均值和 STD 是不可学习的,因此毫无疑问需要不同的超参数来调整它们的值。

您还可以查看这些主题以获得更多见解-