gpt4 book ai didi

python - 使用 python : garbage collector is not working? 在 google colab 上工作

转载 作者:行者123 更新时间:2023-11-30 09:15:24 26 4
gpt4 key购买 nike

我正在使用 python 进行 google collab 工作,并且我有一个 12Gb RAM。我正在尝试使用谷歌预训练的 word2vec 通过向量表示句子。我应该有相同长度的向量,即使它们没有相同数量的单词,所以我使用了填充(这里句子的最大长度是我的变量 max)问题是,每次我想创建一个包含所有向量的矩阵时,我都会很快用完 RAM 内存(在 20k th/128k 向量上)

这是我的代码:

final_x_train = []
l=np.zeros((max,300)) # The legnth of a google pretained model is 300
for i in new_X_train:
buildWordVector(final_x_train, i, model, l)
gc.collect() #doesn't do anything except slowing the run time


def buildWordVector(new_X, sent, model, l):
for x in range(len(sent)):
try:
l[x]= list(model[sent[x]])
gc.collect() #doesn't do anything except slowing the run time
except KeyError:
continue
new_X.append([list(x) for x in l])

我拥有的所有变量:

     df:  16.8MiB
new_X_train: 1019.1KiB
X_train: 975.5KiB
y_train: 975.5KiB
new_X_test: 247.7KiB
X_test: 243.9KiB
y_test: 243.9KiB
l: 124.3KiB
final_x_train: 76.0KiB
stop_words: 8.2KiB

但我的内存为 12Gb/12Gb (RAM),并且 session 已过期

正如您所看到的,垃圾收集器没有执行任何操作,因为显然看不到变量,但我确实需要一个解决方案来解决这个问题,有人可以帮助我吗?

最佳答案

一般来说,在像 Python 这样的垃圾收集语言中,您不需要需要显式请求垃圾收集:当您停止保留引用(变量/传递属性引用)时,它会自动发生) 到对象。

因此,如果您在此处遇到内存错误,几乎可以肯定是因为您确实一次尝试使用超过可用内存量的内存。

您的代码有点不完整且不清楚 - max 是什么? new_X_train 是什么?您从哪里获得这些内存大小估计值?等等

但值得注意的是:将句子表示为每个单词向量的串联是的典型做法。 (因此,使用 300d 个单词向量和一个最多 10 个单词的句子,您将拥有一个 3000d 个句子向量。)将单词向量平均在一起的情况要普遍得多,因此单词和句子的大小相同,短句末尾没有空白。

(这仍然是创建文本向量的一种非常粗略的方法,但比填充到最大句子大小更常见。)

关于python - 使用 python : garbage collector is not working? 在 google colab 上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57326055/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com