Pytorch中BCELoss和BCEWithLogitsLoss的差别

Pytorch中BCELoss和BCEWithLogitsLoss的差别

BCELoss

在图片多标签分类时,如果3张图片分3类,会输出一个3*3的矩阵。

在这里插入图片描述

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

在这里插入图片描述

假设Target是:

在这里插入图片描述

BCELoss−1n∑(yn×lnxn+(1−yn)×ln(1−xn))-\frac{1}{n} \sum(y_n \times lnx_n + (1-y_n) \times ln(1-x_n))n1(yn×lnxn+(1yn)×ln(1xn)) ,其中y是target,x是模型输出的值。

所以对于第一行:

  • 第一列 0×ln0.3992+(1−0)×ln(1−0.3992)=−0.50950\times ln0.3992 + (1-0) \times ln(1-0.3992) = -0.50950×ln0.3992+(10)×ln(10.3992)=0.5095
  • 第二列 1×ln0.2232+(1−1)×ln(1−0.2232)=−1.49971 \times ln0.2232 + (1-1) \times ln(1-0.2232) = -1.49971×ln0.2232+(11)×ln(10.2232)=1.4997
  • 第三列 1×ln0.6435+(1−1)×ln(1−0.6435)=−0.44081\times ln0.6435 + (1-1) \times ln(1-0.6435) = -0.44081×ln0.6435+(11)×ln(10.6435)=0.4408

第二行:

  • 第一列 0×ln0.3800+(1−0)×ln(1−0.3800)=−0.47800\times ln0.3800 + (1-0) \times ln(1-0.3800) = -0.47800×ln0.3800+(10)×ln(10.3800)=0.4780
  • 第二列 0×ln0.3044+(1−0)×ln(1−0.3044)=−0.36300 \times ln0.3044 + (1-0) \times ln(1-0.3044) = -0.36300×ln0.3044+(10)×ln(10.3044)=0.3630
  • 第三列 1×ln0.3241+(1−1)×ln(1−0.3241)=−1.12671\times ln0.3241 + (1-1) \times ln(1-0.3241) = -1.12671×ln0.3241+(11)×ln(10.3241)=1.1267

第三行:

  • 第一列 1×ln0.6281+(1−1)×ln(1−0.6281)=−0.46511\times ln0.6281 + (1-1) \times ln(1-0.6281) = -0.46511×ln0.6281+(11)×ln(10.6281)=0.4651
  • 第二列 0×ln0.4689+(1−0)×ln(1−0.4689)=−0.63280 \times ln0.4689 + (1-0) \times ln(1-0.4689) = -0.63280×ln0.4689+(10)×ln(10.4689)=0.6328
  • 第三列 1×ln0.3834+(1−1)×ln(1−0.3834)=−0.95871\times ln0.3834 + (1-1) \times ln(1-0.3834) = -0.95871×ln0.3834+(11)×ln(10.3834)=0.9587

去掉负号求个均值:
0.5095+1.4997+0.40083=0.81670.4780+0.3630+1.12673=0.65590.4651+0.6328+0.95873=0.6855 \frac{0.5095+ 1.4997+0.4008}{3} = 0.8167 \\ \frac{0.4780+0.3630+1.1267}{3} = 0.6559 \\ \frac{0.4651+ 0.6328 + 0.9587}{3} = 0.6855 30.5095+1.4997+0.4008=0.816730.4780+0.3630+1.1267=0.655930.4651+0.6328+0.9587=0.6855

再取个平均:
0.8167+0.6559+0.68553=0.7194 \frac{0.8167+0.6559+0.6855}{3} = 0.7194 30.8167+0.6559+0.6855=0.7194

下面我们用BCELoss来验证一下Loss是不是0.7194:

在这里插入图片描述

BCEWithLogitsLoss

BCEWithLogitsLoss就是把SigmoidBCELoss合成一步。我们直接用刚刚的input验证一下是不是0.7193:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值