Note!
查看 model 参数值 model.state_dict()
在这里插入图片描述

1、自定义 Params

Pytorch依据其内建接口自己写代码获取模型参数情况,大家可以参考Pytorch提供的model.parameters() 接口来获取相应参数的size来实现,对于该参数是否属于可训练参数,那么可以依据Pytorch提供的requires_grad标志位来进行判断,具体方法如下代码所示:

# 定义总参数量、可训练参数量及非可训练参数量变量
Total_params = 0
Trainable_params = 0
NonTrainable_params = 0

# 遍历model.parameters()返回的全局参数列表
for param in model.parameters():
    mulValue = np.prod(param.size())  		# 使用numpy prod接口计算参数数组所有元素之积
    Total_params += mulValue  				# 总参数量
    if param.requires_grad:
        Trainable_params += mulValue  		# 可训练参数量
    else:
        NonTrainable_params += mulValue  	# 非可训练参数量

print(f'Total params: {Total_params}')
print(f'Trainable params: {Trainable_params}')
print(f'Non-trainable params: {NonTrainable_params}')

2、torchsummaryX

相比自己计算,torchsummaryX 是一个非常棒的 第三方库,它具有强大的工程,并且支持更多的模型结构,而且还可以帮助用户输出 FLOPS,这一点是无可替代的,特别是 Transformer 模型的 FLOPS,好像之前的第三方库不太支持,这一点 torchsummaryX 做的特别棒!
此外 torchsummaryX 它是 torchsummary 的升级版,调用依旧简单,且十分的人性化,非常推荐大家使用~

pip install torchsummaryX

import torchvision
from torchsummaryX import summary

model = torchvision.models.resnext50_32x4d()
summary(model, x=torch.zeros(4, 3, 224, 224))

展示格式也是相当的帅气!!!

在这里插入图片描述

「原版输出结果可能存在换行显示的情况,大家可以将相关的 df 的行参数设置的较大一些即可」可参考修改后的代码:https://github.com/ViatorSun/torchsummaryX

# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd
# pd.set_option('display.height', 1000)
pd.set_option('display.max_rows', 500)
pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 1000)
df = pd.DataFrame(np.random.randn(1, 20))
print(df)

3、thop

github仓库:https://github.com/Lyken17/pytorch-OpCounter

thop 也是经常被采用的方法,YOLO 模型默认采用的也是 thop,除了thop一年多不更新了,好像没有太多问题
不过需要注意的是 profile(model, inputs=(img, )) inputs需要将模型所需要的所有信息都传入

# 安装方法
pip install thop


# 使用方法
import torch
from torchvision.models import resnet50
from thop import profile

model = resnet50()
img = torch.randn(1, 3, 224, 224)
flops, params = profile(model, inputs=(img, ))

print(f"{flops / 1E9 * 2 :.2f} GFLOPs")

具体的计算 flops 和 params 的具体方法
在这里插入图片描述

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐