convnet中池化和规范化层的顺序

时间:2017-02-03 01:10:54

标签: tensorflow conv-neural-network

我正在查看TensorFlow implementation of ORC on CIFAR-10,我注意到在第一个convnet层之后,它们进行了池化,然后进行了规范化,但是在第二层之后,它们进行了规范化,然后进行了池化。

我只是想知道这背后的理由是什么,以及关于何时/为什么我们应该选择在游泳池之前做出规范的任何提示都会受到高度赞赏。谢谢!

2 个答案:

答案 0 :(得分:2)

规范化只是规范化。正常化后,最大值仍然是最大值。

So Normalization-> Pooling或Pooling-> Normaliazaion结果相同。

答案 1 :(得分:2)

应该首先进行池化,然后进行规范化。

问题中的原始代码链接不再起作用,但是我假设所引用的规范化是批处理规范化。但是,主要思想可能也适用于其他规范化。如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]。这意味着我们可以控制输入到下一层的分配,以达到我们希望它们能最好地促进培训的目的。