Introduce layout parameter to asFeature and asKernel (#5295)
author오형석/On-Device Lab(SR)/Staff Engineer/삼성전자 <hseok82.oh@samsung.com>
Wed, 29 May 2019 01:22:01 +0000 (10:22 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Wed, 29 May 2019 01:22:01 +0000 (10:22 +0900)
Introduce layout parameter but allow NHWC only (because NCHW is not used yet)
Fix axis mapping comment

Signed-off-by: Hyeongseok Oh <hseok82.oh@samsung.com>
runtimes/neurun/core/include/model/Shape.h
runtimes/neurun/core/src/model/Shape.cc

index 5c81981..7a9c2c0 100644 (file)
@@ -24,6 +24,7 @@
 #include "misc/kernel/Shape.h"
 #include "misc/matrix/Shape.h"
 #include "misc/tensor/Shape.h"
+#include "graph/operand/Layout.h"
 
 namespace neurun
 {
@@ -31,6 +32,8 @@ namespace model
 {
 
 using FeatureShape = nnfw::misc::feature::Shape;
+// TODO move graph::operand::Layout definition to neurun::model::Layout
+using Layout = graph::operand::Layout;
 
 struct Shape : public nnfw::misc::tensor::Shape
 {
@@ -42,8 +45,8 @@ public:
 public:
   int32_t asVector(void) const;
   nnfw::misc::matrix::Shape asMatrix(void) const;
-  FeatureShape asFeature(void) const;
-  nnfw::misc::kernel::Shape asKernel(void) const;
+  FeatureShape asFeature(const Layout layout = Layout::NHWC) const;
+  nnfw::misc::kernel::Shape asKernel(const Layout layout = Layout::NHWC) const;
   nnfw::misc::tensor::Shape asTensor(void) const;
 
 public:
index c3ca390..9a39d77 100644 (file)
@@ -17,6 +17,7 @@
 #include <cassert>
 
 #include "model/Shape.h"
+#include "util/Utils.h"
 
 namespace neurun
 {
@@ -45,11 +46,14 @@ nnfw::misc::matrix::Shape Shape::asMatrix(void) const
   return nnfw::misc::matrix::Shape(height, width);
 }
 
-FeatureShape Shape::asFeature(void) const
+FeatureShape Shape::asFeature(const Layout layout) const
 {
   assert(rank() == 4);
+  // Handle NHWC only
+  assert(layout == Layout::NHWC);
+  UNUSED_RELEASE(layout);
 
-  // Feature Map in NNAPI
+  // Feature Map in NHWC layout
   //  - Dimension(0) -> Batch
   //  - Dimension(1) -> Height
   //  - Dimension(2) -> Width
@@ -62,11 +66,14 @@ FeatureShape Shape::asFeature(void) const
   return FeatureShape(batch, depth, height, width);
 }
 
-nnfw::misc::kernel::Shape Shape::asKernel(void) const
+nnfw::misc::kernel::Shape Shape::asKernel(const Layout layout) const
 {
   assert(rank() == 4);
+  // Handle NHWC only
+  assert(layout == Layout::NHWC);
+  UNUSED_RELEASE(layout);
 
-  // Convolution Kernel in NNAPI
+  // Convolution Kernel in NHWC (OHWI) layout
   //  - Dimension(0) -> Count
   //  - Dimension(1) -> Height
   //  - Dimension(2) -> Width