即使在每次迭代结束时删除所有变量,python for循环中也会出现内存泄漏
以下两个循环将使用内存,直到用完为止,但我不知道为什么。我在每次迭代结束时删除所有创建的变量,但仍然会泄漏即使在每次迭代结束时删除所有变量,python for循环中也会出现内存泄漏,python,for-loop,memory-leaks,cupy,Python,For Loop,Memory Leaks,Cupy,以下两个循环将使用内存,直到用完为止,但我不知道为什么。我在每次迭代结束时删除所有创建的变量,但仍然会泄漏 !pip3 install cupy-cuda101 import cupy as cp import numpy as np from sklearn.preprocessing import PolynomialFeatures xtrain = cp.asnumpy(cp.random.uniform(-1,1,size = (150000,50))) for i in rang
!pip3 install cupy-cuda101
import cupy as cp
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
xtrain = cp.asnumpy(cp.random.uniform(-1,1,size = (150000,50)))
for i in range(0,1000):
weights = cp.random.uniform(-1,1,size = (1275,1000))
for chunk in range(0,xtrain.shape[0],5000):
xchunk = xtrain[chunk:chunk+5000,:]
poly=PolynomialFeatures(interaction_only = True, include_bias = False)
xchunk = cp.array(poly.fit_transform(xchunk))
ranks = cp.matmul(xchunk,weights)
del ranks, xchunk, poly
del weights
xtrain也是浮点数据,介于-1和1之间。这些行在每次迭代结束时插入,将其修复:
cp.get_default_memory_pool().free_all_blocks()
cp.get_default_pinned_memory_pool().free_all_blocks()
你所有的
del
语句都是毫无意义的,因为这些变量在每次迭代中都会被重新分配。确切地说,那么它如何在每次迭代后使用越来越多的内存呢?不知道。你必须提供一份报告,希望任何人都能诊断像塔托克这样的东西,现在它是可重复的。你能详细说明一下为什么你认为有“泄漏”吗?还要注意,默认情况下CuPy使用内存池: