做机器学习数据预处理的时候遇到 numpy.core._exceptions.MemoryError: Unable to allocate array with shape (150000, 20, 1600) and data type float64. 主要是因为内存大小不足导致的问题,还有出现OSError: [Errno 12] Cannot allocate memory这个错误,也是由于内存不足引起的。如果是运行在linux系统下,可以用cat /proc/meminfo 指令查看可使用内存是多少。同时在程序运行期间,可以使用top -u user(程序运行时的用户名)来监测内存使用情况。
解决上述2个内存问题:
1. 如果可以继续分配内存,增加内存空间的大小。监测程序运行过程使用的内存峰值,确定需要增加多少内存空间。如果没有可以分配的内存可以直接尝试步骤2的方法,但不确保可以完全解决问题。
2. 如果增加内存空间之后仍有内存问题,使用cat /proc/sys/vm/overcommit_memory 指令,如果返回结果是0,可以作为root用户,使用echo 1 > /proc/sys/vm/overcommit_memory 将其值改为1.
如果在完成步骤1,2 之后,仍有内存问题,可能需要增加内存条,或者使用GPU(之后会尝试是否可以解决上述问题)。如果哪位小伙伴有更好的解决办法,欢迎留言交流。谢谢🙏