【问题标题】:How to set weights of the batch normalization layer?如何设置批量标准化层的权重?
【发布时间】:2017-03-14 18:27:35
【问题描述】:

如何设置 Keras 的批量归一化层的权重?

我对文档有点困惑

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

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

【问题讨论】:

    标签: keras batch-normalization


    【解决方案1】:

    是的,您需要所有四个值。回想一下批量标准化的作用。它的目标是对进入每一层的输入进行归一化(即均值 = 0 和标准差 = 1)。为此,您需要(mean, std)。因此,归一化的激活可以看作是进行线性变换的子网络的输入:

    y = gamma*x_norm + beta
    

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

    编辑:

    另一方面,我认为值得尝试首先计算大量图像的均值和标准差,并将输入作为您的均值和标准差。请注意,您正在计算的图像均值和标准值来自与训练数据相同的分布。我认为这应该起作用,因为批量标准化通常有两种计算平均值的模式,一种是在批次上保持运行平均值,另一种是全局平均值(至少在 Caffe 中,请参阅here)。

    【讨论】:

    • 谢谢,但我的问题更具体到 keras 批量标准化层,我只通过标签指出了这一点。发现我可以使用K.set_value 来实现这一点。
    • @Prasanna 你能告诉我你做了什么吗? K 是什么?我正在尝试分别设置 gamma、beta、running_mean 和 running_variance 的值。
    • @Chhaganlaal K 是 Keras 后端。我认为是from keras import backend as K
    猜你喜欢
    • 2020-01-15
    • 2020-02-03
    • 2017-06-08
    • 2016-11-14
    • 1970-01-01
    • 2018-04-09
    • 2017-10-21
    • 1970-01-01
    • 2017-03-03
    相关资源
    最近更新 更多