13 std::vector<PyBufferFrame>
14 Model::GetPyBuffer() {
15 std::vector<PyBufferFrame> buffer;
16 auto header_primitive_field_handler = [&buffer](
auto* field) {
17 buffer.push_back(GetPyBufferFromScalar(field));
19 SerializeTemplate(header_primitive_field_handler);
20 this->GetPyBuffer(&buffer);
24 std::unique_ptr<Model>
25 Model::CreateFromPyBuffer(std::vector<PyBufferFrame> frames) {
26 TypeInfo threshold_type, leaf_output_type;
27 auto it = frames.begin();
28 auto header_primitive_field_handler = [&it](
auto* field) {
29 InitScalarFromPyBuffer(field, *it++);
34 DeserializeTemplate(header_primitive_field_handler, major_ver, minor_ver, patch_ver,
35 threshold_type, leaf_output_type);
37 std::unique_ptr<Model> model = Model::Create(threshold_type, leaf_output_type);
38 model->major_ver_ = major_ver;
39 model->minor_ver_ = minor_ver;
40 model->patch_ver_ = patch_ver;
41 std::size_t num_frame = std::distance(it, frames.end());
42 model->InitFromPyBuffer(it, num_frame);
47 Model::SerializeToFile(FILE* dest_fp) {
48 auto header_primitive_field_handler = [dest_fp](
auto* field) {
49 WriteScalarToFile(field, dest_fp);
51 SerializeTemplate(header_primitive_field_handler);
52 this->SerializeToFileImpl(dest_fp);
55 std::unique_ptr<Model>
56 Model::DeserializeFromFile(FILE* src_fp) {
57 TypeInfo threshold_type, leaf_output_type;
59 auto header_primitive_field_handler = [src_fp](
auto* field) {
60 ReadScalarFromFile(field, src_fp);
65 DeserializeTemplate(header_primitive_field_handler, major_ver, minor_ver, patch_ver,
66 threshold_type, leaf_output_type);
68 std::unique_ptr<Model> model = Model::Create(threshold_type, leaf_output_type);
69 model->major_ver_ = major_ver;
70 model->minor_ver_ = minor_ver;
71 model->patch_ver_ = patch_ver;
72 model->DeserializeFromFileImpl(src_fp);
model structure for tree ensemble
Exception class used throughout the Treelite codebase.
TypeInfo
Types used by thresholds and leaf outputs.