Google colab 内存问题
Google colab memory issue
我想了解为什么以下代码会导致我的 Colab 会话崩溃。
import numpy as np
import tensorflow as tf
x1 = np.random.rand(90000)
x2 = tf.random.uniform((90000,1)).numpy()
print(x1.shape, type(x1))
print(x2.shape, type(x2))
x1 - x2
我可以看到导致崩溃的内存正在爆炸,但我希望有人能准确解释为什么会发生这种情况。我也知道这与 numpy
中的广播数组有关,我只是想知道这是否是预期的行为,所以我以后可以避免它。
解决方法是 np.squeze(x2, axis=1)
,因此向量具有相同的形状,但显然我不明白 numpy
在幕后做了什么。欢迎提出任何建议和说明。
x1
的形状为 (90000,)
。 x2
的形状为 (90000, 1)
。在表达式 x1 - x2
中,出现了 broadcasting(正如您所怀疑的),给出了形状为 (90000, 90000)
的结果。这样的浮点值数组需要 90000*90000*8 = 64800000000
个字节。
我想了解为什么以下代码会导致我的 Colab 会话崩溃。
import numpy as np
import tensorflow as tf
x1 = np.random.rand(90000)
x2 = tf.random.uniform((90000,1)).numpy()
print(x1.shape, type(x1))
print(x2.shape, type(x2))
x1 - x2
我可以看到导致崩溃的内存正在爆炸,但我希望有人能准确解释为什么会发生这种情况。我也知道这与 numpy
中的广播数组有关,我只是想知道这是否是预期的行为,所以我以后可以避免它。
解决方法是 np.squeze(x2, axis=1)
,因此向量具有相同的形状,但显然我不明白 numpy
在幕后做了什么。欢迎提出任何建议和说明。
x1
的形状为 (90000,)
。 x2
的形状为 (90000, 1)
。在表达式 x1 - x2
中,出现了 broadcasting(正如您所怀疑的),给出了形状为 (90000, 90000)
的结果。这样的浮点值数组需要 90000*90000*8 = 64800000000
个字节。