Spec-Zone.ru › TensorFlow 1.15

tf.contrib.learn.MetricSpec

MetricSpec подключает модель к функциям метрик.

tf.contrib.learn.MetricSpec(
    metric_fn, prediction_key=None, label_key=None, weight_key=None
)

ЭТОТ КЛАСС УСТЕРЕЛ. См. contrib/learn/README.md для общих инструкций по миграции.

Класс MetricSpec содержит всю необходимую информацию для подключения выходных данных модели model_fn к метрикам (обычно, потоковым метрикам), которые используются в оценке.

Он передаётся в аргумент metrics метода Estimator.evaluate. Метод Estimator затем знает, какие прогнозы, метки и веса использовать для вызова заданной функции метрики.

При построении операций для выполнения в оценке, Estimator вызовет create_metric_ops, который подключит заданную metric_fn к модели, как подробно описано в документации к create_metric_ops, и вернёт метрику.

Пример:

Предположим, что функция входных данных модели возвращает входные данные, содержащие (среди прочего) тензор с ключом "input_key", и словарь меток, содержащий "label_key". Предположим, что метод model_fn для этой модели возвращает прогноз с ключом "prediction_key".

Для вычисления точности прогноза "prediction_key" нужно добавить

"prediction accuracy": MetricSpec(metric_fn=prediction_accuracy_fn,
                                  prediction_key="prediction_key",
                                  label_key="label_key")

в аргумент metrics к методу evaluate. prediction_accuracy_fn может быть предварительно определённой функцией из metric_ops (например, streaming_accuracy) или пользовательской функцией, которую вы определите.

Если нам нужна точность, взвешенная по "input_key", мы можем добавить его как аргумент weight_key.

"prediction accuracy": MetricSpec(metric_fn=prediction_accuracy_fn,
                                  prediction_key="prediction_key",
                                  label_key="label_key",
                                  weight_key="input_key")

Вот пример end-to-end:

estimator = tf.contrib.learn.Estimator(...)
estimator.fit(...)
_ = estimator.evaluate(
    input_fn=input_fn,
    steps=1,
    metrics={
        'prediction accuracy':
            metric_spec.MetricSpec(
                metric_fn=prediction_accuracy_fn,
                prediction_key="prediction_key",
                label_key="label_key")
    })
Аргументы
metric_fn Функция, используемая в качестве метрики. См. _adapt_metric_fn для правил передачи predictions, labels, и weights в эту функцию. Функция должна возвращать либо единственный Tensor, который интерпретируется как значение этой метрики, либо пару (value_op, update_op), где value_op — операция для получения значения метрики, а update_op должна выполняться для каждого пакета для обновления внутреннего состояния.
prediction_key Ключ для тензора в словаре predictions (выход из model_fn) для использования в качестве входных данных predictions для metric_fn. Необязательно. Если None, то model_fn должен возвращать единственный тензор или словарь с только одной записью, как predictions.
label_key Ключ для тензора в словаре labels (выход из input_fn) для использования в качестве входных данных labels для metric_fn. Необязательно. Если None, то input_fn должен возвращать единственный тензор или словарь с только одной записью, как labels.
weight_key Ключ для тензора в словаре inputs (выход из input_fn) для использования в качестве входных данных weights для metric_fn. Необязательно. Если None, веса не будут переданы в metric_fn.
Атрибуты
label_key
metric_fn Функция метрики.

Эта функция принимает именованные аргументы: predictions, labels, weights. Она возвращает одиночный Tensor или пару (value_op, update_op). Смотрите аргумент конструктора metric_fn для более подробной информации.

prediction_key
weight_key

Методы

create_metric_ops

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

create_metric_ops(
    inputs, labels, predictions
)

Подключаем нашу metric_fn к указанным элементам заданных словарей.

Эта функция вызовет metric_fn заданную в нашем конструкторе следующим образом:

metric_fn(predictions[self.prediction_key],
          labels[self.label_key],
          weights=weights[self.weight_key])

И возвращает результат. Аргумент weights передаётся только если self.weight_key не равно None.

predictions и labels могут быть как одиночными тензорами, так и словарями. Если predictions — одиночный тензор, то self.prediction_key должен быть None. Если predictions — словарь с одним элементом, self.prediction_key может быть None. И наоборот, если labels — одиночный тензор, то self.label_key должен быть None. Если labels — словарь с одним элементом, то self.label_key может быть None.

Аргументы
inputs Словарь входных данных, полученный из input_fn
labels Словарь меток или одиночный тензор меток, полученный из input_fn.
predictions Словарь прогнозов или одиночный тензор прогнозов, полученный из model_fn.
Возвращаемое значение
Результат вызова metric_fn.
Исключения
ValueError Если predictions или labels — одиночный Tensor и self.prediction_key или self.label_key не None; или если self.label_key — None, но labels — словарь более чем с одним элементом, или если self.prediction_key — None, но predictions — словарь более чем с одним элементом.

© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/contrib/learn/MetricSpec

Spec-Zone.ru

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