【发布时间】:2022-01-21 23:25:40
【问题描述】:
我有分类问题。我正在使用 Pytorch,我的输入是长度为 341 的序列并输出三个类 {0,1,2} 之一,我想使用 pytorch 训练线性回归模型,我创建了以下类,但在训练期间,损失值开始有数字,然后是inf,然后是NAN。我不知道如何解决。我也尝试初始化线性模型的权重,但它是同一回事。任何建议。
class regression(nn.Module):
def __init__(self, input_dim):
super().__init__()
self.input_dim = input_dim
# One layer
self.linear = nn.Linear(input_dim, 1)
def forward(self, x):
y_pred = self.linear(x)
return y_pred
criterion = torch.nn.MSELoss()
def fit(model, data_loader, optim, epochs):
for epoch in range(epochs):
for i, (X, y) in enumerate(data_loader):
X = X.float()
y = y.unsqueeze(1).float()
X = Variable(X, requires_grad=True)
y = Variable(y, requires_grad=True)
# Make a prediction for the input X
pred = model(X)
#loss = (y-pred).pow(2).mean()
loss = criterion(y, pred)
optim.zero_grad()
loss.backward()
optim.step()
print(loss)
print(type(loss))
# Give some feedback after each 5th pass through the data
if epoch % 5 == 0:
print("Epoch", epoch, f"loss: {loss}")
return None
regnet = regression(input_dim=341)
optim = SGD(regnet.parameters(), lr=0.01)
fit(regnet, data_loader, optim=optim, epochs=5)
pred = regnet(torch.Tensor(test_set.data_info).float())
pred = pred.detach().numpy()
【问题讨论】:
标签: python deep-learning pytorch linear-regression loss