我在张量流中评估我的神经网络模型的结果(识别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%。谁能告诉我这里发生了什么?
答案 0 :(得分:0)
您可以使用tf.metrics.mean_per_class_accuracy(labels,predictions,num_classes)
哪些标签是您的基本事实标签和预测是您的预测结果。标签和预测的形状应为[批量大小]并输入int32或int64。