我一直在阅读几个Tensorflow教程,并且在经过训练/测试之后没有看到任何关于使用模型的内容。我查看了stackoverflow,发现了一些对我不起作用的解决方案,如here
所以我使用代码here,但我更改了代码,因此我可以尝试在之后运行预测而不是会话结束。对于预测,我只是使用测试样本,但尝试在不给出标签的情况下进行测试。我想看看预测了什么课程。
# 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.}))
从我上面列出的堆栈溢出页面,我应该可以做这样的事情
print(tf.run(pred, feed_dict={x: mnist.test.images[0]}))
虽然看起来已经删除了,因为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)'
答案 0 :(得分:0)
指向笔记本的链接是本地链接,因此没有其他人可以看到它。此外,您缺少一些代码。 “y”在哪里定义?
您需要做的就是评估y,例如:y.eval(feed_dict = {x:NEW_DATA})