BCELoss

文章通过两个示例解释了单标签和多标签二分类问题中,使用Sigmoid激活函数和BinaryCrossEntropy损失函数进行计算的过程。在单标签情况下,计算涉及sigmoid转换后的概率与目标标签的交叉熵损失。在多标签场景下,处理方式类似,对每个样本的每个标签分别计算损失并平均。
摘要由CSDN通过智能技术生成

1:单标签二分类:N是样本数,Yn是标签。范围在**[0,1]**。
公式:
在这里插入图片描述
举个例子:

input = torch.Tensor([[0.8, 0.9, 0.3]])#, [0.8, 0.9, 0.3], [0.8, 0.9, 0.3], [0.8, 0.9, 0.3]])
target = torch.Tensor([[1, 1, 0]])#, [1, 1, 0], [1, 1, 0], [1, 1, 0]])
print(input.size())
print(target.size())
output = torch.sigmoid(input)
loss = F.binary_cross_entropy(input, target, reduction='mean')
print(loss)

input是三个样本,对应三个标签。
根据公式可以计算为:-1/3[(1xlog(sigmoid(0.8))+1xlog(sigmoid(0.9))+(1-0)x(log(1-(sigmoid(0.3)))
2:对于多标签的二分类。
计算公式:
在这里插入图片描述

input = torch.Tensor([[0.8, 0.9, 0.3], [0.8, 0.9, 0.3], [0.8, 0.9, 0.3], [0.8, 0.9, 0.3]])
target = torch.Tensor([[1, 1, 0], [1, 1, 0], [1, 1, 0], [1, 1, 0]])
print(input.size())
print(target.size())
output = torch.sigmoid(input)
print(output)
loss = F.binary_cross_entropy(output, target, reduction='mean')
print(loss)

首先要明白是几个样本,每个样本有几个标签。
答:有四个样本,非九个样本,每个样本三个标签,非0,1两个标签,看size也能看出来。
首先计算每个样本里面三个数据的损失:
在这里插入图片描述
第二第三个第四个同理。
总共损失就等于(0.522*4(每个样本数一样))/4(样本数)=0.522。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值