我在看TensorFlow implementation of ORC on CIFAR-10,我注意到在第一个convnet层之后,它们进行池化,然后标准化,但在第二层之后,它们进行标准化,然后池化。
我只是想知道这背后的理由是什么,以及关于我们何时/为什么应该在池之前选择规范的任何提示都将不胜感激。谢谢!
发布于 2020-07-22 03:04:04
它应该首先是池化,其次是规范化。
问题中的原始代码链接不再起作用,但我假设所指的规范化是批规范化。不过,主要思想可能也适用于其他标准化。正如the paper introducing batch normalization中的批处理标准化作者所指出的,主要目的之一是“规格化层输入”。这个想法的简化版本是:如果每一层的输入具有良好、可靠的值分布,则网络可以更容易地进行训练。将标准化放在第二位允许这种情况发生。
作为一个具体的例子,我们可以考虑激活[0, 99, 99, 100]。为了简单起见,将使用0-1归一化。将使用内核2的最大池化。如果这些值首先被标准化,我们得到的是[0, 0.99, 0.99, 1]。然后,池化就会产生[0.99, 1]。这不会为下一层提供良好的输入分布。如果我们先使用池,就会得到[99, 100]。然后归一化得到[0, 1]。这意味着我们可以控制输入到下一层的分布,使其成为我们想要的,以最好地促进培训。
发布于 2018-02-07 16:37:50
标准化就是标准化。归一化后,最大值仍然是所有值中的最大值。
因此标准化->池化或池化->Normaliazaion的结果是相同的。
https://stackoverflow.com/questions/42015156
复制相似问题