【发布时间】:2016-12-02 03:14:52
【问题描述】:
我正在尝试将一些图像加载到 TensorFlow 图形中,它们是 RGB,但是我希望图形在处理之前将它们转换为灰度。
x = tf.placeholder(tf.float32, shape=[None, 32, 32, 1], name='x')
gray = tf.image.rgb_to_grayscale(x, name='grayscale')
但是我得到了错误
ValueError: Cannot feed value of shape (250, 32, 32, 3) for Tensor 'x:0', which has shape '(?, 32, 32, 1)'
为了完整和简洁,我导出了带有错误的 notebook 并将其作为 md 文件上传到 Github。
我意识到错误是因为 x_batch 是 RGB 形状。
但是我认为TensorFlow 会自动进行转换。
由于tf.image.rgb_to_grayscale 包装了输入,TF 不应该将grayscaling 作为会话的一部分吗?
还是我误解了它的工作原理?
【问题讨论】:
-
如果你想输入 RGB 图像,你需要一个形状为
[None, 32, 32, 3]的占位符。然后就可以进行灰度化了。 -
@OlivierMoindrot 所以 tf.image.rgb_to_grayscale 将在没有任何进一步代码的情况下进行灰度化?如何确保处理的是灰色图像?
-
因此,如果您将 RGB 图像输入占位符,然后应用
gray = tf.image.rgb_to_grayscale(x),则输出的形状将是[None, 32, 32, 1],并将包含灰色图像。如果你想确定,你可以检查gray的形状。 -
@OlivierMoindrot - 你能提升你对答案的评论吗?谢谢!
-
@dga:完成。您是否正在尝试清理 tensorflow 标签?
标签: numpy tensorflow conv-neural-network grayscale