我无法在pytorch中对多标签分类使用损失函数这是我的损失函数:
def loss(self,pred,y_true):
pred = torch.tensor(pred)
y_true = torch.tensor(y_true)
loss = nn.NLLLoss()(torch.log(pred), y_true)
return loss在试图获得损失时:
model.loss(model(xtrain),ytrain)它显示一个错误:
RuntimeError: 1D target tensor expected, multi-target not supported我也在cross_entropy上尝试过:
F.cross_entropy 但是这个错误仍然出现,在pytorch中是否存在用于multi_label分类的内置损失
发布于 2021-09-24 14:56:16
我不相信有一个计算多标签分类交叉熵的内置方法。F.nll_loss和F.cross_entropy仅适用于单标签任务(这就是它需要密集标签的原因)。但是,您可以自己实现它。
pred包含输出对数,则需要提取概率分布并应用负对数似然。这是dim=1)的softmax交叉熵损失dim=1) *标签
0/1分类任务。这是S形交叉熵loss:act =torch.log( (1-y_true)*-torch.log(1-act))+ torch.sigmoid(pred) >>> y_true*-torch.log(act) +torch.log
https://stackoverflow.com/questions/69316599
复制相似问题