当前位置: 首页 > 知识库问答 >
问题:

在Keras中,如何在测试期间使用批处理规范化?

濮阳烨然
2023-03-14

我目前正在尝试在Keras中使用批处理规范化实现一个模型。我已经成功地在训练阶段实现了它。

然而,对于测试,在通过网络进行前向传递之前,批次归一化会计算整个群体的统计信息(平均值和方差)(BN平均值和方差是预先计算的,然后保持不变;这与训练阶段相反,在训练阶段,平均值和方差由批次确定)。

我关于Keras的问题是:

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

如果我使用

model.test_on_batch(X_batch, y_batch)

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

共有1个答案

魏襦宗
2023-03-14

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

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

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

要进行双重检查,您可能需要在测试/预测时尝试batch\u size=1,如果Keras无法使用全局统计信息,您可能会看到非常糟糕的结果。

 类似资料:
  • 我已经成功训练了一个超过100000个样本的模型,该模型在训练集和测试集都表现良好。然后,我尝试对一个特定样本(100000个样本中的一个)进行微调,并使用经过训练的权重作为初始化。 但结果有点奇怪,我相信这是由批处理规范化层引起的。具体而言,我的代码可以列出如下: model.load_weights速率=model.evaluate(x, y)打印速率 mymodel是一个自定义函数来生成我的

  • 我了解批次归一化有助于更快的训练,将激活转向单位高斯分布,从而解决梯度消失问题。批次规范行为在训练(使用每个批次的平均值/var)和测试时间(使用训练阶段的最终运行平均值/var)中的应用不同。 另一方面,实例归一化作为对比度归一化,如本文所述https://arxiv.org/abs/1607.08022。作者提到,输出样式化的图像不应依赖于输入内容图像的对比度,因此实例规范化有助于实现。 但是

  • 我今天好像赢不了... 有没有一种方法可以从Spock SpringBootTest集成测试中的关系中读取,而无需将测试注释为或添加不切实际的? 或者,是否有方法从测试用例中启动Spring-Batch作业? 让我详细说明... 我试图为我的Spring Batch reporting流程提供一个简单的Spring Boot Integration测试,该测试从Dangled web of DB2

  • 我试图重用我在另一个Geb规范中编写的一个Geb规范测试,这样我就不需要重写代码了。我总是需要在不同的页面的产品编号,所以我想做类似以下的事情; 在另一个GebSpec中,我希望使用上面的,如下所示:

  • 我想使用Batchnormalization来规范化批次维度,但keras中的批次维度自然是无维度的。那我该怎么办呢。 keras示例显示,conv2d的轴为-1,这表示通道尺寸。 轴:整数,应规格化的轴(通常是特征轴)。例如,在具有data\u format=“channels\u first”的Conv2D层之后,在BatchNormalization中设置axis=1。

  • 问题内容: 我看到imageDataGenerator允许我指定不同样式的数据规范化,例如featurewise_center,samplewise_center等。 从示例中可以看到,如果我指定了这些选项之一,则需要在生成器上调用fit方法,以允许生成器计算统计信息,例如生成器上的均值图像。 我的问题是,如果我在训练期间指定了数据归一化,预测将如何工作?我看不到如何在框架中传递训练集均值/标准差