Кажется, нет необходимости использовать model.add(Flatten())
в вашем первом слое. Вместо этого вы можете использовать плотный слой с определенным размером ввода, например: model.add(Dense(64, input_shape=your_input_shape, activation="relu")
.
Чтобы убедиться, что эта проблема возникает из-за слоев, вы можете проверить, работает ли функция to_categorical()
в одиночку с jupyter. Записная книжка.
Обновленный ответ
Перед моделью вы должны изменить свою модель. В этом случае от 28 * 28 до 784.
train_images = train_images.reshape((-1, 784))
test_images = test_images.reshape((-1, 784))
Я также предлагаю нормализовать данные, которые можно сделать, просто разделив изображения на 255
. После этого шага вы должны создать свою модель. .
model = Sequential([
Dense(64, activation='relu', input_shape=(784,)),
Dense(64, activation='relu'),
Dense(10, activation='softmax'),
])
Замечали ли вы input_shape=(784,)
Это форма вашего сплющенного ввода.
Последний шаг, компиляция и подгонка.
model.compile(
optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'],
)
model.fit(
train_images,
train_labels,
epochs=10,
batch_size=16,
)
Что вы делаетеесли вы только что сгладили входной слой без подачи в сеть входных данных. Вот почему у вас возникли проблемы. Дело в том, что вы должны вручную изменить свои входные данные и перейти к слоям Dense()
с параметром input_shape