如何在Keras的测试时间内使用批量标准化?

时间:2017-05-24 20:37:26

标签: tensorflow neural-network batch-processing keras batch-normalization

我目前正在尝试使用Keras中的批量标准化来实现模型。我已经成功地在训练阶段实施了它。

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

关于Keras的问题是:

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

如果我使用

model.test_on_batch(X_batch, y_batch)

如何将批次规范化层传递给X和y的整个总体的均值和方差?有什么方法可以让keras自动处理吗?

1 个答案:

答案 0 :(得分:6)

  

如何将批次规范化层传递给X和y的整个总体的均值和方差?有什么方法可以让keras自动处理吗?

Keras应该这样做(在最近的版本中):

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

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