1

Quora 上的帖子中,有人说:

在测试时,该层应该一次只能看到一个测试数据点,因此计算整个批次的均值/方差是不可行的(并且是作弊)。

但是只要在训练过程中网络没有看到测试数据,使用几张测试图像不就可以了吗?

我的意思是,我们的网络已经被训练来使用批次进行预测,那么给它分配批次有什么问题呢?

如果有人可以解释我们的网络从不应该拥有的批次中获得了哪些信息,那就太好了:)

谢谢

4

2 回答 2

3

但是只要在训练期间网络没有看到测试数据,使用几张测试图像就可以了吗?

首先,使用批次进行测试是可以的。其次,在测试模式下,batchnorm 不计算测试批次的均值或方差。它采用已经拥有的均值和方差(我们称它们为musigma**2),这些均值和方差仅根据训练数据计算得出。测试模式下批范数的结果是所有张量都归x一化为(x - mu) / sigma.

在测试时,该层应该一次只能看到一个测试数据点,因此计算整个批次的均值/方差是不可行的(并且是作弊)

我只是浏览了 Quora 的讨论,可能这句话有不同的上下文。但就其本身而言,这是错误的。无论批次是什么,所有张量都将经历相同的转换,因为musigma在测试期间不会改变,就像所有其他变量一样。所以那里没有作弊。

于 2017-09-21T17:17:12.393 回答
-1

声明很简单,你训练你的模型,所以它对某些任务很有用。在分类中,任务通常是 - 你得到一个数据点并输出类,没有批次。当然,在一些实际应用中,您可以批量处理(比如来自同一用户的许多图像等)。就是这样 - 它依赖于应用程序,所以如果你想对学习模型提出“一般”的要求,你不能假设在测试期间可以访问批次,仅此而已。

于 2017-07-13T22:46:13.370 回答