Ввод данных изображения в заполнитель тензорного потока - PullRequest
0 голосов
/ 29 марта 2019

Я работаю с набором данных keras.datasets.fashion_mnist, который содержит 28 x 28 изображений в градациях серого.Я построил довольно простую сверточную нейронную сеть, которая принимает заполнитель изображений, определенных как:

X = tf.placeholder(tf.float32, [None, 28, 28, INPUT_CHANNELS], name='X_placeholder')

Я начинаю с <type 'numpy.ndarray'> формы (100, 28, 28).100 здесь представляет размер партии, с которой я решил тренироваться.

Очевидно, что размерность здесь не совпадает.График, который я построил, должен также работать с изображениями RGB, отсюда и размерность INPUT_CHANNEL.Как и ожидалось, когда я пытаюсь тренироваться, я получаю следующую ошибку:

ValueError: Cannot feed value of shape (100, 28, 28) for Tensor u'X_placeholder:0', which has shape '(?, 28, 28, 1)'

Будучи относительно новичком в TF и ​​тупым, я не вижу, как добавить это дополнительное измерение.Собрав воедино мой код из разных источников, я не могу сказать, что выбрал форму ввода заполнителя [None, 28, 28, INPUT_CHANNELS], но я хочу придерживаться его, а не пытаться обойти его.

Вопрос

Как я могу изменить свои тренировочные данные в соответствии с ожидаемой размерностью заполнителя?

1 Ответ

0 голосов
/ 29 марта 2019

В цифрах:

Вы можете использовать np.newaxis, np.expand_dims и reshape(), чтобы добавить размерность.

import numpy as np

train_data = np.random.normal(size=(100,28,28))
print(train_data.shape)

new_a = train_data[...,np.newaxis]
print(new_a.shape)
new_a = np.expand_dims(train_data,axis=-1)
print(new_a.shape)
new_a = train_data.reshape(100,28,28,1)
print(new_a.shape)

(100, 28, 28)
(100, 28, 28, 1)
(100, 28, 28, 1)
(100, 28, 28, 1)

В тензорном потоке:

Вы можете использовать tf.newaxis, tf.expand_dims и tf.reshape, чтобы добавить размерность.

import tensorflow as tf

train_data = tf.placeholder(shape=(None,28,28),dtype=tf.float64)
print(train_data.shape)

new_a = train_data[...,tf.newaxis]
print(new_a.shape)
new_a = tf.reshape(train_data,shape=(-1,28,28,1))
print(new_a.shape)
new_a = tf.expand_dims(train_data,axis=-1)
print(new_a.shape)

(?, 28, 28)
(?, 28, 28, 1)
(?, 28, 28, 1)
(?, 28, 28, 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...