2017-11-11 21 views
1

私は、ニューラルネットワーク出力のドメイン上で積分である追加の項を持つKerasでカスタム損失関数を定義しようとしています。だから、これは次のようになります。カスタム積分損失期間Keras

integral

キーポイントは、私はちょうどデータを訓練ではない、指定したドメイン全体での積分動作することです。私は積分を評価するために任意の形状の直交を使用しても構いません。評価する必要があります。現時点では、ドキュメントに記載されている限り、これはカスタム損失ではできません。y_predy_trueへのアクセスのみを提供するためです。

これをKerasで達成する方法はありますか?

+0

モデルを定義する方法(特に出力)の詳細を追加できますか? –

答えて

-1

アイデアはちょうど、(全体的に)あなたがいずれかの内部(ローカル)または外部にこれを行うことができ、損失関数を余分な変数を定義kerasバックエンド機能を使用している場合:

import keras.backend as K 

myDomain = K.variable(range(100))/10 #for instance 

def custom_loss(y_true,y_pred): 
    localVar = K.variable([[1,2],[3,1]]) 

    return calculationsWith(y_true,y_pred,localVar,myDomain) 

それはあなたが来るの機能を使用することが重要です計算を行うためにバックエンドから。 (Kから、またはtensoflow、theanoまたはCNTKから直接)。

+0

アイデアは、自分のデータに依存しない点でネットワーク自体を評価する必要があるということです。私は損失機能の中でネットワークを評価することが許されているかどうか、私の疑問の一部になると思いますか?ネットワークがステートフルなので状況が複雑になるかもしれないが、私は間違っている可能性がある。もし私がそうしても、Kerasは引き続き自動差別化を管理します。 – pragmatist1

+0

バックエンド関数を使い続け、 'y_pred'値を放棄しない限り、それは微分可能です。しかし、この評価は、トレーニングバッチ間で行われなければならず、最初に評価し、値を保存してから、バッチに適合させる必要があります。評価自体は差別化に関する一定の値とみなされます。 –

関連する問題