2016-12-02 22 views
0

Я пытаюсь загрузить некоторые изображения в график TensorFlow, который равен RGB, однако мне хотелось бы, чтобы график преобразовывал их в оттенки серого перед обработкой.Ошибка при подаче изображений на график 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 с ошибкой и загрузив его на Github как md файл для Комплектность и краткости.

Я понимаю, что ошибка связана с тем, что x_batch находится в форме RGB.

Однако я думал, что TensorFlow сделает преобразование автоматически.

С tf.image.rgb_to_grayscale обертывает входы, не должно TF делать grayscaling как часть сеанса?

Или я пропустил понимание того, как это работает?

+1

Если вы хотите кормить в RGB изображения, которые вы должны иметь заполнитель формы '[None, 32, 32, 3]. Затем может произойти сериализация. –

+0

@OlivierMoindrot, так что tf.image.rgb_to_grayscale сделает сериализацию без какого-либо дополнительного кода? Как я могу обеспечить, чтобы серые изображения обрабатывались? –

+0

Итак, если вы загружаете RGB-изображения на ваш placeholder, а затем применяете 'gray = tf.image.rgb_to_grayscale (x)', вывод будет иметь форму '[None, 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) 

 Смежные вопросы

  • Нет связанных вопросов^_^