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