Как выбрать только формат файла spesifi c с помощью flow_from_directory? - PullRequest
1 голос
/ 21 февраля 2020

Я использую Keras для некоторых экспериментов DL. После обучения моей модели, я хотел бы протестировать свою модель со следующим кодом:

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 содержит также подкаталоги внутри других подкаталогов. (например, test / test2 / test3 / test4 ...), и я хотел бы получить изображения в папке test4, но я получил ошибку IsADirectoryError: [Errno 21] Is a directory: 'test/test2/test3'.

Мой первый вопрос: есть ли возможность искать и использовать вместо этого копировать и вставлять все изображения в одну папку?

Второе: я хочу использовать только .png отформатированные изображения. Могу ли я сделать что-то подобное? from_directory(directory='test/*.png') только для файлов .png?

Заранее спасибо. Обновлено: 24/02/20

Ответы [ 2 ]

1 голос
/ 25 февраля 2020

Для вопроса о нескольких папках, вот решение :

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), ...)
0 голосов
/ 25 февраля 2020

По второму вопросу мне удалось сделать вот так:

for i in range(len(test_generator)):

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

Приветствуются лучшие решения. Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...