首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >耗尽内存- Google Colab

耗尽内存- Google Colab
EN

Stack Overflow用户
提问于 2022-07-20 22:41:31
回答 2查看 718关注 0票数 0

我已经尝试在Google运行了一段时间,并且一直遇到同样的问题。单元运行约20-25分钟,终止代码并重新启动运行时,因为内存/RAM不足,导致所有变量丢失。我首先删除了将在下一次迭代中通过调用"del“重新初始化的变量。删除变量后,我调用gc.collect()函数。一旦这样做不起作用,我注意到有一些数据结构增加了每次迭代(几个列表)。我删除了列表并将信息写到csv文件中。然后,我在for循环之后读取information/csv文件,并以这种方式获得信息,而不是在for循环中的每个迭代中追加到列表中。然而,这也没有解决问题。我没有Colab Pro+,我正在使用免费版本。

如能提供任何协助,将不胜感激。谢谢!

EN

回答 2

Stack Overflow用户

发布于 2022-07-20 22:55:36

我首先删除了将在下一次迭代中通过调用"del“重新初始化的变量。

如果快速将该变量重新分配到一个新值,则删除该变量将不会执行任何操作。

然后,我在for循环之后读取信息/csv文件,并以这种方式获得信息,而不是在for循环中的每个迭代中追加到列表中。

如果最终结果是存储在变量中的信息量相同,那么这也不会起任何作用。

没有看到实际的代码,我只能说“您的变量太大了”。

票数 1
EN

Stack Overflow用户

发布于 2022-07-21 00:32:13

您可能想看看HDF5数据集numpy.memmap。如果不必一次处理整个数据,这些工具可以帮助您分批处理数据,而无需立即将整个数据加载到ram中。

创建并写入hdf5文件:

代码语言:javascript
复制
import h5py
import numpy as np
rows = 20
columns = 100
with h5py.File("mytestfile.hdf5", "w") as f:
    # create new dataset
    dset = f.create_dataset("mydataset", (rows,columns), dtype='i')
    for i in range(rows):
        # write in batches
        dset[i] = np.random.randint(0,10,(columns))

从档案中读取:

代码语言:javascript
复制
with h5py.File("mytestfile.hdf5", "r") as f:
  dset = f["mydataset"]
  for i in range(dset.shape[0]):
    # read in batches
    row = dset[i]
    # ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73058853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档