From 139ccc9902e7845da4de4dd8931b5e5151de09e5 Mon Sep 17 00:00:00 2001 From: Jiaming Yuan Date: Mon, 30 Dec 2019 02:18:45 +0800 Subject: [PATCH] Fix num_roots to be 1. (#5165) --- include/xgboost/tree_model.h | 1 + src/gbm/gbtree_model.h | 1 + src/tree/tree_model.cc | 1 + 3 files changed, 3 insertions(+) diff --git a/include/xgboost/tree_model.h b/include/xgboost/tree_model.h index fa65ebb64..3bcb1cc3b 100644 --- a/include/xgboost/tree_model.h +++ b/include/xgboost/tree_model.h @@ -56,6 +56,7 @@ struct TreeParam : public dmlc::Parameter { "TreeParam: 64 bit align"); std::memset(this, 0, sizeof(TreeParam)); num_nodes = 1; + deprecated_num_roots = 1; } // declare the parameters DMLC_DECLARE_PARAMETER(TreeParam) { diff --git a/src/gbm/gbtree_model.h b/src/gbm/gbtree_model.h index 627f950dd..a03f163af 100644 --- a/src/gbm/gbtree_model.h +++ b/src/gbm/gbtree_model.h @@ -47,6 +47,7 @@ struct GBTreeModelParam : public dmlc::Parameter { std::memset(this, 0, sizeof(GBTreeModelParam)); // FIXME(trivialfis): Why? static_assert(sizeof(GBTreeModelParam) == (4 + 2 + 2 + 32) * sizeof(int32_t), "64/32 bit compatibility issue"); + deprecated_num_roots = 1; } // declare parameters, only declare those that need to be set. diff --git a/src/tree/tree_model.cc b/src/tree/tree_model.cc index c3752f337..f8d24a6ce 100644 --- a/src/tree/tree_model.cc +++ b/src/tree/tree_model.cc @@ -640,6 +640,7 @@ void RegTree::Save(dmlc::Stream* fo) const { CHECK_EQ(param.num_nodes, static_cast(nodes_.size())); CHECK_EQ(param.num_nodes, static_cast(stats_.size())); fo->Write(¶m, sizeof(TreeParam)); + CHECK_EQ(param.deprecated_num_roots, 1); CHECK_NE(param.num_nodes, 0); fo->Write(dmlc::BeginPtr(nodes_), sizeof(Node) * nodes_.size()); fo->Write(dmlc::BeginPtr(stats_), sizeof(RTreeNodeStat) * nodes_.size());