Tensorflow describes编写文件摘要以可视化图形执行。
我设想了三个阶段:
我喜欢同一个脚本中的所有阶段,如wide_and_deep tutorial的evaluate函数,但是使用低级API。我想要三个不同的图表来统计损失或AUC,每个阶段一个。
假设我使用一个会话,并在每个阶段我定义一个AUC摘要op:
# define auc
auc, auc_op = tf.metrics.auc(labels, predictions)
# summary scalar to track it
tf.summary.scalar("auc", auc_op, family=family_name)
# merge all summaries for evaluation and later writing
summary_op = tf.summary.merge_all()
...
summary_writer.add_summary(summary, step_num)
有三个图表,但第一个图表上有三个图表,第二个图表有最后两个图表(见下文)。更糟糕的是,每个阶段都从之前的状态开始。这是有道理的,因为前几个阶段的所有变量仍然存在。
我可以为每个阶段使用不同的会话,但这也会丢掉模型。
处理此问题的顺利方法是什么?
我想清除一些摘要变量。我尝试重新初始化一些变量,查看related个问题,了解名称范围和变量范围,并尝试不重复使用AUC变量,阅读variables和sharing ,看了pruning nodes(虽然我不明白),等等。我还没有让它发挥作用。
我正在使用低级API。我在_eval_metric_ops的高级API中看到了类似的内容,但我不明白他们如何“清除”不同的阶段。使用name_scope?
我是否必须将模型保存并加载到新会话中,或者是否有一些简洁的方法来单独绘制每个摘要?
答案 0 :(得分:0)
指标操作将是本地变量,因此您可以在会话中运行tf.local_variables_initializer()
,这将重置所有指标。您还可以查看本地变量集合中的" auc"在名字中,如果你想要更有洞察力。执行此操作的高级方法是使用Estimator,它将为您管理指标。