【问题标题】:using ModuleList, still getting ValueError: optimizer got an empty parameter list使用 ModuleList,仍然得到 ValueError: optimizer got a empty parameter list
【发布时间】:2021-01-29 05:28:52
【问题描述】:

使用 Pytorch,我尝试使用 ModuleList 来确保检测到模型参数,并且可以对其进行优化。调用 SGD 优化器时出现以下错误:

ValueError: 优化器得到一个空的参数列表

您能否查看下面的代码并提出建议?

class LR(nn.Module):
    def ___init___(self):
        super(LR, self).___init___()
        self.linear = nn.ModuleList()
        self.linear.append(nn.Linear(in_features=28*28, out_features=128, bias=True))
    
    def forward(self, x):
        y_p = torch.sigmoid(self.linear(x))
        return y_p

LR_model = LR()
optimizer = torch.optim.SGD(params = LR_model.parameters(), lr=learn_rate)

【问题讨论】:

标签: python optimization pytorch valueerror sgd


【解决方案1】:

这似乎是一个复制粘贴问题:您的 __init____init__(self)super(LR, self).__init__() 有 3 个下划线而不是 2 个。因此init 本身失败了。删除多余的下划线并重试或尝试以下代码:

class LR(nn.Module):
    def __init__(self):
        super(LR, self).__init__()
        self.linear = nn.ModuleList()
        self.linear.append(nn.Linear(in_features=28*28,
                                     out_features=128, 
                                     bias=True))

    def forward(self, x):
        y_p = torch.sigmoid(self.linear(x))
        return y_p

    LR_model = LR()
    optimizer = torch.optim.SGD(params = list(LR_model.parameters()), 
                                lr=learn_rate)

【讨论】:

    猜你喜欢
    • 2020-08-26
    • 1970-01-01
    • 2017-11-16
    • 2020-02-17
    • 2018-09-02
    • 1970-01-01
    • 2013-11-11
    • 2020-07-25
    • 1970-01-01
    相关资源
    最近更新 更多