Pytorch中FLOPs和Params计算

news/2025/2/22 22:53:54

文章目录

        • 一. 含义
        • 二. 使用thop库计算FLOPs和Params
        • 三. 注意
        • 四. 相关链接

一. 含义

  1. FLOPs(计算量):注意s小写,是floating point operations的缩写(这里的小s则表示复数),表示浮点运算数,理解为计算量可以用来衡量算法/模型的复杂度
  2. FLOPS(计算速度):注意全大写,是floating point operations per second的缩写(这里的大S表示second秒),表示每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标。
  3. Params(参数量):没有固定的名称,大小写均可,表示模型的参数量,也是用来衡量算法/模型的复杂度。通常我们在论文中见到的是这样:# Params,那个井号是表示 number of 的意思,因此 # Params 的意思就是:参数的数量。

二. 使用thop库计算FLOPs和Params

  1. 安装
pip install thop
  1. 使用
    使用thop库来计算vgg16模型的计算量参数量
import torch
from thop import profile
from archs.ViT_model import get_vit, ViT_Aes
from torchvision.models import resnet50

model = resnet50()
input1 = torch.randn(1, 3, 224, 224) 
flops, params = profile(model, inputs=(input1, )) 
print('FLOPs = ' + str(flops/1000**3) + 'G')
print('Params = ' + str(params/1000**2) + 'M')
  1. 结果
FLOPs = 16.534970368G
Params = 25.557032M

三. 注意

  1. 计算FLOPs时batch_size维度只能为1
  2. 输入input的第一维度是批量(batch size),批量的大小不会影响参数量计算量是batch_size=1的倍数
  3. profile(net, (inputs,))的 (inputs,)中必须加上逗号,否则会报错
  4. 当网络模型有多个输入时,使用profile(net, (inputs1, inputs2, inputs3,))

四. 相关链接

  1. pytorch: 计算网络模型的计算量(FLOPs)和参数量(Params)
  2. FLOPs、FLOPS、Params的含义及PyTorch中的计算方法

http://www.niftyadmin.cn/n/104601.html

相关文章

Rust语言的基本介绍

rust缘起和目标 rust的英文是锈菌,是一种真菌,这种真菌的生命力非常顽强,其 在生命周期内可以产生多达5种孢子类型,这5种生命形态还可以相互转 化。“Rust”也有“铁锈”的意思,暗合“裸金属”之意,代表了R…

MySQL-视图、存储过程、触发器

目录视图创建视图查询视图修改视图删除视图视图检查选项视图更新作用存储过程特点基本语法创建调用查看删除变量系统变量查看系统变量设置系统变量注意点用户自定义变量复制使用注意局部变量声明赋值IF语句参数用法:IN 案例:OUT案例:INOUTCAS…

《MySQL学习》 索引失效的三种特殊情况

一.条件字段使用函数 explain select * from bpm_proc_instance bpi where CREATED_AT > 2022-06-01 CREATED_AT 字段建立了索引,此时explain分析的结果表明能使用到索引 但如果我们对 CREATED_AT 字段使用函数 explain select * from bpm_proc_instance bpi w…

【Python】3.3实现多线程

程序Program进程Process线程Thread为完成特定任务而用计算机语言编写的一组计算机能识别和执行的指令的集合。程序是指令、数据及其组织形式的描述,一段静态代码,静态对象。计算机中的程序关于某数据集合上的一次执行过程。进程是程序的实体,…

亿级高并发电商项目-- 实战篇 --万达商城项目 十三(编写购物车、优化修改商品、下架商品方法、购物车模块监听修改商品、删除商品消息)

👏作者简介:大家好,我是小童,Java开发工程师,CSDN博客博主,Java领域新星创作者 📕系列专栏:前端、Java、Java中间件大全、微信小程序、微信支付、若依框架、Spring全家桶 &#x1f4…

确定进制

题目描述6*9 42 对于十进制来说是错误的&#xff0c;但是对于13进制来说是正确的。即, 6(13) * 9(13) 42(13)&#xff0c; 而 42(13) 4 * 131 2 * 130 54(10)。 你的任务是写一段程序读入三个整数p、q和 r&#xff0c;然后确定一个进制 B(2<B<16) 使得 p * q r. 如果…

②【Java 组】蓝桥杯省赛真题解析 [振兴中华] [三部排序] 持续更新中...

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ 蓝桥杯真题--持续更新中...一、振兴中华二、三…

2023年全国最新食品安全管理员精选真题及答案7

百分百题库提供食品安全管理员考试试题、食品安全员考试预测题、食品安全管理员考试真题、食品安全员证考试题库等&#xff0c;提供在线做题刷题&#xff0c;在线模拟考试&#xff0c;助你考试轻松过关。 61.食品经营者履行了食品安全法规定的_____等义务&#xff0c;有充分证据…