为什么 LightGBM 输出这个:完成加载模型,总使用 X 次迭代?
Why is LightGBM outputing this: Finished loading model, total used X iterations?
我是 LightGBM 模型架构的新手。
Finished loading model, total used 15000 iterations
每次训练模型时它都会打印此消息。它由这个 line 打印,我想了解它为什么要加载这个模型。什么是助推器模型?它是如何训练的?为什么它加载这个模型而不是训练一个新模型?
这是我的代码:
lgbparams = {...}
lgbtrain = lgb.Dataset(data=self.train_x, label=self.train_y)
self.model = lgb.train(
lgb_params, lgbtrain,
evals_result=self.evals_result,
valid_sets=lgbtrain,
verbose_eval=False,
callbacks=self.callbacks
)
找到打印此行的位置。稍后在训练后的代码中有一行 copy.deepcopy(self.model)
并且因此 LightGBM 库以某种方式打印了有问题的行。
我也看过这张照片,是在 deepcopy
期间。要重现它:
import copy
import numpy as np
import lightgbm as lgb
X = np.random.rand(100,3)
y = np.random.rand(100)
train = lgb.Dataset(X, y)
model = lgb.train({"verbose": -1}, train, num_boost_round=1)
# the printout is here:
model2 = copy.deepcopy(model)
在复制过程中关闭打印的快速修复可以是:
import os
import contextlib
with open(os.devnull, "w") as f, contextlib.redirect_stdout(f):
model2 = copy.deepcopy(model)
(我得到这个打印输出是因为我直接在 lightgbm 对象上调用 deepcopy
。)
我是 LightGBM 模型架构的新手。
Finished loading model, total used 15000 iterations
每次训练模型时它都会打印此消息。它由这个 line 打印,我想了解它为什么要加载这个模型。什么是助推器模型?它是如何训练的?为什么它加载这个模型而不是训练一个新模型?
这是我的代码:
lgbparams = {...}
lgbtrain = lgb.Dataset(data=self.train_x, label=self.train_y)
self.model = lgb.train(
lgb_params, lgbtrain,
evals_result=self.evals_result,
valid_sets=lgbtrain,
verbose_eval=False,
callbacks=self.callbacks
)
找到打印此行的位置。稍后在训练后的代码中有一行 copy.deepcopy(self.model)
并且因此 LightGBM 库以某种方式打印了有问题的行。
我也看过这张照片,是在 deepcopy
期间。要重现它:
import copy
import numpy as np
import lightgbm as lgb
X = np.random.rand(100,3)
y = np.random.rand(100)
train = lgb.Dataset(X, y)
model = lgb.train({"verbose": -1}, train, num_boost_round=1)
# the printout is here:
model2 = copy.deepcopy(model)
在复制过程中关闭打印的快速修复可以是:
import os
import contextlib
with open(os.devnull, "w") as f, contextlib.redirect_stdout(f):
model2 = copy.deepcopy(model)
(我得到这个打印输出是因为我直接在 lightgbm 对象上调用 deepcopy
。)