首页 > 解决方案 > 在 Estimator API 中使用指标时,PR 曲线插件 (pr_curve_raw_data_op) 未完全绘制

问题描述

TensorBoard 版本(来自 pip 包,运行时也打印出来tensorboard):1.12.0 TensorFlow 版本如果与 TensorBoard 不同:1.12.0 操作系统平台和版本(例如,Linux Ubuntu 16.04):Arch Linux Python 版本(例如 2.7、3.5): 3.6.5

你好呀,

我正在尝试使用pr_curve_raw_data_op具有精度、召回率和其他指标的函数来绘制 PR 曲线,但我在图表中得到了错误的结果。我正在使用 Estimator API,这意味着我创建了自己的字典,其中包含 tupletf.Tensortf.Operation实例,然后将其转发给 estimator 以转储摘要。

我在每个检查点保存期间评估多个步骤,这意味着我通过多个步骤累积精度和召回(但我不使用 pr_curves 插件这样做,我使用自定义的书面指标),我想要从插件中转储PR曲线进入张量板。这是用于将pr-curves摘要张量存储到度量字典中的代码部分:

metrics_dict['pr_curve/CLASS_{}'.format(cls_index)] = (
    summary.raw_data_op(
        'pr_curve/CLASS_{}'.format(cls_index),
        true_positive_counts=tps,
        false_positive_counts=fps,
        true_negative_counts=tns,
        false_negative_counts=fns,
        precision=precisions,
        recall=recalls,
        num_thresholds=11
    ),
    tf.no_op()
)

我还尝试将精度转储为文本摘要,以确保终端中打印的输出与存储在摘要中的输出相同,并且我使用以下代码转储了这些摘要:

metrics_dict['precisions_text/CLASS_{}'.format(cls_index)] = (
    tf.summary.text(name="aa",
                    tensor=tf.as_string(precs)),
    tf.no_op()
)

最后附上几张截图。第一个显示转储到文本摘要的精度及其值(我只显示了前 6 个值,其余 4 个值为 0.0):

图片

第二个屏幕截图包含在 PR 曲线上绘制的相同类别和步骤的相同精度:

图片

您可以看到图上只有第一个点,0.0 召回的精度为 1.0。这种情况发生在更多的情况下,以及图表在最后一点被切断(例如,我的召回率从 0.0 到 0.6 的精度值,但图表仅达到 0.5)。

标签: pythonpython-3.xtensorflowtensorboard

解决方案


推荐阅读