Treelite
main_template.h
Go to the documentation of this file.
1 
8 #ifndef TREELITE_COMPILER_NATIVE_MAIN_TEMPLATE_H_
9 #define TREELITE_COMPILER_NATIVE_MAIN_TEMPLATE_H_
10 
11 namespace treelite {
12 namespace compiler {
13 namespace native {
14 
15 const char* main_start_template =
16 R"TREELITETEMPLATE(
17 #include "header.h"
18 
19 {array_is_categorical};
20 
21 {get_num_output_group_function_signature} {{
22  return {num_output_group};
23 }}
24 
25 {get_num_feature_function_signature} {{
26  return {num_feature};
27 }}
28 
29 {get_pred_transform_function_signature} {{
30  return "{pred_transform}";
31 }}
32 
33 {get_sigmoid_alpha_function_signature} {{
34  return {sigmoid_alpha};
35 }}
36 
37 {get_global_bias_function_signature} {{
38  return {global_bias};
39 }}
40 
41 {pred_transform_function}
42 {predict_function_signature} {{
43 )TREELITETEMPLATE";
44 
45 const char* main_end_multiclass_template =
46 R"TREELITETEMPLATE(
47  for (int i = 0; i < {num_output_group}; ++i) {{
48  result[i] = sum[i]{optional_average_field} + (float)({global_bias});
49  }}
50  if (!pred_margin) {{
51  return pred_transform(result);
52  }} else {{
53  return {num_output_group};
54  }}
55 }}
56 )TREELITETEMPLATE"; // only for multiclass classification
57 
58 const char* main_end_template =
59 R"TREELITETEMPLATE(
60  sum = sum{optional_average_field} + (float)({global_bias});
61  if (!pred_margin) {{
62  return pred_transform(sum);
63  }} else {{
64  return sum;
65  }}
66 }}
67 )TREELITETEMPLATE";
68 
69 } // namespace native
70 } // namespace compiler
71 } // namespace treelite
72 #endif // TREELITE_COMPILER_NATIVE_MAIN_TEMPLATE_H_