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

2019-02-01 17:18 更新

tf.nn.sigmoid_cross_entropy_with_logits函數(shù)

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

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

計(jì)算給定logits的sigmoid交叉熵。

測(cè)量離散分類(lèi)任務(wù)中的概率誤差,其中每個(gè)類(lèi)是獨(dú)立的而不是互斥的。例如,可以執(zhí)行多標(biāo)簽分類(lèi),其中圖片可以同時(shí)包含大象和狗。

為簡(jiǎn)潔起見(jiàn), x = logitsz = labels。logistic損失是:

  z * -log(sigmoid(x)) + (1 - z) * -log(1 - sigmoid(x))
= z * -log(1 / (1 + exp(-x))) + (1 - z) * -log(exp(-x) / (1 + exp(-x)))
= z * log(1 + exp(-x)) + (1 - z) * (-log(exp(-x)) + log(1 + exp(-x)))
= z * log(1 + exp(-x)) + (1 - z) * (x + log(1 + exp(-x))
= (1 - z) * x + log(1 + exp(-x))
= x - x * z + log(1 + exp(-x))

對(duì)于x <0,為避免exp(-x)中的溢出,我們重新配置上述內(nèi)容:

  x - x * z + log(1 + exp(-x))
= log(exp(x)) - x * z + log(1 + exp(-x))
= - x * z + log(1 + exp(x))

因此,為了確保穩(wěn)定性并避免溢出,使用以下的等效公式實(shí)現(xiàn):

max(x, 0) - x * z + log(1 + exp(-abs(x)))

logits和labels必須具有相同的類(lèi)型和shape。

參數(shù):

  • _sentinel:用于防止positional參數(shù)。內(nèi)部的,不要使用。
  • labels:一個(gè)Tensor,與logits具有相同的類(lèi)型和shape。
  • logits:一個(gè)Tensor,類(lèi)型為float32或float64。
  • name:操作的名稱(chēng)(可選)。

返回:

與具有分量logistic損失的logits有著相同shape的Tensor。

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

  • ValueError:如果logits和labels沒(méi)有相同的shape。
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)