【论文】参数量Parameters和每秒浮点运算次数FLOPs的单位是多少?答:Params/M,FLOPs/G

更新 2024-04-07

最近写大论文,对实验参数又有了理解,特来更正一下

下图是我常用的表头,可供参考(因为是中文硕士论文,所以就写成了模型,英文论文的话可以写成Model):

在这里插入图片描述

对于我来说,一直拿不准的单位就是参数量(Params)计算量(FLOPs)。根据看的文献、博客、个人理解,最终确认应该使用图上的MG单位,分别表示量级单位 1 0 6 10^6 106 1 0 9 10^9 109可详见这篇博文深度学习-参数量&模型大小&理论计算量

在这里插入图片描述

我的理解是实际数据=表格数字×单位

例如下图,Params和FLOPs只是参数量和计算量的代称并不是单位,单位是/后面的内容。那如图所示我的参数量就是6.23M,带上单位的意思就是有 6.23 × 1 0 6 6.23×10^6 6.23×106个参数;计算量就是13.9G,带上单位的意思就是 13.9 × 1 0 9 13.9×10^9 13.9×109个计算

在这里插入图片描述

1. 使用thop库打印参数量、计算量

重点参考这个部分:

但是,我认为他的换算方式有误,换算方式应该是:

  1. 对于参数量Parameters,统计个数之后,换算成M的含义是million百万,因此换算应该是 1 M = 1 0 6 1M=10^6 1M=106(在代码中 1 0 6 10^6 106通常写成1e6)👉参考链接:数量单位B和M代表多少?
  2. 对于每秒浮点运算次数FLOPs,换算成GFLIPs的方式是 G F L O P s = 1 0 9 F L O P s GFLOPs=10^9 FLOPs GFLOPs=109FLOPs(在代码中 1 0 9 10^9 109通常写成1e9)👉参考链接:FLOPS每秒浮点运算次数计算公式
import torch
import torchvision
from thop import profile
 
print('==> Building model..')
model = torchvision.models.alexnet(pretrained=False).cuda()	# 如果就把cuda()去掉试试
 
input = torch.randn(1, 3, 224, 224).cuda()	# 如果就把cuda()去掉试试
flops, params = profile(model, (input,))
print('GFLOPs: %.2f B, params: %.2f M' % (flops / 1e9, params / 1e6))

在这里插入图片描述


2. 标准图例

在这里插入图片描述

3. 可能有用的YOLO系列模型汇总

在这里插入图片描述

4. 暂存梯度计算量gradients与参数量的关系

图中的话忘记是在哪里看到的了,感觉很有道理的样子hhh~

在这里插入图片描述

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孟孟单单

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值