Numpy 由于过度使用RAM,Colab中的会话崩溃

Numpy 由于过度使用RAM,Colab中的会话崩溃,numpy,deep-learning,google-colaboratory,ram,Numpy,Deep Learning,Google Colaboratory,Ram,当我试图创建一个巨大的3D numpy数组时,我遇到了以下运行时错误。 您的会话在使用所有可用RAM后崩溃。 这是导致错误的代码 decoder_output_one_hot = np.zeros((30000, 23, 20000), dtype='float32'). 当我可以访问超过25GB的RAM时,为什么会发生这种情况?您正在尝试创建一个包含30000 x 23 x 20000=138000000个条目的阵列。每个条目都是32位浮点数,因此字节总数为138000000 x(32/8)

当我试图创建一个巨大的3D numpy数组时,我遇到了以下运行时错误。 您的会话在使用所有可用RAM后崩溃。

这是导致错误的代码

decoder_output_one_hot = np.zeros((30000, 23, 20000), dtype='float32').

当我可以访问超过25GB的RAM时,为什么会发生这种情况?

您正在尝试创建一个包含30000 x 23 x 20000=138000000个条目的阵列。每个条目都是32位浮点数,因此字节总数为138000000 x(32/8)=55200000000:换句话说,您的数组将占用超过50GB的RAM,是可用内存的两倍。

本质上,这是一个数学问题。您的数据类型为
float32
,表示数组中的每个零的大小为32位或4字节(32/8=4)。阵列的大小为138000000个单元(30000x23x20000)。如果将4个字节乘以138000000,则会得到55.2G字节的大小,因此需要访问至少相当于该计算所需的RAM。您可以尝试添加交换内存来填补空白,但请注意,交换内存会占用硬盘空间,因此它会填满您的驱动器,并且比RAM慢得多,但应该可以满足您的需要。