我正在使用tensorflow估算器对象来训练官方tensorflow图层文档(https://www.tensorflow.org/tutorials/layers)中的模型。我可以看到训练期间训练损失会显示在控制台上。有没有办法存储这些训练损失值?
谢谢!
答案 0 :(得分:0)
显示是通过logging.info
完成的。 tf.estimator
为培训损失创建了LoggingTensorHook
,请参阅here。
我想您可以将日志记录输出重新路由到某个文件,但这仍然不会为您提供原始值。
我能想到的两种方式:
LoggingTensorHook
非常相似,您只需要将数字写入文件而不是打印它们。tf.estimator
还会在Tensorboard中为培训损失创建摘要数据;你可以打开" Scalar" Tensorboard中的选项卡,您应该看到损失曲线。勾选"显示数据下载链接"在左上角。这将为您提供以CSV或JSON格式下载每个图表数据的选项。默认情况下,日志记录和摘要挂钩都设置为每100步记录一次值。因此,图表应该具有您在控制台中看到的相同信息。如果您不熟悉Tensorboard,Tensorflow网站上也有教程;基本用法应该很简单!答案 1 :(得分:0)
在estimator.train()
训练估算器后,您可以在model_dir中使用TensorBoard事件文件model = tf.estimator.Estimator(..., model_dir= 'tmp')
# model data will be save in tmp directory after training
事件文件的名称为events.out.tfevents.15121254 ....,此文件保存训练过程的日志(eval文件夹中还有一个保存评估日志的其他事件文件)。您可以通过以下方式获得培训损失:
for e in tf.train.summary_iterator(path_to_events_file):
for v in e.summary.value:
if v.tag == 'loss':
print(v.simple_value)
此外,您可以在训练期间通过在model_fn中添加tf.summary来保存其他值:
tf.summary.scalar('accuracy', accuracy)
参考:https://www.tensorflow.org/api_docs/python/tf/train/summary_iterator