verance
(Luís)
1
Hello, I’m trying to use SegmentationInterpretation module from fastai on my project. However, I get the following error:

dice_loss() got an unexpected keyword argument ‘reduction’

This dice_loss is a custom loss that I added to my model that is better for my problem

```
def dice_loss(input, target):
# pdb.set_trace()
smooth = 1.
input = input[:,1,None].sigmoid()
iflat = input.contiguous().view(-1).float()
tflat = target.view(-1).float()
intersection = (iflat * tflat).sum()
return (1 - ((2. * intersection + smooth) / ((iflat + tflat).sum() +smooth)))
```

Is it possible to use SegmentationInterpretation with custom loss functions? If so, why is this error happening?

Kind regards

All basic losses have a `reduction`

keyword argument. You can either add it and let it do nothing, or do something like:

```
def dice_loss(input, target, reduction='mean'):
# pdb.set_trace()
smooth = 1.
n = input.size(0)
input = input[:,1,None].sigmoid()
iflat = input.contiguous().view(n, -1).float()
tflat = target.view(n, -1).float()
intersection = (iflat * tflat).sum(-1)
dice = (1 - ((2. * intersection + smooth) / ((iflat + tflat).sum(-1) +smooth)))
if reduction == 'mean':
return dice.mean()
elif reduction=='sum':
return dice.sum()
else:
return dice
```

4 Likes

aksg87
(Akshay Goel)
4
Do we have to implement a custom mean .mean() or .sum() method for a custom loss function?

No, tensor have those already implemented