tensorflow用混淆矩阵进行评价



在tensorflow CNN教程中,它计算精度,但我想利用它来计算混淆矩阵。

我立刻想到了三种不同的方法:

  1. 我尝试直接计算预测结果,而不是tensorflow中的top_k_op,然后我可以使用sklearn。但我失败了,因为它使用了多个线程进行计算(第88行);

  2. 我试图加载经过训练的Variables,并为cifar10.introse提供新的占位符,但再次失败,因为它将batch_image定义为输入(第225行);

  3. 最后一种方法是定义一个新的操作来替换线路128

    top_k_op = tf.nn.in_top_k(logits, labels, 1)
    

    但我找不到合适的手术可以做到这一点。

这已经折磨了我好几天了。请帮忙。提前谢谢。

只有在对所有数据集运行"推理"后,才能使用sklearn的confusion_mmatrix。也就是说,如果您正在修改eval_only函数,您应该将所有分数累积到某个线程安全容器(列表)中。然后,在所有线程停止后(第113行),您可以运行单个混淆矩阵计算。

此外,如果你想在图中进行,TensorFlow最近获得了confusion_matrix op,你可以尝试使用。也就是说,它只适用于批处理,因此您需要增加批处理以获得任何类型的分辨率或编写自定义聚合器。

相关内容

  • 没有找到相关文章