我已经尝试在Google运行了一段时间,并且一直遇到同样的问题。单元运行约20-25分钟,终止代码并重新启动运行时,因为内存/RAM不足,导致所有变量丢失。我首先删除了将在下一次迭代中通过调用"del“重新初始化的变量。删除变量后,我调用gc.collect()函数。一旦这样做不起作用,我注意到有一些数据结构增加了每次迭代(几个列表)。我删除了列表并将信息写到csv文件中。然后,我在for循环之后读取information/csv文件,并以这种方式获得信息,而不是在for循环中的每个迭代中追加到列表中。然而,这也没有解决问题。我没有Colab Pro+,我正在使用免费版本。
如能提供任何协助,将不胜感激。谢谢!
发布于 2022-07-20 22:55:36
我首先删除了将在下一次迭代中通过调用"del“重新初始化的变量。
如果快速将该变量重新分配到一个新值,则删除该变量将不会执行任何操作。
然后,我在for循环之后读取信息/csv文件,并以这种方式获得信息,而不是在for循环中的每个迭代中追加到列表中。
如果最终结果是存储在变量中的信息量相同,那么这也不会起任何作用。
没有看到实际的代码,我只能说“您的变量太大了”。
发布于 2022-07-21 00:32:13
您可能想看看HDF5数据集或numpy.memmap。如果不必一次处理整个数据,这些工具可以帮助您分批处理数据,而无需立即将整个数据加载到ram中。
创建并写入hdf5文件:
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))从档案中读取:
with h5py.File("mytestfile.hdf5", "r") as f:
dset = f["mydataset"]
for i in range(dset.shape[0]):
# read in batches
row = dset[i]
# ...https://stackoverflow.com/questions/73058853
复制相似问题