在使用Estimator API时,有没有办法让Tensorflow打印额外的训练指标(例如批量精度)?
人们可以在Tensorboard中添加摘要并查看结果(参见另一篇文章),但我想知道是否有一种优雅的方法可以在训练时打印标量摘要值。这种情况已经发生在训练损失上,例如:
loss = 0.672677, step = 2901 (52.995 sec)
但如果能有这样的人就好了。
loss = 0.672677, accuracy = 0.54678, step = 2901 (52.995 sec)
不会有太多麻烦。我知道大多数时候绘制测试集准确性图更有用(我已经在用验证监视器做这件事了),但在这种情况下,我也对训练批次准确性感兴趣。
发布于 2017-08-16 14:18:23
据我所知,不可能通过传递参数来更改它。您可以尝试通过创建日志挂钩并将其传递给估计器运行来执行此操作。
在估计器的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)
发布于 2018-07-30 13:15:00
您还可以使用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
上看到这些图形。
发布于 2020-11-04 15:15:45
你试过Aim吗?这是伟大的记录任何指标,参数,然后搜索和比较它们很容易。
非常简单的get started with。
https://stackoverflow.com/questions/45353389
复制相似问题