首页 > 解决方案 > 带有 keras tensorflow 的多输入生成器

问题描述

我是 tensorflow 以及深度学习的新手。我需要澄清什么是生成器,以及创建具有 2 个输入的生成器的提示。

根据我的阅读,我们使用带有方法 model.fit_generator(generator, ...) 的生成器。使用新版本的 tensorflow,方法 model.fit(x=generator, ...) 被接受。这意味着现在,我们使用方法 model.fit(...)。我有很多数据。实际上,我有 2 个不同的输入,而且都是图像。在不使用生成器的情况下,我可以使用带有 2 个输入的 model.fit(...),如下所示:

self.model.fit( x= [input1, input2],
                validation_data = ([x_val_doppler, x_val_bmode], y_val),
                epochs = nb_epochs ,
                batch_size = batch_size,
                callbacks=self._make_train_valid_callbacks(
                nb_epochs=nb_epochs,
                save_folder_path=save_folder_path,
                weights_filename=weights_filename,
                train_monitor=train_monitor
            )

我的 GPU 没有足够的内存,我需要使用生成器来避免这个问题。我真的不明白发电机是如何工作的。据我了解,生成器与 GPU 并行运行,并创建数据增强。这是什么意思 ?

此外,我已经有一个生成器,但是这个生成器只接受一个输入参数。我的想法是创建两个独立的生成器,然后使用 model.fit(...):

training_gen1 = DatasetGenerator(x_train_input1, y_train)
training_gen2 = DatasetGenerator(x_train_input2, y_train)
validation_gen1 = DatasetGenerator(x_validation_input1, y_val)
validation_gen2 = DatasetGenerator(x_validation_input2, y_valid)

self.model.fit( x= [training_gen1, training_gen2],
                validation_data = [validation_gen1, validation_gen2],
                epochs = nb_epochs ,
                batch_size = batch_size,
                callbacks=self._make_train_valid_callbacks(
                nb_epochs=nb_epochs,
                save_folder_path=save_folder_path,
                weights_filename=weights_filename,
                train_monitor=train_monitor
              )

请注意 input1 和 input2 具有相同的标签。我在网上搜索了不同的解决方案来创建一个多输入生成器,但我没有找到任何结论性的东西,可能是因为我没有深入了解生成器是如何工作的。

预先感谢您的帮助!

标签: python-3.xtensorflowkerasgenerator

解决方案


推荐阅读