我的目标是应用 k 折交叉验证来训练 VGG19 模型。为此,我使用以下代码从目录中读取图像:
DIR = "/Images"
data_dir = pathlib.Path(os.getcwd() + '\\Images')
train_ds = tf.keras.utils.image_dataset_from_directory(
data_dir,
validation_split=0.2,
subset="training",
seed=123,
image_size=(224, 224),
batch_size=32)
val_ds = tf.keras.utils.image_dataset_from_directory(
data_dir,
validation_split=0.2,
subset="validation",
seed=123,
image_size=(224, 224),
batch_size=32)
Run Code Online (Sandbox Code Playgroud)
并且在不使用 kfold 交叉验证的情况下它也能正常工作。但是当我想使用 K 折交叉验证时,我必须train_ds分别使用标签和图像,并且我找不到解决方案,除非我需要使用另一种方法读取图像。因此,我决定使用ImageDataGenerator和来读取图像flow_from_directory。但据我了解,为了使用 加载图像flow_from_directory,我必须有两个单独的子集 astraning和testin 图像,而我的情况下没有traning和test文件夹。这两种方法有什么解决方案吗?
此外,使用第一种方法,即tf.keras.utils.image_dataset_from_directory,将找到的图像数量与 不同flow_from_directory。这是第一个方法的输出:
找到属于 4 个类别的 1060 个文件。使用848个文件进行训练。
这是第二种方法的输出:
img_gen = tf.keras.preprocessing.image.ImageDataGenerator(
rescale=1.0 / 255,
rotation_range=20,
width_shift_range=0.2,
height_shift_range=0.2,
vertical_flip=True)
Wheat_data …Run Code Online (Sandbox Code Playgroud)