如何使用 flow_from_directory 拟合自动编码器

How to fit an autoencoder using flow_from_directory

我正在构建一个基本的自动编码器并使用此处的 keras 文档作为指南:https://blog.keras.io/building-autoencoders-in-keras.html

我卡住了并切换它以适应 flow_from_directory 对象,这是我设置的对象:

data_gen = tf.keras.preprocessing.image.ImageDataGenerator()

train_generator = data_gen.flow_from_directory(
    directory= 'train_images',
    target_size=(28, 28),
    color_mode="rgb",
    batch_size=128,
    shuffle=True,
    seed=42,
    class_mode=None,
)

我正在尝试拟合模型(这与使用此代码的 keras 文档中的模型大致相同:

autoencoder.fit(train_generator, train_generator,
                epochs=500,
                shuffle=True)

但是,问题是像这样传递它给我这个错误:

`ValueError: `y` argument is not supported 

认为也许这是说如果我的x来自flow_for_directory我不能指定y,这是有道理的,但我如何指定标签与数据本身相同?

将答案放在这里以防对其他人有帮助。正如 Frightera 在评论中建议的那样,将 class_mode 更改为 'input' 解决了这个问题:

data_gen = tf.keras.preprocessing.image.ImageDataGenerator()

train_generator = data_gen.flow_from_directory(
    directory= 'train_images',
    target_size=(28, 28),
    color_mode="rgb",
    batch_size=128,
    shuffle=True,
    seed=42,
    class_mode='input',
)

autoencoder.fit(train_generator,
                epochs=500,
                shuffle=True)

尝试修改您的拟合函数:

autoencoder.fit(train_generator,
            epochs=500,
            shuffle=True)

您使用了 train_generator 两次,当您使用 ImageDataGenerator.flow_from_directory 函数时,它 returns 一个 DirectoryIterator 产生 (x, y) 的元组,其中 x 是一个包含批次的 numpy 数组data 和 y 是相应标签的 numpy 数组。

请参考 Keras 文档: https://keras.io/api/preprocessing/image/#flowfromdirectory-method