我正在尝试将我正在开发的神经网络的输入批处理在一起,以便我可以将它们输入到 tensorflow 中,就像在 tensorflow MNIST 教程中一样。但是我找不到这样做的方法,并且教程中也没有介绍它。
input = tf.placeholder(tf.float32, [10, 10])
...
accuracy = tf.reduce_mean(tf.cast(correct, tf.float32))
inputs = #A list containing 50 of the inputs
sess.run(accuracy, feed_dict={input: inputs})
这将引发以下错误:
ValueError: Cannot feed value of shape (50, 10, 10) for Tensor'Placeholder:0', which has shape '(10, 10)'
我明白为什么我会收到上述错误,我只是不知道如何让 tensorflow 将我的输入视为一批输入,而不是认为我试图将其全部输入为一个形状。
非常感谢您的帮助!
最佳答案
您需要修改占位符的签名。让我们分解一下错误消息:
ValueError: Cannot feed value of shape (50, 10, 10) for
Tensor'Placeholder:0', which has shape '(10, 10)'
您的 inputs
变量的形状为 (50, 10, 10)
,这意味着 50
个形状为 ( 10, 10)
和张量 Placeholder:0
是您的输入
变量。如果你打印(input.name),你将得到值Placeholder:0
。
无法提供值意味着它无法将输入
分配给输入
。
第一个快速解决方案是将占位符输入
的形状修复为
input = tf.placeholder(tf.float32, [50, 10, 10])
但是每次您想要修改批处理大小时,您都需要更新输入中的批处理大小。
指定批量大小的更好方法是使用 None
为批量大小设置未定义的形状尺寸:
input = tf.placeholder(tf.float32, [None, 10, 10])
现在,这适用于任何批量大小,从 1
到架构的硬件限制。
关于python - 如何为 tensorflow 批量输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40685452/