model.parameters()
import torch
import torch.nn as nnclass SimpleModel(nn.Module):def __init__(self):super(SimpleModel, self).__init__()self.fc1 = nn.Linear(10, 5) # 输入维度为10,输出维度为5self.fc2 = nn.Linear(5, 2) # 输入维度为5,输出维度为2def forward(self, x):x = torch.relu(self.fc1(x))x = self.fc2(x)return xmodel = SimpleModel()# 获取模型的参数
for param in model.parameters():print(param.shape, param.requires_grad)
假设打印结果:
torch.Size([5, 10]) True # 第一层的权重
torch.Size([5]) True # 第一层的偏置
torch.Size([2, 5]) True # 第二层的权重
torch.Size([2]) True # 第二层的偏置
线性层Linear WX+b
model.parameters()
返回一个生成器(generator),它会逐个生成模型中所有可训练的参数(Parameter 对象)。这些参数通常是张量(torch.Tensor),并且默认情况下它们的 requires_grad=True
,这意味着它们会在反向传播中自动计算梯度。
model.named_parameters()
for name, param in linearModel.named_parameters():print(name, param.grad)
# linear.weight tensor([[...]])
# linear.bias tensor([[...]])