Skip to content

Latest commit

 

History

History
53 lines (48 loc) · 2.14 KB

CNN中模型的参数量和FLOPs计算.md

File metadata and controls

53 lines (48 loc) · 2.14 KB

卷积神经网络通常包含卷积层、池化层、正则层、激活层和上下采样层。这里我们逐步计算每一个层所需的参数量和FLOPs。

其中,FLOPs和FLOPS的区别:FLOPS是处理器性能的衡量指标,是“每秒所执行的浮点运算次数”的缩写,而FLOPs是算法复杂度的衡量指标,是“浮点运算次数”的缩写,s代表的是复数。
参数量与FLOPs分别可以反映模型的空间复杂度和时间复杂度。 $参数量\approx计算量 \times H_{out} \times W_{out}$
以下计算默认都有bias。

卷积层

参数量:

$$Params = (k_H \times k_W \times C_{in}+1) \times C_{out}$$

计算量:

$$FLOPs = 2 \times k_H \times k_W \times C_{in} \times C_{out} \times H_{out} \times W_{out}$$

全连接层

参数量:

$$Params = (C_{in} + 1) \times C_{out}$$

计算量:

$$FLOPs = 2 \times C_{in} \times C_{out}$$

归一化层(以Batch Normalization为例)

参数量:

$$Params = 4 \times C_{out}$$

计算量:

$$FLOPs = 2 \times C_{out} \times M_{outh} \times M_{outw}$$

FLOPs为2乘以输出通道数、输入的尺寸。

激活层(以Sigmoid为例)

参数量:没有超参数
计算量:输入多少数,则计算多少次指数运算和多少次加法运算

池化层/下采样层(以平均池化为例)

参数量:没有超参数
计算量:

$$FLOPs = H_{out} \times W_{out} \times C_{out} \times k_H \times k_W$$

image

References

  1. CNN中模型的参数量与FLOPs计算
  2. 神经网络中常用算子参数量和计算量估计
  3. 一文讲解thop库计算FLOPs问题
  4. YOLOX讲解