Очень странное переоснащение произошло в моем проекте keras. Код соответствия:
model.fit(
x = trainX,
y = trainY,
batch_size=8,
epochs=30,
validation_split=0.2,
shuffle=True,
callbacks=[checkpoint, tensorboard]
)
Печатная информация:
4184/4320 [============================>.] - ETA: 0s - loss: 0.0481 - accuracy: 0.9804
4208/4320 [============================>.] - ETA: 0s - loss: 0.0499 - accuracy: 0.9800
4232/4320 [============================>.] - ETA: 0s - loss: 0.0496 - accuracy: 0.9802
4256/4320 [============================>.] - ETA: 0s - loss: 0.0494 - accuracy: 0.9803
4280/4320 [============================>.] - ETA: 0s - loss: 0.0491 - accuracy: 0.9804
4312/4320 [============================>.] - ETA: 0s - loss: 0.0489 - accuracy: 0.9805
4320/4320 [==============================] - 10s 2ms/step - loss: 0.0489 - accuracy: 0.9806 - val_loss: 7.5471 - val_accuracy: 0.5093
Точность обучения составляет 0,98, а достоверность проверки - 0,50. Этот проект является классификационным проектом 2 класса, поэтому 0,50 означает, что модель не работает.
Почему происходит такое переоснащение? Как данные обучения, так и данные проверки получены из (trainX, trainY). Кроме того, я делаю заказ trainX случайным перед подгонкой:
n = trainX.shape[0]
ind = np.arange(n)
np.random.shuffle(ind)
trainX = trainX[ind, :]
trainY = trainY[ind, :]
В моей модели я использовал keras.layers.Dropout. Я не уверен, как решить эту проблему.