Я пытаюсь создать пользовательскую функцию потерь в Керасе.Я хочу вычислить функцию потерь на основе входных данных и прогнозируемого выхода нейронной сети.Я создал пользовательскую функцию потерь, которая принимает y_true
, y_pred
и t
в качестве аргументов.t
- это переменная, которую я хотел бы использовать для вычисления пользовательской функции потерь.У меня есть две части в функции потерь (пожалуйста, обратитесь к приложенному изображению)
Я могу создать первую часть функции потерь (которая является среднеквадратичной ошибкой).Я хотел бы нарезать тензор y_pred
и назначить его трем тензорам (y1_pred
, y2_pred
и y3_pred
).Есть ли способ сделать это непосредственно в Keras, или я должен использовать для этого тензорный поток?Как я могу рассчитать градиент в кератах?Нужно ли создавать сеанс для вычислений loss2
?
def customloss(y_true, y_pred, t):
loss1 = K.mean(K.square(y_pred - y_true), axis=-1)
loss2 = tf.gradients(y1_pred, t) - y1_pred*y3_pred
return loss1+loss2
Спасибо. 