当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。