Печать дополнительных обучающих метрик с помощью 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? Замечательно записывать любые метрики, параметры, а затем легко искать и сравнивать их.
Очень легко начать работу с.