我使用TensorFlow 1.12
的keras构建模型。在训练模型之后(或期间),我可以用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
中积累训练数据集abd测试数据集。
信息被计算并显示在日志文件中:
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年8月的类似照片:
https://github.com/tensorflow/tensorflow/issues/21983
下一步是查看它是否适用于Tensorflow 2.0,因为此处Keras正式是高级API。我使用tf.estimator和keras层构建了一个模型,我可以添加并看到累积和损失。