Печать дополнительных обучающих метрик с помощью Tensorflow Estimator

Есть ли способ позволить Tensorflow печатать дополнительные метрики обучения (например, точность партии) при использовании Estimator API?

Можно добавить сводки и просмотреть результаты в Tensorboard (см. Другой пост), но мне было интересно, есть ли элегантный способ распечатать скалярные итоговые значения во время тренировки. Это уже происходит при потере обучения, например:

loss = 0.672677, step = 2901 (52.995 sec)

но было бы неплохо иметь, например,

loss = 0.672677, accuracy = 0.54678, step = 2901 (52.995 sec)

без особых проблем. Я знаю, что в большинстве случаев более полезно составлять график точности набора тестов (я уже делаю это с монитором проверки), но в этом случае меня также интересует точность обучения партии.

2 ответа

Решение

Из того, что я прочитал, невозможно изменить его, передав параметр. Вы можете попытаться сделать это, создав ловушку регистрации и передав ее в прогон оценщика.

В теле model_fn функция для вашей оценки:

logging_hook = tf.train.LoggingTensorHook({"loss" : loss, 
    "accuracy" : accuracy}, every_n_iter=10)

# Rest of the function

return tf.estimator.EstimatorSpec(
    ...params...
    training_hooks = [logging_hook])

РЕДАКТИРОВАТЬ:

Чтобы увидеть вывод, вы также должны установить подробность ведения журнала (если это не по умолчанию):tf.logging.set_verbosity(tf.logging.INFO)

Вы также можете использовать TensorBoard, чтобы увидеть графику нужных показателей. Для этого добавьте метрику в сводку TensorFlow следующим образом:

accuracy = tf.metrics.accuracy(labels=labels, predictions=predictions["classes"])
tf.summary.scalar('accuracy', accuracy[1])

Крутая вещь, когда вы используете tf.estimator.Estimator является то, что вам не нужно добавлять резюме в FileWriter, так как это делается автоматически (объединение и сохранение их каждые 100 шагов по умолчанию).

Не забудьте также изменить эту строку, основываясь на accuracy параметр, который вы только что добавили:

eval_metric_ops = { "accuracy": accuracy }
return tf.estimator.EstimatorSpec(
    mode=mode, loss=loss, eval_metric_ops=eval_metric_ops)

Чтобы увидеть TensorBoard, вам нужно открыть новый терминал и набрать:

tensorboard --logdir={$MODEL_DIR}

После этого вы сможете увидеть графику в своем браузере по адресу localhost:6006,

Вы пробовали Aim? Замечательно записывать любые метрики, параметры, а затем легко искать и сравнивать их.

Очень легко начать работу с.

Другие вопросы по тегам