自定义损失和切片(Keras R)

时间:2018-10-04 11:13:04

标签: r neural-network keras loss-function

我正在尝试在Keras [R]中编写一个简单的自定义损失,并且遇到了一些麻烦。考虑一个简单的网络,该网络输出一个2维的向量,例如

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

现在,让我们假设(我知道,这很愚蠢),有人想要这样的损失:

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

其中y_truth是一维的,而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 ...

[编辑] 似乎以下变体有效:

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

0 个答案:

没有答案