我正在学习张量流。在完成了专家(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。
为什么?
答案 0 :(得分:1)
在您的代码中:
handleOnChange = (value) => {
this.setState({
volume: value
})
window.DZ.player.setVolume(value)
}
这意味着数据是稍后要计算的张量。您不能将其用作输入,因为您不知道该值。
您需要在data = tf.reshape(data["testdig"], [-1, 28, 28, 1])
(您的占位符)上应用重塑,以便它在模型中发生,
或使用numpy操作来重塑数据以匹配tensorflow预期的值。