Задать вопрос
@Andrei1penguin1

Почему keras не принимает данные?

Доброго времени суток, есть массив numpy с 300 изображениями, каждое изображение представляет собой одномерный массив из 2359296 элементов (мне не очень понятно, почему, так как изображения имеют размер 1024x1024 и три канала rgb, что по логике должно давать 3145728 элементов) (! Проблема с размером изображения решилась после удаления data.shuffle() !), и при попытке обучить модель на этих данных:
model.fit(data, features, batch_size=64, epochs=3)
Возникает следующая ошибка:
ValueError: Error when checking input: expected conv2d_input to have 4 dimensions, but got array with shape (300, 1)
Как мне переделать массив данных, чтобы keras его принял?
  • Вопрос задан
  • 240 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
adugin
@adugin Куратор тега Python
У вас размер батча должен быть (64, 1024, 1024, 3), а первый входной слой, соответственно, Input(shape=(1024, 1024, 3)). Причём тут 3145728, вы разве Conv2D не к двумерному изображению применяете? Почему у вас изображения в виде одномерного массива? Вот вам именно об этой ошибке и пишут, потому что Conv2D работает на массивах с 3 измерениями (height, width, channels). Покажите модель вашей нейросети.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Andrei1penguin1 Автор вопроса
Я пересобрал данные, но почему-то лезет та же ошибка:
ValueError: Error when checking input: expected conv2d_input to have 4 dimensions, but got array with shape (300, 1)
Для достоверности я вывел размер данных:
print(len(data))
print(len(data[0]))
print(len(data[0][0]))
print(len(data[0][0][0]))

И получил:

300
1024
1024
3

Теперь я окончательно не понимаю, что не нравится keras
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы