Fix parameter loading with training continuation. (#7121)

* Add a demo for training continuation.
This commit is contained in:
Jiaming Yuan
2021-07-23 10:51:47 +08:00
committed by GitHub
parent 41e882f80b
commit 778135f657
5 changed files with 151 additions and 13 deletions

View File

@@ -1298,19 +1298,6 @@ class Booster(object):
# Validate feature only after the feature names are saved into booster.
self._validate_features(d)
params = params or {}
params = self._configure_metrics(params.copy())
params = self._configure_constraints(params)
if isinstance(params, list):
params.append(('validate_parameters', True))
else:
params['validate_parameters'] = True
self.set_param(params or {})
if (params is not None) and ('booster' in params):
self.booster = params['booster']
else:
self.booster = 'gbtree'
if isinstance(model_file, Booster):
assert self.handle is not None
# We use the pickle interface for getting memory snapshot from
@@ -1330,6 +1317,20 @@ class Booster(object):
else:
raise TypeError('Unknown type:', model_file)
params = params or {}
params = self._configure_metrics(params.copy())
params = self._configure_constraints(params)
if isinstance(params, list):
params.append(('validate_parameters', True))
else:
params['validate_parameters'] = True
self.set_param(params or {})
if (params is not None) and ('booster' in params):
self.booster = params['booster']
else:
self.booster = 'gbtree'
def _configure_metrics(self, params: Union[Dict, List]) -> Union[Dict, List]:
if isinstance(params, dict) and 'eval_metric' in params \
and isinstance(params['eval_metric'], list):