Керас нестандартная потеря "Нет" для градиента - PullRequest
0 голосов
/ 02 июня 2019

В настоящее время я пытаюсь создать пользовательскую функцию потерь для модели двоичной классификации keras.TP, TN, FP, FN имеют в результате различное уменьшение прибыли.

FN уменьшает прибыль на 72 $ TP уменьшает прибыль на 28,2 $ TN уменьшает прибыль на 0 $ FP уменьшает прибыль на 5,7 $

Функция потери тока выглядит следующим образом, но выдает ошибку, указанную ниже.

def custom_loss(y_true, y_pred):
    TP = K.all(K.stack([y_true, y_pred], axis=0), axis=0)
    # FP = K.all(K.stack([K.square(tensorflow.subtract(y_true, 1)), y_pred]))
    # FN = K.all(K.stack([y_true, K.square(y_pred-K.constant(1))]))

    return K.sum(K.switch(TP, K.ones_like(y_true), K.zeros_like(y_true))*K.constant(28.2))



ValueError: An operation has `None` for gradient. Please make sure that all of your ops have a gradient defined (i.e. are differentiable). Common ops without gradient: K.argmax, K.round, K.eval.

Я обычно понимаю, в чем заключается ошибка, но я не знаю, как я могу смоделировать функцию потерь так, чтобы все используемые операции имели градиент! = Нет

Я нашел различныересурсы о том, как смоделировать пользовательские функции потерь, но не удалось адаптировать их к моей функции «фиксированной стоимости»

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