[exo-tflite] Export EltwiseSub and EltwiseDiv (#6263)
author박세희/On-Device Lab(SR)/Principal Engineer/삼성전자 <saehie.park@samsung.com>
Tue, 6 Aug 2019 03:53:56 +0000 (12:53 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Tue, 6 Aug 2019 03:53:56 +0000 (12:53 +0900)
This will enable export of EltwiseSub and EltwiseDiv node

Signed-off-by: SaeHie Park <saehie.park@samsung.com>
compiler/exo-tflite/src/OperationExporter.cpp

index 6359d7b..433a2ca 100644 (file)
@@ -54,6 +54,8 @@ public:
   void visit(loco::FeatureBiasAdd *) final;
   void visit(loco::EltwiseAdd *) final;
   void visit(loco::EltwiseMul *) final;
+  void visit(loco::EltwiseSub *) final;
+  void visit(loco::EltwiseDiv *) final;
 
 private:
   FlatBufferBuilder &builder;
@@ -360,6 +362,32 @@ void OperationExporter::visit(loco::EltwiseMul *node)
   gd._operators.push_back(op_offset);
 }
 
+void OperationExporter::visit(loco::EltwiseSub *node)
+{
+  uint32_t op_idx = gd.registerBuiltinOpcode(tflite::BuiltinOperator_SUB);
+  std::vector<int32_t> inputs_vec{get_tensor_index(node->lhs()), get_tensor_index(node->rhs())};
+  std::vector<int32_t> outputs_vec{get_tensor_index(static_cast<loco::Node *>(node))};
+  auto inputs = builder.CreateVector(inputs_vec);
+  auto outputs = builder.CreateVector(outputs_vec);
+  auto options = CreateSubOptions(builder); // dummy option
+  auto op_offset = CreateOperator(builder, op_idx, inputs, outputs,
+                                  tflite::BuiltinOptions_SubOptions, options.Union());
+  gd._operators.push_back(op_offset);
+}
+
+void OperationExporter::visit(loco::EltwiseDiv *node)
+{
+  uint32_t op_idx = gd.registerBuiltinOpcode(tflite::BuiltinOperator_DIV);
+  std::vector<int32_t> inputs_vec{get_tensor_index(node->lhs()), get_tensor_index(node->rhs())};
+  std::vector<int32_t> outputs_vec{get_tensor_index(static_cast<loco::Node *>(node))};
+  auto inputs = builder.CreateVector(inputs_vec);
+  auto outputs = builder.CreateVector(outputs_vec);
+  auto options = CreateDivOptions(builder); // dummy option
+  auto op_offset = CreateOperator(builder, op_idx, inputs, outputs,
+                                  tflite::BuiltinOptions_DivOptions, options.Union());
+  gd._operators.push_back(op_offset);
+}
+
 void exportNode(loco::Node *node, flatbuffers::FlatBufferBuilder &builder,
                 SerializedModelData &data)
 {