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




  

相关话题

  如何看待鄂维南院士等发起的机器学习联合研讨计划(c2sml.cn)? 
  测试集在构造的时候需要人为控制其中应该正确的和应该错误的数据比例吗? 
  如何评价移动端吊打一切万众期待的商汤深度学习推理框架PPL开源了却没有支持移动端? 
  如何评价Kaiming He的Momentum Contrast for Unsupervised? 
  究竟什么是损失函数 loss function? 
  为什么谈论深度学习工具时,很少有人讨论matlab的神经网络工具包? 
  如何看待Capsule Network在NLP领域的潜力? 
  算法工程师是否应该持续读论文? 
  DeepMind 研发的围棋 AI AlphaGo 是如何下棋的? 
  迁移学习入门,新手该如何下手? 

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





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