Я искал все решения, связанные с этим, и до сих пор не могу понять, как сформировать свои тренировочные данные, чтобы Tensorflow принял их.
Мои тренировочные данные представляют собой массив numpy shape (21005, 48, 48), где 21005 - это число элементов, а 48,48 - это изображение в градациях серого 48x48.
model.add(tf.keras.layers.Conv2D(64, kernel_size=3,activation='relu',input_shape=(48,48,1)))
model.add(tf.keras.layers.Conv2D(32, kernel_size=3,activation='relu'))
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(7, activation='softmax'))
model.compile(optimizer='adam',
loss = 'sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(image_train, emotion_train,batch_size=BATCH_SIZE,epochs=EPOCHS, verbose=1)
Однако, когда я запускаю функцию подгонки, она возвращает сообщение об ошибке :
ValueError: Error when checking input: expected conv2d_input to have 4 dimensions, but got array with shape (21005, 48, 48)
Это заставляет меня думать, что я неправильно форматирую входные данные или что-то упускаю из-за того, как Keras и TF фактически передают входное изображение во входной слой. Я попытался добавить дополнительное измерение к входной форме, чтобы позволить канал в 2d Conv слое, а также изменить форму самих изображений безрезультатно. Любой совет?