ValueError: ожидаемая ось -1 входной фигуры будет иметь значение 1, но получила входные данные с формой [1,32,32,3] - PullRequest
0 голосов
/ 01 марта 2020

В настоящее время я работаю над обучением набора данных, хранящегося как массивы numpy, с использованием

train_dataset=tf.data.Dataset.from_tensor_slices(train_data)

Здесь train_data представляет собой массив данных numpy без соответствующих меток. Модель, которую я использую, была создана для работы с наборами данных как DatasetV1Adapters (MNIST и набор данных для GAN от пикселя к пикселю). Я долго искал документацию для внесения необходимых исправлений (около 4 недель). и этот метод не решил мою проблему.

Для тренировочного процесса я выполнял:

for images in train_dataset:
            #images=np.expand_dims(images, axis=0)
            disc_loss += train_discriminator(images)

, который дал бы мне ошибку

ValueError: Input 0 of layer conv2d_2 is incompatible with the layer: expected ndim=4, found ndim=3.

Форма массива была [32,32,3], поэтому 100 из числа изображений были потеряны. Я попытался запустить закомментированную строку images = np.expand_dims (images, axis = 0). Таким образом, я получил [1,32,32,3], который соответствовал моей требуемой размерности. Я думал, что моя проблема будет решена, но вместо этого у меня теперь есть следующая ошибка:

ValueError: Input 0 of layer conv2d_4 is incompatible with the layer: expected axis -1 of input shape to have value 1 but received input with shape [1, 32, 32, 3]

, которую я не до конца понимаю. Кажется, что ошибка определенно связана с datasetV1Adapter, так как я получаю ошибку того же типа, что и различные коды. Я попытался загрузить свой набор данных в github, но я не могу загрузить его как папку размером 10 ГБ. Любая помощь будет оценена

РЕДАКТИРОВАТЬ: следовал совету @ Себастьян-Sz (Kind off). Я установил три канала в модели, чтобы они соответствовали RGB вместо градаций серого. Запуск этого кода дал мне

TypeError: Value passed to parameter 'input' has DataType uint8 not in list of allowed values: float16, bfloat16, float32, float64

Поэтому я добавил

train_data = np.asarray(train_data, dtype=np.float)

Теперь я получаю сообщение об ошибке:

Input 0 of layer dense_5 is incompatible with the layer: expected axis -1 of input shape to have value 6272 but received input with shape [1, 8192]

Что не имеет смысла для меня

...