keras中的BatchNormalization层在测试阶段是如何实现的?
How is BatchNormalization layer in keras implemented in test phase?
我最近想在 keras 中使用 batch normalization 来构造一个神经网络 network.As 原论文提到,batch normalization 在测试和训练中表现不同 time.I 查看文档:
keras.layers.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)
我没有看到任何参数来判断它是在训练阶段还是测试阶段,这与 tensorflow 的实现不同:
batch_norm(
inputs,
decay=0.999,
center=True,
scale=False,
epsilon=0.001,
activation_fn=None,
param_initializers=None,
param_regularizers=None,
updates_collections=tf.GraphKeys.UPDATE_OPS,
is_training=True,
reuse=None,
variables_collections=None,
outputs_collections=None,
trainable=True,
batch_weights=None,
fused=False,
data_format=DATA_FORMAT_NHWC,
zero_debias_moving_mean=False,
scope=None,
renorm=False,
renorm_clipping=None,
renorm_decay=0.99
)
我想知道测试阶段的keras是如何实现batch normalization层的?
提前致谢。
您不会在文档中找到任何关于训练 x 测试的信息。
Keras 在其源代码中隐藏了这些,想法是:
- 当您在模型中调用
fit
和类似函数时,keras 的行为就像在训练模式下一样;
- 当您调用
evaluate
、predict
和其他函数时,它的行为就像不在训练中一样。
如果你想找到 BatchNormalization
层的这些差异,你将不得不检查它的源代码。
我猜这里有些东西。但我不会假装我很理解它:https://github.com/fchollet/keras/blob/master/keras/layers/normalization.py#L170
我最近想在 keras 中使用 batch normalization 来构造一个神经网络 network.As 原论文提到,batch normalization 在测试和训练中表现不同 time.I 查看文档:
keras.layers.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)
我没有看到任何参数来判断它是在训练阶段还是测试阶段,这与 tensorflow 的实现不同:
batch_norm(
inputs,
decay=0.999,
center=True,
scale=False,
epsilon=0.001,
activation_fn=None,
param_initializers=None,
param_regularizers=None,
updates_collections=tf.GraphKeys.UPDATE_OPS,
is_training=True,
reuse=None,
variables_collections=None,
outputs_collections=None,
trainable=True,
batch_weights=None,
fused=False,
data_format=DATA_FORMAT_NHWC,
zero_debias_moving_mean=False,
scope=None,
renorm=False,
renorm_clipping=None,
renorm_decay=0.99
)
我想知道测试阶段的keras是如何实现batch normalization层的? 提前致谢。
您不会在文档中找到任何关于训练 x 测试的信息。
Keras 在其源代码中隐藏了这些,想法是:
- 当您在模型中调用
fit
和类似函数时,keras 的行为就像在训练模式下一样; - 当您调用
evaluate
、predict
和其他函数时,它的行为就像不在训练中一样。
如果你想找到 BatchNormalization
层的这些差异,你将不得不检查它的源代码。
我猜这里有些东西。但我不会假装我很理解它:https://github.com/fchollet/keras/blob/master/keras/layers/normalization.py#L170