0
我最近想用批标准化的keras构建原来的文件中提及神经network.As,在批标准化测试和培训再寄一次行为不同检查文档:keras中的BatchNormalization图层如何在测试阶段实现?
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实现批标准化层? 在此先感谢。
在文档中找不到关于培训x测试的任何内容。 Keras将它们隐藏在其源代码中,并且这个想法是:当你调用'fit'和类似器时,keras的行为就像在训练模式中一样。当你评估,预测和其他评估时,它的行为就像不在训练中一样。如果你想为BatchNormalization图层找到这些差异,你将不得不检查它的源代码。我想这里有一些关于它的事情。但我不会假装我理解得很好: https://github.com/fchollet/keras/blob/master/keras/layers/normalization.py#L170 –
@DanielMöller,谢谢你的解释。我只是非常好奇keras中的批量规范化API,因为我曾经是一个tensorflow程序员。我想你可以重写你的答案,以便我可以接受。 – Schaffer