当我为 BaggindRegressor 使用超过 1 个 CPU 时出现内存错误

问题描述 投票:0回答:0

使用 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 训练模型而不会导致内存问题?

python-3.x machine-learning scikit-learn decision-tree
© www.soinside.com 2019 - 2024. All rights reserved.