【问题标题】:How to manage data batches for big neural network?如何管理大型神经网络的数据批次?
【发布时间】:2017-03-21 21:59:43
【问题描述】:

我正准备在 Keras 中学习包含数百万张小图像(~100x100 像素,每个 3 个通道)的大型神经网络(fc、conv、pool 等)。所有文件都在 ~~800 GB 左右,这是我的问题。我应该如何处理数据?

我知道 Keras 可以批量处理,但是使用 100 个 8 GB 文件或创建 ~~300k 个文件(在每个合并的 32 或 64 个图像中)学习网络更好吗?我认为最好有更大的文件,读取它们 8 次(8 个大文件)比读取 30 万次要快,但我不确定。

我的内存不足 100 GB,所以我肯定无法一次加载全部数据。

谢谢!

【问题讨论】:

    标签: python image deep-learning keras


    【解决方案1】:

    您可以使用 Keras 提供的keras.preprocessing.image.ImageDataGenerator,而不是将所有文件加载到内存中。它允许您设置批量大小。如果需要,ImageDataGenerator 还可以帮助您“免费”实时增加数据。由于使用一批图像训练网络需要时间,因此从硬盘读取文件不会降低性能。主要瓶颈是计算能力。

    keras.preprocessing.image.ImageDataGenerator的接口和例子可以在ImageDataGenerator找到

    【讨论】:

      【解决方案2】:

      如果由于某种原因你不能使用keras.preprocessing.image.ImageDataGenerator,你可以使用你自己的生成器。

      就我而言,我进行了分段,但他们的 flow_from_directory 方法不支持这一点。所以我根据https://wiki.python.org/moin/Generators 编写了自己的生成器,它可以无限生成图像。您可以将它们与model.fit_generator 方法一起使用:https://keras.io/models/model/#fit_generator

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-07
        • 1970-01-01
        • 1970-01-01
        • 2023-02-01
        • 2012-03-15
        • 2021-02-06
        • 1970-01-01
        • 2023-03-16
        相关资源
        最近更新 更多