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


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


計算 logitslabels 之間的 softmax 交叉熵。

用法

tf.nn.softmax_cross_entropy_with_logits(
    labels, logits, axis=-1, name=None
)

參數

  • labels 沿類維度的每個向量都應保持有效的概率分布,例如對於標簽形狀為 [batch_size, num_classes] 的情況,labels[i] 的每一行都必須是有效的概率分布。
  • logits Per-label 激活,通常是線性輸出。這些活化能被解釋為非標準化的對數概率。
  • axis 類維度。默認為 -1,這是最後一個維度。
  • name 操作的名稱(可選)。

返回

  • 包含 softmax 交叉熵損失的 Tensor。它的類型與logits 相同,其形狀與labels 相同,隻是它沒有labels 的最後一個維度。

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

注意:雖然這些類是互斥的,但它們的概率不一定是互斥的。所需要的隻是labels 的每一行都是有效的概率分布。如果不是,則梯度的計算將不正確。

如果使用獨占 labels(其中一次隻有一個類為真),請參閱 sparse_softmax_cross_entropy_with_logits

用法:

logits = [[4.0, 2.0, 1.0], [0.0, 5.0, 1.0]]
labels = [[1.0, 0.0, 0.0], [0.0, 0.8, 0.2]]
tf.nn.softmax_cross_entropy_with_logits(labels=labels, logits=logits)
<tf.Tensor:shape=(2,), dtype=float32,
numpy=array([0.16984604, 0.82474494], dtype=float32)>

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

一個常見的用例是具有形狀 [batch_size, num_classes] 的 logits 和標簽,但支持更高的維度,axis 參數指定類維度。

logitslabels 必須具有相同的 dtype(float16 , float32float64 )。

反向傳播將同時發生在 logitslabels 中。要禁止反向傳播到 labels ,請將標簽張量通過 tf.stop_gradient 傳遞給此函數。

請注意,為避免混淆,隻需要將命名參數傳遞給此函數。

相關用法


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