精华内容
下载资源
问答
  • 分类与多标签分类损失函数

    千次阅读 2020-07-28 16:00:31
    多标签分类任务中,一般采用 sigmoid 作为输出层的激活函数,使用 binary_crossentropy(二分类交叉熵损失函数)作为损失函数,就是将最后分类层的每个输出节点使用sigmoid激活函数激活,然后对每个输出节点和对应...

    使用神经网络处理多分类任务时,一般采用 softmax 作为输出层的激活函数,使用categorical_crossentropy(多类别交叉熵损失函数)作为损失函数,输出层包含k个神经元对应k个类别。

    在多标签分类任务中,一般采用 sigmoid 作为输出层的激活函数,使用 binary_crossentropy(二分类交叉熵损失函数)作为损失函数,就是将最后分类层的每个输出节点使用sigmoid激活函数激活,然后对每个输出节点和对应的标签计算交叉熵损失函数。此时最后一层的输出就不能看成一个分布了,因为加起来不为1,现在把输出层每个神经元看作是一个二项分布, 这相当于将一个多标签问题转化为了在每个标签上的二分类问题。

    展开全文
  • 多标签分类的激活函数和损失函数

    千次阅读 2019-07-16 15:39:58
    于是查阅了一些资料,了解一下分类任务与多标签分类任务的异同。 -分类任务:只有一个标签,但是标签有多种类别。 -多标签分类任务:一条数据可能有一个或者个标签,比如一个病人的眼底检测报告,它可能被...

            刚入门DeepLearning不久,前一段时间一直在学习cifar10的分类,突然最近要做一个多标签的任务,突然有点不知所措,不知从何下手了。于是查阅了一些资料,了解一下多分类任务多标签分类任务的异同。

           - 多分类任务:只有一个标签,但是标签有多种类别。

            -多标签分类任务:一条数据可能有一个或者多个标签,比如一个病人的眼底检测报告,它可能被标记患有糖尿病、高血压多个标签。

            多标签分类任务的特点:1.类别标的数量是不确定的;2.类别标签之间可能存在相互依赖关系。

            -在建立模型的时候,多分类任务一般采用softmax作为输出层的激活函数,用categorical_crossentropy作为损失函数;多标签分类一般采用sigmoid作为输出层的激活函数,用binary_crossentropy作为损失函数。

     

    分类问题名称输出层使用激活函数对应的损失函数
    二分类sigmoidbinary_crossentrppy
    多分类softmaxcategorical_crossentropy
    多标签分类sigmoidbinary_crossentropy

    表来自:https://blog.csdn.net/weixin_33796177/article/details/88022703

    展开全文
  • pytorch多标签分类类别不平衡损失函数focal loss 多标签分类版softmax应用于多标签分类 focal loss 多标签分类版 def criterion(y_pred, y_true, weight=None, alpha=0.25, gamma=2): sigmoid_p = nn.Sigmoid(y_...

    pytorch多标签分类类别不平衡损失函数

    focal loss 多标签分类版

    def criterion(y_pred, y_true, weight=None, alpha=0.25, gamma=2):
        sigmoid_p = nn.Sigmoid(y_pred)
        zeros = torch.zeros_like(sigmoid_p)
        pos_p_sub = torch.where(y_true > zeros,y_true - sigmoid_p,zeros)
        neg_p_sub = torch.where(y_true > zeros,zeros,sigmoid_p)
        per_entry_cross_ent = -alpha * (pos_p_sub ** gamma) * torch.log(torch.clamp(sigmoid_p,1e-8,1.0))-(1-alpha)*(neg_p_sub ** gamma)*torch.log(torch.clamp(1.0-sigmoid_p,1e-8,1.0))
        return per_entry_cross_ent.sum()
    

    softmax应用于多标签分类

    https://mp.weixin.qq.com/s/Ii2sxJUGNvX4CnmtVmbFwA

    def criterion2(y_pred,y_true):
        y_pred = (1 - 2*y_true)*y_pred
        y_pred_neg = y_pred - y_true * 1e12
        y_pred_pos = y_pred - (1 - y_true) * 1e12
        zeros = torch.zeros_like(y_pred[...,:1])
        y_pred_neg = torch.cat((y_pred_neg,zeros),dim=-1)
        y_pred_pos = torch.cat((y_pred_pos,zeros),dim=-1)
        neg_loss = torch.logsumexp(y_pred_neg,dim=-1)
        pos_loss = torch.logsumexp(y_pred_pos,dim=-1)
        return torch.mean(neg_loss + pos_loss)
    
    展开全文
  • 解决多标签多分类损失函数选择及样本不均衡问题的2个帖子 https://cloud.tencent.com/developer/ask/226097 https://discuss.pytorch.org/t/multi-label-multi-class-class-imbalance/37573 主要弄明白 nn....

    问题来源:
    解决多标签多分类中损失函数选择及样本不均衡问题的2个帖子
    https://cloud.tencent.com/developer/ask/226097
    https://discuss.pytorch.org/t/multi-label-multi-class-class-imbalance/37573

    主要弄明白nn.BCEWithLogitsLossnn.MultiLabelSoftMarginLoss有啥区别,下面用一个栗子来测试下,顺便测试了上面提及的自定义损失函数

    from torch import nn  
    import torch  
     
    #重新封装的多标签损失函数
    class WeightedMultilabel(nn.Module):  
        def __init__(self, weights: torch.Tensor):  
            super(WeightedMultilabel, self).__init__()  
            self.cerition = nn.BCEWithLogitsLoss(reduction='none')  
            self.weights = weights  
      
        def forward(self, outputs, targets):  
            loss = self.cerition(outputs, targets)  
            return (loss * self.weights).mean()  
      
    x=torch.randn(3,4)  
    y=torch.randn(3,4)  
    #损失函数对应类别的权重
    w=torch.tensor([10,2,15,20],dtype=torch.float)  
    #测试不同的损失函数
    criterion_BCE=nn.BCEWithLogitsLoss(w)  
    criterion_mult=WeightedMultilabel(w)  
    criterion_mult2=nn.MultiLabelSoftMarginLoss(w)  
      
    loss1=criterion_BCE(x,y)  
    loss2=criterion_mult(x,y)  
    loss3=criterion_mult2(x,y)  
      
    print(loss1)  
    print(loss2)  
    print(loss3)  
      
    # tensor(7.8804)  
    # tensor(7.8804)  
    # tensor(7.8804)
    

    结论:从上面的结果可以看到,3个损失函数其实是等价的- -

    展开全文
  • 3. 多标签分类问题 参考文章 1. 基本概念 2分类 分类任务有两个类别,每个样本属于两个类别中的一个,标签0/1.比如:训练一个图像分类器,判断一张输入图片是否是猫。 分类 分类任务有n个类别,每个样本...
  • 分类一般分为三种情况:二分类、分类和多标签分类多标签分类比较直观的理解是,一个样本可以同时拥有几个类别标签,比如一首歌的标签可以是流行、轻快,一部电影的标签可以是动作、喜剧、搞笑,一本书的标签可以...
  • 交叉熵损失函数原理详解

    万次阅读 多人点赞 2019-08-30 10:28:42
    之前在代码中经常看见交叉熵损失函数(CrossEntropy Loss),只知道它是分类问题中经常使用的一种损失函数,对于其内部的原理总是模模糊糊,而且一般使用交叉熵作为损失函数时,在模型的输出层总会接一个softmax函数,...
  • PyTorch 多分类损失函数

    千次阅读 2020-03-05 00:01:00
    PyTorch提供了丰富的损失函数,而多分类任务用到最多的就是nn.CrossEntropyLoss和nn.NLLLoss了,不妨讨论一下。 nn.CrossEntropyLoss CrossEntropy顾名思义就是交叉熵,概念来自香农的信息论,用于度量两个概率...
  • 注意:当使用categorical_crossentropy损失函数时,你的标签应为类模式,例如如果你有10个类别,每一个样本的标签应该是一个10维的向量,该向量在对应有值的索引位置为1其余为0。 可以使用这个方法进行转换: ...
  • 分类多分类多标签问题及对应损失函数的选择 之前只是了解了一些图像分类的知识,知道它大概的意思,因为笔者的研究最终也可以叫做分类,所以今天有时间来一起整理下图像分类以及对应的损失函数。开始学习~????...
  • PyTorch里的多分类损失函数

    万次阅读 2018-09-10 14:25:55
    最近大热的PyTorch即将推出1.0版,做为各类深度学习任务的最优框架之一,PyTorch提供了丰富的损失函数,而多分类任务用到最多的就是n...
  • 损失函数是衡量预测模型在预测预期结果方面做得有好。求函数最小点最常用的方法是梯度下降法。损失函数就像起伏的山,梯度下降就像从山上滑下来到达最底部的点。 没有一个单一的损失函数可以完美适用于所有类型的...
  • 常见损失函数深度剖析之多分类 ###1.类交叉熵 类交叉熵是类别分类问题的默认损失函数,也叫softmax损失函数(softmax激活层+交叉熵损失函数)。 类交叉熵中,因类别标签进行过0-1独热编码,在输出概率...
  • 分类多分类多标签的基本概念 二分类:表示分类任务中有两个类别,比如我们想识别一幅图片是不是猫。也就是说,训练一个分类器,输入一幅图片,用特征向量x表示,输出是不是猫,用y=0或1表示。二类分类是假设...
  • from keras.utils.np_utils import to_categorical注意:当使用categorical_crossentropy损失函数时,你的标签应为类模式,例如如果你有10个类别,每一个样本的标签应该是一个10维的向量,该向量在对应有值的索引...
  • 损失函数作为建模的一个重要环节,一个针对模型、数据集都合适的损失函数对于建模的好坏至关重要,现查询相关资料,将常见的分类、回归损失函数及常用的 Tensorflow 代码总结于此,仅用于学习交流。
  • 二分类、分类与多标签分类问题使用不同的激活函数和损失函数,结论见文末总结(如果你赶时间可以直接看结论,但建议有时间时回过头来看看分析更有助于理解)。 更人工智能基础知识见 望江小车车的博客 二分类、...
  • 损失函数

    千次阅读 2018-10-23 10:27:22
    1. 损失函数的定义 机器学习模型关于单个...损失函数大致可分为两类:分类问题的损失函数和回归问题的损失函数。在这篇文章中,我将着重介绍回归损失。 本文出现的代码和图表我们都妥妥保存在这儿了: https://n...
  • 平方损失函数与交叉熵损失函数

    万次阅读 2018-05-07 15:21:43
    对于机器学习中常见的损失函数有:平方损失函数与交叉熵损失函数。在本文中将讲述两者含义与响应的运用区别。 2. 平方损失函数 平方损失函数较为容易理解,它直接测量机器学习模型的输出与实际结果之间的距离。...
  • dice coefficient是用于评估两个样本的相似性的统计量,本质上是衡量两个样本的重叠部分。 公式: |x|、|Y|分别表示每个集合中元素数。其中,分子中的系数 2,是因为分母存在重复计算 X 和 Y 之间的共同元素的原因...
  • 常用的分类问题中的损失函数

    万次阅读 2019-04-20 12:43:26
    在监督式机器学习中,无论是回归问题还是分类问题,都少不了使用损失函数(Loss Function)。**损失函数(Loss Function)**是用来估量模型的预测值 f(x) 与真实值 y 的不一致程度。若损失函数很小,表明机器学习...
  • 损失函数是指用于计算标签值和预测值之间差异的函数,在机器学习过程中,有多种损失函数可供选择,典型的有距离向量,绝对值向量等。 上图是一个用来模拟线性方程自动学习的示意图。粗线是真实的线性方程,虚线是...
  • TensorFlow四种分类损失函数

    千次阅读 2019-06-15 11:42:48
    参考文章:https://www.jianshu.com/p/75f7e60dae95 tf.nn.sigmoid_cross_entropy_with_logits( _sentinel=None, labels=None, logits=None, name=None ) tf.nn.weighted_cross_entropy_with_logits( ...
  • 自定义损失函数损失函数章节的结尾,学习自定义损失函数,对于提高分类分割等问题的准确率很有帮助,同时探索新型的损失函数也可以让你文章多多。这里我们介绍构建自定义损失函数的方法,并且介绍可以均衡正负例.....
  • 损失函数(loss function),量化了分类器输出的结果(预测值)和我们期望的结果(标签)之间的差距,这和分类器结构本身同样重要。有很的学者花费心思探讨如何改良损失函数使得分类器的结果最优,因...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 47,896
精华内容 19,158
关键字:

多标签分类损失函数