如何用户使用tensorflow MNIST模式进行推理

问题描述 投票:0回答:1

我正在学习张量流。在完成了tensorflow教程MNist for expert(https://www.tensorflow.org/get_started/mnist/pros)之后,我试图使用训练有素的模型进行推理。我复制了两个[28x28]图像并将它们放入[28x28x2]数组并保存了一个matlab文件。然后我使用以下代码来运行推理:

data = sio.loadmat("data/test/testdig.mat")
data = tf.reshape(data["testdig"], [-1, 28, 28, 1])

x = tf.placeholder(tf.float32, shape=[None, 28, 28, 1]);

W_conv1 = weight_variable([5, 5, 1, 32])
b_conv1 = bias_variable([32])
h_conv1 = tf.nn.relu(conv2d(x, W_conv1) + b_conv1)
h_pool1 = max_pool_2x2(h_conv1)

....CNN network stuff

y_conv = tf.matmul(h_fc1_drop, W_fc2) + b_fc2

prediction = tf.argmax(y_conv, 1)

saver = tf.train.Saver()
with tf.Session() as sess:
    saver.restore(sess, "model/mnist.ckpt") //restored the saved model
    print(prediction.eval(feed_dict={x: data, keep_prob: 1.0}))

但是,上面的代码在最后一行给了我一个错误:

raise TypeError('feed的值不能是tf.Tensor对象。'TypeError:feed的值不能是tf.Tensor对象。可接受的feed值包括Python标量,字符串,列表,numpy ndarrays或TensorHandles。

为什么?

tensorflow mnist inference
1个回答
1
投票

在你的代码中:

data = tf.reshape(data["testdig"], [-1, 28, 28, 1])

这意味着数据是稍后要计算的张量。您不能将其用作输入,因为您不知道该值。

您需要在x(您的占位符)上应用重塑,以便它在模型中发生,

或使用numpy操作来重塑数据以匹配tensorflow预期。

© www.soinside.com 2019 - 2024. All rights reserved.