2017-11-15 3 views
0

私はRStudioでkeras Rパッケージを使用しています。 私は、カスタマイズされた損失関数を使用するモデルに適合したいと思います。具体的には、ポアソンモデルの(-1)*対数尤度である。私はln(0.0001 + x^2)/ 2として対数を平滑化しています。たとえば、次のthis articleに私は、そのような私はK $関数lgammaので使用関数lgamma、として、そのようなKの$ログとして、「バックエンド」のソースからKerasで使用する機能とを混合し、そしてR機能しています。ここ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)) 
} 

を書きますエラーを投げた。 例の残りのコマンドが実行され、出力が生成されました。

質問: 1)RStudioで動作しているケラスで機能を混在させることはできますか? 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が、 Kerasテンソルとこれはあなたのエラーの原因です。

+0

実際には、Rベクトルに変換し、K $ eval()およびK $ constant()関数を使用してそれを行うことができます。 https://github.com/rstudio/keras/issues/59をご覧ください – madpower2000

関連する問題