[pytorch] modelo de cálculo de thop potencia de cálculo y parámetros

Reimpreso del sitio web oficial de github:
Cuente los MAC / FLOP de su modelo PyTorch.

THOP: PyTorch-Contador de operaciones

Cómo instalar

pip install thop(ahora continuamente integrado en las acciones de Github )

O

pip install --upgrade git+https://github.com/Lyken17/pytorch-OpCounter.git

Cómo utilizar

  • Uso básico

    from torchvision.models import resnet50
    from thop import profile
    model = resnet50()
    input = torch.randn(1, 3, 224, 224)
    macs, params = profile(model, inputs=(input, ))
    
  • Defina la regla para el módulo de terceros.

    class YourModule(nn.Module):
        # your definition
    def count_your_model(model, x, y):
        # your rule here
    
    input = torch.randn(1, 3, 224, 224)
    macs, params = profile(model, inputs=(input, ), 
                            custom_ops={
          
          YourModule: count_your_model})
    
  • Mejorar la legibilidad de salida

    Llame thop.clever_formatpara dar un mejor formato de la salida.

    from thop import clever_format
    macs, params = clever_format([macs, params], "%.3f")
    

Resultados de modelos recientes

La implementación está adaptada de torchvision. Los siguientes resultados se pueden obtener utilizando benchmark/evaluate_famous_models.py .

Modelo Parámetros (M) MAC (G)
alexnet 61.10 0.77
vgg11 132.86 7.74
vgg11_bn 132.87 7.77
vgg13 133.05 11.44
vgg13_bn 133.05 11.49
vgg16 138.36 15.61
vgg16_bn 138.37 15.66
vgg19 143.67 19.77
vgg19_bn 143.68 19.83
resnet18 11.69 1.82
resnet34 21.80 3.68
serio50 25.56 4.14
resnet101 44.55 7.87
resnet152 60.19 11.61
wide_resnet101_2 126.89 22.84
wide_resnet50_2 68.88 11.46
Modelo Parámetros (M) MAC (G)
resnext50_32x4d 25.03 4.29
resnext101_32x8d 88.79 16.54
densanet121 7.98 2.90
densanet161 28.68 7.85
densonet169 14.15 3.44
densanet201 20.01 4.39
apretarnet1_0 1.25 0.82
apretarnet1_1 1.24 0.35
mnasnet0_5 2.22 0.14
mnasnet0_75 3.17 0.24
mnasnet1_0 4.38 0.34
mnasnet1_3 6.28 0.53
mobilenet_v2 3.50 0.33
shufflenet_v2_x0_5 1.37 0.05
shufflenet_v2_x1_0 2.28 0.15
shufflenet_v2_x1_5 3.50 0.31
shufflenet_v2_x2_0 7.39 0,60
inicio_v3 27.16 5.75

Acerca de Mac y FLPOS

Discutido en este blog: https://blog.csdn.net/weixin_42627397/article/details/124770595

La definición de Mac es: una suma y una multiplicación equivalen a un Mac
FLOP se define como: una suma cuenta un FLOP y una multiplicación cuenta un FLOP,
por lo que los FLOP finales = 2 * Mac

FLOPs = 2 * Macs

Por lo tanto, los mac obtenidos por thop deben multiplicarse por 2 para ser FLOPS

Supongo que te gusta

Origin blog.csdn.net/condom10010/article/details/129617615
Recomendado
Clasificación