tensorflow 如何将一个文件夹中的图像随机拆分到两个文件夹中进行k倍交叉验证?

8nuwlpux  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(170)

我有一个在其他文件夹中包含图像和txt文件的数据文件,我想将这些图像随机拆分到两个文件夹中进行K-fold交叉验证。我想这样做,这样我就有了一组图像,可以用来验证通过K-fold交叉验证生成的模型。对于此拆分,我想随机取16个图像。png文件夹中,并将其放入其他文件夹中以备日后使用,并将剩余的图像放入一个文件夹中以用于K折交叉验证。我的问题是如何将其拆分到随机文件夹中。我尝试过

tf.keras.utils.image_dataset_from_directory(
    directory,  labels='inferred', label_mode='int', class_names=None, color_mode='rgb', batch_size=32, image_size=(256, 256), shuffle=True,seed=None, validation_split=None, subset=None, interpolation='bilinear', follow_links=False, crop_to_aspect_ratio=False, **kwargs)

但那并不起作用(或者我做错了)。
那么,如何将不同文件夹中的图像拆分到两个文件夹中,这两个文件夹可以有不同的名称,并且其中包含特定数量的图像呢?

2g32fytz

2g32fytz1#

这就是最终成功的方法。

directories = os.listdir(ALL_FILES)
    validation = random.sample(directories, 16)
    K-fold = [dir for dir in directories if dir not in validation]

    for f in validation:
        print(f)
        source_dir = os.path.join(ALL_FILES, f)
        print(source_dir)
        destination_dir = os.path.join(name for folder seld to, f)
        print(destination_dir)
        shutil.copytree(source_dir, destination_dir)

    kf = KFold(n_splits=10, shuffle=True)  
    folds = kf.split(K-fold)

相关问题