python-3.x - 带有 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 具有相同的标签。我在网上搜索了不同的解决方案来创建一个多输入生成器,但我没有找到任何结论性的东西,可能是因为我没有深入了解生成器是如何工作的。
预先感谢您的帮助!
解决方案
推荐阅读
- android - 您是否在 `app/build.gradle` 中添加多个构建脚本以在 React Native 中手动链接 Android?
- python - 组合框中的映射数据与超过 256 个项目的关系
- pandas - VM中Panda_gbq导入错误(谷歌云平台虚拟机)
- javascript - 仅当焦点不在文本框中时才禁用 Enter 按钮
- sql-server - 将存储过程的 Deadlock_Priority 设置为高有任何风险吗?
- asp.net - 在 xunit 的单元测试中允许 null 必需的键
- javascript - 循环不总是被调用,而是用于检查循环内总是调用的更改事件
- node.js - TypeORM:定义迁移中的关系
- laravel - laravel unique() 不适用于分页
- mysql - 在 sqlite 中插入带有特殊字符的查询并将该数据取回 SQL