SoftmaxCrossEntropyWithLogits

パブリック クラスSoftmaxCrossEntropyWithLogits

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

パブリックメソッド

static <T extends TNumber , U extends TNumber >オペランド<T>
SoftmaxCrossEntropyWithLogits (スコープスコープ、オペランド<U> ラベル、オペランド<T> ロジット、int 軸)
logitslabels間のソフトマックスクロスエントロピーを計算します。

継承されたメソッド

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

public SoftmaxCrossEntropyWithLogits ()

パブリックメソッド

public staticオペランド<T> SoftmaxCrossEntropyWithLogits (スコープスコープ、オペランド<U> ラベル、オペランド<T> ロジッツ、int 軸)

logitslabels間のソフトマックスクロスエントロピーを計算します。

クラスが相互に排他的である (各エントリが 1 つのクラスにのみ存在する) 離散分類タスクの確率誤差を測定します。たとえば、各 CIFAR-10 画像には 1 つだけのラベルが付けられます。画像には犬またはトラックを指定できますが、両方を指定することはできません。

注記:

クラスは相互に排他的ですが、確率は相互に排他的である必要はありません。必要なのは、 labelsの各行が有効な確率分布であることだけです。そうでない場合、勾配の計算は不正確になります。

排他的labelsを使用する場合 (一度に 1 つのクラスのみが true となる場合)、 ERROR(/org.tensorflow.op.NnOps#sparseSoftmaxCrossEntropyWithLogits)を参照してください。

使用法:

   Operand<TFloat32> logits =
       tf.constant(new float[][] { {4.0F, 2.0F, 1.0F}, {0.0F, 5.0F, 1.0F} } );
   Operand<TFloat32> labels =
       tf.constant(new float[][] { {1.0F, 0.0F, 0.0F}, {0.0F, 0.8F, 0.2F} } );
   Operand<TFloat32> output =
       tf.nn.softmaxCrossEntropyWithLogits(labels, logits, -1);
   // output Shape = [2]
   // dataType = FLOAT (1)
   // values { 0.169846, 0.824745 }
 

バックプロパゲーションはlogitslabelsの両方で発生します。 labelsへの逆伝播を禁止するには、ラベル テンソルをこの関数に渡す前にtf.stopGradientを通して渡します。

パラメーター
範囲現在のスコープ
ラベルクラス次元に沿った各ベクトルは有効な確率分布を保持する必要があります。たとえば、ラベルの形状が[batch_size, num_classes]の場合、 labels[i]の各行は有効な確率分布でなければなりません。
ロジットラベルごとのアクティベーション。通常は線形出力です。これらの活性化エネルギーは、正規化されていない対数確率として解釈されます。
クラスのディメンション。 -1 は最後の次元です。
戻り値
  • ソフトマックスのクロスエントロピー損失。そのタイプはlogitsと同じであり、その形状はlabelsの最後の次元を持たないことを除いてlabelsと同じです。