Перекрестная проверка K-Fold с использованием потока Keras из каталога - PullRequest
0 голосов
/ 03 июля 2019

Моя текущая структура папок:

train 
    class1/
         img1.jpg
         img2.jpg
         ...
    class2/
         img3.jpg
         img4.jpg
         ...
test
    class1/
         img1.jpg
         img2.jpg
         ...
    class2/
         img3.jpg
         img4.jpg
         ...

Мой текущий рабочий процесс:

train_datagen = ImageDataGenerator(
    rescale=1.0 / 255, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, rotation_range=0.2
)

test_datagen = ImageDataGenerator(rescale=1.0 / 255)

train_generator = train_datagen.flow_from_directory(
            os.getcwd() + config.DATA + "train",
            target_size=(img_width, img_height),
            class_mode="binary",
            batch_size=batch_size,
)

validation_generator = test_datagen.flow_from_directory(
            os.getcwd() + config.DATA + "val",
            target_size=(img_width, img_height),
            class_mode="binary",
            batch_size=batch_size,
)

Какой предпочтительный способ сделать рабочий процесс, который включает вызов flow_from_directory и кросс-фолдинг-подтверждение (желательно с помощью scikit?)

Я думал о подходе сделать только одну папку со всеми данными и метками классов:

  class1
       image1
  class2 
       image2

, затем перетасовать и разделить еев K папок (с именами: liek fold1, fold2, fold3, fold4, fold5).

Тогда я бы просто использовал цикл таким образом:

for i in range(k):
    validation_generator = flow_from_directory('....data/fold(i)') 
    test_generator = flow_from_directory('...data/fold every other folder)
    ... train model, fit model

, а затем просто усреднил val_acc для каждогомодель в цикле модели.

Это хороший подход?Есть ли что-нибудь более эффективное?

...