使用目录中的Keras流进行K折叠交叉验证

使用目录中的Keras流进行K折叠交叉验证,keras,scikit-learn,neural-network,cross-validation,Keras,Scikit Learn,Neural Network,Cross Validation,我当前的文件夹结构是: train class1/ img1.jpg img2.jpg ... class2/ img3.jpg img4.jpg ... test class1/ img1.jpg img2.jpg ... class2/ img3.jpg img4

我当前的文件夹结构是:

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,
)
制作包含来自目录调用的流程和K-Fold交叉验证(最好在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求平均值


这是一个好方法吗?还有更有效的方法吗?

或者你可以把所有的数据放在一起,用一个变量对类进行编码,然后像你说的那样应用scikit learn Spliting。您的方法听起来很好,与@serafeim一致,这是所有声音的校正器您可以将所有数据放在一起+使用一个变量对类进行编码,然后按照您所说的应用scikit learn Spliting。你的方法听起来不错,与@serafeim一致,这一切听起来都是正确的