2016-12-02 33 views
0

我試圖將一些圖像加載到TensorFlow圖表中,但是我希望圖表在處理之前將它們轉換爲灰度。將圖像傳送到TensorFlow圖表時出錯

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並將其上傳到Githubmd文件completness和簡潔。

我意識到錯誤是因爲x_batch是RGB形狀。

但是我認爲TensorFlow會自動進行轉換。

由於tf.image.rgb_to_grayscale包裝輸入,不應該TFgrayscaling作爲會議的一部分?

還是我誤解了這是如何工作的?

+1

如果你想在你需要有一個佔位符形狀'[無,32 RGB圖像喂, 32,3]'。然後灰度可能發生。 –

+0

@OlivierMoindrot所以tf.image.rgb_to_grayscale會做沒有任何進一步的代碼灰度?我如何確保正在處理的圖像是灰色圖像? –

+0

因此,如果您將RGB圖像提供給佔位符,然後應用'gray = tf.image.rgb_to_grayscale(x)',則輸出形狀爲[[無,32,32,1]],並且將包含灰色圖像。如果你想確定,你可以檢查'灰色'的形狀。 –

回答

1

功能tf.image.rgb_to_graycale期望用具有其最後的尺寸大小3.例如分批形狀(250, 32, 32, 3)的圖像中你的情況,或者它可以是形狀(32, 32, 3)的單個圖像的輸入張量。

如果你想養活RGB圖像,並立即將其處理成灰度,你可以這樣做:

images = tf.placeholder(tf.float32, shape=[None, 32, 32, 3]) 
gray_images = tf.image.rgb_to_grayscale(images) # has shape (None, 32, 32, 1)