网络运算量计算 - yubo105139/paper GitHub Wiki
概念
- FLOPs
- (Floating-point operations per second,每秒执行的浮点运算数;
- MAC
- 先乘后加,multipy-accumulate operations;
- 1个MAC包含两个FLOP,一次乘法,一次加法;
- 在很多的硬件设施中(比如显卡),一个MACC就可以称作一个运算单位了,而不是将加法和乘法分开,因为硬件已经对其进行了大量的优化;
各个层的计算
- 全连接层
- 当输入为I,输出为O时,参数量为$I\times O$,计算量为$I\times O$个MAC,$(2I-1)\times O$个Flops;
- 激活函数
-
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。
- 上式包含了一个加法、一个减法、一个除法和一个取幂运算,我们将这些运算都归结为一个单独的FLOP(还有乘法、求根号等)。因此一个sigmoid的运算量为4个FLOPs。假如输入时n那个计算量为
-
卷积层
- 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的大小;
- $
-
BN层
- 表达式
-
z=\gamma *(y-mean)/ \sqrt{variance+\epsilon} + \beta
- 对于每个通道来讲,需要的参数为4个,即$
\gamma、\beta、mean、variance
$,C个通道,需要4C个参数; - 在inference推理时,可以将BN层合并到卷积层中(合并方法),以加快运算速度;
- 对于每个通道来讲,需要的参数为4个,即$