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

实例化模型后仍报parameters()缺少self参数的TypeError问题排查

PyTorch中TypeError: parameters() missing 1 required positional argument: 'self'问题解析

错误含义解释

在Python类中,self是实例方法的第一个必填参数,代表当前类的实例对象。PyTorch的nn.Module类中,parameters()是实例方法,必须通过类的实例调用——如果直接用类名调用该方法,Python不会自动传入实例对象作为self参数,就会抛出这个报错。

问题定位

你的代码存在两处问题:

  • 优化器初始化错误:
    你写的torch.optim.Adam(AddNN.parameters(), lr = .05)是直接用类名AddNN调用parameters(),而不是用已实例化的模型对象net。parameters()需要通过模型实例来获取参数,正确写法应为net.parameters()。
  • forward方法缩进错误:
    forward方法被缩进在__init__方法内部,变成了__init__的嵌套函数,而非类的成员方法。后续调用模型时,PyTorch会因找不到forward方法触发新错误。

修正后的关键代码

class AddNN(nn.Module):
    def __init__(self):
        super().__init__()
        self.input = nn.Linear(2,16)
        self.fc1 = nn.Linear(16,32)
        self.fc2 = nn.Linear(32,1)
        self.output = nn.Linear(1,1)

    # forward方法与__init__同级缩进
    def forward(self, x):
        x = F.relu(self.input(x))
        x = F.relu(self.fc1(x))
        x = F.relu(self.fc2(x))
        return self.output(x)

net = AddNN()
lossfun = nn.MSELoss()
# 使用模型实例调用parameters()
optimizer = torch.optim.Adam(net.parameters(), lr = .05)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 12:01:04