【问题标题】:Use keras ImageDataGenerator with multiple preprocessing functions使用具有多个预处理功能的 keras ImageDataGenerator
【发布时间】:2019-02-26 16:58:15
【问题描述】:

假设我想用 Keras 训练一个图像数据库,并且我想使用 Keras ImageDataGenerator 自动生成新图像,问题是某些功能在经典设置(翻转、移位等)下不可用。

是否可以不仅添加一个功能列表,还添加一个功能列表作为“预处理功能”?

datagen = dict(
    horizontal_flip=True, 
    vertical_flip=True,
    width_shift_range = 0.1,
    height_shift_range = 0.1,
    data_format = "channels_first",
    preprocessing_function = [foo1, foo2, ...]
)

我也尝试在调用 datagen 之前应用我的函数,但是我有太多的函数,我有 MemoryErrors

【问题讨论】:

  • 有什么更新你是怎么做到的吗?

标签: python keras deep-learning data-augmentation


【解决方案1】:

根据 cmets 更新答案:

image_gen = ... # without any preprocessing
def mygen():
  for x in image_gen:
    yield x, foo1(x), foo2(x), ...

也许有更快的一个衬垫来实现这一点,但它足够干净,可以让事情正常进行。

【讨论】:

  • 感谢您的回答,但我不希望它们被链接,假设 X 是我的原始输入,我想用 X、foo1(x) 和 foo2(x) 为网络提供数据
  • 嗯,是的,这不适用于上面的代码。您需要为每个生成器创建不同的生成器,因为它们实际上生成不同。
  • 这个问题是我不认为我可以使用多个生成器同时为网络提供数据?
  • 我用一个包装器生成器更新了答案,它将图像生成器的所有预处理功能作为网络的多个输入产生。
猜你喜欢
  • 2018-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-25
  • 2019-10-12
相关资源
最近更新 更多