计算神经网络参数量Params、计算量FLOPs(亲测有效的3种方法)

1.stat(cpu统计)

pip install torchstat

from torchstat import stat

stat(model, (3, 32, 32)) #统计模型的参数量和FLOPs,(3,32,32)是输入图像的size

结果:

 问题:当网络中有自定义参数时,就很有可能漏掉那部分参数对应的统计量;stat好像不支持双输入。

2.summary网络结构对应参数(cuda上面统计)

pip install torchsummary

from torchsummary import summary

summary(model,input_size=(3,32,32))

问题:当网络中有自定义参数时,就很有可能漏掉那部分参数。
结果:

3.统计flops和参数量

pip install thop

from thop import profile

dummy_input = torch.randn(1, 3, 32, 32)#.to(device)

flops, params = profile(model, (dummy_input,))

print('FLOPs: ', flops, 'params: ', params)

print('FLOPs: %.2f M, params: %.2f M' % (flops / 1000000.0, params / 1000000.0))

问题:当网络中有自定义参数时,flops和params就很有可能漏掉那部分参数。


参考链接:

6种方法计算神经网络参数量Params、计算量FLOPs、Macs简单代码_python transformer计算量flops代码_工科女博的博客-CSDN博客

网络模型的参数量和FLOPs的计算 Pytorch_网络flop_清纯世纪的博客-CSDN博客

https://zhuanlan.zhihu.com/p/541165764

猜你喜欢

转载自blog.csdn.net/weixin_43570470/article/details/129297569