2017-02-02 12 views
3

ケラスフレームにカスタム目的関数を実装しようとしています。 それぞれ、テンソルの2つの引数y_trueとy_predをとる加重平均関数。重み情報はy_trueテンソルから導かれる。テンソルの加重平均

テンソルフローに加重平均関数がありますか? この種の損失機能を実装する方法に関するその他の提案はありますか?

My機能は、次のようなものになります。

機能(y_true、y_pred) A =(y_true-y_pred)** 2 ワット - y_trueは平均返す として(y_trueから誘導、同じ形状のテンソルをA、重み= w)< - スカラー

y_trueとy_predは3Dテンソルです。

+0

あなたは質問のように、フレーズ、これをする必要があります。投稿には現在1つが含まれていません。 – PaulNUK

答えて

1

kerasの既存目標の1つ(損失とも呼ばれる)をhereから使用することができます。

あなたはまた、独自のカスタム機能の喪失実装することがあります。

from keras import backend as K 

def my_loss(y_true, y_pred): 
    return K.mean(K.square(y_pred - y_true), axis=-1) 

# Let's train the model using RMSprop 
model.compile(loss=my_loss, optimizer='SGD', metrics=['accuracy']) 

予告Kモジュールを、そのkerasは、あなたが完全にkerasの性能を活用するために使用するバックエンドパフォーマンスから気にしない限り、このような何かを行ういけません問題:

def my_bad_and_slow_loss(y_true, y_pred): 
    return sum((y_pred - y_true) ** 2, axis=-1) 

具体的なケースについては、援助が必要な場合は、目的の機能を記述してください。

更新

あなたは重みを提供するために、これを試すことができます - 損失関数としてW

def my_loss(y_true, y_pred): 
    W = np.arange(9)/9. # some example W 
    return K.mean(K.pow(y_true - y_pred, 2) * W) 
+0

ありがとうございました! mean_squared_errorはちょうど良いことですが、私は各エントリーに重みを適用する必要があります。現在の課題は、cnn(エンコード・デコード・アーキテクチャ)によるセマンティック・セグメンテーションです。重いアンバランスな2つのクラス。私はケラスの体重クラスやサンプルウェイトについて知っていますが、クラス間の比率はイメージごとに異なります。これは私がそれに応じて各ピクセルの係数を適用する重みテンソルを構築することを検討している理由です。あなたのケースの例を –

+0

更新しました。より多くの助けが必要な場合は、作成しようとしている正確な計算を投稿してください。 – ShmulikA

関連する問題