我試圖了解為什么以下代碼會使我的 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引擎蓋下的操作。歡迎任何建議和澄清。
uj5u.com熱心網友回復:
x1有形狀(90000,)。 x2有形狀(90000, 1)。在運算式x1 - x2中,廣播發生(正如您所懷疑的),給出具有 shape 的結果(90000, 90000)。這樣的浮點值陣列需要90000*90000*8 = 64800000000位元組。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/436259.html
