Python:google计算引擎上的内存错误
在google compute engine上,我运行以下操作:Python:google计算引擎上的内存错误,python,linux,google-compute-engine,Python,Linux,Google Compute Engine,在google compute engine上,我运行以下操作: z = np.zeros((10000, 32, 32, 3)) 得到 MemoryError回溯(最近的调用) 最后)在 ---->1 z=np.零((10000,32,32,3)) MemoryError:无法分配234。具有形状的数组的MiB (10000,32,32,3)和数据类型float64 这看起来像是当前的操作系统配置阻止我分配大数据块,这对我来说很奇怪 如何获得需要分配的内存 这是用于,用于将CIFAR-10
z = np.zeros((10000, 32, 32, 3))
得到
MemoryError回溯(最近的调用)
最后)在
---->1 z=np.零((10000,32,32,3))
MemoryError:无法分配234。具有形状的数组的MiB
(10000,32,32,3)和数据类型float64
这看起来像是当前的操作系统配置阻止我分配大数据块,这对我来说很奇怪
如何获得需要分配的内存
这是用于,用于将CIFAR-10加载到内存。我猜您尝试创建的阵列对于google计算机引擎来说可能太大了。这样想: 您正试图为大小为10000*32*32*3=3072000个单元的4d阵列分配内存,这太多了!考虑到python中flaot64的标准大小是8,那么一个命令就可以分配245760000字节(245MB)的数据 您可以使用以下命令分配大小类似的字节数组:
z = bytearray(245760000)
但我不知道你用这个干什么,所以我不知道这是否对你有帮助
即使在谷歌计算机引擎上有一个分配内存量的解决方案,我还是建议你考虑一下,如果你真的需要这么多的空间。
例如,如果您仍然需要一个如此大的数组,但每个单元格的值为0或1,则可以将其设置为二进制数组,该数组的空间将减少64倍
再次重申,如果你真的需要那么大的空间,如果你真的需要那么大的数组,那么请重新考虑,而不要在如何存储所有数据方面更具创造性。是的,我需要在memry中使用它,因为它是cifar-10数据集。如果它留在磁盘上,训练将非常缓慢。无论如何,机器的复位解决了这个问题。不知道是什么原因造成的。