根据[医]火把多 of nn.BCEWithLogitsLoss
,pos_weight
是一个可选的参数a,它考虑了正面例子的权重。我不完全理解页面中的"pos_weight >1增加回忆和pos_weight <1提高精确度“的说法。你们怎么理解这句话的?
发布于 2022-02-09 14:53:36
具有logits损失的二进制交叉熵(nn.BCEWithLogitsLoss
,等价于F.binary_cross_entropy_with_logits
)是乙状结肠层(nn.Sigmoid
),其次是二进制交叉熵损失(nn.BCELoss
)。一般情况下,假设您处于多标签分类任务中,即可以用多个类标记单个输入。一个常见的子案例是有一个类:二进制分类任务。如果您将q
定义为预测类的张量,并定义p
,则基础真理[0,1]
对应于每个类的真实概率。
二元交叉熵的显式是:
z = torch.sigmoid(q)
loss = -(w_p*p*torch.log(z) + (1-p)*torch.log(1-z))
引入w_p
__,即与每个类的真正标签相关联的权重。有关这个职位使用的加权方案的更多详细信息,请阅读BCELoss
。
对于给定的班级:
precision = TP / (TP + FP)
recall = TP / (TP + FN)
然后,如果w_p > 1
,它增加了对正分类的权重(分类为真)。这将倾向于增加假阳性(FP),从而降低精度。类似地,如果是w_p < 1
,我们将减少真类的权重,这意味着它将倾向于增加假阴性(FN),从而降低回忆。
https://stackoverflow.com/questions/71051342
复制相似问题