Обновлено: увеличен диапазон поворота до 180, добавлен GaussianNoise. см. коды
Я использую CNN для классификации изображений. У меня есть 2 класса 3500 серых фото каждого в наборе учебных данных и 1000 каждого в наборе данных проверки. Проблема в том, что сначала поезд 5-10 эпох a cc действителен, а cc увеличивается, но затем действительный cc начинает столь резко уменьшаться, в то время как поезд cc продолжает увеличиваться.
Старая картинка ![enter image description here](https://i.stack.imgur.com/t8pwz.png)
Я видел, что это из-за перегрузки, но я также пытался справиться с перегрузкой, поместив некоторые параметры в ImageDataGenerator.
train_image_generator = ImageDataGenerator(rescale=1. / 255,
rotation_range=180,
width_shift_range=.15,
height_shift_range=.15,
horizontal_flip=True,
fill_mode='nearest',
shear_range=0.05,
zoom_range=0.5
)
Также я поместил Dropout
слоев в архитектуру CNN.
model = Sequential([
GaussianNoise(0.01, input_shape=(IMG_HEIGHT, IMG_WIDTH, 1)),
Conv2D(16, 3, padding='same', activation='relu', input_shape=(IMG_HEIGHT, IMG_WIDTH, 1)),
Dropout(0.7),
MaxPooling2D(),
Conv2D(32, 3, padding='same', activation='relu'),
Dropout(0.7),
MaxPooling2D(),
Dropout(0.5),
Conv2D(64, 3, padding='same', activation='relu'),
Dropout(0.7),
MaxPooling2D(),
Dropout(0.5),
Flatten(),
Dropout(0.7),
Dense(512, activation='relu'),
Dense(2, activation='softmax')
])
Я настроил Скорость обучения:
adamOpti = Adam(lr=0.00005)
model.compile(optimizer=adamOpti,
loss="categorical_crossentropy",
metrics=['accuracy'])
Даже я установил up EarlyStopping тоже:
es = EarlyStopping(monitor='val_loss', mode='min', verbose=1, patience=200)
mc = ModelCheckpoint('best_model.h5', monitor='val_acc', mode='max', verbose=1, save_best_only=True)
TL, DR Список того, что я пробовал для переоснащения сделки:
- Увеличение изображения
- Уменьшение количества слоев и нейронов
- Генератор изображений в случайном порядке
- Выпадения
- Ранняя остановка
- Скорость обучения мелодии
- Больше данных (до сих пор не знаю, когда и когда)
Не знаю, осталось ли что-то, что я пропустил. Все комментарии приветствуются. Заранее спасибо