批量标准化:按尺寸固定样品或不同样品?

时间:2017-09-30 08:38:27

标签: multidimensional-array machine-learning deep-learning data-science batch-normalization

当我读到一篇论文“批量规范化:通过减少内部协变量转换来加速深度网络培训”时,我遇到了一些问题。

在论文中,它说:

  

由于来自训练数据的m个例子可以估计平均值和方差   所有培训数据,我们使用小批量培训批量标准化   参数。

我的问题是:

他们是选择m个示例然后同时拟合批量规范参数,还是为每个输入维度选择不同的m个示例集?

E.g。训练集由x(i) = (x1,x2,...,xn):n维组成 对于固定批次M = {x(1),x(2),...,x(N)},请执行所有gamma1~gammanbeta1~betan

VS

对于gamma_ibeta_i选择不同的批次M_i = {x(1)_i,...,x(m)_i}

1 个答案:

答案 0 :(得分:1)

我还没有在交叉验证和数据科学上找到这个问题,所以我只能在这里回答。如有必要,请随意迁移。

使用移动平均线计算每个小批量中的所有维度的均值和方差。以下是TF代码中的样子:

mean, variance = tf.nn.moments(incoming, axis)
update_moving_mean = moving_averages.assign_moving_average(moving_mean, mean, decay)
update_moving_variance = moving_averages.assign_moving_average(moving_variance, variance, decay)
with tf.control_dependencies([update_moving_mean, update_moving_variance]):
  return tf.identity(mean), tf.identity(variance)

你不应该担心技术细节,这里有什么:

  • 首先,沿批处理轴计算整批mean的{​​{1}}和variance。它们都是矢量(更确切地说是张量)。
  • 然后通过incoming调用更新当前值moving_meanmoving_variance,这基本上可以计算:assign_moving_average

每次执行batchnorm时,它都知道一个当前批次以及之前批次的一些统计信息。