[exo-tflite] Introducing TFLTranspose (#7783)
author윤현식/On-Device Lab(SR)/Principal Engineer/삼성전자 <hyunsik.yoon@samsung.com>
Thu, 26 Sep 2019 23:39:41 +0000 (08:39 +0900)
committer박세희/On-Device Lab(SR)/Principal Engineer/삼성전자 <saehie.park@samsung.com>
Thu, 26 Sep 2019 23:39:41 +0000 (08:39 +0900)
TFLTranspose is added to represent Tensorflow Lite Transpose operation.

Signed-off-by: Hyun Sik Yoon <hyunsik.yoon@samsung.com>
compiler/exo-tflite/src/Dialect/IR/TFLNodes.h
compiler/exo-tflite/src/Dialect/IR/TFLNodes.lst
compiler/exo-tflite/src/Dialect/IR/TFLNodes.test.cpp
compiler/exo-tflite/src/TFLFormattedGraph.cpp

index b47d427..ffd70f9 100644 (file)
@@ -288,7 +288,24 @@ public:
 
 // TODO TFLTanh
 
-// TODO TFLTranspose
+/**
+ * @brief TRANSPOSE in TensorFlow Lite
+ */
+class TFLTranspose final : public FixedArityNode<2, TFLNodeImpl<TFLOpcode::TRANSPOSE>>
+{
+public:
+  TFLTranspose() = default;
+
+public:
+  /// @brief Get the input node to transpose
+  loco::Node *a(void) const { return at(0)->node(); }
+
+  /// @brief Set the input node to transpose
+  void a(loco::Node *node) { at(0)->node(node); }
+
+  loco::Node *perm(void) const { return at(1)->node(); }
+  void perm(loco::Node *node) { at(1)->node(node); }
+};
 
 // TODO define more children of TFLNode
 
index 98f776b..324422d 100644 (file)
@@ -21,4 +21,4 @@ TFL_NODE(RELU, locoex::TFLRelu)
 // TODO TFLSqrt
 TFL_NODE(SUB, locoex::TFLSub)
 // TODO TFLTanh
-// TODO TFLTranspose
+TFL_NODE(TRANSPOSE, locoex::TFLTranspose)
index b52b452..f04505b 100644 (file)
@@ -95,4 +95,13 @@ TEST(TFLSubTest, constructor)
 
 // TODO TFLTanh
 
-// TODO TFLTranspose
+TEST(TFLTransposeTest, constructor)
+{
+  locoex::TFLTranspose tr_node;
+
+  ASSERT_EQ(tr_node.dialect(), locoex::TFLDialect::get());
+  ASSERT_EQ(tr_node.opcode(), locoex::TFLOpcode::TRANSPOSE);
+
+  ASSERT_EQ(tr_node.a(), nullptr);
+  ASSERT_EQ(tr_node.perm(), nullptr);
+}
index d01fe7b..35ab555 100644 (file)
@@ -185,7 +185,13 @@ bool TFLNodeSummaryBuilder::summary(const locoex::TFLSub *node, locop::NodeSumma
 
 // TODO TFLTanh
 
-// TODO TFLTranspose
+bool TFLNodeSummaryBuilder::summary(const locoex::TFLTranspose *node, locop::NodeSummary &s) const
+{
+  s.args().append("a", tbl()->lookup(node->a()));
+  s.args().append("perm", tbl()->lookup(node->perm()));
+  s.state(locop::NodeSummary::State::Complete);
+  return true;
+}
 
 } // namespace