如何使用一种具有交叉熵损失的热编码?

我已经尝试过使用热编码对狗品种数据集进行约120个类别的多类别分类。也使用resnet18。但是,当我运行代码时,会显示以下错误。请帮我解决问题。

我的模型的代码如下所示:

model=torchvision.models.resnet18()
op=torch.optim.Adam(model.parameters(),lr=0.001)
crit=nn.NLLLoss()
model.fc=nn.Sequential(nn.Linear(512,120),nn.Dropout(inplace=True),nn.ReLU(),nn.Softmax())
for i,(x,y) in enumerate(train_dl):
    y_oh=torch.FloatTensor(y.shape[0],120)
    y=y.reshape(y.shape[0],1)
    y_oh.zero_()
    y_oh.scatter_(1,y,1)
    y_hat=model(x)
    y_=torch.max(y_hat)
    loss=crit(y,y_)
    op.zero_grad()
    loss.backward()
    op.step
-------------------------------------------------- ------------------------- RuntimeError Traceback(最近一次调用   最后)         6         7 y_hat =模型(x)   ----> 8 loss =暴击(y_oh,y_hat)         9 op.zero_grad()        10 loss.backward()      RuntimeError:预期一维目标张量,不支持多目标
评论