2017-12-04 12 views
2

私はケラスでトリプレット損失関数を実装しています。一般に、損失関数は、地面の真理を引数にして予測値を取る。しかし、トリプレットの損失はラベルを使用せず、出力のみを使用します。私はただ一つのパラメータで関数を記述しようとした:ケラスでy_trueを使用しないカスタム損失関数を書く

def triplet_loss(y_pred): 
    margin = 1 
    return K.mean(K.square(y_pred[0]) - K.square(y_pred[1]) + margin) 

それはtriplet_loss()は1つの引数を取りますが、2つの引数がscore_array = fn(y_true, y_pred)に(与えられたと言って失敗した私は2つの引数をy_true, y_predで関数を記述すると、プログラムがエラーなしで実行されます。なぜでしょうか?y_trueは使用されませんが、これらの2つの引数を使用してこの関数を実装するだけですか?これは正しいのですか、それとも別の方法ですか?

答えて

0

まあ、真:

def triplet_loss(y_true,y_pred): 
    #all your code as it is. 

根拠のない真実がなくても訓練されたネットワークを持つことはあまりありません。私たちが何かを学ぶことを期待するとき、非常に頻繁に地上の真理があります。そうでない場合は、無視してください。

また、y_trueが無視される場合、あなたはどのようにフィットメソッドに渡していますか?ダミー配列ですか?

+1

私はまだそれを解決していない、私は今それに対処しようとしています。 –

関連する問題