Я настраиваю свою первую нейронную сеть с керасами и тензорным потоком. Я получил свой вход в массив формы (60000, 28, 28), но когда я пытаюсь передать его в модель, я получаю сообщение об ошибке, что форма ввода неверна.
Я пробовал несколько разных форм ввода, включая (60000, 28, 28) (1, 28, 28) (28, 28) (28, 28, 1), но ни одна из них, похоже, не работает.
model = kr.Sequential()
model.add(InputLayer(input_shape=(60000, 28, 28)))
model.add(Dense(units=784, activation='relu'))
model.add(Dense(units=392, activation='relu'))
model.add(Dense(units=196, activation='relu'))
model.add(Dense(units=10, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='Adam', metrics=['accuracy'])
training = model.fit(x=images_array, y=labels_array, epochs=10, batch_size=256)
Я ожидаю, что он будет работать с формой ввода (60000, 28, 28), но я всегда получаю эту ошибку:
ValueError: Ошибка при проверке ввода: ожидается, что input_1 будет иметь 4
размеры, но получил массив с формой (60000, 28, 28)
Изменить:
Спасибо всем, кто ответил. Ответ cho_uc действительно сработал, поэтому я принял его.
В публикации я упомянул, что я пытался построить модель, состоящую только из плотных слоев, чтобы использовать ее в качестве эталона для будущих моделей.
Я решил проблему с входным слоем:
images_array = images_array.reshape(-1, 28 * 28)
model.add(InputLayer(input_shape=(784, )))