python - 如何为 tensorflow 批量输入?

标签 python neural-network tensorflow

我正在尝试将我正在开发的神经网络的输入批处理在一起,以便我可以将它们输入到 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/

相关文章:

tensorflow - 有什么方法可以使用tensorflow-federated API对真实的多台机器进行联邦学习吗?

java - java、Tensorflow中的全连接层

python - Matplotlib 显示页面上的滚动条

python - 当多行不以点结尾时合并多行

Python 3.2 Cherrypy 3.2.3 ssl_module pyopenssl 错误

python - 两段代码(关于 python GIL)有什么区别?

neural-network - 了解简单的LSTM pytorch

c# - 具有自定义误差函数的神经网络

python - 用于回归层的 RNN

python - 自定义损失函数: NotImplementedError: Cannot convert a symbolic Tensor (truediv_2:0) to a numpy array