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




  

相关话题

  如何评价 7 月 31 日一流科技开源的深度学习框架 OneFlow? 
  如何看待谷歌研究人员提出的卷积正则化方法「DropBlock」? 
  能否使用区块链的算力来解决深度学习训练? 
  深度学习和强化学习之间的差别有多大? 
  pytorch 分布式计算 你们都遇到过哪些 坑/bug? 
  在做算法工程师的道路上,你掌握了什么概念或技术使你感觉自我提升突飞猛进? 
  如何评价 DeepMind 在星际中的失利,以及 OpenAI 在 Dota 上的成功? 
  AI 有可能代替人类从事数学研究吗? 
  机器学习自嘲的炼丹和化学材料自嘲的炒菜有什么本质上的区别? 
  如何看待KDD'21的文章,异质图神经网络的效果不如简单的GCN、GAT? 

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





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