深度学习模型FLOPs详解

计算方法

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

FLOPs :
注意s小写,是floating point operations的缩写(s表复数),意指浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。其计算公式如下:
深度学习模型FLOPs详解_第1张图片

不能只用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详解_第2张图片

深度学习模型FLOPs详解_第3张图片
结论:FLOPs一定时,当且仅当c1=c2,MAC越小。

1*1分组卷积:
深度学习模型FLOPs详解_第4张图片
结论:B不变,g越大MAC越大

2.并行度

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

3.计算平台的不同

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

你可能感兴趣的:(深度学习小碎念,深度学习,人工智能,计算机视觉)