当分别测量每个类时,张流精度评估给出不同的结果

时间:2017-04-08 23:09:36

标签: tensorflow average conv-neural-network evaluation

我在张量流中评估我的神经网络模型的结果(识别CIFAR10图像)。 在每个时代之后,我在这样的测试集上打印精度(x是图像,y是真正的标签):

predict = tf.equal(tf.argmax(layer_model, 1), tf.argmax(y, 1))
accuracy = tf.reduce_mean(tf.cast(predict, "float"))

print("Accuracy: ", accuracy.eval({ x: test_images, y: test_labels)

但是,我试图为每类图像获得单独的准确度结果:

# test_labels look like: [0,1,0,...,0], [0,0,0,1,...,0], ...
labels_classes = np.argwhere(test_labels == 1)

chosen_class = np.argwhere(labels_classes[:,1] == j)
chosen_class = chosen_class.reshape(chosen.shape[0])
class_images = test_images[chosen]
class_labels = test_labels[chosen]
accuracy.eval({x: class_images, y: class_labels)

这种第二种打印精度方式让我平均得分差10%。谁能告诉我这里发生了什么?

1 个答案:

答案 0 :(得分:0)

您可以使用tf.metrics.mean_per_class_accuracy(labels,predictions,num_classes)

哪些标签是您的基本事实标签和预测是您的预测结果。标签和预测的形状应为[批量大小]并输入int32或int64。