1 // clang-format off
2 // Generated file (from: bidirectional_sequence_lstm_norm_fw_output.mod.py). Do not edit
CreateModel(Model * model)3 void CreateModel(Model *model) {
4 OperandType type0(Type::TENSOR_FLOAT32, {3, 2, 5});
5 OperandType type1(Type::TENSOR_FLOAT32, {4, 5});
6 OperandType type10(Type::FLOAT32, {});
7 OperandType type11(Type::BOOL, {});
8 OperandType type2(Type::TENSOR_FLOAT32, {4, 3});
9 OperandType type3(Type::TENSOR_FLOAT32, {4});
10 OperandType type4(Type::TENSOR_FLOAT32, {3, 4});
11 OperandType type5(Type::TENSOR_FLOAT32, {3});
12 OperandType type6(Type::TENSOR_FLOAT32, {2, 3});
13 OperandType type7(Type::TENSOR_FLOAT32, {2, 4});
14 OperandType type8(Type::TENSOR_FLOAT32, {3, 2, 3});
15 OperandType type9(Type::INT32, {});
16 // Phase 1, operands
17 auto input = model->addOperand(&type0);
18 auto fw_input_to_input_weights = model->addOperand(&type1);
19 auto fw_input_to_forget_weights = model->addOperand(&type1);
20 auto fw_input_to_cell_weights = model->addOperand(&type1);
21 auto fw_input_to_output_weights = model->addOperand(&type1);
22 auto fw_recurrent_to_input_weights = model->addOperand(&type2);
23 auto fw_recurrent_to_forget_weights = model->addOperand(&type2);
24 auto fw_recurrent_to_cell_weights = model->addOperand(&type2);
25 auto fw_recurrent_to_output_weights = model->addOperand(&type2);
26 auto fw_cell_to_input_weights = model->addOperand(&type3);
27 auto fw_cell_to_forget_weights = model->addOperand(&type3);
28 auto fw_cell_to_output_weights = model->addOperand(&type3);
29 auto fw_input_gate_bias = model->addOperand(&type3);
30 auto fw_forget_gate_bias = model->addOperand(&type3);
31 auto fw_cell_bias = model->addOperand(&type3);
32 auto fw_output_gate_bias = model->addOperand(&type3);
33 auto fw_projection_weights = model->addOperand(&type4);
34 auto fw_projection_bias = model->addOperand(&type5);
35 auto bw_input_to_input_weights = model->addOperand(&type1);
36 auto bw_input_to_forget_weights = model->addOperand(&type1);
37 auto bw_input_to_cell_weights = model->addOperand(&type1);
38 auto bw_input_to_output_weights = model->addOperand(&type1);
39 auto bw_recurrent_to_input_weights = model->addOperand(&type2);
40 auto bw_recurrent_to_forget_weights = model->addOperand(&type2);
41 auto bw_recurrent_to_cell_weights = model->addOperand(&type2);
42 auto bw_recurrent_to_output_weights = model->addOperand(&type2);
43 auto bw_cell_to_input_weights = model->addOperand(&type3);
44 auto bw_cell_to_forget_weights = model->addOperand(&type3);
45 auto bw_cell_to_output_weights = model->addOperand(&type3);
46 auto bw_input_gate_bias = model->addOperand(&type3);
47 auto bw_forget_gate_bias = model->addOperand(&type3);
48 auto bw_cell_bias = model->addOperand(&type3);
49 auto bw_output_gate_bias = model->addOperand(&type3);
50 auto bw_projection_weights = model->addOperand(&type4);
51 auto bw_projection_bias = model->addOperand(&type5);
52 auto fw_activatiom_state = model->addOperand(&type6);
53 auto fw_cell_state = model->addOperand(&type7);
54 auto bw_activatiom_state = model->addOperand(&type6);
55 auto bw_cell_state = model->addOperand(&type7);
56 auto input1 = model->addOperand(&type0);
57 auto fw_aux_input_to_input_weights = model->addOperand(&type1);
58 auto fw_input_to_forget_weights1 = model->addOperand(&type1);
59 auto fw_aux_input_to_cell_weights = model->addOperand(&type1);
60 auto fw_aux_input_to_output_weights = model->addOperand(&type1);
61 auto bw_aux_input_to_input_weights = model->addOperand(&type1);
62 auto bw_input_to_forget_weights1 = model->addOperand(&type1);
63 auto bw_aux_input_to_cell_weights = model->addOperand(&type1);
64 auto bw_aux_input_to_output_weights = model->addOperand(&type1);
65 auto activation = model->addOperand(&type9);
66 auto cell_clip = model->addOperand(&type10);
67 auto proj_clip = model->addOperand(&type10);
68 auto merge_outputs = model->addOperand(&type11);
69 auto time_major = model->addOperand(&type11);
70 auto input_layer_norm_weights = model->addOperand(&type3);
71 auto forget_layer_norm_weights = model->addOperand(&type3);
72 auto cell_layer_norm_weights = model->addOperand(&type3);
73 auto output_layer_norm_weights = model->addOperand(&type3);
74 auto input_layer_norm_weights1 = model->addOperand(&type3);
75 auto forget_layer_norm_weights1 = model->addOperand(&type3);
76 auto cell_layer_norm_weights1 = model->addOperand(&type3);
77 auto output_layer_norm_weights1 = model->addOperand(&type3);
78 auto fw_output = model->addOperand(&type8);
79 auto bw_output = model->addOperand(&type8);
80 // Phase 2, operations
81 static int32_t activation_init[] = {4};
82 model->setOperandValue(activation, activation_init, sizeof(int32_t) * 1);
83 static float cell_clip_init[] = {0.0f};
84 model->setOperandValue(cell_clip, cell_clip_init, sizeof(float) * 1);
85 static float proj_clip_init[] = {0.0f};
86 model->setOperandValue(proj_clip, proj_clip_init, sizeof(float) * 1);
87 static bool8 merge_outputs_init[] = {false};
88 model->setOperandValue(merge_outputs, merge_outputs_init, sizeof(bool8) * 1);
89 static bool8 time_major_init[] = {true};
90 model->setOperandValue(time_major, time_major_init, sizeof(bool8) * 1);
91 model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_LSTM, {input, fw_input_to_input_weights, fw_input_to_forget_weights, fw_input_to_cell_weights, fw_input_to_output_weights, fw_recurrent_to_input_weights, fw_recurrent_to_forget_weights, fw_recurrent_to_cell_weights, fw_recurrent_to_output_weights, fw_cell_to_input_weights, fw_cell_to_forget_weights, fw_cell_to_output_weights, fw_input_gate_bias, fw_forget_gate_bias, fw_cell_bias, fw_output_gate_bias, fw_projection_weights, fw_projection_bias, bw_input_to_input_weights, bw_input_to_forget_weights, bw_input_to_cell_weights, bw_input_to_output_weights, bw_recurrent_to_input_weights, bw_recurrent_to_forget_weights, bw_recurrent_to_cell_weights, bw_recurrent_to_output_weights, bw_cell_to_input_weights, bw_cell_to_forget_weights, bw_cell_to_output_weights, bw_input_gate_bias, bw_forget_gate_bias, bw_cell_bias, bw_output_gate_bias, bw_projection_weights, bw_projection_bias, fw_activatiom_state, fw_cell_state, bw_activatiom_state, bw_cell_state, input1, fw_aux_input_to_input_weights, fw_input_to_forget_weights1, fw_aux_input_to_cell_weights, fw_aux_input_to_output_weights, bw_aux_input_to_input_weights, bw_input_to_forget_weights1, bw_aux_input_to_cell_weights, bw_aux_input_to_output_weights, activation, cell_clip, proj_clip, merge_outputs, time_major, input_layer_norm_weights, forget_layer_norm_weights, cell_layer_norm_weights, output_layer_norm_weights, input_layer_norm_weights1, forget_layer_norm_weights1, cell_layer_norm_weights1, output_layer_norm_weights1}, {fw_output, bw_output});
92 // Phase 3, inputs and outputs
93 model->identifyInputsAndOutputs(
94 {input, fw_input_to_input_weights, fw_input_to_forget_weights, fw_input_to_cell_weights, fw_input_to_output_weights, fw_recurrent_to_input_weights, fw_recurrent_to_forget_weights, fw_recurrent_to_cell_weights, fw_recurrent_to_output_weights, fw_cell_to_input_weights, fw_cell_to_forget_weights, fw_cell_to_output_weights, fw_input_gate_bias, fw_forget_gate_bias, fw_cell_bias, fw_output_gate_bias, fw_projection_weights, fw_projection_bias, bw_input_to_input_weights, bw_input_to_forget_weights, bw_input_to_cell_weights, bw_input_to_output_weights, bw_recurrent_to_input_weights, bw_recurrent_to_forget_weights, bw_recurrent_to_cell_weights, bw_recurrent_to_output_weights, bw_cell_to_input_weights, bw_cell_to_forget_weights, bw_cell_to_output_weights, bw_input_gate_bias, bw_forget_gate_bias, bw_cell_bias, bw_output_gate_bias, bw_projection_weights, bw_projection_bias, fw_activatiom_state, fw_cell_state, bw_activatiom_state, bw_cell_state, input1, fw_aux_input_to_input_weights, fw_input_to_forget_weights1, fw_aux_input_to_cell_weights, fw_aux_input_to_output_weights, bw_aux_input_to_input_weights, bw_input_to_forget_weights1, bw_aux_input_to_cell_weights, bw_aux_input_to_output_weights, input_layer_norm_weights, forget_layer_norm_weights, cell_layer_norm_weights, output_layer_norm_weights, input_layer_norm_weights1, forget_layer_norm_weights1, cell_layer_norm_weights1, output_layer_norm_weights1},
95 {fw_output, bw_output});
96 assert(model->isValid());
97 }
98
is_ignored(int i)99 inline bool is_ignored(int i) {
100 static std::set<int> ignore = {1};
101 return ignore.find(i) != ignore.end();
102 }
103
CreateModel_dynamic_output_shape(Model * model)104 void CreateModel_dynamic_output_shape(Model *model) {
105 OperandType type0(Type::TENSOR_FLOAT32, {3, 2, 5});
106 OperandType type1(Type::TENSOR_FLOAT32, {4, 5});
107 OperandType type10(Type::FLOAT32, {});
108 OperandType type11(Type::BOOL, {});
109 OperandType type12(Type::TENSOR_FLOAT32, {0, 0, 0});
110 OperandType type2(Type::TENSOR_FLOAT32, {4, 3});
111 OperandType type3(Type::TENSOR_FLOAT32, {4});
112 OperandType type4(Type::TENSOR_FLOAT32, {3, 4});
113 OperandType type5(Type::TENSOR_FLOAT32, {3});
114 OperandType type6(Type::TENSOR_FLOAT32, {2, 3});
115 OperandType type7(Type::TENSOR_FLOAT32, {2, 4});
116 OperandType type9(Type::INT32, {});
117 // Phase 1, operands
118 auto input = model->addOperand(&type0);
119 auto fw_input_to_input_weights = model->addOperand(&type1);
120 auto fw_input_to_forget_weights = model->addOperand(&type1);
121 auto fw_input_to_cell_weights = model->addOperand(&type1);
122 auto fw_input_to_output_weights = model->addOperand(&type1);
123 auto fw_recurrent_to_input_weights = model->addOperand(&type2);
124 auto fw_recurrent_to_forget_weights = model->addOperand(&type2);
125 auto fw_recurrent_to_cell_weights = model->addOperand(&type2);
126 auto fw_recurrent_to_output_weights = model->addOperand(&type2);
127 auto fw_cell_to_input_weights = model->addOperand(&type3);
128 auto fw_cell_to_forget_weights = model->addOperand(&type3);
129 auto fw_cell_to_output_weights = model->addOperand(&type3);
130 auto fw_input_gate_bias = model->addOperand(&type3);
131 auto fw_forget_gate_bias = model->addOperand(&type3);
132 auto fw_cell_bias = model->addOperand(&type3);
133 auto fw_output_gate_bias = model->addOperand(&type3);
134 auto fw_projection_weights = model->addOperand(&type4);
135 auto fw_projection_bias = model->addOperand(&type5);
136 auto bw_input_to_input_weights = model->addOperand(&type1);
137 auto bw_input_to_forget_weights = model->addOperand(&type1);
138 auto bw_input_to_cell_weights = model->addOperand(&type1);
139 auto bw_input_to_output_weights = model->addOperand(&type1);
140 auto bw_recurrent_to_input_weights = model->addOperand(&type2);
141 auto bw_recurrent_to_forget_weights = model->addOperand(&type2);
142 auto bw_recurrent_to_cell_weights = model->addOperand(&type2);
143 auto bw_recurrent_to_output_weights = model->addOperand(&type2);
144 auto bw_cell_to_input_weights = model->addOperand(&type3);
145 auto bw_cell_to_forget_weights = model->addOperand(&type3);
146 auto bw_cell_to_output_weights = model->addOperand(&type3);
147 auto bw_input_gate_bias = model->addOperand(&type3);
148 auto bw_forget_gate_bias = model->addOperand(&type3);
149 auto bw_cell_bias = model->addOperand(&type3);
150 auto bw_output_gate_bias = model->addOperand(&type3);
151 auto bw_projection_weights = model->addOperand(&type4);
152 auto bw_projection_bias = model->addOperand(&type5);
153 auto fw_activatiom_state = model->addOperand(&type6);
154 auto fw_cell_state = model->addOperand(&type7);
155 auto bw_activatiom_state = model->addOperand(&type6);
156 auto bw_cell_state = model->addOperand(&type7);
157 auto input1 = model->addOperand(&type0);
158 auto fw_aux_input_to_input_weights = model->addOperand(&type1);
159 auto fw_input_to_forget_weights1 = model->addOperand(&type1);
160 auto fw_aux_input_to_cell_weights = model->addOperand(&type1);
161 auto fw_aux_input_to_output_weights = model->addOperand(&type1);
162 auto bw_aux_input_to_input_weights = model->addOperand(&type1);
163 auto bw_input_to_forget_weights1 = model->addOperand(&type1);
164 auto bw_aux_input_to_cell_weights = model->addOperand(&type1);
165 auto bw_aux_input_to_output_weights = model->addOperand(&type1);
166 auto activation = model->addOperand(&type9);
167 auto cell_clip = model->addOperand(&type10);
168 auto proj_clip = model->addOperand(&type10);
169 auto merge_outputs = model->addOperand(&type11);
170 auto time_major = model->addOperand(&type11);
171 auto input_layer_norm_weights = model->addOperand(&type3);
172 auto forget_layer_norm_weights = model->addOperand(&type3);
173 auto cell_layer_norm_weights = model->addOperand(&type3);
174 auto output_layer_norm_weights = model->addOperand(&type3);
175 auto input_layer_norm_weights1 = model->addOperand(&type3);
176 auto forget_layer_norm_weights1 = model->addOperand(&type3);
177 auto cell_layer_norm_weights1 = model->addOperand(&type3);
178 auto output_layer_norm_weights1 = model->addOperand(&type3);
179 auto fw_output = model->addOperand(&type12);
180 auto bw_output = model->addOperand(&type12);
181 // Phase 2, operations
182 static int32_t activation_init[] = {4};
183 model->setOperandValue(activation, activation_init, sizeof(int32_t) * 1);
184 static float cell_clip_init[] = {0.0f};
185 model->setOperandValue(cell_clip, cell_clip_init, sizeof(float) * 1);
186 static float proj_clip_init[] = {0.0f};
187 model->setOperandValue(proj_clip, proj_clip_init, sizeof(float) * 1);
188 static bool8 merge_outputs_init[] = {false};
189 model->setOperandValue(merge_outputs, merge_outputs_init, sizeof(bool8) * 1);
190 static bool8 time_major_init[] = {true};
191 model->setOperandValue(time_major, time_major_init, sizeof(bool8) * 1);
192 model->addOperation(ANEURALNETWORKS_BIDIRECTIONAL_SEQUENCE_LSTM, {input, fw_input_to_input_weights, fw_input_to_forget_weights, fw_input_to_cell_weights, fw_input_to_output_weights, fw_recurrent_to_input_weights, fw_recurrent_to_forget_weights, fw_recurrent_to_cell_weights, fw_recurrent_to_output_weights, fw_cell_to_input_weights, fw_cell_to_forget_weights, fw_cell_to_output_weights, fw_input_gate_bias, fw_forget_gate_bias, fw_cell_bias, fw_output_gate_bias, fw_projection_weights, fw_projection_bias, bw_input_to_input_weights, bw_input_to_forget_weights, bw_input_to_cell_weights, bw_input_to_output_weights, bw_recurrent_to_input_weights, bw_recurrent_to_forget_weights, bw_recurrent_to_cell_weights, bw_recurrent_to_output_weights, bw_cell_to_input_weights, bw_cell_to_forget_weights, bw_cell_to_output_weights, bw_input_gate_bias, bw_forget_gate_bias, bw_cell_bias, bw_output_gate_bias, bw_projection_weights, bw_projection_bias, fw_activatiom_state, fw_cell_state, bw_activatiom_state, bw_cell_state, input1, fw_aux_input_to_input_weights, fw_input_to_forget_weights1, fw_aux_input_to_cell_weights, fw_aux_input_to_output_weights, bw_aux_input_to_input_weights, bw_input_to_forget_weights1, bw_aux_input_to_cell_weights, bw_aux_input_to_output_weights, activation, cell_clip, proj_clip, merge_outputs, time_major, input_layer_norm_weights, forget_layer_norm_weights, cell_layer_norm_weights, output_layer_norm_weights, input_layer_norm_weights1, forget_layer_norm_weights1, cell_layer_norm_weights1, output_layer_norm_weights1}, {fw_output, bw_output});
193 // Phase 3, inputs and outputs
194 model->identifyInputsAndOutputs(
195 {input, fw_input_to_input_weights, fw_input_to_forget_weights, fw_input_to_cell_weights, fw_input_to_output_weights, fw_recurrent_to_input_weights, fw_recurrent_to_forget_weights, fw_recurrent_to_cell_weights, fw_recurrent_to_output_weights, fw_cell_to_input_weights, fw_cell_to_forget_weights, fw_cell_to_output_weights, fw_input_gate_bias, fw_forget_gate_bias, fw_cell_bias, fw_output_gate_bias, fw_projection_weights, fw_projection_bias, bw_input_to_input_weights, bw_input_to_forget_weights, bw_input_to_cell_weights, bw_input_to_output_weights, bw_recurrent_to_input_weights, bw_recurrent_to_forget_weights, bw_recurrent_to_cell_weights, bw_recurrent_to_output_weights, bw_cell_to_input_weights, bw_cell_to_forget_weights, bw_cell_to_output_weights, bw_input_gate_bias, bw_forget_gate_bias, bw_cell_bias, bw_output_gate_bias, bw_projection_weights, bw_projection_bias, fw_activatiom_state, fw_cell_state, bw_activatiom_state, bw_cell_state, input1, fw_aux_input_to_input_weights, fw_input_to_forget_weights1, fw_aux_input_to_cell_weights, fw_aux_input_to_output_weights, bw_aux_input_to_input_weights, bw_input_to_forget_weights1, bw_aux_input_to_cell_weights, bw_aux_input_to_output_weights, input_layer_norm_weights, forget_layer_norm_weights, cell_layer_norm_weights, output_layer_norm_weights, input_layer_norm_weights1, forget_layer_norm_weights1, cell_layer_norm_weights1, output_layer_norm_weights1},
196 {fw_output, bw_output});
197 assert(model->isValid());
198 }
199
is_ignored_dynamic_output_shape(int i)200 inline bool is_ignored_dynamic_output_shape(int i) {
201 static std::set<int> ignore = {1};
202 return ignore.find(i) != ignore.end();
203 }
204
205