Я пытаюсь реализовать эту функцию потерь: MCFD_loss_function из этого документа (P6): Потеря функций
Поэтому я создал новую функцию, подобную этой:
def mcfd_loss(y_true, y_pred):
return K.sum( # ∑
K.cast(
K.greater( # only values greater than 0 (+ float32 cast)
K.dot(K.sign(y_pred), # π
K.sign(y_true))
, 0)
, 'float32')
)
Но когда я начинаю тренировку, возникает ошибка:
ValueError: Операция имеет
None
для градиента. Пожалуйста, убедитесь, что все ваши операции имеют определенный градиент (то есть, дифференцируемы). Обычные операции без градиента: K.argmax, K.round, K.eval.
Я не знаю, какой момент я упустил. Ошибка, кажется, возникает, потому что я использую большую функцию. Я не знаю, что означает эта ошибка и как исправить мою проблему.
Благодарю.