от
Я тренирую CNN в keras с бэкэндом тензорного потока со следующей архитектурой модели для задачи двоичной классификации. Я разделил приблизительно 41 тыс. Изображений на обучающие, проверочные и тестовые наборы в соотношении 70: 25: 5, что дает 29 тыс. Изображений в наборе поездов, 10 тыс. В проверке и 2 тыс. В тестовом наборе. Дисбаланса классов нет, в каждом из классов
pos
и
neg
было приблизительно 20 тыс. Выборок.
model = Sequential()
model.add(Conv2D(32, (7, 7), padding = 'same', input_shape=input_shape))
model.add(Conv2D(32, (7, 7), padding = 'same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.5))

model.add(Conv2D(32, (7, 7), padding = 'same'))
model.add(Conv2D(32, (7, 7), padding = 'same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.6))

model.add(Conv2D(32, (7, 7), padding = 'same'))
model.add(Conv2D(32, (7, 7), padding = 'same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.6))

model.add(Conv2D(64, (7, 7), padding = 'same'))
model.add(Conv2D(64, (7, 7), padding = 'same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.6))

model.add(Conv2D(64, (7, 7), padding = 'same'))
model.add(Conv2D(64, (7, 7), padding = 'same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.6))

model.add(Conv2D(64, (7, 7), padding = 'same'))
model.add(Conv2D(64, (7, 7), padding = 'same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.6))

model.add(Conv2D(128, (7, 7), padding = 'same'))
model.add(Conv2D(128, (7, 7), padding = 'same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.6))

model.add(Flatten())
model.add(Dense(512))
model.add(Activation('relu'))

model.add(Dense(512))
model.add(Activation('relu'))

model.add(Dense(1))
model.add(Activation('sigmoid'))

model.compile(loss='binary_crossentropy',
              optimizer=optimizers.Adam(lr=3e

Это эпохи прогресса в обучении, когда точность валидации колеблется линейно. Сначала он становится высоким, а затем низким почти на столько же. Что может быть причиной этого?

Я проверил почти все остальные ответы на этот вопрос, и мои данные нормализованы, правильно перемешаны в обучающем наборе, lr маленький и очень хорошо проверен, в рамках чего другие исследователи в аналогичной проблемной области добились успеха.

Found 29124 images belonging to 2 classes.
Found 10401 images belonging to 2 classes.
Epoch 1/60
910/910 [==============================] 

Приведенный ниже график не для этой проблемы, но похожая ситуация, о которой я спрашиваю:




    

        

Пожалуйста, войдите или зарегистрируйтесь для публикации ответа на этот вопрос.

...