【深度学习】Cross Entropy Loss

本文探讨了Cross Entropy Loss(CE)在深度学习中的应用,特别是在Pytorch和TensorFlow中的实现。CE通常用于类间互斥的分类问题,但面对非互斥或多标签分类时需要特殊处理。博客介绍了CE的由来、TensorFlow中的CE实现,包括sigmoid_cross_entropy_with_logits和softmax_cross_entropy_with_logits等,并对比了Pytorch中CE、BCE以及MultiLabelSoftMarginLoss的区别和使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Cross Entropy Loss (CE)被经常用在分类问题中,但之前也没仔细了解过其中一些细节。本博客主要针对Pytorch中对CE的支持,但也结合了对TensorFlow中的CE的支持。

其中本博客参考总结了大量其他博客的内容,在文中给出了链接,这些知识需要读者们按需自己点开阅读。但由于CE其实很基本,大家多了解一点CE的由来,Pytorch和TensorFlow对其工程上的实现,也没什么坏处。码字不易,读者若是觉得有用,请点个赞支持一下博主。

起因

最常见的分类问题是类间互斥的分类,也就是说网络输出的每个类的score要送入Softmax,以达到所有类别的prob在0~1之间,而且加起来等于1。但其实有些分类问题不是类间互斥,例如一张图片中既包含猫,也包含狗。

其实我关注到这个问题的原因是,在检测问题中,有个要预测的值是表示“box是否是包含object,objectness”,这本身是一个0-1分类问题。但随着检测方法的发展,这个值的label变的并不是0或1,而是加入了iou等一些考虑因素,也就是label=objectness*IoU(pred_box,gt_box)。

这就出现了两个问题:
1)label不再是0-1
2) 所有类别prob加起来也不再是1

这就使得pytorch中的CrossEntropyLoss不再适用。以下部分将对如下方面进行详解:
1)CE的由来
2)Tensorflow中的CE是怎么定义的
3)pytorch中的CE是怎么定义的
4)pytorch中CE和BCE等的区别

Cross Entropy Loss的由来

网上有很多,我主要是看的这个知乎回答,通过这个回答我们可以得到如下结论:
1)CE的由来可以由信息熵,KL散度推得
2)如果使用sigmoid

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值