Keras 3 API 文档 / 度量标准 / 准确性指标

准确性指标

[source]

Accuracy class

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

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

该指标创建两个局部变量,totalcount,用于计算 y_predy_true 匹配的频率.该频率最终以 binary accuracy 的形式返回:一个简单的操作,将 total 除以 count.

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

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

示例:

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

使用 compile() API 的示例:

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

[source]

BinaryAccuracy class

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 = keras.metrics.BinaryAccuracy()
>>> m.update_state([[1], [1], [0], [0]], [[0.98], [1], [0], [0.6]])
>>> m.result()
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()
0.5

compile() API 一起使用:

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

[source]

CategoricalAccuracy class

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

计算预测与独热标签匹配的频率.

你可以提供类别的logits作为y_pred,因为logits和概率的argmax是相同的.

该指标创建两个局部变量,totalcount,用于计算y_predy_true匹配的频率.该频率最终作为分类准确率返回:一个简单的操作,将total除以count.

y_predy_true应以概率向量的形式传递,而不是作为标签.如果需要,使用ops.one_hoty_true扩展为向量.

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

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

示例:

>>> m = 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()
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()
0.3

使用compile() API:

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

[source]

SparseCategoricalAccuracy class

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匹配的频率.该频率最终作为稀疏分类准确率返回:一个简单的操作,将total除以count.

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

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

示例:

>>> m = keras.metrics.SparseCategoricalAccuracy()
>>> m.update_state([[2], [1]], [[0.1, 0.6, 0.3], [0.05, 0.95, 0]])
>>> m.result()
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()
0.3

compile() API一起使用:

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

[source]

TopKCategoricalAccuracy class

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

计算目标在预测结果中位于前 K 的频率.

Arguments

  • k: (可选) 计算准确率时要考虑的前 K 个元素的数量. 默认为 5.
  • name: (可选) 指标实例的字符串名称.
  • dtype: (可选) 指标结果的数据类型.

示例:

>>> m = 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()
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()
0.3

使用 compile() API:

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

[source]

SparseTopKCategoricalAccuracy class

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

计算整数目标在预测结果中位于前 K 个的频率.

Arguments

  • k: (可选) 计算准确率时要考虑的前 K 个元素的数量. 默认为 5.
  • name: (可选) 指标实例的字符串名称.
  • dtype: (可选) 指标结果的数据类型.

示例:

>>> m = keras.metrics.SparseTopKCategoricalAccuracy(k=1)
>>> m.update_state([2, 1], [[0.1, 0.9, 0.8], [0.05, 0.95, 0]])
>>> m.result()
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()
0.3

使用 compile() API:

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