这个函数计算的是Dice Loss,其中inputs
是模型的输出,targets
是真实标签。在函数中,我们首先使用sigmoid
将输出转换为概率值,然后将其展平为二维矩阵,计算交集和并集,最后计算Dice系数并返回其均值。
def dice_loss(inputs, targets):
num = targets.size(0)
inputs = torch.sigmoid(inputs)
flat_inputs = inputs.view(num, -1)
flat_targets = targets.view(num, -1)
intersection = torch.sum(flat_inputs * flat_targets, dim=1)
union = torch.sum(flat_inputs, dim=1) + torch.sum(flat_targets, dim=1)
dice_scores = 2 * intersection / (union + 1e-8)
return 1 - dice_scores.mean()
需要注意的是,在使用这个函数之前,需要先将inputs
和targets
转换为Tensor,并将其移动到GPU上(如果有的话)。