тензор потока больше метрик с пользовательским оценщиком - PullRequest
0 голосов
/ 19 марта 2019

Я создал собственный оценщик, который использовал binary_classification_head() под капотом. Все работает хорошо, но проблема с видимыми метриками. Я использую логирование с уровнем tf.logging.set_verbosity(tf.logging.INFO) и тензорной доской, но вижу только значение потерь. Я добавил этот код, но он ничего не помогает.

def my_accuracy(labels, predictions):
    return {'accuracy': tf.metrics.accuracy(labels, predictions['logistic'])}
classifier = tf.contrib.estimator.add_metrics(classifier, my_accuracy)

Знаете ли вы какой-нибудь другой способ добавления метрик?

1 Ответ

0 голосов
/ 20 марта 2019

Вам необходимо разместить соответствующую функцию метрик внутри вашего model_fn.

Например:

tf.summary.image('input_image', input_image, max_outputs)

for v in tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES):
        tf.summary.histogram(v.name, v)

Метрики, которые включают update_op, например, точность f1, должны быть поданы на eval_metric_ops. Срезы используются потому, что они выводят два значения, значение метрики и операцию обновления

f1 = tf.contrib.metrics.f1_score(labels, predictions, num_thresholds)
accuracy = tf.metrics.accuracy(labels, predictions)
tf.summary.scalar('accuracy', accuracy[1])

eval_metric_ops = {
    'f1_score': f1,
    'accuracy': accuracy
}

return tf.estimator.EstimatorSpec(mode=mode,
                                  loss=loss,
                                  train_op=train_op,
                                  eval_metric_ops=eval_metric_ops,
                                  )

eval_metric_ops Диктофон может подаваться как в режиме поезда, так и в режиме оценки.

Если вы используете стандартную оценку, вы можете использовать add_metrics

Edit: Согласно официальной документации, вы можете использовать binary_classification_head со стандартным оценщиком или внутри функции model_fn, которая возвращает estimator_spec. Смотри

my_head = tf.contrib.estimator.binary_classification_head()
my_estimator = tf.estimator.DNNEstimator(
    head=my_head,
    hidden_units=...,
    feature_columns=...)

В этом случае вы сможете добавлять метрики даже без функции add_metrics

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...