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 个字节。