TensorFlow函數(shù)教程:tf.nn.sparse_softmax_cross_entropy_with_logits

2019-02-12 17:51 更新

tf.nn.sparse_softmax_cross_entropy_with_logits函數(shù)

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

定義在:tensorflow/python/ops/nn_ops.py。

計(jì)算logits和labels之間的稀疏softmax交叉熵。

測量離散分類任務(wù)中的概率誤差,其中類是互斥的(每個(gè)條目僅在一個(gè)類中)。例如,每個(gè)CIFAR-10圖像都標(biāo)有一個(gè)且只有一個(gè)標(biāo)簽:圖像可以是dog或truck,但不能同時(shí)是兩者。

注意:對于此操作,給定標(biāo)簽的概率被認(rèn)為是唯一的。也就是說,不允許使用soft類,并且labels向量必須為每一行l(wèi)ogits(每個(gè)小批量條目)的真實(shí)類提供單個(gè)特定索引。對于每個(gè)條目的概率分布的soft softmax分類,請參閱softmax_cross_entropy_with_logits_v2

警告:此操作需要未縮放的日志,因?yàn)樗趦?nèi)部日志上執(zhí)行softmax,以提高效率。不要使用softmax的輸出調(diào)用此操作,因?yàn)樗鼤?huì)產(chǎn)生不正確的結(jié)果。

常見的用例是具有shape [batch_size, num_classes]的logits和labels標(biāo)簽,但支持更高的維度,在這種情況下,假定第dim維度的大小為num_classes。logits必須具備float16,float32或者float64類型,并且labels必須具有int32或int64類型。

請注意,為避免混淆,需要僅將命名參數(shù)傳遞給此函數(shù)。

參數(shù):

  • _sentinel:用于防止位置參數(shù)。內(nèi)部,不要使用。
  • labels:Tensor,shape為[d_0, d_1, ..., d_{r-1}](其中r是labels的秩和結(jié)果)并且類型為int32或int64。每個(gè)labels中的條目必須是[0, num_classes)中的索引。當(dāng)此操作在CPU上運(yùn)行時(shí),其他值將引發(fā)異常,并返回NaN,以獲取GPU上相應(yīng)的損失和梯度行。
  • logits:shape為[d_0, d_1, ..., d_{r-1}, num_classes]和類型為float16,float32或 float64的未縮放日志概率。
  • name:操作的名稱(可選)。

返回:

一個(gè)Tensor,與labels形狀相同、與具有SoftMax交叉熵?fù)p失的logits具有相同的類型。

可能引發(fā)的異常:

  • ValueError:如果logits是標(biāo)量(需要秩> = 1),或者labels的秩不等于logits的秩減1。
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號