You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何打印PyTorch单个层的可训练参数总数?

解决PyTorch单个层可训练参数总数的统计问题

你之前用conv_layer.parameters()得到的是生成器对象,它只是用来遍历模型参数的迭代器,无法直接给出参数总数。要统计可训练参数总数,需要遍历每个参数并计算其元素数量之和,具体方法如下:

方法1:直接统计可训练参数总数

使用numel()方法获取每个参数张量的元素个数,再求和:

import torch.nn as nn

conv_layer = nn.Conv2d(in_channels=3,
                       out_channels=16,
                       kernel_size=3)

# 统计所有可训练参数的总数
total_trainable_params = sum(p.numel() for p in conv_layer.parameters() if p.requires_grad)
print(total_trainable_params)  # 输出:448
  • p.numel():返回单个参数张量的元素数量
  • if p.requires_grad:仅统计可训练参数(默认卷积层的weight和bias都是可训练的,此条件可确保排除被冻结的参数)

方法2:查看每个参数的细节(可选)

如果想了解每个参数的名称、形状和数量,可以用named_parameters()遍历:

for name, param in conv_layer.named_parameters():
    print(f"参数名: {name}, 形状: {param.shape}, 元素数: {param.numel()}")

输出结果:

参数名: weight, 形状: torch.Size([16, 3, 3, 3]), 元素数: 432
参数名: bias, 形状: torch.Size([16]), 元素数: 16

手动验证的话,卷积层参数公式为:(输入通道数×卷积核高×卷积核宽 + 偏置)×输出通道数,即(3×3×3 +1)×16 = 448,和代码计算结果一致。

内容的提问来源于stack exchange,提问作者cdahms

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 02:51:01