神经网络简单示例中的pytorch交叉熵错误

H1,我正在尝试制作满足简单公式的NN模型。

y = X1^2 + X2^2


但是当我将 CrossEntropyLoss 用于损失函数时,我收到两个不同的错误消息。

首先,当我设置这样的代码时


x = torch.randn(batch_size, 2)

y_hat = model(x)

y = answer(x).long()


optimizer.zero_grad()

loss = loss_func(y_hat, y)

loss.backward()

optimizer.step()

我收到这条消息


RuntimeError: Assertion `cur_target >= 0 && cur_target < n_classes' failed.  at 

c:\programdata\miniconda3\conda-bld\pytorch_1533090623466\work\aten\src\thnn\generic/Cl 

assNLLCriterion.c:93


其次,我像这样更改代码


x = torch.randn(batch_size, 2)

y_hat = model(x)

y = answer(x).long().view(batch_size,1,1)


optimizer.zero_grad()

loss = loss_func(y_hat, y)

loss.backward()

optimizer.step()

然后我收到消息


RuntimeError: multi-target not supported at c:\programdata\miniconda3\conda-bld\pytorch_1533090623466\work\aten\src\thnn\generic/ClassNLLCriterion.c:21

我怎么解决这个问题?谢谢。(对不起我的英语)


芜湖不芜
浏览 327回答 1
1回答

HUX布斯

您使用了错误的损失函数。CrossEntropyLoss通常用于分类问题,而您的问题是回归问题。因此,您应该使用用于回归的损失,例如均方误差损失、L1 损失等任务。看看这个、这个、这个和这个。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python