Keras 3 API 文件 / 指標 / 精確度指標

精確度指標

[來源]

Accuracy 類別

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

計算預測與標籤相符的頻率。

此指標會建立兩個局部變數 `total` 和 `count`,用於計算 `y_pred` 與 `y_true` 相符的頻率。此頻率最終會以 `二元精確度` 的形式回傳:一個簡單地將 `total` 除以 `count` 的等冪運算。

如果 `sample_weight` 為 `None`,權重預設為 1。使用 0 的 `sample_weight` 來遮罩值。

引數

  • 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()])

[來源]

BinaryAccuracy 類別

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

計算預測與二元標籤相符的頻率。

此指標會建立兩個局部變數 `total` 和 `count`,用於計算 `y_pred` 與 `y_true` 相符的頻率。此頻率最終會以 `二元精確度` 的形式回傳:一個簡單地將 `total` 除以 `count` 的等冪運算。

如果 `sample_weight` 為 `None`,權重預設為 1。使用 0 的 `sample_weight` 來遮罩值。

引數

  • 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()])

[來源]

CategoricalAccuracy 類別

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

計算預測與單熱編碼標籤相符的頻率。

您可以將類別的 logits 作為 `y_pred` 提供,因為 logits 和機率的最大值相同。

此指標會建立兩個局部變數 `total` 和 `count`,用於計算 `y_pred` 與 `y_true` 相符的頻率。此頻率最終會以 `類別精確度` 的形式回傳:一個簡單地將 `total` 除以 `count` 的等冪運算。

`y_pred` 和 `y_true` 應以機率向量的形式傳遞,而不是標籤。如有必要,請使用 `ops.one_hot` 將 `y_true` 展開為向量。

如果 `sample_weight` 為 `None`,權重預設為 1。使用 0 的 `sample_weight` 來遮罩值。

引數

  • 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()])

[來源]

SparseCategoricalAccuracy 類別

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 和機率的最大值相同。

此指標會建立兩個局部變數 `total` 和 `count`,用於計算 `y_pred` 與 `y_true` 相符的頻率。此頻率最終會以 `稀疏類別精確度` 的形式回傳:一個簡單地將 `total` 除以 `count` 的等冪運算。

如果 `sample_weight` 為 `None`,權重預設為 1。使用 0 的 `sample_weight` 來遮罩值。

引數

  • 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()])

[來源]

TopKCategoricalAccuracy 類別

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

計算目標在最高 `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()])

[來源]

SparseTopKCategoricalAccuracy 類別

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

計算整數目標在最高 `K` 個預測中的頻率。

預設情況下,`update_state()` 預期的引數為:- `y_true`:形狀為 `(batch_size)` 的張量,表示真實類別的索引。- `y_pred`:形狀為 `(batch_size, num_categories)` 的張量,包含每個樣本所有可能類別的分數。

使用 `from_sorted_ids=True` 時,`update_state` 預期的引數為:- `y_true`:形狀為 `(batch_size)` 的張量,表示真實類別的索引或 ID。- `y_pred`:形狀為 `(batch_size, N)` 的張量,包含前 `N` 個類別的索引或 ID,並從最高分到最低分依序排序。`N` 必須大於或等於 `k`。

當類別集合非常大,且模型具有優化方式來擷取前幾個類別,而無需評分或維護所有可能類別的分數時,`from_sorted_ids=True` 選項會更有效率。

引數

  • k:(選用)用於計算精確度的頂部元素數量。預設為 `5`。
  • name:(選用)指標實例的字串名稱。
  • dtype:(選用)指標結果的資料類型。
  • from_sorted_ids:(選用)當 `False`(預設值)時,傳遞到 `y_pred` 的張量包含所有可能類別的未排序分數。當 `True` 時,`y_pred` 包含頂部類別的索引或 ID。

範例

>>> 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
>>> m = keras.metrics.SparseTopKCategoricalAccuracy(k=1,
...                                                from_sorted_ids=True)
>>> m.update_state([2, 1], [[1, 0, 3], [1, 2, 3]])
>>> m.result()
0.5

與 `compile()` API 一起使用

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