Pytorch tversky损失函数

楼主最近疯狂Pytorch
做的项目是关于冠状动脉血管分割的
看了很多论文,建议修改loss函数解决不平衡的分类目标
但是只要换成默认的BCEloss
网络训练的dice指数一直是0。。。
。。。
。。。
。。。
只能勉强用微笑掩盖自己的泪水
疯了好久
。。。
。。。
只要换掉默认的BCE损失函数
训练的dice指数bee为0
且不随时间改变
稳定的程度简直让我!@#¥%……&**…………%#
直到看见了这篇博文
传送门

写的东西简直太棒了,
从原理到使用
以及keras源码
我疯狂推崇该篇博文

以下是我实现的pytorch版本的其中我需要的tversky损失函数:

def tversky_loss(inputs, targets, beta=0.7, weights=None):
    batch_size = targets.size(0)
    loss = 0.0

    for i in range(batch_size):
        prob = inputs[i]
        ref = targets[i]

        alpha = 1.0-beta

        tp = (ref*prob).sum()
        fp = ((1-ref)*prob).sum()
        fn = (ref*(1-prob)).sum()
        tversky = tp/(tp + alpha*fp + beta*fn)
        loss = loss + (1-tversky)
    return loss/batch_size

呕心沥血写这个损失函数
看上去没几行
花了足足三天。。。
太难了
不是看代码看不懂
而是别人的代码都是加了什么fastai和inferno库的
我还特别笨,集成不上这两个库
要是对你有帮助了,记得随手刘赞

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值