我正在使用 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)