0

我正在使用 TensorFlow-Slim,并在 eval_image_classifier.py(位于 /models/slim/)中添加了一些代码行,用于计算 TP、TN、FP 和 FN。但是,计算精度 = (TP + TN) / (TP + FP + FN + TN) 不等于 slim.metrics.streaming_accuracy(predictions, labels) 给出的精度。

我已经从这里更改了标准代码:

names_to_values, names_to_updates = slim.metrics.aggregate_metric_map({
    'Accuracy': slim.metrics.streaming_accuracy(predictions, labels),
        'Recall_5': slim.metrics.streaming_recall_at_k(
            logits, labels, 5),
    })

...对此:

names_to_values, names_to_updates = slim.metrics.aggregate_metric_map({
        'Accuracy': slim.metrics.streaming_accuracy(predictions, labels),
        'TruePositives': slim.metrics.streaming_true_positives(predictions, labels),        
        'TrueNegatives': slim.metrics.streaming_true_negatives(predictions, labels),
        'FalsePositives': slim.metrics.streaming_false_positives(predictions, labels),
        'FalseNegatives': slim.metrics.streaming_false_negatives(predictions, labels),
        'Recall_5': slim.metrics.streaming_recall_at_k(
        logits, labels, 5),
    })

输出:

I tensorflow/core/kernels/logging_ops.cc:79] eval/TruePositives[322]
I tensorflow/core/kernels/logging_ops.cc:79] eval/TrueNegatives[72]
I tensorflow/core/kernels/logging_ops.cc:79] eval/FalsePositives[4]
I tensorflow/core/kernels/logging_ops.cc:79] eval/FalseNegatives[2]
I tensorflow/core/kernels/logging_ops.cc:79] eval/Accuracy[0.9525]
I tensorflow/core/kernels/logging_ops.cc:79] eval/Recall_5[1]

我已经测试了finetune_resnet_v1_50_on_flowers.sh 脚本(位于/models/slim/scripts),没有进行任何更改(克隆于2017 年4 月12 日)。

我找不到我的错误。我很高兴收到您对此问题的回答、意见或具体建议。

CUDA版本:发布8.0、V8.0.53

TensorFlow 从二进制安装,经过测试的版本:1.0.1 和 1.1.0rc1

GPU:英伟达 Tesla P100 (SXM2)

4

0 回答 0