问题代码:
pred = model(input)
_, y_pred = torch.max(pred.data, 1)
loss = loss_func(y_pred, y)
错误出现在CrossEntropyLoss() 上,具体的是在loss_func(y_pred, y)的第一个参数y_pred上,此处应该直接使用模型输出的pred,而不是处理后的与标签y形状相同的y_pred。
pred: ([[ 0.0233, 0.0010],
[ 0.0223, 0.0101],
[ 0.0014, 0.0133],
[ 0.0173, 0.0174]])
y_pred: ([0, 0, 1, 1])
y: ([1, 1, 1, 1])
最近在学习pytorch,敲书上的示例代码,敲着敲着就跟着自己的想法走想当然了…多看文档,避免此类错误。