【发布时间】:2019-11-13 12:45:23
【问题描述】:
我正在使用批量大小为 10 的批量标准化进行面部检测,我想知道删除批量规范层或保留它们是否更好。 如果删除它们更好,我可以使用什么来代替?
【问题讨论】:
标签: machine-learning computer-vision pytorch
我正在使用批量大小为 10 的批量标准化进行面部检测,我想知道删除批量规范层或保留它们是否更好。 如果删除它们更好,我可以使用什么来代替?
【问题讨论】:
标签: machine-learning computer-vision pytorch
这个问题取决于几件事,首先是你的神经网络的深度。当有很多隐藏层时,批量标准化对于增加数据的训练很有用。它可以减少训练模型和 hep 规范数据所需的 epoch 数。通过标准化网络的输入,您可以降低追逐“移动目标”的风险,这意味着您的学习算法并没有达到应有的最佳性能。
如果您有深度神经网络,我的建议是在您的代码中包含批量标准化层。提醒一下,您可能还应该在您的图层中包含一些 Dropout。
如果这有帮助,请告诉我!
【讨论】:
是的,它适用于较小的尺寸,即使您设置的最小尺寸也适用。
诀窍是 bach 大小也增加了正则化效果,而不仅仅是批量范数。 我给你看几张照片:
我们在同一尺度上跟踪 bach 损失。左侧是没有批规范层的模块(黑色),右侧是具有批规范层的模块。
请注意,即使对于 bs=10,正则化效果也很明显。
当我们设置bs=64 时,批量损失正则化非常明显。请注意,y 的比例始终为 [0, 4]。
我的考试纯粹是在 nn.BatchNorm1d(10, affine=False) 上,没有可学习的参数 gamma 和 beta 即 w 和 b。
这就是为什么当批量大小较小时,使用 BatchNorm 层是有意义的。
【讨论】: