我有一个学习人工神经网络的程序,它需要一个二维 numpy 数组作为训练数据。我想要使用的数据数组的大小约为 300,000 x 400 个浮点数。我不能在这里使用分块,因为我正在使用的库(DeepLearningTutorials)采用单个 numpy 数组作为训练数据。
当此过程的 RAM 使用量约为 1.6Gb 时,代码显示 MemoryError(我在系统监视器中检查过),但我的总 RAM 为 8GB。另外,系统是Ubuntu-12.04 32位。
我检查了其他类似问题的答案,但在某处它说没有什么比为 python 程序分配内存更好的了,而在某处,关于如何增加进程内存的答案并不清楚。
一件有趣的事情是我在另一台机器上运行相同的代码,它可以毫无问题地处理几乎 1,500,000 x 400 浮点数的 numpy 数组。基本配置类似,只是另一台机器是 64 位,而这台机器是 32 位。
有人可以给出一些理论上的答案,解释为什么会有如此大的差异,还是这是我的问题的唯一原因?
32 位操作系统最多只能处理大约 4GB 的 RAM,而 64 位操作系统可以利用更多的 RAM(理论上为 1680 万 TB)。由于您的操作系统是 32 位,因此您的操作系统只能利用 4GB,因此您的其他 4GB 不会被使用。
另一台 64 位机器没有 4GB RAM 限制,因此它可以利用所有已安装的 RAM。
这些限制来自于这样一个事实:32 位机器只能存储 32 字节的内存地址(指针),因此计算机可以识别 2^32 种不同的可能内存位置。同样,64位机器可以识别2^64个不同的可能的内存位置,因此它可以寻址2^64个不同的字节。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)