使用TensorFlow模型进行预测

use*_*866 79 tensorflow

我按照给定的mnist教程,能够训练模型并评估其准确性.但是,教程没有说明如何在给定模型的情况下进行预测.我对准确性不感兴趣,我只想使用模型来预测一个新的例子,并在输出中查看所有结果(标签),每个结果都有指定的分数(已分类或未分类).

dga*_*dga 71

在" Deep MNIST for Experts "示例中,请参阅以下行:

我们现在可以实现我们的回归模型.它只需要一行!我们将矢量化输入图像x乘以权重矩阵W,加上偏差b,并计算分配给每个类的softmax概率.

y = tf.nn.softmax(tf.matmul(x,W) + b)
Run Code Online (Sandbox Code Playgroud)

只需拉动节点y就可以得到你想要的东西.

feed_dict = {x: [your_image]}
classification = tf.run(y, feed_dict)
print classification
Run Code Online (Sandbox Code Playgroud)

这几乎适用于您创建的任何模型 - 您将计算预测概率作为计算损失之前的最后步骤之一.

  • `tf.run()`似乎已被删除,但`y.eval(feed_dict)`对我有效. (14认同)
  • 我可以回答我自己的评论:convnet示例在feed_dict中有一个额外的变量,我错过了补充.在这种情况下,feed_dict应如下所示:`feed_dict = {x:[your_image],keep_prob:1.0}` (3认同)

Sal*_*ali 16

正如@dga建议的那样,您需要通过已经预测的模型运行新的数据实例.

这是一个例子:

假设您通过了第一个教程并计算了模型的准确性(模型是这样的:) y = tf.nn.softmax(tf.matmul(x, W) + b).现在,您抓住模型并将新数据点应用于它.在下面的代码中,我计算向量,得到最大值的位置.显示图像并打印最大位置.

from matplotlib import pyplot as plt
from random import randint
num = randint(0, mnist.test.images.shape[0])
img = mnist.test.images[num]

classification = sess.run(tf.argmax(y, 1), feed_dict={x: [img]})
plt.imshow(img.reshape(28, 28), cmap=plt.cm.binary)
plt.show()
print 'NN predicted', classification[0]
Run Code Online (Sandbox Code Playgroud)