Ошибка с input_shape, как ожидается, будет иметь 4 измерения, но получен массив с формой (73257, 32, 32)

0

Вопрос

У меня есть изображения этой фигуры в оттенках серого: x_train_grey.shape = (73257, 32, 32)

Я указываю первый слой следующим образом:

Flatten(input_shape=(32,32,1)' Потому что я не передаю размер пакета, а изображения в оттенках серого имеют только 1 канал. Но я получаю эту ошибку:

ValueError: Error when checking input: expected flatten_1_input to have 4 dimensions, but got an array with shape (73257, 32, 32)

Я не понимаю, в чем дело, пожалуйста, помогите. Я понимаю, что об этом спрашивали много раз, но я не могу найти решение.

Ура!

2

Лучший ответ

1

Проблема, вероятно, заключается в том, как вы передаете свои данные в свою модель. Если ваша входная форма (batch_size, 32, 32) тогда попробуйте что-нибудь вроде этого:

import tensorflow as tf

grey_scale_images = tf.random.normal((64, 32, 32))

model = tf.keras.Sequential()
model.add(tf.keras.layers.Flatten(input_shape=(32,32,1)))

print(model(grey_scale_images).shape)
# (64, 1024)

Обновление: Оба input_shape=(32,32,1) и input_shape=(32,32) будет работать. Это зависит от того, как вы передаете свои данные в свою модель:

import tensorflow as tf

grey_scale_images = tf.random.normal((64, 32, 32))
Y = tf.random.normal((64, 1024))
model = tf.keras.Sequential()
model.add(tf.keras.layers.Flatten(input_shape=(32, 32, 1)))
model.compile(loss='MSE')
model.fit(grey_scale_images, Y)
2021-11-24 08:40:01

На самом деле, просто проходя input_shape=(32,32) сработало, спасибо!
mankojag

Я думаю, что вы ошибаетесь...Проверьте мой обновленный ответ.
AloneTogether

Спасибо, но я не совсем уверен, что это правильно. Я пытался input_shape=(32,32,1) но это не работает. Что, по вашему мнению, нужно сделать, прежде чем передавать это вместо input_shape=(32,32)? Есть ли какое-то правило, которое гласит (32,32,1) следует использовать более (32,32) или это не имеет значения, как вы говорите, работают оба варианта?
mankojag

Проверьте нижнюю часть моего ответа. Как я уже сказал, оба работают, но это зависит от того, как выглядят ваши данные
AloneTogether
-1

Я тоже все еще изучаю этот материал, но я бы предположил, что "1" как количество записей в измерении невозможно. Даже если это возможно, это только начало. "1" как размер оси для меня не имеет смысла. Кто-нибудь еще?

2021-11-24 07:34:08

Действительно, спасибо input_shape=(32,32) кажется, все работает нормально
mankojag

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................