我正在尝试在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)
}