Дизайн Custom Keras Функция потери MSE - PullRequest
0 голосов
/ 03 мая 2019

Я хочу создать пользовательскую функцию потери MSE, которая использует только один элемент из выходного слоя.

То, что у меня сейчас есть, это:

def new_loss(y_true, y_pred):
   index_pred = K.argmax(K.abs(y_pred), axis = -1)
   pred = tf.gather(y_true, index_pred, axis = 1)

   index_true = K.argmin(K.abs(y_true), axis = -1)
   true = tf.gather(y_true, index_true, axis = 1)

   return K.mean(K.sqrt(K.square(K.log(pred)-K.log(true))))

но выдает ошибку,

An operation has `None` for gradient.

Я искал и не могу найти что-нибудь для работы в моем сценарии.

Я работаю с Keras и Tensorflow в качестве бэк-энда.

Заранее спасибо.

EDIT:

Я пытался

def new_loss(y_true, y_pred):
   index_pred = K.argmax(K.abs(y_pred), axis = -1)
   pred = tf.gather(y_pred, index_pred, axis = 1)

   index_true = K.argmin(K.abs(y_true), axis = -1)
   true = tf.gather(y_true, index_true, axis = 1)

   return K.mean(K.sqrt(K.square(K.log(pred)-K.log(true))))

И это не дает ошибки. Так что проблема не в K.argmax / K.argmin.

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