百科问答小站 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。




  

相关话题

  anchor-free存在什么缺点? 
  能否使用神经网络来判断奇偶数? 
  为什么现在很多人不看好商汤科技? 
  强化学习和自适应控制的关系是什么? 
  如何理解 Graph Convolutional Network(GCN)? 
  GAN(对抗生成网络)可以被用于哪些(商业或潜在商业)实际问题? 
  吴恩达为什么离开谷歌? 
  如何评价沐神他们写的《动手学深度学习》这本书? 
  请问应该怎样去学习图像识别和深度学习? 
  人工智能的意义和价值是什么? 

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





© 2024-11-23 - tinynew.org. All Rights Reserved.
© 2024-11-23 - tinynew.org. 保留所有权利