交叉熵/二分类交叉熵及各自对应的focal loss(附pytorch代码)

对于二分类问题,使用softmax或者sigmoid,在实验结果上到底有没有区别(知乎上相关问题讨论还不少)。最近做的相关项目也用到了这一块,从结果上来说应该是没什么区别,但是在模型上还是存在一定差异性的(可以应用于多模型融合、在相关比赛项目当中还是可以使用的)。相关知识和代码总结如下。

以下主要分为4个部分:交叉熵损失、二分类交叉熵损失、Focal loss及二分类Focal loss

1. CE_loss

import torch.nn.functional as F
在这里插入图片描述
F.cross_entropy是log_softmax和nll_loss的组合,log_softmax就是log和softmax的组合,nll_loss为:
在这里插入图片描述
注意,这里面包括了将output进行Softmax操作的,所以直接输入output即可。其中还包括将label转成one-hot编码,所以直接输入label。该函数限制了target的类型为torch.LongTensor。label_tgt = make_variable(torch.ones(feat_tgt.size(0)).long())可在后边直接.long()。其output,label的shape可以不一致。
在这里插入图片描述
里面有一个weight参数,默认为0,是为解决类别样本不平衡问题的,对于含有样本非常多的某一类别,可以使其在loss中wei

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值