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


Python tf.keras.metrics.CategoricalCrossentropy用法及代碼示例


計算標簽和預測之間的交叉熵度量。

繼承自:MeanMetricWrapperMeanMetricLayerModule

用法

tf.keras.metrics.CategoricalCrossentropy(
    name='categorical_crossentropy', dtype=None, from_logits=False,
    label_smoothing=0
)

參數

  • name (可選)指標實例的字符串名稱。
  • dtype (可選)度量結果的數據類型。
  • from_logits (可選)輸出是否預期為 logits 張量。默認情況下,我們認為輸出編碼概率分布。
  • label_smoothing (可選)在 [0, 1] 中浮點數。當 > 0 時,標簽值會被平滑,這意味著標簽值的置信度會放鬆。例如label_smoothing=0.2 表示我們將為標簽 0 使用值 0.1,為標簽 1 使用 0.9 "

這是當有多個標簽類別(2 個或更多)時要使用的交叉熵度量類別。在這裏,我們假設標簽以one_hot 表示形式給出。例如,當標簽值為 [2, 0, 1] 時,y_true = [[0, 0, 1], [1, 0, 0], [0, 1, 0]]。

單機使用:

# EPSILON = 1e-7, y = y_true, y` = y_pred
# y` = clip_ops.clip_by_value(output, EPSILON, 1. - EPSILON)
# y` = [[0.05, 0.95, EPSILON], [0.1, 0.8, 0.1]]
# xent = -sum(y * log(y'), axis = -1)
#      = -((log 0.95), (log 0.1))
#      = [0.051, 2.302]
# Reduced xent = (0.051 + 2.302) / 2
m = tf.keras.metrics.CategoricalCrossentropy()
m.update_state([[0, 1, 0], [0, 0, 1]],
               [[0.05, 0.95, 0], [0.1, 0.8, 0.1]])
m.result().numpy()
1.1769392
m.reset_state()
m.update_state([[0, 1, 0], [0, 0, 1]],
               [[0.05, 0.95, 0], [0.1, 0.8, 0.1]],
               sample_weight=tf.constant([0.3, 0.7]))
m.result().numpy()
1.6271976

compile() API 的用法:

model.compile(
  optimizer='sgd',
  loss='mse',
  metrics=[tf.keras.metrics.CategoricalCrossentropy()])

相關用法


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