Keras 2 API 文档 / 指标 / 精度指标

精度指标

[源文件]

Accuracy

tf_keras.metrics.Accuracy(name="accuracy", dtype=None)

计算预测值与标签相等的频率。

此指标创建两个局部变量 totalcount,用于计算 y_predy_true 匹配的频率。此频率最终作为 binary accuracy 返回:这是一个幂等操作,简单地将 total 除以 count

如果 sample_weightNone,权重默认为 1。使用 sample_weight 为 0 来屏蔽值。

参数

  • name:(可选)指标实例的字符串名称。
  • dtype:(可选)指标结果的数据类型。

独立使用

>>> m = tf.keras.metrics.Accuracy()
>>> m.update_state([[1], [2], [3], [4]], [[0], [2], [3], [4]])
>>> m.result().numpy()
0.75
>>> m.reset_state()
>>> m.update_state([[1], [2], [3], [4]], [[0], [2], [3], [4]],
...                sample_weight=[1, 1, 0, 0])
>>> m.result().numpy()
0.5

compile() API 结合使用

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

[源文件]

BinaryAccuracy

tf_keras.metrics.BinaryAccuracy(name="binary_accuracy", dtype=None, threshold=0.5)

计算预测值与二元标签匹配的频率。

此指标创建两个局部变量 totalcount,用于计算 y_predy_true 匹配的频率。此频率最终作为 binary accuracy 返回:这是一个幂等操作,简单地将 total 除以 count

如果 sample_weightNone,权重默认为 1。使用 sample_weight 为 0 来屏蔽值。

参数

  • name:(可选)指标实例的字符串名称。
  • dtype:(可选)指标结果的数据类型。
  • threshold:(可选)浮点值,表示用于确定预测值是 1 还是 0 的阈值。

独立使用

>>> m = tf.keras.metrics.BinaryAccuracy()
>>> m.update_state([[1], [1], [0], [0]], [[0.98], [1], [0], [0.6]])
>>> m.result().numpy()
0.75
>>> m.reset_state()
>>> m.update_state([[1], [1], [0], [0]], [[0.98], [1], [0], [0.6]],
...                sample_weight=[1, 0, 0, 1])
>>> m.result().numpy()
0.5

compile() API 结合使用

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

[源文件]

CategoricalAccuracy

tf_keras.metrics.CategoricalAccuracy(name="categorical_accuracy", dtype=None)

计算预测值与独热(one-hot)标签匹配的频率。

你可以将类别的 logits 作为 y_pred 提供,因为 logits 和概率的 argmax 是一样的。

此指标创建两个局部变量 totalcount,用于计算 y_predy_true 匹配的频率。此频率最终作为 categorical accuracy 返回:这是一个幂等操作,简单地将 total 除以 count

y_predy_true 应作为概率向量传入,而不是作为标签传入。如有必要,使用 tf.one_hoty_true 展开为向量。

如果 sample_weightNone,权重默认为 1。使用 sample_weight 为 0 来屏蔽值。

参数

  • name:(可选)指标实例的字符串名称。
  • dtype:(可选)指标结果的数据类型。

独立使用

>>> m = tf.keras.metrics.CategoricalAccuracy()
>>> m.update_state([[0, 0, 1], [0, 1, 0]], [[0.1, 0.9, 0.8],
...                 [0.05, 0.95, 0]])
>>> m.result().numpy()
0.5
>>> m.reset_state()
>>> m.update_state([[0, 0, 1], [0, 1, 0]], [[0.1, 0.9, 0.8],
...                 [0.05, 0.95, 0]],
...                sample_weight=[0.7, 0.3])
>>> m.result().numpy()
0.3

compile() API 结合使用

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

[源文件]

SparseCategoricalAccuracy

tf_keras.metrics.SparseCategoricalAccuracy(
    name="sparse_categorical_accuracy", dtype=None
)

计算预测值与整数标签匹配的频率。

acc = np.dot(sample_weight, np.equal(y_true, np.argmax(y_pred, axis=1))

你可以将类别的 logits 作为 y_pred 提供,因为 logits 和概率的 argmax 是一样的。

此指标创建两个局部变量 totalcount,用于计算 y_predy_true 匹配的频率。此频率最终作为 sparse categorical accuracy 返回:这是一个幂等操作,简单地将 total 除以 count

如果 sample_weightNone,权重默认为 1。使用 sample_weight 为 0 来屏蔽值。

参数

  • name:(可选)指标实例的字符串名称。
  • dtype:(可选)指标结果的数据类型。

独立使用

>>> m = tf.keras.metrics.SparseCategoricalAccuracy()
>>> m.update_state([[2], [1]], [[0.1, 0.6, 0.3], [0.05, 0.95, 0]])
>>> m.result().numpy()
0.5
>>> m.reset_state()
>>> m.update_state([[2], [1]], [[0.1, 0.6, 0.3], [0.05, 0.95, 0]],
...                sample_weight=[0.7, 0.3])
>>> m.result().numpy()
0.3

compile() API 结合使用

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

[源文件]

TopKCategoricalAccuracy

tf_keras.metrics.TopKCategoricalAccuracy(
    k=5, name="top_k_categorical_accuracy", dtype=None
)

计算目标在 top K 预测中的频率。

参数

  • k:(可选)计算精度时要查看的 top 元素的数量。默认为 5
  • name:(可选)指标实例的字符串名称。
  • dtype:(可选)指标结果的数据类型。

独立使用

>>> m = tf.keras.metrics.TopKCategoricalAccuracy(k=1)
>>> m.update_state([[0, 0, 1], [0, 1, 0]],
...                [[0.1, 0.9, 0.8], [0.05, 0.95, 0]])
>>> m.result().numpy()
0.5
>>> m.reset_state()
>>> m.update_state([[0, 0, 1], [0, 1, 0]],
...                [[0.1, 0.9, 0.8], [0.05, 0.95, 0]],
...                sample_weight=[0.7, 0.3])
>>> m.result().numpy()
0.3

compile() API 结合使用

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

[源文件]

SparseTopKCategoricalAccuracy

tf_keras.metrics.SparseTopKCategoricalAccuracy(
    k=5, name="sparse_top_k_categorical_accuracy", dtype=None
)

计算整数目标在 top K 预测中的频率。

参数

  • k:(可选)计算精度时要查看的 top 元素的数量。默认为 5
  • name:(可选)指标实例的字符串名称。
  • dtype:(可选)指标结果的数据类型。

独立使用

>>> m = tf.keras.metrics.SparseTopKCategoricalAccuracy(k=1)
>>> m.update_state([2, 1], [[0.1, 0.9, 0.8], [0.05, 0.95, 0]])
>>> m.result().numpy()
0.5
>>> m.reset_state()
>>> m.update_state([2, 1], [[0.1, 0.9, 0.8], [0.05, 0.95, 0]],
...                sample_weight=[0.7, 0.3])
>>> m.result().numpy()
0.3

compile() API 结合使用

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