Pytorch: 采用thop库正确计算模型计算量FLOPs和模型参数Params 【误区更正】

from thop import profile
from thop import clever_format
input = torch.randn(1, 3, 224, 224)
model = MODEL()
?, params = profile(model, inputs=(input, ))
?, params = clever_format([flops, params], "%.3f")

目前, CSDN或简书等中文平台的大部分thop使用教程都直接将上述代码段中返回的 第一个元素即‘?’当作FLOPs来使用,然而这是 错误的!

thop返回的第一个element不是 FLOPs,而是 Macs.而 FLOPs实际上是Macs的两倍!!!

上面这一点要尤其注意,现在 百度上所查到的基本所有有关thop计算FLOPs的文章都是错误的!!!

所以最终的FLOPs = profile(model, inputs=(input, ))[0] *2记住要乘以2才是FLOPs

Macs的定义为: 一次加法和一次乘法等于 一个Mac
FLOPs的定义为: 一次加法一个FLOP,而 一次乘法也算 一个FLOP
所以最终FLOPs = 2 * Macs

PS:当然 实际上FLOPs是近似于Macs的两倍 ,具体还是跟模型设计有关

Original: https://blog.csdn.net/weixin_42627397/article/details/124770595
Author: WindVChen
Title: Pytorch: 采用thop库正确计算模型计算量FLOPs和模型参数Params 【误区更正】

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/708076/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球