tensorflow 使用混淆矩阵进行评估
tensorflow evaluate with confusion matrix
在 tensorflow CNN tutorial 中,它计算准确度,但我想将其用于混淆矩阵。
我立刻想到了三种不同的方法:
我试图直接计算预测结果而不是在tensorflow中top_k_op,然后我可以利用sklearn。但是我失败了,因为它使用了多个线程来计算(line 88);
我试图加载训练好的变量并给cifar10.inference赋予新的占位符,但又失败了,因为它定义了batch_image作为输入(line 225);
最后一种做法是定义一个新的操作来代替line 128
top_k_op = tf.nn.in_top_k(logits, labels, 1)
但我找不到合适的操作可以做到这一点。
这困扰了我几天。请帮忙。提前谢谢你。
您只能在 运行ning 'inference' 之后对所有数据集使用 sklearn 的 confusion_matrix。
意思是,如果您正在修改 eval_only
函数,您应该将所有分数累积到某个线程安全的容器(列表)中。然后在所有线程停止后(第 113 行),您可以 运行 单个混淆矩阵计算。
另外,如果你想在图中做,TensorFlow最近得到confusion_matrix
op你可以尝试使用。也就是说,它仅适用于批处理,因此您需要增加批处理以获得任何类型的分辨率或编写自定义聚合器。
在 tensorflow CNN tutorial 中,它计算准确度,但我想将其用于混淆矩阵。
我立刻想到了三种不同的方法:
我试图直接计算预测结果而不是在tensorflow中top_k_op,然后我可以利用sklearn。但是我失败了,因为它使用了多个线程来计算(line 88);
我试图加载训练好的变量并给cifar10.inference赋予新的占位符,但又失败了,因为它定义了batch_image作为输入(line 225);
最后一种做法是定义一个新的操作来代替line 128
top_k_op = tf.nn.in_top_k(logits, labels, 1)
但我找不到合适的操作可以做到这一点。
这困扰了我几天。请帮忙。提前谢谢你。
您只能在 运行ning 'inference' 之后对所有数据集使用 sklearn 的 confusion_matrix。
意思是,如果您正在修改 eval_only
函数,您应该将所有分数累积到某个线程安全的容器(列表)中。然后在所有线程停止后(第 113 行),您可以 运行 单个混淆矩阵计算。
另外,如果你想在图中做,TensorFlow最近得到confusion_matrix
op你可以尝试使用。也就是说,它仅适用于批处理,因此您需要增加批处理以获得任何类型的分辨率或编写自定义聚合器。