【问题标题】:How to choose only spesific file format with flow_from_directory?如何使用 flow_from_directory 仅选择特定的文件格式?
【发布时间】:2020-06-05 19:35:19
【问题描述】:

我正在使用 Keras 进行一些深度学习实验。训练完我的模型后,我想用以下代码测试我的模型:

test_datagen = ImageDataGenerator(rescale=1 / 255.)

test_generator = test_datagen.flow_from_directory(directory='test/',
                                                  color_mode='grayscale',
                                                  # don't shuffle
                                                  shuffle=False,
                                                  # use same size as in training
                                                  target_size=(256, 256),
                                                  batch_size=1,
                                                  class_mode=None
                                                  )

preds = model.predict_generator(test_generator, steps=12)

问题是测试文件夹还包含另一个子目录中的子目录。 (例如 test/test2/test3/test4 ...)我也想访问 test4 文件夹中的图像,但我收到了IsADirectoryError: [Errno 21] Is a directory: 'test/test2/test3' 错误。

我的第一个问题是:是否有可能搜索并使用将所有图像复制并粘贴到一个文件夹中?

第二:我只想使用 .png 格式的图像。我可以做这样的事情吗? from_directory(directory='test/*.png') 仅适用于 .png 文件?

提前谢谢你。 更新:2020 年 2 月 24 日

【问题讨论】:

    标签: python tensorflow machine-learning keras deep-learning


    【解决方案1】:

    对于第二个问题,我设法做到了:

    for i in range(len(test_generator)):
    
    if test_generator.filenames[i].find(".png") != -1:
        pred = model.predict(test_generator[i])
    

    欢迎提供更好的解决方案。干杯

    【讨论】:

      【解决方案2】:

      对于多文件夹问题,这里是solution

      idg1 = ImageDataGenerator(**idg1_configs)
      idg2 = ImageDataGenerator(**idg2_configs)
      
      g1 = idg1.flow_from_directory('idg1_dir',...)
      g2 = idg2.flow_from_directory('idg2_dir',...)
      
      def combine_gen(*gens):
          while True:
              for g in gens:
                  yield next(g)
      
      # ...
      model.fit_generator(combine_gen(g1, g2), steps_per_epoch=len(g1)+len(g2), ...)
      

      【讨论】:

      • 感谢您的聪明回答。只是想知道,如果我们喜欢 (len(g1)+len(g2)) // batch_size 不是更好吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 2018-07-30
      • 1970-01-01
      • 2015-11-29
      • 2019-06-27
      • 2021-12-31
      相关资源
      最近更新 更多