Spec-Zone.ru › TensorFlow 2.9

tf.keras.metrics.Metric

Просмотреть исходный код на GitHub

Инкапсулирует логику и состояние метрики.

Наследуется от: Layer, Module

Просмотр псевдонимов

Псевдонимы совместимости для миграции

См. Руководство по миграции для получения дополнительной информации.

tf.compat.v1.keras.metrics.Metric

tf.keras.metrics.Metric(
    name=None, dtype=None, **kwargs
)
Аргументы
name (Необязательно) строковое имя экземпляра метрики.
dtype (Необязательно) тип данных результата метрики.
**kwargs Дополнительные ключевые аргументы слоя.

Использование автономно:

m = SomeMetric(...)
for input in ...:
  m.update_state(input)
print('Final result: ', m.result().numpy())

Использование с compile() API:

model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(64, activation='relu'))
model.add(tf.keras.layers.Dense(64, activation='relu'))
model.add(tf.keras.layers.Dense(10, activation='softmax'))

model.compile(optimizer=tf.keras.optimizers.RMSprop(0.01),
              loss=tf.keras.losses.CategoricalCrossentropy(),
              metrics=[tf.keras.metrics.CategoricalAccuracy()])

data = np.random.random((1000, 32))
labels = np.random.random((1000, 10))

dataset = tf.data.Dataset.from_tensor_slices((data, labels))
dataset = dataset.batch(32)

model.fit(dataset, epochs=10)

Должно быть реализовано подклассами:

  • __init__(): Все переменные состояния должны быть созданы в этом методе, вызвав self.add_weight() как: self.var = self.add_weight(...)
  • update_state(): Содержит все обновления переменных состояния, например: self.var.assign_add(...).
  • result(): Вычисляет и возвращает скалярное значение или словарь скалярных значений для метрики из переменных состояния.

Пример реализации подкласса:

class BinaryTruePositives(tf.keras.metrics.Metric):

  def __init__(self, name='binary_true_positives', **kwargs):
    super(BinaryTruePositives, self).__init__(name=name, **kwargs)
    self.true_positives = self.add_weight(name='tp', initializer='zeros')

  def update_state(self, y_true, y_pred, sample_weight=None):
    y_true = tf.cast(y_true, tf.bool)
    y_pred = tf.cast(y_pred, tf.bool)

    values = tf.logical_and(tf.equal(y_true, True), tf.equal(y_pred, True))
    values = tf.cast(values, self.dtype)
    if sample_weight is not None:
      sample_weight = tf.cast(sample_weight, self.dtype)
      sample_weight = tf.broadcast_to(sample_weight, values.shape)
      values = tf.multiply(values, sample_weight)
    self.true_positives.assign_add(tf.reduce_sum(values))

  def result(self):
    return self.true_positives

Методы

merge_state

Просмотреть исходный код

merge_state(
    metrics
)

Объединяет состояние из одной или нескольких метрик.

Этот метод может использоваться распределёнными системами для объединения состояния, вычисленного различными экземплярами метрик. Обычно состояние хранится в виде весов метрики. Например, метрика tf.keras.metrics.Mean содержит список из двух значений весов: общее значение и счётчик. Если было две экземпляра tf.keras.metrics.Accuracy, которые независимо агрегировали частичное состояние для расчёта общей точности, состояния этих двух метрик можно объединить следующим образом:

m1 = tf.keras.metrics.Accuracy()
_ = m1.update_state([[1], [2]], [[0], [2]])
m2 = tf.keras.metrics.Accuracy()
_ = m2.update_state([[3], [4]], [[3], [4]])
m2.merge_state([m1])
m2.result().numpy()
0.75
Аргументы
metrics итерируемый объект метрик. Метрики должны иметь совместимое состояние.
Исключения
ValueError Если предоставленный итерируемый объект не содержит метрик, соответствующих требуемым спецификациям метрики.

reset_state

Просмотреть исходный код

reset_state()

Сбрасывает все переменные состояния метрики.

Эта функция вызывается между эпохами/шагами, когда метрика оценивается во время обучения.

result

Просмотреть исходный код

@abc.abstractmethod
result()

Вычисляет и возвращает скалярное значение метрики или словарь скаляров.

Вычисление результата — это идемпотентная операция, которая просто вычисляет значение метрики с использованием переменных состояния.

Возвращаемое значение
Скалярный тензор или словарь скалярных тензоров.

update_state

Просмотреть исходный код

@abc.abstractmethod
update_state(
    *args, **kwargs
)

Накапливает статистику для метрики.

Примечание: Эта функция выполняется как функция графа в режиме графа. Это означает: а) Операции над одним и тем же ресурсом выполняются в текстовом порядке. Это должно упростить выполнение операций, таких как добавление обновлённого значения переменной к другой переменной, например. б) Вам не нужно беспокоиться о сборе операций обновления для выполнения. Все операции обновления, добавленные в граф этой функцией, будут выполнены. В результате код, как правило, работает одинаково с графовым или жадным выполнением.
Аргументы
*args
**kwargs Мини-пакет входных данных для метрики.

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/keras/metrics/Metric

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API