首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >pytorch python中无法使用多目标损失函数

pytorch python中无法使用多目标损失函数
EN

Stack Overflow用户
提问于 2021-09-24 14:21:56
回答 1查看 183关注 0票数 0

我无法在pytorch中对多标签分类使用损失函数这是我的损失函数:

代码语言:javascript
运行
复制
 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

在试图获得损失时:

代码语言:javascript
运行
复制
model.loss(model(xtrain),ytrain)

它显示一个错误:

代码语言:javascript
运行
复制
RuntimeError: 1D target tensor expected, multi-target not supported

我也在cross_entropy上尝试过:

代码语言:javascript
运行
复制
F.cross_entropy 

但是这个错误仍然出现,在pytorch中是否存在用于multi_label分类的内置损失

EN

回答 1

Stack Overflow用户

发布于 2021-09-24 14:56:16

我不相信有一个计算多标签分类交叉熵的内置方法。F.nll_lossF.cross_entropy仅适用于单标签任务(这就是它需要密集标签的原因)。但是,您可以自己实现它。

  • 如果pred包含输出对数,则需要提取概率分布并应用负对数似然。这是dim=1)

的softmax交叉熵损失dim=1) *标签

  • 如果每个输出分量彼此独立,则将sigmoid应用于logits,并将每个输出分量视为具有负对数似然的0/1分类任务。这是S形交叉熵loss:act =torch.log( (1-y_true)*-torch.log(1-act)

)+ torch.sigmoid(pred) >>> y_true*-torch.log(act) +torch.log

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69316599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档