这似乎是过度拟合的情况。您可以
history = cnn_model.fit(x = X_train_reshaped, y = y_train, batch_size = 512, epochs = epochs, callbacks=[callback], verbose = 1, validation_data = (X_test_reshaped, y_test), validation_steps = 10, steps_per_epoch=steps_per_epoch, shuffle = True)
callback = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=15)
from tensorflow.keras.regularizers import l2
Regularizer = l2(0.001)
cnn_model.add(Conv2D(64,3, 3, input_shape = (28,28,1), activation='relu', data_format='channels_last', activity_regularizer=Regularizer, kernel_regularizer=Regularizer))
cnn_model.add(Dense(units = 10, activation = 'sigmoid', activity_regularizer=Regularizer, kernel_regularizer=Regularizer))
您可以尝试使用BatchNormalization
。
使用进行图像数据增强ImageDataGenerator
。有关更多信息,请参考此链接。
如果像素不是Normalized
,则用划分像素值255
也有帮助。
最后,如果仍然没有更改,则可以尝试使用Pre-Trained Models
likeresnet
或VGG Net
等。