Я пытаюсь написать простую потерю в Керасе [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)
}