如何在Keras.ImageDataGenerator中生成增强图像作为标签

时间:2020-06-17 18:22:20

标签: python tensorflow keras autoencoder

我正在时尚MNIST数据集上构建变型自动编码器,因此我正在构建一个具有与输入和输出相同的图像(1、28、28)的模型。现在,我想在增强图像上训练模型,为此我需要一个自定义的DataGenerator。我想要的是:

  1. 在输入和输出上具有相同的扩充。
  2. 使用流功能来训练模型。

我通过重新实现flow函数(请参见下面的代码)尝试了此操作,但这似乎仅在输入而不是在输出上进行了增强。

您能指出我做错了吗?

#Altered from the Keras source code
class VAEDataGenerator(ImageDataGenerator):
    def flow(self,
             x,
             batch_size=32,
             shuffle=True,
             sample_weight=None,
             seed=None,
             save_to_dir=None,
             save_prefix='',
             save_format='png',
             subset=None):
        return NumpyArrayIterator(
            x,
            x,
            self,
            batch_size=batch_size,
            shuffle=shuffle,
            sample_weight=sample_weight,
            seed=seed,
            data_format=self.data_format,
            save_to_dir=save_to_dir,
            save_prefix=save_prefix,
            save_format=save_format,
            subset=subset
        )

然后我想通过以下方式使用数据生成器:

train_datagen = VAEDataGenerator(horizontal_flip=True, data_format='channels_first')
vae.fit(train_datagen.flow(training_images),
         shuffle=True,
         epochs=epochs,
         validation_data=(test_images, test_images))

0 个答案:

没有答案