В настоящее время я пытаюсь создать пользовательскую функцию потерь для модели двоичной классификации 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.
Я обычно понимаю, в чем заключается ошибка, но я не знаю, как я могу смоделировать функцию потерь так, чтобы все используемые операции имели градиент! = Нет
Я нашел различныересурсы о том, как смоделировать пользовательские функции потерь, но не удалось адаптировать их к моей функции «фиксированной стоимости»