如何顺利地为训练和测试集生成Tensorflow auc摘要?

时间:2017-09-23 21:01:25

标签: tensorflow

Tensorflow describes编写文件摘要以可视化图形执行。

我设想了三个阶段:

  1. 培训数据(优化)
  2. 测量训练集的准确度(无优化)
  3. 测试装置的测量精度(无优化!)
  4. 我喜欢同一个脚本中的所有阶段,如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变量,阅读variablessharing ,看了pruning nodes(虽然我不明白),等等。我还没有让它发挥作用。

    我正在使用低级API。我在_eval_metric_ops的高级API中看到了类似的内容,但我不明白他们如何“清除”不同的阶段。使用name_scope?

    我是否必须将模型保存并加载到新会话中,或者是否有一些简洁的方法来单独绘制每个摘要?

    three graphs

1 个答案:

答案 0 :(得分:0)

指标操作将是本地变量,因此您可以在会话中运行tf.local_variables_initializer(),这将重置所有指标。您还可以查看本地变量集合中的" auc"在名字中,如果你想要更有洞察力。执行此操作的高级方法是使用Estimator,它将为您管理指标。