Home | History | Annotate | Download | only in models
      1 // clang-format off
      2 // Generated file (from: bidirectional_sequence_lstm.mod.py). Do not edit
      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 
     96 inline bool is_ignored(int i) {
     97   static std::set<int> ignore = {};
     98   return ignore.find(i) != ignore.end();
     99 }
    100 
    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 
    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