Пользовательские потери и нарезки (Keras R) - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь написать простую потерю в Керасе [R] и испытываю небольшие проблемы.Рассмотрим простую сеть, которая выдает вектор измерения 2, например,

  model <- keras_model_sequential() 
  model %>% layer_dense(units = 2, input_shape = c(1))

Теперь давайте предположим (я знаю, что это глупо), что кто-то хотел бы потерю, которая гласит:

                      LOSS = (y_truth - y_pred[1])**2

, где y_truth является 1-мерным, а y_pred, выходной сигнал сети, является 2-мерным (поэтому один полностью игнорирует второе измерение).Следующее, похоже, не работает:

my_loss <- function(y_true, y_pred){
  K <- backend()
  loss <- K$mean( K$pow(y_true - y_pred[,1],2))) 
  return(loss)
}

Я пробовал несколько вариантов, но безуспешно.Любая идея, как это сделать?

Спасибо!

PS: что я действительно пытаюсь сделать, это написать функцию потерь, которая дала бы мне гауссовскую логарифмическую вероятность.Выход сети будет означать среднее значение и log_variance ...

[EDIT] кажется, что работает следующий вариант:

my_loss <- function(y_true, y_pred){
  K <- backend()
  loss <- K$mean( K$pow(y_true - y_pred[,1:2],2))) 
  return(loss)
}
...