如何在 TensorFlow 中评估 MNIST 测试数据期间从每个输出节点获取值?

How to get the value from each output-node during eval MNIST testdata in TensorFlow?

我使用 TensorFlow 训练卷积神经网络 (CNN)。训练完成后,我使用以下代码计算准确率:

...
correct = tf.equal(tf.argmax(prediction, 1), tf.argmax(y, 1))
accuracy = tf.reduce_mean(tf.cast(correct, tf.float32))
eval_batch_size = 1
good = 0
total = 0
for i in range(int(mnist.test.num_examples/eval_batch_size)):
    testSet = mnist.test.next_batch(eval_batch_size, shuffle=False)
    good += accuracy.eval(feed_dict={ x: testSet[0], y: testSet[1]})
    total += testSet[0].shape[0]
accuracy_eval = good/total

对于“好”,当正确检测到测试图像时,我得到值 1.0,如果检测不到,则得到值 0.0。

我想获取所有十个输出节点的值。例如,我评估带有手写“8”的测试图像,因此数字“8”的输出节点可能为 0.6,数字“3”的输出节点为 0.3,“5”的输出节点为 0.05,最后一个 0.05 传播在其他七个输出节点上。

那么我如何在 TensorFlow 中获得每个测试图像的所有这十个值?

您可以通过添加以下行来做到这一点:

pred=prediction.eval(feed_dict={ x: testSet[0], y: testSet[1]})

紧接着

testSet = mnist.test.next_batch(eval_batch_size, shuffle=False)

那么pred就是一个包含1个概率向量的数组,这就是你感兴趣的向量