29 const Network* network =
nullptr;
31 string get_expression_c()
const;
32 string get_expression_c_embedded()
const;
33 string get_expression_python()
const;
34 string get_expression_php()
const;
35 string get_expression_javascript()
const;
36 string get_expression_csharp()
const;
38 static string c_string_literal(string_view);
39 static string c_float_literal(
float);
41 vector<string> get_flat_input_names()
const;
45 vector<string> inputs;
46 vector<string> outputs;
47 vector<string> fixed_inputs;
48 vector<string> fixed_outputs;
50 Index inputs_number() const noexcept {
return Index(inputs.size()); }
51 Index outputs_number() const noexcept {
return Index(outputs.size()); }
54 ExportNames collect_names()
const;
57 void check_parameters_are_finite()
const;
59 void emit_c_prelude(ostringstream&,
const ExportNames&)
const;
60 void emit_c_calculate_outputs(ostringstream&,
const string&,
const vector<string>&,
bool has_softmax,
const ExportNames&)
const;
61 void emit_c_main(ostringstream&,
const ExportNames&)
const;
63 void emit_php_prelude(ostringstream&,
const ExportNames&)
const;
64 void emit_php_inputs_setup(ostringstream&,
const ExportNames&)
const;
65 void emit_php_body(ostringstream&,
const vector<string>&,
bool has_softmax,
const ExportNames&)
const;
66 void emit_php_response(ostringstream&,
const ExportNames&)
const;
68 void emit_python_prelude(ostringstream&,
const ExportNames&)
const;
69 void emit_python_class_header(ostringstream&,
const ExportNames&)
const;
70 void emit_python_calculate_outputs(ostringstream&,
const string&,
const vector<string>&,
bool has_softmax,
const ExportNames&)
const;
71 void emit_python_batch_and_main(ostringstream&,
const ExportNames&)
const;
73 void emit_js_prelude(ostringstream&,
const ExportNames&)
const;
74 void emit_js_inputs_html(ostringstream&,
const ExportNames&)
const;
75 void emit_js_outputs_html(ostringstream&,
bool use_category_select,
const ExportNames&)
const;
76 void emit_js_runtime(ostringstream&,
const string&,
const vector<string>&,
bool has_softmax,
bool use_category_select,
const ExportNames&)
const;
78 void emit_csharp_prelude(ostringstream&,
const ExportNames&)
const;
79 void emit_csharp_calculate_outputs(ostringstream&,
const string&,
const vector<string>&,
bool has_softmax,
const ExportNames&)
const;
80 void emit_csharp_main(ostringstream&,
const ExportNames&)
const;
82 static vector<string> split_expression_lines(
const string&);
83 static void rename_spaced_var_definitions(vector<string>&);
84 static vector<string> prepare_body_lines(
const string&);
85 static vector<string> fix_names(
const vector<string>&,
const string&);
86 static vector<string> fix_output_names(
const string&,
const vector<string>&,
const ProgrammingLanguage&);
87 static void apply_name_mapping(
string&,
const vector<string>&,
const vector<string>&);
88 static string process_body_line(
const string&,
const vector<string>&,
const vector<string>&);
89 static string replace_reserved_keywords(
const string&);
93 const char* body_indent =
"";
94 const char* body_declaration =
"";
95 bool declare_first_assignment_only =
false;
96 const char* softmax_declaration =
"";
97 const char* softmax_counter =
"";
98 const char* softmax_zero =
"";
99 const char* softmax_exp =
"";
100 string softmax_limit;
104 static void emit_body_lines(ostringstream&,
const vector<string>&,
const LanguageSyntax&,
const function<
string(
const string&)>&);
105 static void emit_softmax_block(ostringstream&,
const LanguageSyntax&);
107 struct ActivationBodies
116 static void emit_activations(ostringstream&,
117 const string& expression,
118 string ActivationBodies::* body,
119 initializer_list<string_view> always);
121 static const vector<pair<ActivationFunction, ActivationBodies>>& activation_table();