tf.data.Dataset из tf.keras.preprocessing.image.ImageDataGenerator.flow_from_directory? - PullRequest
0 голосов
/ 09 февраля 2019

Как мне создать tf.data.Dataset из tf.keras.preprocessing.image.ImageDataGenerator.flow_from_directory?

Я рассматриваю tf.data.Dataset.from_generator, но этонеясно, как получить аргумент ключевого слова output_types для него, учитывая тип возвращаемого значения:

A DirectoryIterator, в результате которого получаются кортежи (x, y), где x - это пустой массив, содержащий пакет изображенийс формой (batch_size, *target_size, channels) и y является массивом соответствующих меток.

1 Ответ

0 голосов
/ 09 февраля 2019

Оба batch_x и batch_y в ImageDataGenerator имеют тип K.floatx(), поэтому по умолчанию должно быть tf.float32.

Подобный вопрос уже обсуждался Как использовать генератор Keras с API tf.data .Позвольте мне скопировать и вставить ответ оттуда:

def make_generator():
    train_datagen = ImageDataGenerator(rescale=1. / 255)
    train_generator = 
    train_datagen.flow_from_directory(train_dataset_folder,target_size=(224, 224), class_mode='categorical', batch_size=32)
    return train_generator

train_dataset = tf.data.Dataset.from_generator(make_generator,(tf.float32, tf.float32))

Автор столкнулся с еще одной проблемой с областью действия графика, но я думаю, что она не связана с вашим вопросом.

Или как один вкладыш:

tf.data.Dataset.from_generator(lambda:
    ImageDataGenerator().flow_from_directory('folder_path'),(tf.float32, tf.float32))
...