SigmoidCrossEntropyWithLogits

パブリック クラスSigmoidCrossEntropyWithLogits

パブリックコンストラクター

パブリックメソッド

static <T extends TNumber >オペランド<T>
sigmoidCrossEntropyWithLogits (スコープスコープ、オペランド<T> ラベル、オペランド<T> ロジット)
logitsを指定してシグモイドクロスエントロピーを計算します。

継承されたメソッド

パブリックコンストラクター

public SigmoidCrossEntropyWithLogits ()

パブリックメソッド

public static Operand <T> sigmoidCrossEntropyWithLogits (スコープスコープ、オペランド<T>ラベル、オペランド<T>ロジット)

logitsを指定してシグモイドクロスエントロピーを計算します。

各クラスが独立しており、相互排他的ではない離散分類タスクの確率誤差を測定します。たとえば、写真に象と犬の両方が同時に含まれる可能性がある場合、マルチラベル分類を実行できます。

簡潔にするために、 x = logitsz = labelsとします。擬似コードのロジスティック損失は次のとおりです。

 z * -log(sigmoid(x)) + (1 - z) * -log(1 - sigmoid(x))
  = z * -log(1 / (1 + exp(-x))) + (1 - z) * -log(exp(-x) / (1 + exp(-x)))
  = z * log(1 + exp(-x)) + (1 - z) * (-log(exp(-x)) + log(1 + exp(-x)))
  = z * log(1 + exp(-x)) + (1 - z) * (x + log(1 + exp(-x))
  = (1 - z) * x + log(1 + exp(-x))
  = x - x * z + log(1 + exp(-x))
 

x < 0の場合、 exp(-x)でのオーバーフローを避けるために、上記を再定式化します。

 x - x * z + log(1 + exp(-x))
  = log(exp(x)) - x * z + log(1 + exp(-x))
  = - x * z + log(1 + exp(x))
 

したがって、安定性を確保し、オーバーフローを回避するために、実装では次の同等の定式化が使用されます。

   max(x, 0) - x * z + log(1 + exp(-abs(x)))
 

ロジットとlabels同じタイプと形状でなければなりません。

パラメータ
範囲TensorFlow スコープ
ラベルラベル
ロジットfloat32 または float64 型のロジット
返品
  • コンポーネントごとの物流損失。
投げる
IllegalArgumentExceptionロジットとラベルが同じ形状でない場合