Python 如何在Tensorflow中预测未标记图像

Python 如何在Tensorflow中预测未标记图像,python,tensorflow,Python,Tensorflow,我已经阅读了几个Tensorflow教程,但在对模型进行培训/测试之后,还没有看到任何关于使用模型的内容。我查看了stackoverflow,发现了一些不适合我的解决方案,比如 因此,我使用的代码中有一个例外,就是我修改了代码,这样我就可以尝试在以后运行预测,而不是关闭会话。对于预测,我只是使用了一个测试样本,但试图在不给出标签的情况下解决它。我想看看预测的是什么课程 # Launch the graph #with tf.Session() as sess: sess = tf.Session

我已经阅读了几个Tensorflow教程,但在对模型进行培训/测试之后,还没有看到任何关于使用模型的内容。我查看了stackoverflow,发现了一些不适合我的解决方案,比如

因此,我使用的代码中有一个例外,就是我修改了代码,这样我就可以尝试在以后运行预测,而不是关闭会话。对于预测,我只是使用了一个测试样本,但试图在不给出标签的情况下解决它。我想看看预测的是什么课程

# Launch the graph
#with tf.Session() as sess:
sess = tf.Session()
sess.run(init)
step = 1
# Keep training until reach max iterations
while step * batch_size < training_iters:
    batch_x, batch_y = mnist.train.next_batch(batch_size)
    # Run optimization op (backprop)
    sess.run(optimizer, feed_dict={x: batch_x, y: batch_y,
                               keep_prob: dropout})
    if step % display_step == 0:
        # Calculate batch loss and accuracy
        loss, acc = sess.run([cost, accuracy], feed_dict={x: batch_x,
                                                      y: batch_y,
                                                      keep_prob: 1.})
        print("Iter " + str(step*batch_size) + ", Minibatch Loss= " + \
          "{:.6f}".format(loss) + ", Training Accuracy= " + \
          "{:.5f}".format(acc))
    step += 1
print("Optimization Finished!")

# Calculate accuracy for 256 mnist test images
print("Testing Accuracy:", \
    sess.run(accuracy, feed_dict={x: mnist.test.images[:256],
                                  y: mnist.test.labels[:256],
                                  keep_prob: 1.}))
尽管看起来这已经被删除了,因为tensorflow说没有运行函数。同一页中的一条评论建议这样做

print(pred.eval(feed_dict={x: mnist.test.images[0]}))
但我得到了这个错误

ValueError: Cannot evaluate tensor using `eval()`: No default session is   registered. Use `with sess.as_default()` or pass an explicit session to     `eval(session=sess)`
有了这个,我发现我需要运行上面所说的,但是我遇到了一个问题,张量的大小不正确

with sess.as_default():
    print(pred.eval(feed_dict={x: mnist.test.images[0]}))

ValueError: Cannot feed value of shape (784,) for Tensor 'Placeholder:0', which has shape '(?, 784)'
从这里看,数据似乎没有正确对齐?我尝试过使用重塑,但没有成功。如果有人能给我指出正确的方向,让我知道如何在应用程序中实际使用我的模型,那将是非常棒的

编辑:这里有一个更简单的程序。我也有同样的问题

from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets('MNIST_data', one_hot=True)

import tensorflow as tf
sess = tf.InteractiveSession()

x = tf.placeholder(tf.float32, shape=[None, 784])
y_ = tf.placeholder(tf.float32, shape=[None, 10])

W = tf.Variable(tf.zeros([784,10]))
b = tf.Variable(tf.zeros([10]))

sess.run(tf.global_variables_initializer())

y = tf.matmul(x,W) + b

cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(y, y_))

train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)

for i in range(1000):
  batch = mnist.train.next_batch(100)
  train_step.run(feed_dict={x: batch[0], y_: batch[1]})

correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
print(accuracy.eval(feed_dict={x: mnist.test.images, y_: mnist.test.labels}))
y.eval(feed_dict={x: mnist.test.images[0]})
我得到的问题和上面一样

ValueError: Cannot feed value of shape (784,) for Tensor 'Placeholder:0', which has shape '(?, 784)'

指向笔记本的链接是本地链接,因此其他人无法看到。此外,您还缺少一些代码。“y”的定义在哪里


您需要做的就是计算y,例如:y.eval(feed_dict={x:NEW_DATA})

抱歉。我已经更新了链接。我将用所有的代码编辑我的文章。我做了一个编辑来展示一个较小的例子。我得到y输出,并使用你说的eval。现在我得到了一个输出,虽然我不确定值是什么。好的,我算出了。让评估工作正常。我的问题是没有识别代表类的输出,最高值是最有可能的。我要找出如何将其转化为0-1概率。谢谢,很高兴你知道了!你的模型的输出是一个对数赔率,所以我认为你可以用softmax函数将它转换为0到1之间的概率:这就成功了!我只需要用非科学的符号把它格式化,我很高兴。谢谢你的帮助!
ValueError: Cannot feed value of shape (784,) for Tensor 'Placeholder:0', which has shape '(?, 784)'