2017-11-15 7 views
0

내가 RStudio에서 keras R 패키지를 사용하고 있습니다. 나는 사용자 정의 손실 함수를 사용하는 모델에 맞게 원하는; 특히 Poisson 모델에 대한 (-1) * log-likelihood입니다. 나는 대수를 ln (0.0001 + x^2)/2로 부드럽게합니다. this article의 예에 따라 나는 내가 사용 등 lgamma 등 K의 $ 로그 및 R 기능과 "백엔드"소스에서 Keras에서 사용하는 기능을, 혼합하고 여기에Keras RStudio 사용자 정의 손실 함수

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)) 
} 

쓰기 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

내가 나쁜 생각이 왜 여기에 사용자 정의 손실 함수에 R과 Keras 기능을 모두 혼합 같아요 얻을 : y_true를, 그것은 R 벡터 아니다 y_pred하지만, 케사스 텐서스 (Keas tensors) 이것은 오류의 원인입니다.

+0

사실 당신은 K $의 평가()와 K $ 상수() 함수를 사용하여 다시 R 벡터로 변환하여 수행 할 수 있습니다. https://github.com/rstudio/keras/issues/59에서 살펴보십시오. – madpower2000

관련 문제