使用 BaggingRegressor 模型时,将 n_jobs 设置为 1 会导致训练成功,但是当尝试使用 6 个 CPU 进行训练时,每次迭代都会增加内存使用量。似乎内存使用不会在每次迭代中自动释放。代码如下,
test1= np.empty((788,))
test2= np.empty((788,))
pred_test= np.empty((788,))
for y in np.arange(0, 71, 1):
for x in np.arange(0, 73, 1):
dataY = rawdata[y, x, :]/10
dataX= (x + xa)/2
dataY = np.reshape(dataY , (4017, 1))
dataY = np.reshape(dataY , (4017, 1))
u = np.argwhere(np.isnan(dataY ))
dataY = np.delete(dataY , u)
dataX= np.delete(dataX, u)
l = len(dataY )
dataY= np.reshape(dataY, (l, 1))
dataX= np.reshape(dataX, (l, 1))
X_train, X_test, y_train, y_test = train_test_split(
dataX, dataY, test_size=0.20)
xgb_reg = xgb.XGBRegressor()
model = BaggingRegressor(
base_estimator=xgb_reg, n_jobs=1, n_estimators=100)
model.fit(X_train, y_train.ravel())
pred_final = model.predict(X_test)
# assign data into list
test1[:] = np.squeeze(y_test)
test2[:] = np.squeeze(X_test)
pred_test[:] = np.squeeze(pred_final)
del xgb_reg, model, X_train, X_test, y_train, y_test, dataY, dataX, u, l, pred_test
gc.collect()
使用多个 CPU 似乎会导致内存问题,而仅使用 1 个 CPU 似乎没有这个问题。
不确定是不是BaggingRegressor有问题。 如何使用多个 CPU 训练模型而不会导致内存问题?