我正在使用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'.
答案 0 :(得分:1)
我想在自定义丢失函数中混合R和Keras函数是一个坏主意,这里为什么:y_true,y_pred它不是R向量,但是Keras张量,这是你的错误的来源。