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

时间:2017-12-22 06:04:44

标签: tensorflow mnist inference

我正在学习张量流。在完成了专家(https://www.tensorflow.org/get_started/mnist/pros)的tensorflow教程MNist之后,我试图使用训练有素的模型进行推理。我复制了两个[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}))

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

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

为什么?

1 个答案:

答案 0 :(得分:1)

在您的代码中:

handleOnChange = (value) => {
 this.setState({
   volume: value
 })
 window.DZ.player.setVolume(value)
}

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

您需要在data = tf.reshape(data["testdig"], [-1, 28, 28, 1]) (您的占位符)上应用重塑,以便它在模型中发生,

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