在Estimator API中使用指标时,PR曲线插件(pr_curve_raw_data_op)无法完全绘制

时间:2018-11-15 14:10:39

标签: python python-3.x tensorflow tensorboard

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,这意味着我创建了自己的字典,其中包含tf.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):

image

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

image

您可以看到图中只有第一个点,精确度为1.0(0.0调用)。在另外几种情况下会发生这种情况,最后一点是图表被切断(例如,我从召回中得到的精度值从0.0到0.6,而图表只有0.5)。

0 个答案:

没有答案