pytorch中Module模块中named_parameters函数

本文介绍PyTorch中Module模块的named_parameters()函数,该函数用于获取模型中所有参数的名称及其对应的数值,对于理解和调试深度学习模型的参数非常有用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数named_parameters(),返回各层中参数名称和数据

class MLP(nn.Module):
    def __init__(self):
        super(MLP, self).__init__()
        self.hidden = nn.Sequential(
            nn.Linear(256,64),
            nn.ReLU(inplace=True),
            nn.Linear(64,10)
                )
    def forward(self, x):
        return self.hidden(x)

    
#x = torch.randperm(256*2).view(-1,256)
net = MLP()
net(x
### 获取 PyTorch 模型结构和参数摘要的方法 在 PyTorch 中,可以通过多种方式生成模型的结构和参数摘要。以下是几种常用的技术: #### 使用 `torchsummary` 库 为了更方便地查看模型的层次结构以及每一层的输入输出尺寸和参数数量,可以使用第三方库 `torchsummary`。该库提供了类似于 Keras 的 `model.summary()` 方法的功能。 安装 `torchsummary` 可通过 pip 完成: ```bash pip install torchsummary ``` 之后可以在代码中调用它来打印模型的详细信息: ```python from torchsummary import summary import torch.nn as nn import torch class ExampleModel(nn.Module): def __init__(self): super(ExampleModel, self).__init__() self.conv1 = nn.Conv2d(in_channels=3, out_channels=64, kernel_size=3) self.pool = nn.MaxPool2d(kernel_size=2, stride=2) self.fc = nn.Linear(64 * 110 * 110, 10) # Assuming input size is (3, 224, 224) def forward(self, x): x = self.pool(torch.relu(self.conv1(x))) x = x.view(-1, 64 * 110 * 110) x = torch.softmax(self.fc(x), dim=-1) return x device = 'cuda' if torch.cuda.is_available() else 'cpu' model = ExampleModel().to(device) input_size = (3, 224, 224) # Input image dimensions summary(model, input_size=input_size) ``` 上述代码会生成详细的模型总结,包括每层的输出形状、可训练参数的数量等[^2]。 #### 手动实现模型摘要功能 如果不想依赖外部库,也可以手动遍历模型的模块并统计其参数量。以下是一个简单的例子: ```python def count_parameters(model): total_params = sum(p.numel() for p in model.parameters()) trainable_params = sum(p.numel() for p in model.parameters() if p.requires_grad) non_trainable_params = total_params - trainable_params return { "Total Parameters": total_params, "Trainable Parameters": trainable_params, "Non-trainable Parameters": non_trainable_params } params_summary = count_parameters(model) print(params_summary) ``` 此函数返回整个网络中的总参数数、可训练参数数以及不可训练参数数[^3]。 #### 利用内置 `.named_modules()` 和 `.parameters()` 函数 PyTorch 提供了访问模型内部组件的方式,比如通过 `.named_modules()` 遍历所有的子模块或者利用 `.parameters()` 来迭代所有张量对象。 ```python for name, module in model.named_modules(): print(f"Module Name: {name}, Module Type: {type(module)}") for param_name, parameter in model.named_parameters(): print(f"Parameter Name: {param_name}, Parameter Shape: {parameter.shape}") ``` 这段脚本可以帮助理解模型的具体组成及其权重矩阵大小分布情况[^4]。 综上所述,在实际应用过程中可以根据需求选择合适的方式来获取关于 PyTorch 构建神经网络的信息展示形式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值