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

PyTorch中model.parameters()返回空列表致优化器报错求助

解决PyTorch中ValueError: optimizer got an empty parameter list错误

核心问题

你的img2latent类将构造函数错误地写成了__int__,而Python类的构造函数必须是__init__。这个拼写错误导致:

  • 父类nn.Module的初始化逻辑未执行,PyTorch无法自动将self.fc1、self.fc2这类子模块注册为可训练参数
  • 类实例化时,网络层根本没被创建,最终fullmodel.parameters()返回空列表

修正后的代码

import torch
from torch import nn

class img2latent(nn.Module):
    # 修正构造函数名称:__init__ 而非 __int__
    def __init__(self):
        super(img2latent, self).__init__()
        self.neuralDim = len(X_train[0])
        self.latentDim = len(Y_train[0])
        self.hiddenDim = self.neuralDim
        self.fc1 = nn.Linear(self.neuralDim, self.hiddenDim)
        self.fc2 = nn.Linear(self.hiddenDim, self.latentDim)
        
        # 初始化权重,确保张量与模型设备匹配
        self.fc1.weight.data.fill_(1)
        self.fc1.bias.data.fill_(0)
        # 将ridge的参数转换为PyTorch张量并移到对应设备
        self.fc2.weight.data = torch.tensor(ridge.coef_, dtype=torch.float32).to(device)
        self.fc2.bias.data = torch.tensor(ridge.intercept_, dtype=torch.float32).to(device)
    
    def forward(self, x):
        x = self.fc1(x)
        x = torch.relu(x)        
        x = self.fc2(x)
        return x


def train_loop(model, loss_fn, optimizer):
    model.train()
    pred = model(X_train)
    loss = loss_fn(pred, Y_train)
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
    return loss.item()


fullmodel = img2latent()
fullmodel = fullmodel.to(device)
loss_fn = nn.MSELoss()
optimizer = torch.optim.Adam(fullmodel.parameters(), lr=0.01, weight_decay=0.01)

for t in range(1000):
    loss_val = train_loop(fullmodel, loss_fn, optimizer)
    if t % 100 == 0:
        print(t, f"{loss_val:0.2f}", end='\t')

# 预测训练集 latent
pred = fullmodel(X_train)

额外注意事项

  1. 初始化fc2的权重时,要确保ridge.coef_和ridge.intercept_被转换为PyTorch张量,并且和模型所在设备(CPU/GPU)一致,避免后续计算时出现设备不匹配错误
  2. 训练循环中不要用loss同时指代损失函数和损失值,容易引发变量覆盖问题,这里改成了loss_fn和loss_val

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 10:43:12