| 622 | } |
| 623 | |
| 624 | void SaveConfig(Json* p_out) const override { |
| 625 | CHECK(!this->need_configuration_) << "Call Configure before saving model."; |
| 626 | Version::Save(p_out); |
| 627 | Json& out{*p_out}; |
| 628 | // parameters |
| 629 | out["learner"] = Object(); |
| 630 | auto& learner_parameters = out["learner"]; |
| 631 | |
| 632 | learner_parameters["learner_train_param"] = ToJson(tparam_); |
| 633 | learner_parameters["learner_model_param"] = mparam_.ToJson(); |
| 634 | learner_parameters["gradient_booster"] = Object(); |
| 635 | auto& gradient_booster = learner_parameters["gradient_booster"]; |
| 636 | gbm_->SaveConfig(&gradient_booster); |
| 637 | |
| 638 | learner_parameters["objective"] = Object(); |
| 639 | auto& objective_fn = learner_parameters["objective"]; |
| 640 | obj_->SaveConfig(&objective_fn); |
| 641 | |
| 642 | std::vector<Json> metrics(metrics_.size()); |
| 643 | for (size_t i = 0; i < metrics_.size(); ++i) { |
| 644 | metrics[i] = Object{}; |
| 645 | metrics_[i]->SaveConfig(&metrics[i]); |
| 646 | } |
| 647 | learner_parameters["metrics"] = Array(std::move(metrics)); |
| 648 | |
| 649 | learner_parameters["generic_param"] = ctx_.ToJson(); |
| 650 | } |
| 651 | |
| 652 | void SetParam(const std::string& key, const std::string& value) override { |
| 653 | this->need_configuration_ = true; |