Keras RStudio自定义丢失功能

时间:2017-11-15 23:42:16

标签: keras rstudio

我正在使用RStudio中的keras R包。 我想要使​​用一个使用自定义损失函数的模型;具体而言,(-1)*泊松模型的对数似然。我将对数平滑为ln(0.0001 + x ^ 2)/ 2。按照this article中的示例编写

K <- backend()

poisson <- function(y_true, y_pred){
  K$sum(y_pred - y_true * K$log(y_pred^2 + 1e-4)/2 + lgamma(y_true+1))
}

这里我混合了来自“后端”源的Keras使用的函数,例如K $ log,以及我使用的R函数,例如lgamma,因为K $ lgamma引发了错误。 示例中的其余命令确实运行并产生了一些输出。

问题: 1)可以在RStudio中运行的keras中混合和匹配功能吗? 2)如何测试函数的功能?我试过了

poisson(1:5,3:7)

我收到错误

 Error in py_call_impl(callable, dots$args, dots$keywords) : 
  TypeError: Input 'y' of 'Mul' Op has type float32 that does not match type int32 of argument 'x'.

1 个答案:

答案 0 :(得分:1)

我想在自定义丢失函数中混合R和Keras函数是一个坏主意,这里为什么:y_true,y_pred它不是R向量,但是Keras张量,这是你的错误的来源。