1. ホーム
  2. neural-network

[解決済み】 sparse_softmax_cross_entropy_with_logits と softmax_cross_entropy_with_logits の違いは何ですか?

2022-02-05 16:57:36

質問

最近、私は tf.nn.sparse_softmax_cross_entropy_with_logits と比較して、何が違うのかがわかりません。 tf.nn.softmax_cross_entropy_with_logits .

トレーニングベクターが違うだけか y である必要があります。 ワンショットエンコード を使用する場合 sparse_softmax_cross_entropy_with_logits ?

APIを読んでも、他の違いは見つかりませんでした。 softmax_cross_entropy_with_logits . しかし、それではなぜ余分な関数が必要なのでしょうか?

を使うべきではありません。 softmax_cross_entropy_with_logits と同じ結果になります。 sparse_softmax_cross_entropy_with_logits 一発符号化された学習データ/ベクトルが供給された場合、どうなるのでしょうか?

どのように解決するのですか?

2つの異なる機能を持つことは 利便性 同じ結果が得られるからです。

その違いは簡単です。

  • について sparse_softmax_cross_entropy_with_logits ラベルは[batch_size]の形状を持ち、int32またはint64のデータ型でなければなりません。各ラベルは、範囲 [0, num_classes-1] .
  • について softmax_cross_entropy_with_logits ラベルは、形状が [batch_size, num_classes] で、dtype が float32 または float64 である必要があります。

で使用されるラベル softmax_cross_entropy_with_logits ホットバージョン で使用されているラベルの sparse_softmax_cross_entropy_with_logits .

もう一つの小さな違いは sparse_softmax_cross_entropy_with_logits を指定すると、ラベルとして -1 を指定することができます。 0 というラベルが表示されます。