MemoryError: Unable to allocate 30.4 GiB for an array with shape (725000, 277, 76) and data type float64

MemoryError: Unable to allocate 30.4 GiB for an array with shape (725000, 277, 76) and data type float64

它给出了内存错误,但从未达到内存容量。我在 SSH 上有 60 GB 的内存,整个数据集过程消耗 30 我正在尝试使用 k-fold 训练自动编码器。没有 k-fold 训练效果很好。原始数据集包含 250,000 个 hdf5 数据。 使用 K-fold,如果我使用的总数据少于 100000,它就可以工作。 我已将其转换为 float32,但仍然无法正常工作。 我也试过 echo 1 但它会自动杀死 python 程序

考虑到您提供的数据集的维度 (725000 x 277 x 76) 及其数据类型 (float64 - 8 字节),它似乎您需要(至少)大约 114 GB 才能在 RAM 中拥有数据集 loaded/stored。

克服此限制的解决方案是:1) 通过 hyperslab 选择读取一定数量的数据集(例如当时 1 GB 的块)并将其load/store 存储在内存中,2)处理它,并且 3) 重复该过程(即转到步骤 1)直到数据集被完全处理。这样,您就不会 运行 RAM 内存不足。