【深度学习】关于CNN网络的FLOPs的计算

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shwan_ma/article/details/84924142

在评估一个CNN网络的计算复杂度时,浮点数运算(float point operation)是一个常用的衡量指标。
在常规的计算中,通常不考虑非线性函数的计算量(the nonlinearity),对于卷积操作:

F L O P s = 2 ( H W C i n K 2 + 1 ) C o u t = 2 ( H W K 2 C i n C o u t + C o u t ) FLOPs = 2*(HWC_{in}K^{2}+1)C_{out} \\ =2*(HWK^{2}C_{in}C_{out} + C_{out})

其中式子中 H W K 2 C i n C o u t HWK^{2}C_{in}C_{out} 为卷积操作,$ C_{out}$为bias操作,2则表示为MAC操作(包含累加及累乘)

对于全连接操作:输入维度 I I ,输出维度 O O ,则全连接层:
F L O P s = ( 2 × I 1 ) × O FLOPs = (2 \times I-1) \times O

这里是没有考虑全连接中的bias操作,比如x1+x2+…xn只有(n-1)次加法。

Ref:

  1. PRUNING CONVOLUTIONAL NEURAL NETWORKS FOR RESOURCE EFFICIENT INFERENCE
  2. https://www.zhihu.com/question/65305385/answer/451060549

猜你喜欢

转载自blog.csdn.net/shwan_ma/article/details/84924142