パブリック クラスSoftmaxCrossEntropyWithLogits
パブリックコンストラクター
パブリックメソッド
static <T extends TNumber , U extends TNumber >オペランド<T> | SoftmaxCrossEntropyWithLogits (スコープスコープ、オペランド<U> ラベル、オペランド<T> ロジット、int 軸) logits とlabels 間のソフトマックスクロスエントロピーを計算します。 |
継承されたメソッド
パブリックコンストラクター
public SoftmaxCrossEntropyWithLogits ()
パブリックメソッド
public staticオペランド<T> SoftmaxCrossEntropyWithLogits (スコープスコープ、オペランド<U> ラベル、オペランド<T> ロジッツ、int 軸)
logits
とlabels
間のソフトマックスクロスエントロピーを計算します。
クラスが相互に排他的である (各エントリが 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 }
バックプロパゲーションはlogits
とlabels
の両方で発生します。 labels
への逆伝播を禁止するには、ラベル テンソルをこの関数に渡す前にtf.stopGradient
を通して渡します。
パラメータ
範囲 | 現在のスコープ |
---|---|
ラベル | クラス次元に沿った各ベクトルは有効な確率分布を保持する必要があります。たとえば、ラベルの形状が[batch_size, num_classes] の場合、 labels[i] の各行は有効な確率分布でなければなりません。 |
ロジット | ラベルごとのアクティベーション。通常は線形出力です。これらの活性化エネルギーは、正規化されていない対数確率として解釈されます。 |
軸 | クラスのディメンション。 -1 は最後の次元です。 |
返品
- ソフトマックスのクロスエントロピー損失。そのタイプは
logits
と同じであり、その形状はlabels
の最後の次元を持たないことを除いてlabels
と同じです。