chainer.functions.triplet(anchor, positive, negative, margin=0.2, reduce='mean')[source]

トリプレット損失を演算する。

 

It takes a triplet of variables as , aappnnの3つのvariablesを引数にとります。3つの値とは、順にそれぞれ アンカー、正例、負例です。この3つの値はサンプル間の相対的な類似性を定義します。

 

Let NNKK がそれぞれミニバッチサイズと入力値の次元数を表すものとします。すべての入力値のshapeは (N,K)(N,K)でなければなりません。

L(a,p,n)=1N(i=1Nmax{d(ai,pi)d(ai,ni)+margin,0})L(a,p,n)=1N(∑i=1Nmax{d(ai,pi)−d(ai,ni)+margin,0})

ただし d(xi,yi)=xiyi22d(xi,yi)=‖xi−yi‖22.

 

出力は reduce.オプションの値に依って決まる値の変数です。 'no'が設定されている場合、エレメントごとの損失値を持ちます。 'mean'の場合、この関数は損失値の平均をとります。

 

Parameters:
  • anchor (Variable) – アンカー例のvariable。shape は (N,K)(N,K), でなければならない。ただし NN はミニバッチサイズを表し KK はアンカーの次元数を表す。
  • positive (Variable) – 正例のvariable。 shape はアンカーと同じでなければならない。
  • negative (Variable) – 負例のvariable。 shape はアンカーと同じでなければならない。
  • margin (float) – トリプレット損失のパラメータ。正の値でなければならない。
  • reduce (str) –削減オプション。 'mean''no'を指定する。それ以外では  ValueError が発生する。
Returns:

上記の等式で演算された損失値のスカラを保持するvariable。  reduce'no', の場合、出力変数はshapeが入力値の1つと同じであるような配列を保持する。 'mean'出力変数はスカラ値を持つ。

Return type:

Variable

Note

このコストはトリプレットネットワークを訓練するために用いることが可能である。詳細は Learning Fine-grained Image Similarity with Deep Ranking をお読みください。