4

I'm writing a custom loss function for a (sort of) semantic segmentation task where I compute binary crossentropy (using keras backend) for the target (2-d array) and predictions. The overall loss is a sum of 4 different loss functions.

In two of those functions I need to make a customized target array and compute binary crossentropy with these targets and the predictions. Here I would like to ignore and not calculate the loss where label is 1 (foreground) in the target array.

In pytorch's nll_loss() there is a parameter 'ignore_index' which is similar to what I'm trying to do.

I'm trying to achieve something like:

def binary_crossentropy(y_true, y_pred, ignore_label=1):
    if ignore_label == 1:
        return -(1-y_true)*log(1-y_pred)
    if ignore_label == 0:
        return -y_true*log(y_pred)

    return -(y_true*log(y_pred) + (1-y_true)*log(1-y_pred))

But for a keras custom loss function.

0 Answers0