我正在使用批量归一化,批量大小为10的人脸检测,我想知道是删除批量归一化层还是保留它们更好。如果删除它们更好,我可以使用什么来代替呢?
发布于 2019-07-05 18:56:34
是的,它适用于较小的尺寸,即使是您设置的最小尺寸也可以使用。
诀窍是bach大小也增加了正则化效果,而不仅仅是批处理范数。我给你看几张照片:

我们在追踪巴赫损失的情况是一样的。左边是没有批量规范层(黑色)的模块,右边是有批量规范层的模块。请注意,即使对于bs=10,正则化效果也是显而易见的。

当我们设置bs=64时,批量损失正则化是超级明显的。注意:y scale始终为[0, 4]。
我的考试纯粹是在nn.BatchNorm1d(10, affine=False)上进行的,没有可学习的参数gamma和beta,即w和b。
这就是为什么当您的批处理大小较低时,使用BatchNorm层是有意义的。
发布于 2019-07-03 12:08:25
这个问题取决于几件事,首先是你的神经网络的深度。当存在大量隐藏层时,批量归一化对于增加数据的训练非常有用。它可以减少训练模型和调整数据所需的纪元数。通过标准化输入到你的网络,你减少了追逐“移动目标”的风险,这意味着你的学习算法的表现并不是最好的。
我的建议是,如果您有一个深度神经网络,那么应该在您的代码中包含批处理归一化层。提醒一下,你可能也应该在图层中加入一些Dropout。
如果这有帮助,请告诉我!
https://stackoverflow.com/questions/56859748
复制相似问题