xgboost学习速率调度程序回调



我使用xgboost进行图像分类,每当我想使用LearningRateScheduler或LearningRateDay回调时,我都会遇到一些错误。我在keras中使用了与LearningRateScheduler相同的函数。

def read_lr_from_file(lr_file,epoch):
with open ('LR.txt' , mode='r') as lr_file:
for line in lr_file:
step,lr = line.split(':')
lr = lr.strip()
if int(step) <= epoch and float(lr) > 0:
learning_rate = float(lr)
return learning_rate

def get_scheduler(lr_file):
def scheduler(epoch):
lr = read_lr_from_file(lr_file, epoch)
return lr
return scheduler
learning_rate = xgboost.callback.LearningRateScheduler(get_scheduler('LR.txt'))
trained_model = xgboost.train(params= params_1, dtrain= train_dataset , evals=[(val_dataset, 'eval')],num_boost_round = 1000,early_stopping_rounds=50,callbacks=[learning_rate],verbose_eval= False)

它不断地打印下面的消息:

"[20:33:17]警告:C:\Users/Administrator/workspace/xgboost-win64_release_1.5.1/src/slearner.cc:576:参数:{"min_chiled_weight"、"n_evaluations"、"rate_drop"}可能不会被使用。

这可能是一个错误的警报,语言绑定使用了一些参数,但是然后被错误地传递到XGBoost核心,或者实际使用了一些参数但是在这里被错误地标记了。如果您发现任何此类情况,请打开一个问题。

[20:33:20]警告:C:\Users/Administrator/workspace/xgboost-win64_release_1.5.1/src/slearner.cc:1115:从xgboost 1.3.0开始,用于目标"multi:softmax"的默认评估度量从"merror"更改为"mlogloss"。如果要恢复旧行为,请显式设置eval_metric。[20:33:20]警告:C:\Users/Administrator/workspace/xgboost-win64_release_1.5.1/src/slearner.cc:576:参数:{"min_chiled_weight"、"n_evaluations"、"rate_drop"}可能不会被使用。

这可能是一个错误的警报,语言绑定使用了一些参数,但是然后被错误地传递到XGBoost核心,或者实际使用了一些参数但是在这里被错误地标记了。如果您发现任何此类情况,请打开一个问题">

如果你能帮我解决这个问题,我将不胜感激。

这不是一个关于回调的合理可调用对象,请参阅下面的演示:

def lr_decay(epoch):
lr = init_lr*0.999**epoch   # *0.99 0.9 0.995 0.999
print(epoch,':',lr,)
return lr
callbacks = xgb.callback.LearningRateScheduler(reduce_lr)
bst = XGBClassifier()
eval_set = [(x_train, y_train), (x_test, y_test)]
bst.fit(x_train,y_train,eval_set=eval_set,callbacks=[callbacks])

最新更新