pytorch:多标签分类的损失函数和准确率计算

1 损失函数

我们先用sklearn生成一个多标签分类数据集。

from sklearn.datasets import make_multilabel_classification

X, y = make_multilabel_classification(n_samples=1000,
                                          n_features=10,
                                          n_classes=3,
                                          n_labels=2,
                                          random_state=1)
print(X.shape, y.shape)

在这里插入图片描述
看一下标签长啥样。
在这里插入图片描述
每一行都是0、1标签,1可能有多个,这就是多标签了。
由于仍然是二分类(标签只有0和1),所以激活函数用Sigmoid(对输出的每一个维度用Sigmoid)。这个时候损失函数就是BCELoss。
如果是普通的二分类,Sigmoid的输出是一个值。用 N N N表示样本数量, p n p_n pn表示预测第 n n n个样本为正例的概率, y n y_n yn表示第 n n n个样本的标签,则BCELoss计算公式为:
l o s s = − 1 N ∑ n = 1 N y n × l o g ( p n ) + ( 1 − y n ) × l o g ( 1 − p n ) loss=-\frac{1}{N}\sum_{n=1}^{N}y_n×log(p_n)+(1-y_n)×log(1-p_n) loss=N1n=1

  • 21
    点赞
  • 108
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值