當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python tf.nn.sparse_softmax_cross_entropy_with_logits用法及代碼示例


計算 logitslabels 之間的稀疏 softmax 交叉熵。

用法

tf.nn.sparse_softmax_cross_entropy_with_logits(
    labels, logits, name=None
)

參數

  • labels 形狀為 [d_0, d_1, ..., d_{r-1}]Tensor(其中 rlabels 和結果的等級)和 dtype int32int64labels 中的每個條目都必須是 [0, num_classes) 中的索引。當此操作在 CPU 上運行時,其他值將引發異常,並為 GPU 上的相應損失和梯度行返回 NaN
  • logits 形狀 [d_0, d_1, ..., d_{r-1}, num_classes] 和 dtype float16 , float32float64 的未縮放對數概率。
  • name 操作的名稱(可選)。

返回

  • labels 具有相同形狀和與logits 相同類型的Tensor,具有softmax 交叉熵損失。

拋出

  • ValueError 如果 logits 是標量(需要秩 >= 1)或者標簽的秩不等於 logits 的秩減一。

測量類別互斥(每個條目恰好屬於一個類別)的離散分類任務中的概率誤差。例如,每張 CIFAR-10 圖像都帶有一個且隻有一個標簽:圖像可以是狗或卡車,但不能同時是兩者。

注意:對於這個操作,給定標簽的概率被認為是排他的。也就是說,不允許使用軟類,並且labels 向量必須為logits 的每一行(每個小批量條目)的真實類提供單個特定索引。對於每個條目的概率分布的軟 softmax 分類,請參閱softmax_cross_entropy_with_logits_v2

警告:此操作需要未縮放的 logits,因為它在內部對 logits 執行 softmax 以提高效率。不要使用 softmax 的輸出調用此操作,因為它會產生不正確的結果。

一個常見的用例是具有形狀 [batch_size, num_classes] 的 logits 和形狀 [batch_size] 的標簽,但支持更高的維度,在這種情況下,假設 dim -th 維度的大小為 num_classeslogits 必須具有 float16 , float32float64 的數據類型,並且 labels 必須具有 int32int64 的數據類型。

logits = tf.constant([[2., -5., .5, -.1],
                      [0., 0., 1.9, 1.4],
                      [-100., 100., -100., -100.]])
labels = tf.constant([0, 3, 1])
tf.nn.sparse_softmax_cross_entropy_with_logits(
    labels=labels, logits=logits).numpy()
array([0.29750752, 1.1448325 , 0.        ], dtype=float32)

為避免混淆,建議僅將命名參數傳遞給此函數。

相關用法


注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.nn.sparse_softmax_cross_entropy_with_logits。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。