【发布时间】:2017-09-23 21:01:25
【问题描述】:
Tensorflow describes 编写文件摘要以可视化图形执行。
我设想三个阶段:
- 训练数据(优化)
- 在训练集上测量准确度(无优化)
- 在测试集上测量准确度(没有优化!)
我希望所有阶段都在同一个脚本中,就像在 wide_and_deep tutorial 的评估函数中一样,但使用的是低级 API。我想要三个不同的图表来表示损失或 AUC 等统计数据,每个阶段一个。
假设我使用一个会话,并且在每个阶段我定义一个 AUC 汇总操作:
# 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?
我是否必须为此保存模型并将其加载到新会话中,或者是否有一些干净的方法可以单独绘制每个摘要?
【问题讨论】:
标签: tensorflow