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



如何计算CNN中batch normalization的计算复杂度(FLOPs)? 第1页

  

user avatar   quarrying 网友的相关建议: 
      

下面分析在推理 (或者说测试) 时 BN 层的计算量:

设 是BN层的输入, 其尺寸为 ; 是BN层的moving mean, 是BN层的moving variance, 是BN层的scale, 是BN层的shift, 它们的尺寸均为 . 为了简化推导, 设 , 并令 , , , , , . 则BN层的输出的第k个通道为:

, 式中 是全1矩阵(而不是单位矩阵), 是一个很小的正数, 防止除零的发生.

令 , 则 . 由于 都是已知的, 和 可以预先计算 (NCNN中就是这样做的[1]), 在推理时不会占用额外的计算时间, 于是 的计算量只有 次乘法运算和 次加法运算, 对于C个通道计算量则有 次乘法运算和 次加法运算. 这个计算量相对于一般卷积层的计算量是很小的. 对于一般卷积则需要 次乘法运算, 次加法运算(有偏置项) 或 次加法运算(无偏置项), 这些符号可以顾名思义, 这里就不赘述了, 详细的推导可以参考[2].

另外如果网络采用Conv-BN-ReLU的设置, 则BN的参数还可以折叠 (fold) 到前面的卷积层的参数中, 这时BN的计算被包含到卷积的计算中了.

参考

  1. ^ https://github.com/Tencent/ncnn/blob/c61a60bfc67fcc5d8cdce20ad2ab65ba19f2b6c8/src/layer/batchnorm.cpp#L36
  2. ^ https://zhuanlan.zhihu.com/p/137719986



  

相关话题

  如何看待 Google 围棋 AI AlphaGo 击败欧洲围棋冠军? 
  如何理解 Graph Convolutional Network(GCN)? 
  计算机视觉中,目前有哪些经典的目标跟踪算法? 
  为什么学习深度学习感觉无法入门? 
  如何看待李沐老师提出的「用随机梯度下降来优化人生」? 
  如何评价「Patches are all you need」? 
  人工「神经网络」技术在信息处理上有何特点,工作原理是什么? 
  人工智能领域有哪些精妙的数学原理? 
  为什么 larger batch size 对对比学习的影响比对监督学习的影响要大? 
  为何感觉“知识蒸馏”这几年没有什么成果? 

前一个讨论
CPU和GPU跑深度学习差别有多大?
下一个讨论
2020年CVPR有哪些优秀的论文?





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