三个常见的评估指标: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_info

macs, params = get_model_complexity_info(
    model, 
    (3, 352, 352),  # 输入尺寸
    as_string=True,
    print_per_layer_stat=False
)
print(f"MACs={macs}, Params={params}")
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐