如何处理大量数据以克服 Python 中的 RAM 问题

数据挖掘 Python 深度学习 喀拉斯 麻木的
2022-03-02 14:44:24

我使用 numpy 数组来处理深度学习图像。但随着数据变得越来越大,在使用数据增强等技术训练模型之前,我就面临 RAM 问题。

有人可以建议我如何处理大数据,例如。我的系统中有 30GB 的数据,它有 16GB 的内存。

PS我担心预处理和训练期间的RAM,而我用我的GPU进行批处理

3个回答

Dask旨在管理这些类型的工作负载。它为大于内存的操作提供了一个接口,如 NumPy、Pandas 或 Python 迭代器。可以在此处找到将 Dask 与 TensorFlow 结合使用的示例。

在预处理期间进行所有图像准备和数据增强,并将结果保存为一个或多个样本的数组(最大为小批量)。不要将数组转换回图像。使用训练模型的包装器读取这些准备好的数组。我推荐 numpy.save 的简单性和透明度。此处讨论了其他选项:Stackoverflow - persisting numpy arrays

在 Keras 中的图像预处理过程中,您可能会在执行 时耗尽内存zca_whitening,这涉及将图像与自身进行点积。这取决于数据集中单个图像的大小,而不是数据集的总大小。

除了非常小的图像之外,所有图像所需的内存zca_whitening都将超过 16GB,请参阅此处了解说明。

要解决此问题,您可以zca_whitening=FalseImageDataGenerator中进行设置。