如何设置批量标准化层的权重?

时间:2017-03-14 18:27:36

标签: keras batch-normalization

如何设置Keras批量标准化层的权重?

我对文档感到有点困惑

权重:初始化权重。 2个Numpy数组的列表,形状:[(input_shape,),(input_shape,)]请注意,此列表的顺序为[gamma,beta,mean,std]

我们需要全部四个[gamma,beta,mean,std]吗?有没有办法只使用[gamma,beta]设置权重?

1 个答案:

答案 0 :(得分:3)

是的,您需要所有四个值。重新收集批量标准化的作用。其目标是使进入每层的标准化(即平均值= 0和标准偏差= 1)输入。为此,您需要(mean, std)。因此,归一化激活可以被视为进行线性变换的子网络的输入:

y = gamma*x_norm + beta

(gamma, beta)非常重要,因为它们补充了(mean,std),因为(gamma, beta)有助于从规范化的激活中恢复原始激活。如果您不这样做或更改任何一个参数而不考虑其他参数,您可能会更改激活的语义含义。现在可以使用下一层处理这些原始激活。对所有图层重复此过程。

修改

另一方面,我认为值得尝试首先计算大量图像的均值和标准,并将输入作为你的平均值和标准输入。请注意您正在计算的图像的含义和标准,与您的训练数据的分布相同。我认为这应该有效,因为批量标准化通常有两种计算均值模式,一种是批量维护的平均值,另一种是全局均值(至少在Caffe中,见here)。