输入参数的数目不足_模型计算力(flops)和参数(parameters)

提纲:Ø 参数量
Ø FLOPSFLOPsGFLOPs
Ø 浮点运算和参数量的区别
Ø 不能绝对的用FLOPs作为速度衡量的原因——MAC并行度平台

输入参数的数目不足_模型计算力(flops)和参数(parameters)_第1张图片

参数量:CNN:
一个卷积核的参数 = k*k*Cin+1
一个卷积层的参数 = (一个卷积核的参数)*卷积核数目=k*k*Cin*Cout+Cout

FLOPS:
注意全大写,是floating point operations per second的缩写,意指每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标

FLOPs: 注意s小写,是floating point operations的缩写(s表复数),意指浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。

但是关于FLOPs的公式花样百出,不过大致形式都差不多,没有找到特别统一的说法。

CNN的FLOPs:

(1) 知乎:

6121dfcbb991b96efbc0d06dff340b21.png

Ci、Co表示输入和输出通道,K卷积核大小,HW是输出的feature map大小。其中括号中的式子这样理解:

03e0656a2e07d4f73ecac4707ed43a20.png

左边是乘法运算量,右边是加法运算量,因为n个数字要加n-1次,所以有个-1.这里忽略了bais如果算上bais需要把-1去掉。

(2) nvida论文:

输入参数的数目不足_模型计算力(flops)和参数(parameters)_第2张图片

论文里应该是把n个累加直接当成加n次,还算上了个bais

(3)torchstat库
简单用代码实验了下,如下图:

98d603efc23b026a0097032fc73a8b56.png

Flops:44,158,464 = 222*222*(3*3*3+1)*32
params:896 = 3*3*3*32

推算了下它的公式FLOPs = H*W*(K*K*Cin+1)*Cout (又是不一样的!)

FullyConnect的FLOPs:

2c5d0b284349cd24796f7adc8aaafb88.png

I输入神经元数目,O输出神经元个数。同理,考虑bais没有-1

GFLOPs:这其实是一个单位,1GLOPs=10亿次浮点运算。
是Paper里比较流行的单位。

浮点运算量和参数量的区别:浮点运算量是实际运算过程中的加减乘除计算过程中的计算次数,描述计算力;
参数量只是指的模型大小,和输入的图片大小无关,描述需要内存

输入参数的数目不足_模型计算力(flops)和参数(parameters)_第3张图片

不能只用FLOPs作为网络速度的指标。

FLOPs没有考虑几个对速度有相当大影响的重要因素——MAC并行度平台

1.MAC(Memory Access Cost)

比如:MAC(内存访问成本),计算机在进行计算时候要加载到缓存中,然后再计算,这个加载过程是需要时间的。其中,分组卷积(group convolution)是对MAC消耗比较多的操作(例如AlexNet多GPU)。

k*k普通卷积(不算bais)的FLOPs和MAC:
FLOPs = 2*h2*w2*k*k*c1*c2
MAC=输入+输出+权重参数=h1*w1*c1+h2*w2*c2+c1*c2*k*k

普通卷积和分组卷积的参数量:

输入参数的数目不足_模型计算力(flops)和参数(parameters)_第4张图片

1*1卷积普通卷积:

输入参数的数目不足_模型计算力(flops)和参数(parameters)_第5张图片

结论:FLOPs一定时,当且仅当c1=c2,MAC越小。

1*1分组卷积:

输入参数的数目不足_模型计算力(flops)和参数(parameters)_第6张图片

结论:B不变,g越大MAC越大

2.并行度第二个对速度有相当大影响的重要因素就是模型的并行度。
在相同的FLOPs下,具有高并行度的模型可能比具有低并行度的另一个模型快得多。如果网络的并行度较高,那么速度就会有显著的提升。

3.计算平台的不同不同的运行平台,得到的FLOPs也不相同。有的平台会对操作进行优化,比如:cudnn加强了对3×3conv计算的优化。这样一来,不同平台的FLOPs大小确实没有什么说服力。

Ref:

https://arxiv.org/abs/1611.06440v2

https://www.zhihu.com/question/65305385/answer/451060549

分享一个FLOPs计算神器——https://www.jianshu.com/p/b1ceaa7effa8

https://zhuanlan.zhihu.com/p/67009992

https://www.e-learn.cn/topic/3471595

https://github.com/Captain1986/CaptainBlackboard/blob/master/D%230023-CNN模型计算量估计/D%230023.md

https://blog.csdn.net/weixin_39833897/article/details/105807172C

你可能感兴趣的:(输入参数的数目不足)