> 文章列表 > 什么是计算量flops,什么是参数量params?

什么是计算量flops,什么是参数量params?

什么是计算量flops,什么是参数量params?

flops与params

计算量对应我们之前的时间复杂度,参数量对应于我们之前的空间复杂度,这么说就很明显了

也就是计算量要看网络执行时间的长短,参数量要看占用显存的量

其中最重要的衡量CNN 模型所需的计算力就是flops:

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

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

我们知道,通常我们去评价一个模型时,首先看的应该是它的精确度,当你精确度不行的时候,你和别人说我的模型预测的多么多么的快,部署的时候占的内存多么多么的小,都是白搭。但当你模型达到一定的精确度之后,就需要更进一步的评价指标来评价你模型:1)前向传播时所需的计算力,它反应了对硬件如GPU性能要求的高低;2)参数个数,它反应所占内存大小。为什么要加上这两个指标呢?因为这事关你模型算法的落地。比如你要在手机和汽车上部署深度学习模型,对模型大小和计算力就有严格要求。模型参数想必大家都知道是什么怎么算了,而前向传播时所需的计算力可能还会带有一点点疑问。所以这里总计一下前向传播时所需的计算力。

可视化flops与params

from thop import profile
dummy_input = torch.randn(1, 3, 64, 64).to(device)#cuda:0
flops, params = profile(model3, (dummy_input,))
print('flops: ', flops, 'params: ', params)
print('flops: %.2f M, params: %.2f M' % (flops / 1000000.0, params / 1000000.0))

参考博客:
https://blog.csdn.net/weixin_39589455/article/details/127261338