在tensorflow CNN教程中,它计算准确性,但是我想从中利用这一点来混淆矩阵。
立刻,我想到了三种不同的方法:
我试图直接计算预测结果而不是tensorflow中的top_k_op,然后可以利用sklearn。但是我失败了,因为它使用了多个线程来进行计算(第88行)。
我试图加载经过训练的变量,并给cifar10.inference添加新的占位符,但是又失败了,因为它将batch_image定义为输入(第225行);
最后一种方法是定义一个新操作来替换第128行
top_k_op = tf.nn.in_top_k(logits, labels, 1)
但我找不到适当的操作可以做到这一点。
这困扰了我好几天。请帮忙。先感谢您。
只有在所有数据集上运行“推断”后,才能使用sklearn的confusion_matrix。意思是,如果要修改eval_only
功能,则应将所有分数累积到某个线程安全的容器(列表)中。然后,在所有线程都停止之后(第113行),您可以运行单个混淆矩阵计算。
此外,如果您想在图表中进行操作,TensorFlow最近获得了confusion_matrix
op,您可以尝试使用。就是说,它仅适用于批处理,因此您将需要增加批处理以获得任何类型的分辨率或编写自定义聚合器。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句