Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在TensorFlow中的eval MNIST testdata期间从每个输出节点获取值?_Python_Tensorflow_Neural Network_Mnist - Fatal编程技术网

Python 如何在TensorFlow中的eval MNIST testdata期间从每个输出节点获取值?

Python 如何在TensorFlow中的eval MNIST testdata期间从每个输出节点获取值?,python,tensorflow,neural-network,mnist,Python,Tensorflow,Neural Network,Mnist,我用张量流训练卷积神经网络(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_bat

我用张量流训练卷积神经网络(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个概率向量的数组,这就是您感兴趣的向量。

谢谢@MiriamFarbe!这就是我要找的。我对这个概率向量中的值有点困惑,我希望数字在0.0到1.0之间。但例如我得到了:“-45049.13281256181.90087891-26765.70117188-40108.960937544725.257812560644.22265625272028.3515625-38615.09375 23696.48046875-9353.94628906”。您是否有一些关键字或链接,我可以查找以了解这一点?@Freundlicher听起来您没有在输出上应用softmax()。softmax函数将向量转换为概率向量。根据softmax的定义,argmax(预测,1)和argmax(softmax(预测,1)将相等。然而,后一个更容易解释,并且经常用于损失函数的计算。@Freundlicher除了我之前的评论之外,您可以在这里看到softmax是在模型中内部应用的:,而在这里它是显式应用的(在y=…)行中,我必须显式应用它?因为目前我在训练开始时使用:预测=卷积神经网络(x)成本=tf.reduce平均值(tf.nn.softmax\u cross\u entropy\u with_logits(logits=prediction,labels=y))你不必这样做,因为tf.nn.softmax\u cross\u entropy\u with_logits在内部就是这样做的。然而,如果你想自己研究概率向量,你需要这样做。下面是一个玩具示例:导入tensorflow作为tf a=tf.nn.softmax([1.0,2.0])sess=tf.InteractiveSession()a.eval()