Pytorch计算模型参数总量和模型计算量

计算这两个值之前要进行模型加载,模型加载的方法见https://blog.csdn.net/confusingbird/article/details/103913915

加载完模型后得到模型model

方法1:pytorch自带方法,计算模型参数总量

 total = sum([param.nelement() for param in model.parameters()])

 print("Number of parameter: %.2fM" % (total/1e6))

方法2:FeatherNet作者提供的一个方法,计算模型参数总量和模型计算量

def count_params(model, input_size=224):
    # param_sum = 0
    with open('models.txt', 'w') as fm:
        fm.write(str(model))

    # 计算模型的计算量
    calc_flops(model, input_size)

    # 计算模型的参数总量
    model_parameters = filter(lambda p: p.requires_grad, model.parameters())
    params = sum([np.prod(p.size()) for p in model_parameters])

    print('The network has {} params.'.format(params))


# 计算模型的计算量
def calc_flops(model, i
### 模型参数量对算力需求的影响 在深度学习领域,模型参数量显著影响所需的计算资源。随着模型复杂性表达能力的增长,更大的参数量意味着更高的存储需求更复杂的运算过程。具体而言: - **内存占用**:较大的模型参数量会直接增加显存或内存的使用率。这是因为每个多出来的权重都需要额外的空间来保存其数值[^1]。 - **计算强度**:更多的参数通常伴随着更多次浮点操作(FLOPs),即每次前向传播反向传播过程中涉及的乘法加法次数增多。这不仅增加了单步训练的时间开销,还可能导致整体收敛时间延长[^2]。 - **批处理尺寸效应**:批量大小决定了每次迭代中使用的样本数;较大批次虽然有助于加速梯度估计平滑损失函数表面,但也相应提高了即时计算负担。因此,在固定硬件条件下,增大模型规模往往需要减小批处理尺寸以适应有限的GPU/CPU资源限制。 为了有效管理这些挑战,实践者需仔细评估任务特性、可用硬件条件以及预算约束等因素,并据此调整设计决策——比如采用混合精度训练方法降低功耗而不牺牲太多准确性,或者探索剪枝等压缩技术减少冗余连接从而减轻负载[^3]。 ```python import torch from thop import profile model = ... # 定义神经网络结构 input_tensor = torch.randn(1, 3, 224, 224) macs, params = profile(model, inputs=(input_tensor,)) print(f"FLOPS: {macs}, Parameters count: {params}") ``` 此代码片段展示了如何利用`thop`库统计给定PyTorch模型的FLOPs(floating point operations per second)及参数总量,这对于初步判断模型计算密集程度非常有用。
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值