MCPcopy Create free account
hub / github.com/antmachineintelligence/mtgbmcode / ResetTrainingData

Method ResetTrainingData

src/boosting/gbdt.cpp:763–815  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

761}
762
763void GBDT::ResetTrainingData(const Dataset* train_data, const ObjectiveFunction* objective_function,
764 const std::vector<const Metric*>& training_metrics) {
765 if (train_data != train_data_ && !train_data_->CheckAlign(*train_data)) {
766 Log::Fatal("Cannot reset training data, since new training data has different bin mappers");
767 }
768
769 objective_function_ = objective_function;
770 if (objective_function_ != nullptr) {
771 is_constant_hessian_ = objective_function_->IsConstantHessian();
772 CHECK(num_tree_per_iteration_ == objective_function_->NumModelPerIteration());
773 } else {
774 is_constant_hessian_ = false;
775 }
776
777 // push training metrics
778 training_metrics_.clear();
779 for (const auto& metric : training_metrics) {
780 training_metrics_.push_back(metric);
781 }
782 training_metrics_.shrink_to_fit();
783
784 if (train_data != train_data_) {
785 train_data_ = train_data;
786 // not same training data, need reset score and others
787 // create score tracker
788 train_score_updater_.reset(new ScoreUpdater(train_data_, num_tree_per_iteration_));
789
790 // update score
791 for (int i = 0; i < iter_; ++i) {
792 for (int cur_tree_id = 0; cur_tree_id < num_tree_per_iteration_; ++cur_tree_id) {
793 auto curr_tree = (i + num_init_iteration_) * num_tree_per_iteration_ + cur_tree_id;
794 train_score_updater_->AddScore(models_[curr_tree].get(), cur_tree_id);
795 }
796 }
797
798 num_data_ = train_data_->num_data();
799
800 // create buffer for gradients and hessians
801 if (objective_function_ != nullptr) {
802 size_t total_size = static_cast<size_t>(num_data_) * num_tree_per_iteration_;
803 gradients_.resize(total_size);
804 hessians_.resize(total_size);
805 }
806
807 max_feature_idx_ = train_data_->num_total_features() - 1;
808 label_idx_ = train_data_->label_idx();
809 feature_names_ = train_data_->feature_names();
810 feature_infos_ = train_data_->feature_infos();
811
812 tree_learner_->ResetTrainingData(train_data);
813 ResetBaggingConfig(config_.get(), true);
814 }
815}
816
817void GBDT::ResetConfig(const Config* config) {
818 auto new_config = std::unique_ptr<Config>(new Config(*config));

Callers 1

BaggingMethod · 0.45

Calls 14

push_backMethod · 0.80
resetMethod · 0.80
CheckAlignMethod · 0.45
IsConstantHessianMethod · 0.45
NumModelPerIterationMethod · 0.45
clearMethod · 0.45
shrink_to_fitMethod · 0.45
AddScoreMethod · 0.45
getMethod · 0.45
num_dataMethod · 0.45
resizeMethod · 0.45
num_total_featuresMethod · 0.45

Tested by

no test coverage detected