最近出会った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
ベストアンサー1
2つの異なる機能を持つことは利便性どちらも同じ結果になるからです。
違いは簡単です:
- の場合
sparse_softmax_cross_entropy_with_logits
、ラベルの形状は [batch_size] で、データ型は int32 または int64 である必要があります。各ラベルは範囲 の int です[0, num_classes-1]
。 - の場合
softmax_cross_entropy_with_logits
、ラベルの形状は [batch_size, num_classes] で、データ型は float32 または float64 である必要があります。
使用されるラベルsoftmax_cross_entropy_with_logits
はホットバージョンで使用されるラベルsparse_softmax_cross_entropy_with_logits
。
もう 1 つの小さな違いは、 の場合sparse_softmax_cross_entropy_with_logits
、ラベルとして -1 を指定して、0
このラベルに損失を生じさせることができることです。