加载1500张大小的图片 (1000,1000,3)
破译代码,通过 kill 9
而不会再出现任何错误。在这行代码之前使用的内存是 16% 占系统总内存的比例。图像的总大小为 7.1G.
X = np.asarray(images).astype('float64')
y = np.asarray(labels).astype('float64')
系统规格是:
更新:在32个vCPU,120GB内存上运行代码时,出现了下面的错误。
MemoryError: Unable to allocate 14.1 GiB for an array with shape (1200, 1024, 1024, 3) and data type float32
你必须提供更多的信息细节才能得到准确的答案,但是,假设这是一个内存错误(难以置信的可能性,磁盘上的图像大小并不代表它们在内存中占据的大小,所以这是不相关的。在100%的情况下,由于指针、需要的对象等原因,内存中的图像会占据更多的空间。直觉上我会说,16GB的内存远远不够加载7GB的图片。不可能告诉你需要多少,但根据经验,我认为你需要将其提升到64GB。如果你使用的是Keras,我建议你研究一下Keras。DirectoryIterator.
编辑:Cris Luengo指出,我忽略了一个事实,就是你说的图片大小。
正如Cris Luengo所指出的,我没注意到你说的图像大小。