Thop模块
官方文档:https://pypi.org/project/thop/
THOP(Torch-OpCounter)是用于计算PyTorch模型操作数和计算量的工具,通过这个库,开发者可以更好地理解和评估模型的复杂度,对模型优化和性能调优是非常有帮助的。
函数说明
-
thop.profile(model, inputs, custom_ops, ignore_ops)
参数- model(PyTorch模型): 需要计算操作数和计算量的PyTorch模型。
- inputs(输入大小): 模型输入张量的大小。这通常是一个元组,指定了输入张量的形状。
- custom_ops(自定义操作): 一个字典,用于指定自定义操作的计算量。这可以是覆盖THOP库中默认的操作计算方式。
- ignore_ops(忽略操作): 制定了在计算过程中需要忽略的操作类型。这对于排除某些不重要的操作或特定层的计算量非常有用。
-
thop.clever_format() # 指定输出的格式
代码
from torchvision.models import resnet50
import thop
model = resnet50()
input = torch.randn(1, 3, 224, 224)
macs, params = thop.profile(model, inputs=(input,))
print("FLOPs:", macs) #FLOPs模型复杂度
print("params:", params) #params参数量
macs, params = thop.clever_format([macs, params], "%.3f")
print("FLOPs:", macs)
print("params:", params)
运行结果
FLOPs(floating point operations)浮点计算次数,通常用来评估模型的计算复杂度。
FLOPS(floating point operations per second)是指每秒钟可以执行的浮点运算次数,通常用来评估一个计算机系统的计算能力。
FLOPs和FLOPS都是衡量计算复杂度和计算能力的指标,但它们的单位不同,FLOPs的单位是次,而FLOPS的单位是次/秒。
在实际应用中,我们通常会同时考虑这两个指标,以评估计算机算法或者模型在不同的计算机系统上的表现。