Pytorch中FLOPs和Params计算

文章目录

        • 一. 含义
        • 二. 使用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中的计算方法

你可能感兴趣的:(Pytorch,Pytorch基础,pytorch,python,深度学习,参数量,计算量)