[nnapi_test] Support int32 input generation (#1498)
author박종현/동작제어Lab(SR)/Staff Engineer/삼성전자 <jh1302.park@samsung.com>
Fri, 1 Jun 2018 06:14:34 +0000 (15:14 +0900)
committer오형석/동작제어Lab(SR)/Staff Engineer/삼성전자 <hseok82.oh@samsung.com>
Fri, 1 Jun 2018 06:14:34 +0000 (15:14 +0900)
With this commit, nnapi_test is able to generate int32 input tensors.

Note that random generation is not supported, yet.

Signed-off-by: Jonghyun Park <jh1302.park@samsung.com>
libs/support/tflite/src/Diff.cpp

index 22c4235..75616ed 100644 (file)
@@ -202,6 +202,27 @@ int RandomTestRunner::run(const nnfw::support::tflite::interp::Builder &builder)
 
   assert(pure->inputs() == nnapi->inputs());
 
+  // Generate singed 32-bit integer (s32) input
+  auto s32gen = [&](int id, ::tflite::Interpreter *pure, ::tflite::Interpreter *nnapi) {
+    assert(pure->tensor(id)->type == kTfLiteInt32);
+    assert(nnapi->tensor(id)->type == kTfLiteInt32);
+
+    auto pure_view = nnfw::support::tflite::TensorView<int32_t>::make(*pure, id);
+    auto nnapi_view = nnfw::support::tflite::TensorView<int32_t>::make(*nnapi, id);
+
+    assert(pure_view.shape() == nnapi_view.shape());
+
+    int32_t value = 0;
+
+    nnfw::util::tensor::iterate(pure_view.shape()) << [&](const nnfw::util::tensor::Index &ind) {
+      // TODO Generate random values
+      ++value;
+
+      pure_view.at(ind) = value;
+      nnapi_view.at(ind) = value;
+    };
+  };
+
   auto floatgen = [&](int id, ::tflite::Interpreter *pure, ::tflite::Interpreter *nnapi) {
     assert(pure->tensor(id)->type == kTfLiteFloat32);
     assert(nnapi->tensor(id)->type == kTfLiteFloat32);
@@ -229,6 +250,11 @@ int RandomTestRunner::run(const nnfw::support::tflite::interp::Builder &builder)
     assert(pure->tensor(id)->type == nnapi->tensor(id)->type);
     switch (pure->tensor(id)->type)
     {
+      case kTfLiteInt32:
+      {
+        s32gen(id, pure.get(), nnapi.get());
+        break;
+      }
       case kTfLiteFloat32:
       {
         floatgen(id, pure.get(), nnapi.get());