使用 flow_from_directory 内存泄漏

Memory leak using flow_from_directory

我正在尝试实施文档页面上描述的技术

https://keras.io/preprocessing/image/

在标题 "Example of transforming images and masks together" 下。

之后,

image_generator = image_datagen.flow_from_directory(
    'data/images',
    class_mode=None,
    seed=seed)

mask_generator = mask_datagen.flow_from_directory(
        'data/masks',
        class_mode=None,
        seed=seed)

问题出在命令上:

# combine generators into one which yields image and masks
train_generator = zip(image_generator, mask_generator)

这导致内存使用率上升到可能的最大值, 然后交换也上升到最大值,此时我的 系统冻结并需要重新启动。

有人知道这里发生了什么吗?

解决方案: 问题是我使用的是 Python 2,而在 Python 2 中,这些迭代器上的 zip 命令将永远迭代。任何数量的内存都会很快耗尽。使用 Python 3 这不是问题。

如果您使用 Python 2,解决方案是使用 itertools.izip 而不是 zip。