Chi*_*yen 5 conv-neural-network tensorflow
我正在查看CIFAR-10 上 ORC 的 TensorFlow 实现,我注意到在第一个 convnet 层之后,它们进行池化,然后是标准化,但是在第二层之后,它们进行标准化,然后是池化。
我只是想知道这背后的基本原理是什么,以及关于何时/为什么我们应该选择在池之前做规范的任何提示将不胜感激。谢谢!
gol*_*enk 14
应该首先进行池化,然后进行标准化。
问题中的原始代码链接不再有效,但我假设所指的标准化是批量标准化。不过,主要思想可能也适用于其他标准化。正如批量归一化作者在介绍批量归一化的论文中所指出的,主要目的之一是“归一化层输入”。这个想法的简化版本是:如果每一层的输入都有一个良好、可靠的值分布,那么网络可以更容易地训练。将标准化放在第二位可以实现这种情况。
作为一个具体的例子,我们可以考虑激活[0, 99, 99, 100]。为了简单起见,将使用 0-1 标准化。将使用内核 2 的最大池化。如果首先对这些值进行归一化,我们会得到[0, 0.99, 0.99, 1]。然后汇集给出[0.99, 1]. 这不会为下一层提供良好的输入分布。如果我们先池化,我们会得到[99, 100]。然后归一化给出[0, 1]. 这意味着我们可以控制下一层的输入分布,以达到我们想要的效果,从而最好地促进训练。
标准化只是标准化。归一化后,最大值仍然是所有值中的最大值。
所以归一化->池化或池化->归一化结果是相同的。
| 归档时间: |
|
| 查看次数: |
3508 次 |
| 最近记录: |