Tensorflow image_dataset_from_directory 拆分为训练、验证、测试

问题描述 投票:0回答:1

我有一个包含两类图片的数据集。 数据集组织在 1 个文件夹中,其中包含 2 个文件夹,每个类 1 个。 1类图片路径:“Project\Class_A” 2类图片路径:“Project\Class_B”

我想(快速)读取所有数据。 将其分为训练、验证、测试。 训练张量流模型。

我看到 image_dataset_from_directory 函数很好地完成了这个任务,但我找不到如何拆分为测试数据集(仅训练、验证)。 我希望随机分割数据(而不仅仅是通过将一些图片移动到不同的文件夹来手动分割数据)。

您是否知道如何快速读取所有数据并将其拆分为训练、验证、测试数据集?

谢谢你。

tensorflow dataset
1个回答
0
投票
dataset = tf.keras.preprocessing.image_dataset_from_directory(
    "Project",
    shuffle = True,
    image_size = (256, 256),
    batch_size = 32,
)
def get_dataset_partition_tf(ds, train_split=0.8, val_split=0.1, test_split=0.1, shuffle=True, shuffle_size=10000):
    assert train_split + val_split + test_split == 1.0
    ds_size = len(ds)
    if shuffle:
        ds = ds.shuffle(shuffle_size, seed=12)

        train_size = int(train_split * ds_size)
        val_size = int(val_split * ds_size)

        train_ds = ds.take(train_size)
        val_ds = ds.skip(train_size).take(val_size)
        test_ds = ds.skip(train_size + val_size)
    return train_ds, test_ds, val_ds
© www.soinside.com 2019 - 2024. All rights reserved.