赞
踩
我们了解完CrossEntropyLoss之后,BCELoss就十分好理解了,它全称为Binary Cross Entropy Loss,顾名思义就是CrossEntropyLoss的特殊二分类情况。
BCELoss的计算公式如下:
其中是每个类别的权重,默认的全为1,
表示该类输出的概率,
表示该类的真值。
实际上就是把多分类特殊化为二分类,公式与交叉熵公式相同。
这里需要注意的是,公式里并不包含Softmax,这意味着网络的输出只有一个维度,表示预测的概率。因此网络最后一层需要加上Sigmoid函数来保证输出在0-1之间。
以下代码为pytorch官方BCELoss代码,可以看到里面有几个参数,我们大多数情况下使用默认参数设置就好。
torch.nn.BCELoss(weight=None, size_average=None, reduce=None, reduction='mean')
其中:
- import torch
- import torch.nn as nn
-
- a = torch.randn(3)
- b = torch.Tensor([0, 1, 0])
-
- criterion = nn.BCELoss()
- c = criterion(torch.sigmoid(a), b)
- print(c)
-
业务合作/学习交流+v:lizhiTechnology
如果想要了解更多损失函数相关知识,可以参考我的专栏和其他相关文章:
【损失函数】(一) L1Loss原理 & pytorch代码解析_l1 loss-CSDN博客
【损失函数】(二) L2Loss原理 & pytorch代码解析_l2 loss-CSDN博客
【损失函数】(三) NLLLoss原理 & pytorch代码解析_nll_loss-CSDN博客
【损失函数】(四) CrossEntropyLoss原理 & pytorch代码解析_crossentropyloss 权重-CSDN博客
【损失函数】(五) BCELoss原理 & pytorch代码解析_bce损失函数源码解析-CSDN博客
如果想要了解更多深度学习相关知识,可以参考我的其他文章:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。