Я выполняю двоичную классификацию с использованием CNN в Керасе. В наборе данных содержится почти 8 тыс. Изображений, но он не сбалансирован - в одном классе около 1500 выборок, а в другом 6500 выборок. Я не сажаю случайное семя перед тренировкой. Теперь, когда я запускал эту модель несколько дней назад, я получил точность 99%. Я запустил его снова на днях - получил точность 99%. Просто чтобы быть уверенным, я запускал его еще 5 раз, и каждый раз он давал мне одинаковые результаты. Теперь, после 4-дневного перерыва, когда я снова запускаю его для хранения параметров и графиков - моя модель застряла с точностью 85% и точностью проверки 67%. Ничто не меняется в разные эпохи, оно просто застряло там. Я использую flow_from_directory для загрузки изображений на лету, а также выполняю некоторые дополнения при загрузке изображений. Мне известно, что весовые коэффициенты каждый раз инициализируются случайным образом, и поэтому я сохранил весовые коэффициенты модели с наилучшими характеристиками. Но я просто не могу воспроизвести результаты. Есть идеи, что здесь происходит?
model = Sequential()
model.add(Conv2D(32, kernel_size=(5, 5),
activation='relu',
input_shape=(476,476,3)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.5))
model.add(Conv2D(64, (5, 5), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.5))
model.add(Conv2D(128, (5, 5), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.5))
model.add(Conv2D(256, (5, 5), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(1, activation='sigmoid'))
model.compile(loss=binary_crossentropy,
optimizer=Adam(learning_rate=0.0001),
metrics=['accuracy'])