Я пытаюсь реализовать функцию потерь в Керасе, которая может делать следующее:
Предположим, что y0, y1, ..., yn - модель пакетный вывод для пакетного ввода x0, x1, ..., xn, здесь batch_size - это n + 1, выход yi для каждого xi - скалярное значение, которое я хочу, чтобы функция потерь вычисляла полную потерю для этой партии следующим образом:
K.log (K.sigmoid (у1-у0)) + K.log (K.sigmoid (у2-у1)) + ... K.log (K.sigmoid (уп-ин-1))
Я думал использовать лямбда-слой, чтобы сначала преобразовать пакетный вывод [y0, y1, ..., yn] в [y1-y0, y2-y1, ..., yn-yn-1], а затем использовать настраиваемая функция потерь на преобразованном выходе.
Однако я не уверен, может ли Keras понять, что в лямбда-слое нет веса для обновления, и мне неясно , как Keras будет распространять градиент обратно через слой Lambda , как Keras обычно требует, чтобы каждый слой / функция потерь работала с одним входом сэмпла, но мой слой будет принимать весь выход партии сэмплов. Кто-нибудь решал подобные проблемы раньше? Спасибо!