【问题标题】:batch size without batch normalization没有批量标准化的批量大小
【发布时间】:2022-01-04 13:44:01
【问题描述】:
我正在以 EDSR 作为基准模型来处理图像超分辨率任务。在 EDSR 之后,我没有在我的模型中使用任何批处理规范层。我突然想到了一个关于批量大小的愚蠢问题。
目前,我正在使用 batch-size=32 训练我的模型(如在 EDSR 中)。但由于我没有使用任何批量标准化技术,我看不出有任何理由使用大于 1 的批量大小。但我对自己的想法没有信心,因为作者的实现正在使用批量大小大于 1。
有人可以帮我解决这个问题吗?我错过了什么?
【问题讨论】:
标签:
deep-learning
pytorch
batch-normalization
batchsize
batchnorm
【解决方案1】:
在 FAIR 进行的Rethinking “Batch” in BatchNorm 研究中,讨论了批量标准化和批量大小。根据下图,您可以看到批量标准化和批量大小的关系。它表明,当您使用较小的批量大小时,您不需要使用批量标准化。当您有更大的批量大小时,批量标准化很有帮助。使用较小的批大小和批标准化会导致训练/测试不一致。
不同归一化批次下的分类误差
大小,固定总批大小为 1024。绿色:错误率开启
使用小批量统计的未增强训练集; 红色:错误
使用 PreciseBN 估计的人口统计数据在验证集上的比率; 蓝色:验证集的错误率使用随机批次的小批量统计数据(具有相同的标准化批量大小
用于训练)。红色和蓝色曲线之间的差距是造成
train-test inconsistency,而蓝色和绿色之间的差距
曲线是未见数据集上的泛化差距。