Flops counter for convolutional networks in pytorch framework
该脚本旨在计算卷积神经网络中理论乘积运算的数量。 它还可以计算参数的数量并打印给定网络的每层计算成本,使用起来非常简单。
安装
| 1
 | pip install --upgrade git+https://github.com/sovrasov/flops-counter.pytorch.git
 | 
测试
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 
 | import torchvision.models as modelsimport torch
 from ptflops import get_model_complexity_info
 
 with torch.cuda.device(0):
 net = models.densenet161()
 macs, params = get_model_complexity_info(net, (3, 224, 224), as_strings=True,
 print_per_layer_stat=True, verbose=True)
 print('{:<30}  {:<8}'.format('Computational complexity: ', macs))
 print('{:<30}  {:<8}'.format('Number of parameters: ', params))
 
 | 
torchvision的部分结果
| Model | Input Resolution | Params(M) | MACs(G) | Top-1 error | Top-5 error | 
| alexnet | 224x224 | 61.1 | 0.72 | 43.45 | 20.91 | 
| vgg11 | 224x224 | 132.86 | 7.63 | 30.98 | 11.37 | 
| vgg13 | 224x224 | 133.05 | 11.34 | 30.07 | 10.75 | 
| vgg16 | 224x224 | 138.36 | 15.5 | 28.41 | 9.62 | 
| vgg19 | 224x224 | 143.67 | 19.67 | 27.62 | 9.12 | 
| vgg11_bn | 224x224 | 132.87 | 7.64 | 29.62 | 10.19 | 
Reference
https://github.com/sovrasov/flops-counter.pytorch