Как рассчитать медиану в eval_metric_ops? - PullRequest
0 голосов
/ 15 мая 2018

Я хотел бы использовать медианную операцию вместо среднего при оценке моей модели тензорного потока с использованием интерфейса оценщика.

Я использую эту операцию в моей модели:

if mode == tf.estimator.ModeKeys.EVAL:
    return tf.estimator.EstimatorSpec(mode=mode, loss=loss, 
   eval_metric_ops={"accuracy": tf.metrics.mean(my_tensor)})

Я не нашел медианную функцию в пакете tf.metrics для замены tf.metrics.mean. Я могу вычислить это сам, но eval_metric_ops требует кортежа (тензор, update_op), и я не уверен, что должно быть update_op. Как реализовать эту метрику сам?

Спасибо!

редактирование: Я еще не нашел, как это сделать, но в github tenorflow было обсуждение этого вопроса: https://github.com/tensorflow/tensorflow/issues/5837

Так что я буду использовать вместо этого tf.contrib.metrics.streaming_concat, чтобы вернуть полный массив точности в моем наборе данных eval:

if mode == tf.estimator.ModeKeys.EVAL: return tf.estimator.EstimatorSpec (mode = mode, loss = loss, eval_metric_ops = {"all_accuracies": tf.contrib.metrics.streaming_concat (my_tensor)}) И используйте numpy для вычисления медианы:

valuation = estimator.evaluate (input_fn = myinput_fn, mode = tf.estimator.ModeKeys.EVAL, steps = None) печать (np.median (оценка [ 'all_accuracies'])) Я могу получить свою окончательную точность таким образом, но я не увижу ее во время тренировки на тензорной доске, есть идеи, как это сделать?

...