百科问答小站 logo
百科问答小站 font logo



batchsize=1时可以用BN吗? 第1页

  

user avatar   jiang-xue-feng-28-14 网友的相关建议: 
      

个人认为,题主设置Batchsize=1可能是受限于计算资源只能设置Batchsize=1进行训练,或计算资源够,可以用大一点的Batchsize训练,但算法流程或者实例推理inference中有必须设置batchsize=1进行forward的需求,但往往Batchnorm层会写到模型中,大Batchsize训练时当然没问题,但带有BatchNorm进行单例forward的时候会出现error的情况。

前者就不建议使用BN了,没有什么用处(原因在后面),这里补充一下后者的处理方法,即BatchNorm(BN)怎样解决训练和推理时batch size不同的问题?

BatchNorm是在每个minibatch的维度上计算每个相同通道上的均值和方差,调整模型的一层输出时的分布,让模型在经过forward和backward优化时,取得更平滑一些的解。通常情况下,训练阶段的batchsize会设置较大,而有些时候进行推理inference时或者根据算法需要,batchsize会被我们考虑设置为1。这样的话,不同的minibatch训练得到不同的标准化,均值和方差这样的统计参数,而推理时只有一个样本,在只有1个向量的数据组上进行标准化后,成了一个全0向量,导致模型出现BUG。为了解决这个问题,不改变训练时的BatchNorm计算方式,仅仅改变推理时计算均值和方差方法,一种方法是如果在用于训练的数据集和要用于推理的数据集分布基本上差不多的时候,可以用训练集来近似对总体均值μ和总体标准差σ的估计。也可以考虑在batchsize=1的时候,进行推理时记得把model.eval()设置上,model.eval()时,网络模型中不启用 BatchNormalization 和 Dropout。




  

相关话题

  如何看待Hinton的论文《Dynamic Routing Between Capsules》? 
  有哪些令你印象深刻的魔改transformer? 
  如何理解 natural gradient descent? 
  有哪些关于机器学习的真相还鲜为人知? 
  如何看待Geoffrey Hinton的言论,深度学习要另起炉灶,彻底抛弃反向传播? 
  在做算法工程师的道路上,你掌握了什么概念或技术使你感觉自我提升突飞猛进? 
  能否对卷积神经网络工作原理做一个直观的解释? 
  如何评价 MSRA 最新的 Deformable Convolutional Networks? 
  硕士方向,选择迁移学习还是自然语言处理? 
  LSTM如何来避免梯度弥散和梯度爆炸? 

前一个讨论
如何评价斗鱼主播 yyf 举办的高校杯 dota2 比赛?
下一个讨论
如何看待中国企业“霸榜”全球隐私技术专利排行榜,目前国内的隐私计算做的怎么样?





© 2025-04-27 - tinynew.org. All Rights Reserved.
© 2025-04-27 - tinynew.org. 保留所有权利