文章目录
- 一. 含义
- 二. 使用thop库计算FLOPs和Params
- 三. 注意
- 四. 相关链接
一. 含义
- FLOPs(计算量):注意s小写,是floating point operations的缩写(这里的小s则表示复数),表示浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。
- FLOPS(计算速度):注意全大写,是floating point operations per second的缩写(这里的大S表示second秒),表示每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标。
- Params(参数量):没有固定的名称,大小写均可,表示模型的参数量,也是用来衡量算法/模型的复杂度。通常我们在论文中见到的是这样:# Params,那个井号是表示 number of 的意思,因此 # Params 的意思就是:参数的数量。
二. 使用thop库计算FLOPs和Params
- 安装
pip install thop
- 使用
使用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')
- 结果
FLOPs = 16.534970368G
Params = 25.557032M
三. 注意
- 计算FLOPs时batch_size维度只能为1。
- 输入input的第一维度是批量(batch size),批量的大小不会影响参数量, 计算量是batch_size=1的倍数
- profile(net, (inputs,))的 (inputs,)中必须加上逗号,否则会报错
- 当网络模型有多个输入时,使用profile(net, (inputs1, inputs2, inputs3,))
四. 相关链接
- pytorch: 计算网络模型的计算量(FLOPs)和参数量(Params)
- FLOPs、FLOPS、Params的含义及PyTorch中的计算方法