12

我目前正在尝试在 Keras 中使用 Batch Normalization 来实现模型。我已经成功地在培训阶段实施了它。

但是,对于测试,Batch Normalization 在进行网络前向传递之前计算整个总体的统计数据(均值和方差)(预先计算 BN 均值和方差,然后保持静态;这与训练相反阶段,其中均值和方差由批次确定)。

我关于 Keras 的问题是:

假设 (X, y) 是整个人口。假设 (X_batch, y_batch) 是一个批次(整个种群的一个子集)

如果我使用

model.test_on_batch(X_batch, y_batch)

如何将 X 和 y 的整个总体的均值和方差传递给批量归一化层?有什么办法可以让 keras 自动处理这个问题?

4

1 回答 1

9

如何将 X 和 y 的整个总体的均值和方差传递给批量归一化层?有什么办法可以让 keras 自动处理这个问题?

Keras 应该这样做(在足够新的版本中):

https://github.com/fchollet/keras/issues/81

要仔细检查,您可能想batch_size=1在测试/预测时尝试,如果 Keras 无法使用全局统计信息,您可能会看到非常糟糕的结果。

于 2017-05-24T23:24:02.063 回答