【问题标题】:How knowing number of images in flow_from_directory如何知道 flow_from_directory 中的图像数量
【发布时间】:2020-04-30 10:33:49
【问题描述】:

我们可以使用 ImageDataGenerator 和 flow_from_directory 方法生成图像数据集。

train_datagen = ImageDataGenerator(
    rescale=1./255, #scale images from integers 0-255 to floats 0-1.
    shear_range=0.2,
    zoom_range=0.2, # zoom in or out in images
    horizontal_flip=True) #horizontal flip of images
train_set = train_datagen.flow_from_directory(..)

然后显示:

Found 200 images belonging to 2 classes

我想写一个循环来计算train_set上的图像数量

For image in train_set:
    count = count+1
print(count)

但这并没有显示任何东西!!

【问题讨论】:

    标签: python keras data-generation


    【解决方案1】:

    要获得否。图片,请尝试以下代码。

    train_set.samples 
    

    【讨论】:

    • 这就是答案!
    • 终于找到答案了!
    • 有没有办法获取每个类的样本数?
    • 如果有人需要知道标签的数量:len(train_generator.class_indices)
    【解决方案2】:

    要访问数据集的样本数量,您首先必须知道它是哪种类型:

    如果您使用的是 ImageDataGenerator,那么:

    type(train_ds)
    

    将返回 tensorflow.python.keras.preprocessing.image.DirectoryIterator。 在这种情况下,您可以通过以下方式访问样本数量:

    train_ds.samples
    

    但是,如果您使用以下方法创建数据集:

    train_ds = tf.keras.preprocessing.image_dataset_from_directory( rescale = 1/255. , etc...)
    

    然后

    type(train_ds)
    

    将返回 tensorflow.python.data.ops.dataset_ops.BatchDataset 这意味着您可以使用

    间接访问样本数
    len(train_ds.file_paths)
    

    【讨论】:

      【解决方案3】:

      __iter__ 将是您的解决方案。

      首先您尝试预测 train_set 的类型。如果您不知道。

      print(type(train_set))
      #then you find **keras.preprocessing.image.DirectoryIterator**
      

      现在您想对该类型数据应用一些功能或修改,请点击此链接here

      【讨论】:

        猜你喜欢
        • 2014-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-09
        • 1970-01-01
        • 1970-01-01
        • 2014-05-10
        • 1970-01-01
        相关资源
        最近更新 更多