我如何在 Keras 的测试期间使用批量归一化?
How do I use Batch Normalization during test time in Keras?
我目前正尝试在 Keras 中使用批量归一化来实现一个模型。我已经在培训阶段成功实施了它。
然而,对于测试,批量归一化在通过网络进行前向传递之前计算整个种群的统计量(均值和方差)(BN 均值和方差是预先计算的,然后保持静态;这是与训练阶段相反,训练阶段的均值和方差由批次决定)。
我关于 Keras 的问题是:
假设 (X, y) 是整个人口。
假设 (X_batch, y_batch) 是一个批次(整个群体的一个子集)
如果我使用
model.test_on_batch(X_batch, y_batch)
我如何将 X 和 y 的整个总体的均值和方差传递给批归一化层?有什么方法可以让 keras 自动处理这个问题吗?
how can I pass on to the batch-normalization layer the mean and variance of the entire population for X and y? Is there any way I can let keras handle this automatically?
Keras 应该这样做(在足够新的版本中):
https://github.com/fchollet/keras/issues/81
要仔细检查,您可能想在 test/prediction 次尝试 batch_size=1
,如果 Keras 无法使用全局统计信息,您可能会看到非常糟糕的结果。
我目前正尝试在 Keras 中使用批量归一化来实现一个模型。我已经在培训阶段成功实施了它。
然而,对于测试,批量归一化在通过网络进行前向传递之前计算整个种群的统计量(均值和方差)(BN 均值和方差是预先计算的,然后保持静态;这是与训练阶段相反,训练阶段的均值和方差由批次决定)。
我关于 Keras 的问题是:
假设 (X, y) 是整个人口。 假设 (X_batch, y_batch) 是一个批次(整个群体的一个子集)
如果我使用
model.test_on_batch(X_batch, y_batch)
我如何将 X 和 y 的整个总体的均值和方差传递给批归一化层?有什么方法可以让 keras 自动处理这个问题吗?
how can I pass on to the batch-normalization layer the mean and variance of the entire population for X and y? Is there any way I can let keras handle this automatically?
Keras 应该这样做(在足够新的版本中):
https://github.com/fchollet/keras/issues/81
要仔细检查,您可能想在 test/prediction 次尝试 batch_size=1
,如果 Keras 无法使用全局统计信息,您可能会看到非常糟糕的结果。