网络运算量计算 - yubo105139/paper GitHub Wiki

TOC

概念

  1. FLOPs
  • (Floating-point operations per second,每秒执行的浮点运算数;
  1. MAC
  • 先乘后加,multipy-accumulate operations;
  • 1个MAC包含两个FLOP,一次乘法,一次加法;
  • 在很多的硬件设施中(比如显卡),一个MACC就可以称作一个运算单位了,而不是将加法和乘法分开,因为硬件已经对其进行了大量的优化;

各个层的计算

  1. 全连接层
  • 当输入为I,输出为O时,参数量为$I\times O$,计算量为$I\times O$个MAC,$(2I-1)\times O$个Flops;
  1. 激活函数
  • RELU

    • 表达式
  • y=max(x,0)
    
    • 上式中$x$为输入,假设$x$有$n$个值,则计算量为n个FLOPs
  • sigmoid

    • 表达式
  • y = 1/(1+exp(-x))
    
    • 上式包含了一个加法、一个减法、一个除法和一个取幂运算,我们将这些运算都归结为一个单独的FLOP(还有乘法、求根号等)。因此一个sigmoid的运算量为4个FLOPs。假如输入时n那个计算量为4 x n个FLOPs。
  1. 卷积层

    • MAC数
  • K\times K \times C_{in} \times H_{out} \times W_{out} \times C_{out}
    
    • $K\times K$表示卷积核大小;
    • $C_{in}$表示输入feature map的通道数;
    • $C_{out}$表示输出feature map的通道数;
    • $H_{out} \times W_{out}$表示输出Feature map的大小;
  1. BN层

    • 表达式
  • z=\gamma *(y-mean)/ \sqrt{variance+\epsilon} + \beta
    
    • 对于每个通道来讲,需要的参数为4个,即$\gamma、\beta、mean、variance$,C个通道,需要4C个参数;
    • 在inference推理时,可以将BN层合并到卷积层中(合并方法),以加快运算速度;