Есть ли способ заставить keras игнорировать метку при вычислении потери binary_crossentropy? - PullRequest
1 голос
/ 05 апреля 2019

Я пишу пользовательскую функцию потерь для (своего рода) задачи семантической сегментации, в которой я вычисляю двоичную кроссцентропию (используя keras backend) для цели (двумерный массив) и прогнозов. Общая потеря представляет собой сумму 4 различных функций потерь.

В двух из этих функций мне нужно создать настраиваемый целевой массив и вычислить двоичную кроссентропию с этими целями и прогнозами. Здесь я хотел бы игнорировать и не рассчитывать потери, когда метка равна 1 (передний план) в целевом массиве.

В nll_loss () pytorch есть параметр ignore_index, который похож на то, что я пытаюсь сделать.

Я пытаюсь достичь чего-то вроде:

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))

Но для пользовательской функции потерь keras.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...