Pytorch: 网络模型参数量统计工具thop

2022-05-05  本文已影响0人  Gavin先生

安装⽅式:

'''

pip install thop

'''

使⽤⽅法,话不多说,直接上代码。

'''

import torch

from torchvision import models

from thop import profile

model = models.densenet121()

input = torch.randn(1,3,224,224)

flops, params =profile(model, inputs=(input,))

'''

运⾏的最终结果为模型的计算量和参数量——评价模型压缩⽅法的重要指标。

Flops of DenseNet-121 is 2913996800.0

Parameters of DenseNet-121 is 7978856.0

当然,也可以添加⾃⼰定义的⽹络模块,前提是你知道参数量和计算量计算的⽅法。

class YourModule(nn.Module):

# your definition

def count_your_model(model, x, y):

# your rule here

input = torch.randn(1,3,224,224)

flops, params =profile(model, inputs=(input,),

custom_ops={YourModule: count_your_model})

模型压缩评价指标

模型压缩将会是⼤数据任务(Big Data)的⼀种常⽤⼿段,所要解决的问题就是庞⼤的模型与有限的计算资源之间的⽭盾。官⽅措辞“在过去的⼏年中,我们见证了(卷积)神经⽹络在xxx领域所取得的成功。”精⼼设计的⽹络结构功不可没,但很⼤程度上还是得益于⽹络的加深、加⼤。这就导致了⽹络的参数量暴增,为训练和应⽤带来挑战。模型训练可以使⽤更多的GPU($$$↑↑),但是在应⽤场景下就不⼀样了,受制于成本、体积、功耗等因素,有时候应⽤平台的硬件性能较差(算⼒低,带宽⼩,内存⼩),偏偏任务的实时性要求很⾼(如⼈脸识别)。既然硬件资源受限,那么必然从模型的⾓度⼊⼿,减少模型参数量和计算量。

参数量和计算量只是理论上的压缩⽐与加速⽐,具体的加速效果还要结合特定的硬件平台。值得注意的是,已经有模型压缩⽅向相关的论⽂开始以CPU时间作为加速效果的衡量指标。

https://wk.baidu.com/view/731e2f10f211f18583d049649b6648d7c1c7089f

上一篇下一篇

猜你喜欢

热点阅读