dice损失函数

18 篇文章 1 订阅
def dice_coefficient(y_true_cls, y_pred_cls,
                     training_mask):
    '''
    dice loss
    :param y_true_cls:
    :param y_pred_cls:
    :param training_mask:
    :return:
    '''
    eps = 1e-5
    intersection = torch.sum(y_true_cls * y_pred_cls * training_mask)
    union = torch.sum(y_true_cls * training_mask) + torch.sum(y_pred_cls * training_mask) + eps
    loss = 1. - (2 * intersection / union)

    return loss

今天使用dice损失函数,发现dice损失是负值,也就是说(2 * intersection / union)的值大于1。这绝对是错的。后续发现在最后一个卷积中使用的是nn.ReLU(inplace=True)激活函数。relu激活函数仅对负值进行归零操作,对正值不处理。因此会出现像素值的预测概率大于1的情况。因此换为,nn.Sigmoid()解决该问题。

nn.Conv2d(16, num_class, kernel_size=1),nn.ReLU(inplace=True)
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
多分类Dice损失函数是一种用于语义分割任务的损失函数。它是基于Dice系数的度量,用于衡量模型预测结果与真实标签之间的相似度。Dice损失函数可以将预测结果与真实标签进行对比,并优化模型参数以最大化Dice系数。 在多分类任务中,每个类别都有一个对应的Dice损失函数。常见的做法是使用多个Dice损失函数对每个类别进行独立的分割,然后将这些损失函数整合到一个总的损失函数中。这个总的损失函数被称为Generalized Dice损失函数。 Generalized Dice损失函数的计算方式如下: 1. 计算每个类别的Dice系数:对于每个类别i,将模型预测结果与真实标签进行相交运算并计算相交区域的像素数量,然后计算相交区域的大小与预测区域和真实区域大小之和的比值,得到Dice系数Di。 2. 计算类别权重:对于每个类别i,计算其在真实标签中的像素数量与总像素数量的比值,得到类别权重Wi。 3. 将Dice系数与类别权重相乘并求和:将每个类别的Dice系数Di与对应的类别权重Wi相乘,并将所有类别的结果求和,得到Generalized Dice损失函数L。 通过最小化Generalized Dice损失函数,模型可以更好地适应多分类语义分割任务,提高预测结果的准确性。 参考文献: - 引用: 【损失函数合集】超详细的语义分割中的Loss大盘点 - 引用: Tensorflow入门教程(四十七)——语义分割损失函数总结 - 引用: 论文地址:A survey of loss functions for semantic segmentation code地址:Semantic-Segmentation-Loss-Functions

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值