[tflite_loader] Implemented TransposeConv node conversion (#7268)
authorIvan Vagin/AI Tools Lab /SRR/Engineer/삼성전자 <ivan.vagin@samsung.com>
Mon, 9 Sep 2019 03:04:41 +0000 (06:04 +0300)
committer이춘석/On-Device Lab(SR)/Staff Engineer/삼성전자 <chunseok.lee@samsung.com>
Mon, 9 Sep 2019 03:04:41 +0000 (12:04 +0900)
* [tflite_loader] Implemented TransposeConv node conversion

Implemented transpose conv node conversion

Signed-off-by: Ivan Vagin <ivan.vagin@samsung.com>
* Fixed formatting

Signed-off-by: Ivan Vagin <ivan.vagin@samsung.com>
runtimes/neurun/frontend/tflite/loader.cc
runtimes/neurun/frontend/tflite/loader.h

index cc1d522..844365b 100644 (file)
@@ -212,6 +212,21 @@ void Loader::loadDepthwiseConv2D(const tflite::Operator *op)
   _graph.addOperation(std::move(new_op));
 }
 
+void Loader::loadTransposeConv(const tflite::Operator *op)
+{
+  model::OperandIndexSequence inputs;
+  model::OperandIndexSequence outputs;
+
+  loadOperationIO(op, inputs, outputs);
+
+  model::operation::TransposeConvNode::Param param;
+  const auto *options = op->builtin_options_as_TransposeConvOptions();
+  loadStridesAndPaddings(param, options);
+  std::unique_ptr<model::Operation> new_op(
+      new model::operation::TransposeConvNode(inputs, outputs, param));
+  _graph.addOperation(std::move(new_op));
+}
+
 void Loader::loadAvgPool2D(const tflite::Operator *op)
 {
   model::OperandIndexSequence inputs;
@@ -535,6 +550,9 @@ void Loader::loadOperation(const tflite::Operator *op)
     case BuiltinOperator_DEPTHWISE_CONV_2D:
       loadDepthwiseConv2D(op);
       return;
+    case BuiltinOperator_TRANSPOSE_CONV:
+      loadTransposeConv(op);
+      return;
     case BuiltinOperator_RESHAPE:
       loadReshape(op);
       return;
index 0ccd948..c398cbc 100644 (file)
@@ -76,6 +76,7 @@ private:
   // Operations
   void loadConv2D(const tflite::Operator *op);
   void loadDepthwiseConv2D(const tflite::Operator *op);
+  void loadTransposeConv(const tflite::Operator *op);
   void loadAvgPool2D(const tflite::Operator *op);
   void loadReshape(const tflite::Operator *op);
   void loadSoftmax(const tflite::Operator *op);