попробуйте применить перекрестную проверку в K-кратном порядке для ImageDataGenerator (). flow_from_directory - PullRequest
0 голосов
/ 29 июня 2019

Я пытаюсь применить к-кратную перекрестную проверку для задачи классификации cnn

допустим, у меня есть машина A, carB

, поэтому я создал подпапку

машина / поездCross / fold0вагон / поездCross / fold1

вагон / validCross / fold0автомобиль / validCross / fold1

и следующий код

model_path = '../carPrediction/model/'+ 'saved.hdf5'
for i in range(2):
    print('training->',i,' split')
    train_generator = train_datagen.flow_from_directory(TRAIN_CROPPED_PATH +'fold'+str(i),
                                                                 target_size=(image_size, image_size),
                                                                batch_size=batch_size,
                                                                class_mode='categorical',
                                                                seed=2019,
                                                                color_mode='rgb')
    print(VALID_CROPPED_PATH+'fold'+str(i))
    validation_generator = valid_datagen.flow_from_directory(
                                                        VALID_CROPPED_PATH+'fold'+str(i),
                                                        target_size=(image_size,image_size),
                                                        batch_size=batch_size,
                                                        class_mode='categorical',
                                                        seed=2019,
                                                        color_mode='rgb'
                                                    )
    test_generator = test_datagen.flow_from_dataframe(
    dataframe=df_test,
                                                        directory=TEST_CROPPED_PATH,
                                                        x_col='img_file',
                                                        y_col=None,
                                                        target_size= (image_size,image_size),
                                                        color_mode='rgb',
                                                        class_mode=None,
                                                        batch_size=batch_size,
                                                        shuffle=False
                                                    )
    try: 
        model = load_model(model_path, compile=True)
    except Exception as OSError:
        pass

    patient = 2
    callbacks1 = [
    EarlyStopping(monitor='val_loss', patience=patient, mode='min', verbose=1),
    ReduceLROnPlateau(monitor = 'val_loss', factor = 0.5, patience = patient / 2, min_lr=0.00001, verbose=1, mode='min'),
    ModelCheckpoint(filepath=model_path, monitor='val_loss', verbose=1, save_best_only=True, mode='min'),
    ]

    history = model.fit_generator(
    train_generator,
    steps_per_epoch=get_steps(nb_train_sample, batch_size),
    epochs=2,
    validation_data=validation_generator,
    validation_steps=get_steps(nb_validation_sample, batch_size),
    verbose=1,
    callbacks = callbacks1
)

но не уверен, что таким образом правильно какая-либо мысль?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...