Fix tflite Dims argument (#954)
authorEfimov Alexander/AI Tools Lab/./Samsung Electronics <a.efimov@samsung.com>
Mon, 13 Aug 2018 12:18:18 +0000 (15:18 +0300)
committerSergey Vostokov/AI Tools Lab /SRR/Staff Engineer/삼성전자 <s.vostokov@samsung.com>
Mon, 13 Aug 2018 12:18:18 +0000 (15:18 +0300)
Reverse axis order for tflite functions.

Signed-off-by: Efimov Alexander <a.efimov@samsung.com>
contrib/nnc/libs/backend/soft/include/cpp_operations.def

index 6b7077d..0e73a73 100644 (file)
@@ -67,13 +67,14 @@ size_t volume(Dims<rank> d)
 Dims<4> shapeToDims(const Shape &s)
 {
   Dims<4> dims;
-  assert(s.getDims() == 4);
+  int rank = s.getDims();
+  assert(rank == 4);
   int stride = 1;
-  for (int i = 0; i < s.getDims(); ++i)
+  for (int i = 0; i < rank; ++i)
   {
-    dims.sizes[i] = s[i];
+    dims.sizes[i] = s[rank - 1 - i];
     dims.strides[i] = stride;
-    stride *= s[i];
+    stride *= s[rank - 1 - i];
   }
   return dims;
 }
@@ -124,7 +125,8 @@ void concat(Tensor &out, const char *params, Args &...args)
 {
   const float *input[] = {args.getData()...};
   Dims<4> input_d[] = {shapeToDims(args.getShape())...};
-  int axis = deserializeT<char>(params);
+  // 3 - ... because inner functions accepts axis in reverse order
+  int axis = 3 - deserializeT<char>(params);
   Shape out_s = deserializeShape(params);
   int inputs_count = sizeof(input)/sizeof(input[0]);