// Generated file (from: lstm.mod.py). Do not edit void CreateModel(Model *model) { OperandType type5(Type::TENSOR_FLOAT32, {0,0}); OperandType type3(Type::TENSOR_FLOAT32, {0}); OperandType type9(Type::TENSOR_FLOAT32, {1, 16}); OperandType type0(Type::TENSOR_FLOAT32, {1, 2}); OperandType type6(Type::TENSOR_FLOAT32, {1, 4}); OperandType type8(Type::TENSOR_FLOAT32, {1}); OperandType type1(Type::TENSOR_FLOAT32, {4, 2}); OperandType type2(Type::TENSOR_FLOAT32, {4, 4}); OperandType type4(Type::TENSOR_FLOAT32, {4}); OperandType type7(Type::TENSOR_INT32, {1}); // Phase 1, operands auto input = model->addOperand(&type0); auto input_to_input_weights = model->addOperand(&type1); auto input_to_forget_weights = model->addOperand(&type1); auto input_to_cell_weights = model->addOperand(&type1); auto input_to_output_weights = model->addOperand(&type1); auto recurrent_to_intput_weights = model->addOperand(&type2); auto recurrent_to_forget_weights = model->addOperand(&type2); auto recurrent_to_cell_weights = model->addOperand(&type2); auto recurrent_to_output_weights = model->addOperand(&type2); auto cell_to_input_weights = model->addOperand(&type3); auto cell_to_forget_weights = model->addOperand(&type3); auto cell_to_output_weights = model->addOperand(&type3); auto input_gate_bias = model->addOperand(&type4); auto forget_gate_bias = model->addOperand(&type4); auto cell_gate_bias = model->addOperand(&type4); auto output_gate_bias = model->addOperand(&type4); auto projection_weights = model->addOperand(&type5); auto projection_bias = model->addOperand(&type3); auto output_state_in = model->addOperand(&type6); auto cell_state_in = model->addOperand(&type6); auto activation_param = model->addOperand(&type7); auto cell_clip_param = model->addOperand(&type8); auto proj_clip_param = model->addOperand(&type8); auto scratch_buffer = model->addOperand(&type9); auto output_state_out = model->addOperand(&type6); auto cell_state_out = model->addOperand(&type6); auto output = model->addOperand(&type6); // Phase 2, operations model->addOperation(ANEURALNETWORKS_LSTM, {input, input_to_input_weights, input_to_forget_weights, input_to_cell_weights, input_to_output_weights, recurrent_to_intput_weights, recurrent_to_forget_weights, recurrent_to_cell_weights, recurrent_to_output_weights, cell_to_input_weights, cell_to_forget_weights, cell_to_output_weights, input_gate_bias, forget_gate_bias, cell_gate_bias, output_gate_bias, projection_weights, projection_bias, output_state_in, cell_state_in, activation_param, cell_clip_param, proj_clip_param}, {scratch_buffer, output_state_out, cell_state_out, output}); // Phase 3, inputs and outputs model->identifyInputsAndOutputs( {input, input_to_input_weights, input_to_forget_weights, input_to_cell_weights, input_to_output_weights, recurrent_to_intput_weights, recurrent_to_forget_weights, recurrent_to_cell_weights, recurrent_to_output_weights, cell_to_input_weights, cell_to_forget_weights, cell_to_output_weights, input_gate_bias, forget_gate_bias, cell_gate_bias, output_gate_bias, projection_weights, projection_bias, output_state_in, cell_state_in, activation_param, cell_clip_param, proj_clip_param}, {scratch_buffer, output_state_out, cell_state_out, output}); assert(model->isValid()); } bool is_ignored(int i) { static std::set ignore = {1, 2, 0}; return ignore.find(i) != ignore.end(); } // Generated file (from: lstm.mod.py). Do not edit // Begin of an example { //Input(s) { // See tools/test_generator/include/TestHarness.h:MixedTyped // int -> FLOAT32 map {{0, {2.0f, 3.0f}}, {1, {-0.45018822f, -0.02338299f, -0.0870589f, -0.34550029f, 0.04266912f, -0.15680569f, -0.34856534f, 0.43890524f}}, {2, {0.09701663f, 0.20334584f, -0.50592935f, -0.31343272f, -0.40032279f, 0.44781327f, 0.01387155f, -0.35593212f}}, {3, {-0.50013041f, 0.1370284f, 0.11810488f, 0.2013163f, -0.20583314f, 0.44344562f, 0.22077113f, -0.29909778f}}, {4, {-0.25065863f, -0.28290087f, 0.04613829f, 0.40525138f, 0.44272184f, 0.03897077f, -0.1556896f, 0.19487578f}}, {5, {-0.0063535f, -0.2042388f, 0.31454784f, -0.35746509f, 0.28902304f, 0.08183324f, -0.16555229f, 0.02286911f, -0.13566875f, 0.03034258f, 0.48091322f, -0.12528998f, 0.24077177f, -0.51332325f, -0.33502164f, 0.10629296f}}, {6, {-0.48684245f, -0.06655136f, 0.42224967f, 0.2112639f, 0.27654213f, 0.20864892f, -0.07646349f, 0.45877004f, 0.00141793f, -0.14609534f, 0.36447752f, 0.09196436f, 0.28053468f, 0.01560611f, -0.20127171f, -0.01140004f}}, {7, {-0.3407414f, 0.24443203f, -0.2078532f, 0.26320225f, 0.05695659f, -0.00123841f, -0.4744786f, -0.35869038f, -0.06418842f, -0.13502428f, -0.501764f, 0.22830659f, -0.46367589f, 0.26016325f, -0.03894562f, -0.16368064f}}, {8, {0.43385774f, -0.17194885f, 0.2718237f, 0.09215671f, 0.24107647f, -0.39835793f, 0.18212086f, 0.01301402f, 0.48572797f, -0.50656658f, 0.20047462f, -0.20607421f, -0.51818722f, -0.15390486f, 0.0468148f, 0.39922136f}}, {9, {}}, {10, {}}, {11, {}}, {12, {0.0f, 0.0f, 0.0f, 0.0f}}, {13, {1.0f, 1.0f, 1.0f, 1.0f}}, {14, {0.0f, 0.0f, 0.0f, 0.0f}}, {15, {0.0f, 0.0f, 0.0f, 0.0f}}, {16, {}}, {17, {}}, {18, {0, 0, 0, 0}}, {19, {0, 0, 0, 0}}, {21, {0.0f}}, {22, {0.0f}}}, // int -> INT32 map {{20, {4}}}, // int -> QUANT8_ASYMM map {} }, //Output(s) { // See tools/test_generator/include/TestHarness.h:MixedTyped // int -> FLOAT32 map {{1, {0, 0, 0, 0}}, {2, {0, 0, 0, 0}}, {3, {-0.02973187f, 0.1229473f, 0.20885126f, -0.15358765f}}, {0, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}}, // int -> INT32 map {}, // int -> QUANT8_ASYMM map {} } }, // End of an example