Загружать данные по требованию, используя flow_from_directory для AutoEncoder - PullRequest
1 голос
/ 08 марта 2019

Я пытаюсь обучить автоэкодер по некоторым данным изображения.Набор данных настолько огромен, что не помещается в памяти.Очевидно, что я хочу загрузить данные из каталога по требованию с помощью flow_from_directory в Керасе.

Мой набор данных имеет следующую структуру

./Dataset/
    ./Train/
        ../1.jpg
        ../2.jpg

и т. Д.

Я пытался использовать flow_from_directory вот так

train_generator = datagen.flow_from_directory(
    TRAIN_FOLDER,
    target_size = (256, 256),
    color_mode = 'rgb',
    batch_size = batch_size,
    class_mode = 'input')

Это дает мне вывод Found 0 images belonging to 0 classes. Я получу ZeroDivisionError, если я попытаюсь подогнать модель этим генератором.

Я использовал flow_from_directory, flow и flow_from_dataframe в разных случаях, но в тех случаях я собирался решить проблему классификации и имел n папок в каталоге для n классов.

Как загрузить изображения из каталога по требованию для обучения автокодеру.?Из документов Keras за здесь я видел

class_mode : "input" will be images identical to input images (mainly used to work with autoencoders)

Но это тоже не решает проблему.

Один из найденных мной обходных путейеще одна папка внутри поезда и все файлы в нее.Есть ли какой-либо прямой метод, кроме этого?

1 Ответ

2 голосов
/ 08 марта 2019

Документы Keras действительно не очень точны здесь, и способ, которым это фактически работает, не интуитивен (по крайней мере для меня) ...

Здесь, даже если вы используете class_mode='input', что означает, что нет классов (или у каждого изображения есть свой собственный класс, как бы вам ни хотелось его сформулировать), ваши изображения все еще должны быть внутри подпапок .

Итак, внутри вашей папки Train просто создайте другую подпапку и переместите все изображения внутрь. Тогда на выходе будет Found xxx images belonging to 1 classes.

Вы можете даже иметь несколько подпапок, сгенерированные данные X и Y будут одинаковыми, только вывод консоли будет другим (и вводящим в заблуждение): Found xxx images belonging to yy classes. Это может быть полезно, если на самом деле есть классы, и у вас есть другая модель, использующая их (использующая class_mode='categorical' или class_mode='binary'). Затем эта модель может загрузить свои данные из той же папки.

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