当前位置:   article > 正文

BCELoss、BCEWithLogitsLoss / 二元交叉熵损失函数(Binary Cross Entropy Loss)

bcewithlogitsloss

BCELoss 和 BCEWithLogitsLoss 都是用于二分类任务的损失函数,但它们在使用上有一些区别。 

BCELoss

input:经过 Sigmoid 函数激活后的预测概率 + 对应的真实标签(一般使用one-hot表示)

介绍

BCELoss:BCELoss 是二元交叉熵损失函数(Binary Cross Entropy Loss)的简写。它的输入是经过 Sigmoid 函数激活后的预测概率对应的真实标签(一般使用one-hot表示)。BCELoss 计算的是预测概率和真实标签之间的二元交叉熵损失,通过最小化该损失来优化模型。

比如我们一个样本y有3个类别,那么我们通过softmax得到 “ y^ = [ 0.2 , 0.5 , 0.3 ] ”一个一个样本的分类结果,这个结果的通俗解释就是:为第一类的概率为0.2,为第二类的概率为0.5,为第三类的结果过0.3。假设这个样本真实类别为第二类,那么我们希望模型输出的结果过应该是y = [ 0 , 1 , 0 ],这个就是标签值。就可以求损失函数了。

示例:

在图片多标签分类时,如果3张图片分3类,会输出一个3*3的矩阵(3张图片属于3种类别的概率,每一行代表一张图片,一行中的3个元素代表属于三种类别的概率)。

在这里插入图片描述

先用Sigmoid给这些值都搞到0~1之间:

在这里插入图片描述
假设Target是:

在这里插入图片描述

下面我们用BCELoss来验证一下Loss是不是0.7194!
在这里插入图片描述

BCEWithLogitsLoss

input:没有经过 Sigmoid 函数激活的预测概率 + 对应的真实标签(一般使用one-hot表示)

简介:

BCEWithLogitsLoss:BCEWithLogitsLoss 结合了 Sigmoid 函数和BCE交叉熵损失。它的输入是未经过 Sigmoid 函数转换的模型输出 logits 和对应的真实标签。BCEWithLogitsLoss 内部会在计算中自动应用 Sigmoid 函数,将 logits 转换为预测概率,然后计算二元交叉熵损失。BCEWithLogitsLoss 的优势在于BCEWithLogitsLoss就是把Sigmoid + BCELoss合成一步,更加高效。

示例:

我们直接用刚刚的input验证一下是不是0.7193:

在这里插入图片描述

举例说明(二分类为例)

  1. import torch
  2. import torch.nn as nn
  3. # 假设我们有一些预测值和目标值
  4. predicted = torch.FloatTensor([2, -1, 0, 5])
  5. target = torch.FloatTensor([1, 0, 1, 0])
  6. # 初始化BCEWithLogitsLoss
  7. criterion = nn.BCEWithLogitsLoss()
  8. # 计算loss
  9. loss = criterion(predicted, target)
  10. print(loss)
  11. # 反向传播计算梯度
  12. loss.backward()

predicted = [2, -1, 0, 5]表示4个样本的预测logits值:

  • 2: 第一个样本被预测为正样本,logits值是2
  • -1: 第二个样本被预测为正样本,logits值是-1
  • 0: 第三个样本被预测为正样本,logits值是0
  • 5: 第四个样本被预测为正样本,logits值是5

备注:什么是logtis?深度学习logits是什么?_logits层_HealthScience的博客-CSDN博客

注意1:这里和交叉熵损失一样,需要先实例化才可以使用, 也就是说,需要:

# 初始化BCEWithLogitsLoss
criterion = nn.BCEWithLogitsLoss()  

# 计算loss
loss = criterion(predicted, target)

而不能直接:

loss = nn.BCEWithLogitsLoss(predicted, target)

注意2:输入的顺序是predict、true,不要搞反

而target = [1, 0, 1, 0] 表示第一个和第三个样本的真实标签为正样本1,第二和第四个样本的真实标签为负样本0

 Pytorch详解BCELoss和BCEWithLogitsLoss_豪哥的博客-CSDN博客_bceloss

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/486204
推荐阅读
相关标签
  

闽ICP备14008679号