10 #include <dmlc/serializer.h> 13 namespace serializer {
18 uint64_t sz =
static_cast<uint64_t
>(data.Size());
20 strm->Write(data.Data(), sz *
sizeof(T));
25 bool status = strm->Read(&sz);
30 return strm->Read(data->Data(), sz *
sizeof(T));
39 void Tree::ReferenceSerialize(dmlc::Stream* fo)
const {
41 fo->Write(leaf_vector_);
42 fo->Write(leaf_vector_offset_);
43 fo->Write(left_categories_);
44 fo->Write(left_categories_offset_);
45 uint64_t sz =
static_cast<uint64_t
>(nodes_.Size());
47 fo->Write(nodes_.Data(), sz *
sizeof(Tree::Node));
50 CHECK_EQ(nodes_.Size(), num_nodes);
51 CHECK_EQ(nodes_.Size() + 1, leaf_vector_offset_.Size());
52 CHECK_EQ(leaf_vector_offset_.Back(), leaf_vector_.Size());
53 CHECK_EQ(nodes_.Size() + 1, left_categories_offset_.Size());
54 CHECK_EQ(left_categories_offset_.Back(), left_categories_.Size());
57 void Model::ReferenceSerialize(dmlc::Stream* fo)
const {
58 fo->Write(num_feature);
59 fo->Write(num_output_group);
60 fo->Write(random_forest_flag);
61 fo->Write(¶m,
sizeof(param));
62 uint64_t sz =
static_cast<uint64_t
>(trees.size());
64 for (
const Tree& tree : trees) {
65 tree.ReferenceSerialize(fo);
model structure for tree ensemble