在post on Quora中,有人说:
在测试时,该层应该只能看到一个测试数据点 一段时间,因此计算整批的均值/方差 不可行(并且是作弊)。
但只要在培训期间网络没有看到测试数据就不能使用多个测试图像吗?
我的意思是,我们的网络一直在使用批次进行预测,那么批量生产有什么问题呢?
如果有人能够解释我们的网络从批次中获得的信息,那么它就不会让人感觉很棒:)
谢谢
答案 0 :(得分:1)
但只要在培训期间网络没有看到测试数据就不能使用多个测试图像吗?
首先,可以使用批次进行测试。其次,在测试模式下,batchnorm
无法计算测试批次的均值或方差。它需要它已经具有的均值和方差(让我们称之为mu
和sigma**2
),它们仅基于训练数据计算。测试模式中批量规范的结果是所有张量x
都标准化为(x - mu) / sigma
。
在测试时,该层应该一次只能看到一个测试数据点,因此计算整批的均值/方差是不可行的(并且是作弊)
我刚刚通过Quora讨论,可能是这个引用有不同的背景。但就其自身而言,它只是错误的。无论批处理是什么,所有张量都将经历相同的转换,因为mu
和sigma
在测试期间不会像所有其他变量一样被更改。所以那里没有作弊。
答案 1 :(得分:-1)
声明很简单,你训练你的模型,这对某些任务很有用。在分类中,任务通常是 - 你得到数据点并输出类,没有批处理。当然,在某些实际应用中,您可以批量生产(例如来自同一用户的许多图像等)。所以就是这样 - 它依赖于依赖于应用程序,所以如果你想要对学习模型提出“一般”的说法,你不能假设在测试时间内可以访问批次,这就是全部。< / p>