如何使用 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
我正在构建一个基本的自动编码器并使用此处的 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