#tensorflow #keras #metrics #tensorboard #tensorflow-estimator
#tensorflow #keras #показатели #tensorboard #tensorflow-estimator
Вопрос:
Я строю модель, используя keras с TensorFlow 1.12
. После (или во время) обучения модели я могу видеть с Tensorboard
распределением точности и потерь в зависимости от количества эпох.
при использовании модели keras и ее преобразовании с помощью model_to_estimator accuracy
и потери не сохраняются в events.out.tfevents.xxxxxxxxxx
(используются TensorBoard для визуализации). Я использую tf.estimator.train()
или tf.estimator.train_and_evaluate(estimator, train_spec, eval_spec)
, и в обоих случаях я получаю только:
dict_keys(['global_step/sec', 'loss_1'])
при использовании tf.estimator.train()
я ожидаю потери и увеличения точности events.out.tfevents.xxxxxxxxxx
для обучающего набора данных
используя tf.estimator.train_and_evaluate(estimator, train_spec, eval_spec)
, я ожидаю потери и погрешности events.out.tfevents.xxxxxxxxxx
для набора данных обучения и тестирования.
Информация вычисляется и отображается в файлах журнала:
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Evaluation [10/100]
INFO:tensorflow:Evaluation [20/100]
INFO:tensorflow:Evaluation [30/100]
INFO:tensorflow:Evaluation [40/100]
INFO:tensorflow:Evaluation [50/100]
INFO:tensorflow:Evaluation [60/100]
INFO:tensorflow:Evaluation [70/100]
INFO:tensorflow:Finished evaluation at 2019-03-16-12:28:05
INFO:tensorflow:Saving dict for global step 1000: accuracy = 0.9766614, global_step = 1000, loss = 0.074898034
INFO:tensorflow:Saving 'checkpoint_path' summary for global step 1000: results/Models/Mnist/tf_1_12/estimator/ckpt/model.ckpt-1000
Как я могу добавить некоторые показатели при преобразовании модели keras в оценщик? Если я возвращаю непосредственно оценщик, мне просто нужно добавить tf.summary.scalar('accuracy', accuracy[1])
. Я не смог найти ничего, что можно было бы узнать.
когда я использую ту же модель keras и запускаю метод fit, я получаю в events.out.tfevents.xxxxxxxxxx
файле:
dict_keys(['batch_acc', 'batch_loss', 'epoch_acc', 'epoch_loss', 'epoch_val_acc', 'epoch_val_loss'])
Я получил 6 переменных, включая точность и потери для набора данных для обучения и тестирования. Это то, чего от меня ожидают.
Ожидается ли это? Без такой информации в TensorBoard невозможно увидеть, подходит модель или нет. Я даже не уверен, какая информация отображается в файле журнала, верно?
Есть идеи?
РЕДАКТИРОВАТЬ:
Теперь я уверен, что это ошибка / или особенность. Я открыл заявку:
https://github.com/tensorflow/tensorflow/issues/26804
и видел аналогичный от августа 2018:
https://github.com/tensorflow/tensorflow/issues/21983
Следующие шаги — проверить, работает ли это с Tensorflow 2.0, поскольку здесь Keras официально является высокоуровневым API. Я построил модель, используя слои tf.estimator и keras, и я мог добавлять и видеть точность и потери.