Tensorflow 的 flow_from_directory returns 错误集

Tensorflow’s flow_from_directory returns erroneous Set

我正在使用 ImageDataGenerator 创建验证集(对于使用 TF (Keras) 从标记的图像目录中进行的图像 class化。目录是 0、1、2、3、4,对应于 class每张图片,分别包含488、185、130、131、91张图片。

train_image_generator = ImageDataGenerator(rescale=1./255) # Generator for our training data
# validation_image_generator = ImageDataGenerator(rescale=1./255) # Generator for our validation data
train_data_gen = train_image_generator.flow_from_directory(batch_size=batch_size,
                                                           directory=train_dir,
                                                           shuffle=True,
                                                           target_size=(IMG_HEIGHT, IMG_WIDTH),
                                                           class_mode='categorical')

returns

Found 0 images belonging to 5 classes.

和下面的代码

validation_data_generator = train_image_generator.flow_from_directory(
    train_dir, # same directory as training data
    target_size=(IMG_HEIGHT, IMG_WIDTH),
    batch_size=batch_size,
    class_mode='categorical',
    subset='validation') # set as validation data

输出:

Found 0 images belonging to 5 classes.

请问有什么问题吗?我想验证集至少有几张最后 class!

的图像

如有任何帮助,我们将不胜感激。

CS

如果没有看到您的目录字符串是什么,很难说,但我怀疑问题可能出在您的 "train_dir" 变量中。您可以尝试使用 os.path.exists(train_dir) 来查看您的代码是否确实指向了正确的位置,或者使用 os.listdir 来查看您是否以这种方式查看文件。

在创建数据生成器之前将此行放入其中可能会解决问题:

import os
train_dir=os.path.normpath(train_dir)

通常我发现问题出在路径中的斜杠上。如果只想使用字符串,通常需要使用双反斜杠 (\) 或单正斜杠 (/),而不是通常在路径中看到的单反斜杠。当您的文件名或子目录以数字开头(就像您的一样)时,这尤其成问题。