当前位置: 首页 > news >正文

【深度学习】常见评估指标Params、FLOPs、MACs

三个常见的评估指标:Params、FLOPs、MACs

Params (参数量)

定义:模型中所有可学习参数的总和

计算方式:

Params=∑l=1L(Cinl×Coutl×Khl×Kwl+Coutl)\text{Params} = \sum_{l=1}^{L} (C_{\text{in}}^l \times C_{\text{out}}^l \times K_h^l \times K_w^l + C_{\text{out}}^l)Params=l=1L(Cinl×Coutl×Khl×Kwl+Coutl)

其中:
• L:网络层数
Cin/CoutC_{\text{in}}/C_{\text{out}}Cin/Cout:输入/输出通道数
Kh×KwK_h \times K_wKh×Kw:卷积核尺寸
物理意义:

  • 模型复杂度与记忆能力的直接体现
  • 决定模型文件大小和内存占用

典型值域:

  • 轻量级模型:<5M (如MobileNetV3-1.0x)
  • 中等模型:5-50M (如ResNet50)
  • 大型模型:>50M (如ViT-Large)

FLOPs (浮点运算次数)

定义:完成一次前向传播所需的浮点运算总量

计算方式:

FLOPs=∑l=1L(2×Cinl×Coutl×Khl×Kwl×Houtl×Woutl)\text{FLOPs} = \sum_{l=1}^{L} (2 \times C_{\text{in}}^l \times C_{\text{out}}^l \times K_h^l \times K_w^l \times H_{\text{out}}^l \times W_{\text{out}}^l)FLOPs=l=1L(2×Cinl×Coutl×Khl×Kwl×Houtl×Woutl)

物理意义:

  • 计算复杂度的直接度量
  • 决定推理速度和能耗

典型场景:

图像分类(224×224输入):各个模型 FLOPs

  • MobileNetV2: 300M
  • ResNet50: 4.1G
  • ViT-Base: 17.6G

MACs (乘加运算次数)

定义:模型前向传播中乘法与加法运算的总和

计算方式:
MACs=∑l=1L(Cinl×Coutl×Khl×Kwl×Houtl×Woutl)\text{MACs} = \sum_{l=1}^{L} (C_{\text{in}}^l \times C_{\text{out}}^l \times K_h^l \times K_w^l \times H_{\text{out}}^l \times W_{\text{out}}^l)MACs=l=1L(Cinl×Coutl×Khl×Kwl×Houtl×Woutl)

• 与FLOPs关系:
FLOPs≈2×MACs\text{FLOPs} ≈ 2 \times \text{MACs}FLOPs2×MACs

原因:每个乘加运算包含1次乘法+1次加法

硬件意义:
• NPU/GPU等硬件性能的直接度量
• 芯片设计的关键指标

PyTorch测量示例

from ptflops import get_model_complexity_infomacs, params = get_model_complexity_info(model, (3, 352, 352),  # 输入尺寸as_string=True,print_per_layer_stat=False
)
print(f"MACs={macs}, Params={params}")
http://www.lryc.cn/news/586341.html

相关文章:

  • 单向链表反转 如何实现
  • 电子电气架构 --- ECU存储与计算资源冗余设计规范
  • 深入详解:决策树在医学影像脑部疾病诊断中的应用与实现
  • 使用ESM3蛋白质语言模型进行快速大规模结构预测
  • Syntax Error: TypeError: Cannot set properties of undefined (setting ‘parent‘)
  • SSM项目上传文件的方式及代码
  • AI图像修复工具CodeFormer实测:马赛克去除与画质增强效果评测
  • 基于随机森林的金融时间序列预测系统:从数据处理到实时预测的完整流水线
  • 从零到一:企业如何组建安全团队
  • 系统引导修复
  • C#调用Matlab生成的DLL
  • S7-200 SMART PLC:硬件、原理及接线特点全解析
  • QWidget的属性
  • monorepo 发布库 --- 打包文件
  • Gameplay - 独立游戏Celeste的Player源码
  • 程序在计算机中如何运行?——写给编程初学者的指南
  • [ABC267F] Exactly K Steps
  • Go语言高并发聊天室(二):WebSocket服务器实现
  • 【中文大模型开源平台】魔塔社区基本使用
  • 【Java入门到精通】(三)Java基础语法(下)
  • 事件驱动设计:Spring监听器如何像咖啡师一样优雅处理高并发
  • shiro550反序列化漏洞复现(附带docker源)
  • 电脑上如何查看WiFi密码
  • 游戏开发日记7.12
  • 前端开发中的资源缓存详解
  • python-while循环
  • 从0到1搭建个人技术博客:用GitHub Pages+Hexo实现
  • Win11怎样进入WinRE恢复环境
  • 批量自动运行多个 Jupyter Notebook 文件的方法!!!
  • Linux中Gitee的使用