Update NeuralNetworksEx.h (#2134)
author오형석/동작제어Lab(SR)/Staff Engineer/삼성전자 <hseok82.oh@samsung.com>
Wed, 1 Aug 2018 07:39:15 +0000 (16:39 +0900)
committer이춘석/동작제어Lab(SR)/Staff Engineer/삼성전자 <chunseok.lee@samsung.com>
Wed, 1 Aug 2018 07:39:15 +0000 (16:39 +0900)
- Remove redundant operator
- Remove unittest
- Remove implementation in runtime
- Add SPLIT operator

Signed-off-by: Hyeongseok Oh <hseok82.oh@samsung.com>
15 files changed:
include/NeuralNetworksEx.h
libs/support/tflite/src/nnapi_delegate.cpp
libs/support/tflite/src/nnapi_delegate_ex_AddOpsAndParams_lambda.inc
runtimes/pure_arm_compute/src/model.cc
runtimes/tests/neural_networks_test/generated/all_generated_tests.cpp
runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_1.mod.py [deleted file]
runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_10.mod.py [deleted file]
runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_2.mod.py [deleted file]
runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_3.mod.py [deleted file]
runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_4.mod.py [deleted file]
runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_5.mod.py [deleted file]
runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_6.mod.py [deleted file]
runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_7.mod.py [deleted file]
runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_8.mod.py [deleted file]
runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_9.mod.py [deleted file]

index e800e26..c2c7282 100644 (file)
@@ -28,9 +28,7 @@ typedef enum {
     ANEURALNETWORKS_GATHER_EX = 50001,
     ANEURALNETWORKS_TOPK_V2_EX = 50002,
     ANEURALNETWORKS_TENSORFLOW_MAX_EX = 50003,
-    ANEURALNETWORKS_DIV_EX = 50004,
-    ANEURALNETWORKS_STRIDED_SLICE_EX = 50005,
-    ANEURALNETWORKS_SUB_EX = 50006,
+    ANEURALNETWORKS_SPLIT_EX = 50004,
 } OperationCodeEx;  // extends OperationCode
 
 typedef OperationCodeEx ANeuralNetworksOperationTypeEx;
index 45b70de..ef28acd 100644 (file)
@@ -481,15 +481,9 @@ void AddOpsAndParams(tflite::Interpreter* interpreter,
         add_add_params();
         break;
       case tflite::BuiltinOperator_STRIDED_SLICE:
-        add_strided_slice_ex_params(node.builtin_data);
-        // FIXME: This call is ugly. please fix this
-        // Use ANN_addOperationEx for STRIDED_SLICE
-        CHECK_NN(ANeuralNetworksModel_addOperationEx(
-            nn_model, ANEURALNETWORKS_STRIDED_SLICE_EX,
-            static_cast<uint32_t>(augmented_inputs.size()),
-            augmented_inputs.data(), static_cast<uint32_t>(node.outputs->size),
-            reinterpret_cast<uint32_t*>(node.outputs->data)));
-        continue;
+        add_strided_slice_params(node.builtin_data);
+        nn_op_type = ANEURALNETWORKS_STRIDED_SLICE;
+        break;
       case tflite::BuiltinOperator_CAST:
         CHECK_NN(ANeuralNetworksModel_addOperationEx(
             nn_model, ANEURALNETWORKS_CAST_EX,
index bbbb11e..ea485fe 100644 (file)
@@ -17,7 +17,7 @@
       add_scalar_int32(width);
     };
 
-    auto add_strided_slice_ex_params = [&add_scalar_int32](void* data) {
+    auto add_strided_slice_params = [&add_scalar_int32](void* data) {
       auto builtin = reinterpret_cast<TfLiteStridedSliceParams*>(data);
       add_scalar_int32(builtin->begin_mask);
       add_scalar_int32(builtin->end_mask);
index dc478a4..a161443 100644 (file)
@@ -442,18 +442,6 @@ int ANeuralNetworksModel_addOperationEx(ANeuralNetworksModel *model,
 
       break;
     }
-    case ANEURALNETWORKS_STRIDED_SLICE_EX:
-    {
-      using internal::tflite::op::StridedSlice::Param;
-      using internal::tflite::op::StridedSlice::Node;
-
-      // Add 'operations'
-      auto &operations = model->deref().operations();
-
-      operations.emplace_back<Node>(Param{inputCount, inputs, outputCount, outputs});
-
-      break;
-    }
     case ANEURALNETWORKS_GATHER_EX:
     {
       using internal::tflite::op::Gather::Param;
@@ -466,36 +454,6 @@ int ANeuralNetworksModel_addOperationEx(ANeuralNetworksModel *model,
 
       break;
     }
-    case ANEURALNETWORKS_SUB_EX:
-    {
-      assert(inputCount == 3);
-      assert(outputCount == 1);
-
-      using internal::tflite::op::Sub::Param;
-      using internal::tflite::op::Sub::Node;
-
-      // Add 'operations'
-      auto &operations = model->deref().operations();
-
-      operations.emplace_back<Node>(Param{inputCount, inputs, outputCount, outputs});
-
-      break;
-    }
-    case ANEURALNETWORKS_DIV_EX:
-    {
-      assert(inputCount == 3);
-      assert(outputCount == 1);
-
-      using internal::tflite::op::Div::Param;
-      using internal::tflite::op::Div::Node;
-
-      // Add 'operations'
-      auto &operations = model->deref().operations();
-
-      operations.emplace_back<Node>(Param{inputCount, inputs, outputCount, outputs});
-
-      break;
-    }
     default:
       throw std::runtime_error{"Not supported operation"};
   }
index 85a00f5..306ada7 100644 (file)
@@ -2927,146 +2927,6 @@ TEST_F(GeneratedTests, gather_2D_uint8) {
             gather_2D_uint8::examples);
 }
 
-namespace strided_slice_ex_float_10 {
-std::vector<MixedTypedExample> examples = {
-// Generated strided_slice_ex_float_10 test
-#include "generated/examples/strided_slice_ex_float_10.example.cpp"
-};
-// Generated model constructor
-#include "generated/models/strided_slice_ex_float_10.model.cpp"
-} // namespace strided_slice_ex_float_10
-TEST_F(GeneratedTests, strided_slice_ex_float_10) {
-    execute(strided_slice_ex_float_10::CreateModel,
-            strided_slice_ex_float_10::is_ignored,
-            strided_slice_ex_float_10::examples);
-}
-
-namespace strided_slice_ex_float_1 {
-std::vector<MixedTypedExample> examples = {
-// Generated strided_slice_ex_float_1 test
-#include "generated/examples/strided_slice_ex_float_1.example.cpp"
-};
-// Generated model constructor
-#include "generated/models/strided_slice_ex_float_1.model.cpp"
-} // namespace strided_slice_ex_float_1
-TEST_F(GeneratedTests, strided_slice_ex_float_1) {
-    execute(strided_slice_ex_float_1::CreateModel,
-            strided_slice_ex_float_1::is_ignored,
-            strided_slice_ex_float_1::examples);
-}
-
-namespace strided_slice_ex_float_2 {
-std::vector<MixedTypedExample> examples = {
-// Generated strided_slice_ex_float_2 test
-#include "generated/examples/strided_slice_ex_float_2.example.cpp"
-};
-// Generated model constructor
-#include "generated/models/strided_slice_ex_float_2.model.cpp"
-} // namespace strided_slice_ex_float_2
-TEST_F(GeneratedTests, strided_slice_ex_float_2) {
-    execute(strided_slice_ex_float_2::CreateModel,
-            strided_slice_ex_float_2::is_ignored,
-            strided_slice_ex_float_2::examples);
-}
-
-namespace strided_slice_ex_float_3 {
-std::vector<MixedTypedExample> examples = {
-// Generated strided_slice_ex_float_3 test
-#include "generated/examples/strided_slice_ex_float_3.example.cpp"
-};
-// Generated model constructor
-#include "generated/models/strided_slice_ex_float_3.model.cpp"
-} // namespace strided_slice_ex_float_3
-TEST_F(GeneratedTests, strided_slice_ex_float_3) {
-    execute(strided_slice_ex_float_3::CreateModel,
-            strided_slice_ex_float_3::is_ignored,
-            strided_slice_ex_float_3::examples);
-}
-
-namespace strided_slice_ex_float_4 {
-std::vector<MixedTypedExample> examples = {
-// Generated strided_slice_ex_float_4 test
-#include "generated/examples/strided_slice_ex_float_4.example.cpp"
-};
-// Generated model constructor
-#include "generated/models/strided_slice_ex_float_4.model.cpp"
-} // namespace strided_slice_ex_float_4
-TEST_F(GeneratedTests, strided_slice_ex_float_4) {
-    execute(strided_slice_ex_float_4::CreateModel,
-            strided_slice_ex_float_4::is_ignored,
-            strided_slice_ex_float_4::examples);
-}
-
-namespace strided_slice_ex_float_5 {
-std::vector<MixedTypedExample> examples = {
-// Generated strided_slice_ex_float_5 test
-#include "generated/examples/strided_slice_ex_float_5.example.cpp"
-};
-// Generated model constructor
-#include "generated/models/strided_slice_ex_float_5.model.cpp"
-} // namespace strided_slice_ex_float_5
-TEST_F(GeneratedTests, strided_slice_ex_float_5) {
-    execute(strided_slice_ex_float_5::CreateModel,
-            strided_slice_ex_float_5::is_ignored,
-            strided_slice_ex_float_5::examples);
-}
-
-namespace strided_slice_ex_float_6 {
-std::vector<MixedTypedExample> examples = {
-// Generated strided_slice_ex_float_6 test
-#include "generated/examples/strided_slice_ex_float_6.example.cpp"
-};
-// Generated model constructor
-#include "generated/models/strided_slice_ex_float_6.model.cpp"
-} // namespace strided_slice_ex_float_6
-TEST_F(GeneratedTests, strided_slice_ex_float_6) {
-    execute(strided_slice_ex_float_6::CreateModel,
-            strided_slice_ex_float_6::is_ignored,
-            strided_slice_ex_float_6::examples);
-}
-
-namespace strided_slice_ex_float_7 {
-std::vector<MixedTypedExample> examples = {
-// Generated strided_slice_ex_float_7 test
-#include "generated/examples/strided_slice_ex_float_7.example.cpp"
-};
-// Generated model constructor
-#include "generated/models/strided_slice_ex_float_7.model.cpp"
-} // namespace strided_slice_ex_float_7
-TEST_F(GeneratedTests, strided_slice_ex_float_7) {
-    execute(strided_slice_ex_float_7::CreateModel,
-            strided_slice_ex_float_7::is_ignored,
-            strided_slice_ex_float_7::examples);
-}
-
-namespace strided_slice_ex_float_8 {
-std::vector<MixedTypedExample> examples = {
-// Generated strided_slice_ex_float_8 test
-#include "generated/examples/strided_slice_ex_float_8.example.cpp"
-};
-// Generated model constructor
-#include "generated/models/strided_slice_ex_float_8.model.cpp"
-} // namespace strided_slice_ex_float_8
-TEST_F(GeneratedTests, strided_slice_ex_float_8) {
-    execute(strided_slice_ex_float_8::CreateModel,
-            strided_slice_ex_float_8::is_ignored,
-            strided_slice_ex_float_8::examples);
-}
-
-namespace strided_slice_ex_float_9 {
-std::vector<MixedTypedExample> examples = {
-// Generated strided_slice_ex_float_9 test
-#include "generated/examples/strided_slice_ex_float_9.example.cpp"
-};
-// Generated model constructor
-#include "generated/models/strided_slice_ex_float_9.model.cpp"
-} // namespace strided_slice_ex_float_9
-TEST_F(GeneratedTests, strided_slice_ex_float_9) {
-    execute(strided_slice_ex_float_9::CreateModel,
-            strided_slice_ex_float_9::is_ignored,
-            strided_slice_ex_float_9::examples);
-}
-
 namespace tensorflowmax_ex_2D_float {
 std::vector<MixedTypedExample> examples = {
 // Generated tensorflowmax_ex_2D_float test
diff --git a/runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_1.mod.py b/runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_1.mod.py
deleted file mode 100644 (file)
index 4119841..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-model = Model()
-i1 = Input("input", "TENSOR_FLOAT32", "{4}")
-begins = Parameter("begins", "TENSOR_INT32", "{1}", [1])
-ends = Parameter("ends", "TENSOR_INT32", "{1}", [3])
-strides = Parameter("strides", "TENSOR_INT32", "{1}", [1])
-beginMask = Int32Scalar("beginMask", 0)
-endMask = Int32Scalar("endMask", 0)
-shrinkAxisMask = Int32Scalar("shrinkAxisMask", 0)
-
-output = Output("output", "TENSOR_FLOAT32", "{2}")
-
-model = model.Operation("STRIDED_SLICE_EX", i1, begins, ends, strides, beginMask, endMask, shrinkAxisMask).To(output)
-
-# Example 1. Input in operand 0,
-input0 = {i1: # input 0
-          [1, 2, 3, 4]}
-
-output0 = {output: # output 0
-           [2, 3]}
-
-# Instantiate an example
-Example((input0, output0))
diff --git a/runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_10.mod.py b/runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_10.mod.py
deleted file mode 100644 (file)
index 422ff6e..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-model = Model()
-i1 = Input("input", "TENSOR_FLOAT32", "{2, 3}")
-begins = Parameter("begins", "TENSOR_INT32", "{2}", [1, 0])
-ends = Parameter("ends", "TENSOR_INT32", "{2}", [2, 2])
-strides = Parameter("strides", "TENSOR_INT32", "{2}", [1, 1])
-beginMask = Int32Scalar("beginMask", 0)
-endMask = Int32Scalar("endMask", 2)
-shrinkAxisMask = Int32Scalar("shrinkAxisMask", 0)
-
-output = Output("output", "TENSOR_FLOAT32", "{1, 3}")
-
-model = model.Operation("STRIDED_SLICE_EX", i1, begins, ends, strides, beginMask, endMask, shrinkAxisMask).To(output)
-
-# Example 1. Input in operand 0,
-input0 = {i1: # input 0
-          [1, 2, 3, 4, 5, 6]}
-
-output0 = {output: # output 0
-           [4, 5, 6]}
-
-# Instantiate an example
-Example((input0, output0))
diff --git a/runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_2.mod.py b/runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_2.mod.py
deleted file mode 100644 (file)
index e8d1608..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-model = Model()
-i1 = Input("input", "TENSOR_FLOAT32", "{4}")
-begins = Parameter("begins", "TENSOR_INT32", "{1}", [-3])
-ends = Parameter("ends", "TENSOR_INT32", "{1}", [3])
-strides = Parameter("strides", "TENSOR_INT32", "{1}", [1])
-beginMask = Int32Scalar("beginMask", 0)
-endMask = Int32Scalar("endMask", 0)
-shrinkAxisMask = Int32Scalar("shrinkAxisMask", 0)
-
-output = Output("output", "TENSOR_FLOAT32", "{2}")
-
-model = model.Operation("STRIDED_SLICE_EX", i1, begins, ends, strides, beginMask, endMask, shrinkAxisMask).To(output)
-
-# Example 1. Input in operand 0,
-input0 = {i1: # input 0
-          [1, 2, 3, 4]}
-
-output0 = {output: # output 0
-           [2, 3]}
-
-# Instantiate an example
-Example((input0, output0))
diff --git a/runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_3.mod.py b/runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_3.mod.py
deleted file mode 100644 (file)
index cf35bd9..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-model = Model()
-i1 = Input("input", "TENSOR_FLOAT32", "{4}")
-begins = Parameter("begins", "TENSOR_INT32", "{1}", [-5])
-ends = Parameter("ends", "TENSOR_INT32", "{1}", [3])
-strides = Parameter("strides", "TENSOR_INT32", "{1}", [1])
-beginMask = Int32Scalar("beginMask", 0)
-endMask = Int32Scalar("endMask", 0)
-shrinkAxisMask = Int32Scalar("shrinkAxisMask", 0)
-
-output = Output("output", "TENSOR_FLOAT32", "{3}")
-
-model = model.Operation("STRIDED_SLICE_EX", i1, begins, ends, strides, beginMask, endMask, shrinkAxisMask).To(output)
-
-# Example 1. Input in operand 0,
-input0 = {i1: # input 0
-          [1, 2, 3, 4]}
-
-output0 = {output: # output 0
-           [1, 2, 3]}
-
-# Instantiate an example
-Example((input0, output0))
diff --git a/runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_4.mod.py b/runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_4.mod.py
deleted file mode 100644 (file)
index aaa2eb4..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-model = Model()
-i1 = Input("input", "TENSOR_FLOAT32", "{4}")
-begins = Parameter("begins", "TENSOR_INT32", "{1}", [1])
-ends = Parameter("ends", "TENSOR_INT32", "{1}", [-2])
-strides = Parameter("strides", "TENSOR_INT32", "{1}", [1])
-beginMask = Int32Scalar("beginMask", 0)
-endMask = Int32Scalar("endMask", 0)
-shrinkAxisMask = Int32Scalar("shrinkAxisMask", 0)
-
-output = Output("output", "TENSOR_FLOAT32", "{1}")
-
-model = model.Operation("STRIDED_SLICE_EX", i1, begins, ends, strides, beginMask, endMask, shrinkAxisMask).To(output)
-
-# Example 1. Input in operand 0,
-input0 = {i1: # input 0
-          [1, 2, 3, 4]}
-
-output0 = {output: # output 0
-           [2]}
-
-# Instantiate an example
-Example((input0, output0))
diff --git a/runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_5.mod.py b/runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_5.mod.py
deleted file mode 100644 (file)
index 86a3b1e..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-model = Model()
-i1 = Input("input", "TENSOR_FLOAT32", "{4}")
-begins = Parameter("begins", "TENSOR_INT32", "{1}", [1])
-ends = Parameter("ends", "TENSOR_INT32", "{1}", [3])
-strides = Parameter("strides", "TENSOR_INT32", "{1}", [1])
-beginMask = Int32Scalar("beginMask", 1)
-endMask = Int32Scalar("endMask", 0)
-shrinkAxisMask = Int32Scalar("shrinkAxisMask", 0)
-
-output = Output("output", "TENSOR_FLOAT32", "{3}")
-
-model = model.Operation("STRIDED_SLICE_EX", i1, begins, ends, strides, beginMask, endMask, shrinkAxisMask).To(output)
-
-# Example 1. Input in operand 0,
-input0 = {i1: # input 0
-          [1, 2, 3, 4]}
-
-output0 = {output: # output 0
-           [1, 2, 3]}
-
-# Instantiate an example
-Example((input0, output0))
diff --git a/runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_6.mod.py b/runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_6.mod.py
deleted file mode 100644 (file)
index e6f9cf3..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-model = Model()
-i1 = Input("input", "TENSOR_FLOAT32", "{4}")
-begins = Parameter("begins", "TENSOR_INT32", "{1}", [1])
-ends = Parameter("ends", "TENSOR_INT32", "{1}", [3])
-strides = Parameter("strides", "TENSOR_INT32", "{1}", [1])
-beginMask = Int32Scalar("beginMask", 0)
-endMask = Int32Scalar("endMask", 1)
-shrinkAxisMask = Int32Scalar("shrinkAxisMask", 0)
-
-output = Output("output", "TENSOR_FLOAT32", "{3}")
-
-model = model.Operation("STRIDED_SLICE_EX", i1, begins, ends, strides, beginMask, endMask, shrinkAxisMask).To(output)
-
-# Example 1. Input in operand 0,
-input0 = {i1: # input 0
-          [1, 2, 3, 4]}
-
-output0 = {output: # output 0
-           [2, 3, 4]}
-
-# Instantiate an example
-Example((input0, output0))
diff --git a/runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_7.mod.py b/runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_7.mod.py
deleted file mode 100644 (file)
index 5c24743..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-model = Model()
-i1 = Input("input", "TENSOR_FLOAT32", "{3}")
-begins = Parameter("begins", "TENSOR_INT32", "{1}", [-1])
-ends = Parameter("ends", "TENSOR_INT32", "{1}", [-4])
-strides = Parameter("strides", "TENSOR_INT32", "{1}", [-1])
-beginMask = Int32Scalar("beginMask", 0)
-endMask = Int32Scalar("endMask", 0)
-shrinkAxisMask = Int32Scalar("shrinkAxisMask", 0)
-
-output = Output("output", "TENSOR_FLOAT32", "{3}")
-
-model = model.Operation("STRIDED_SLICE_EX", i1, begins, ends, strides, beginMask, endMask, shrinkAxisMask).To(output)
-
-# Example 1. Input in operand 0,
-input0 = {i1: # input 0
-          [1, 2, 3]}
-
-output0 = {output: # output 0
-           [3, 2, 1]}
-
-# Instantiate an example
-Example((input0, output0))
diff --git a/runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_8.mod.py b/runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_8.mod.py
deleted file mode 100644 (file)
index 8054644..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-model = Model()
-i1 = Input("input", "TENSOR_FLOAT32", "{2, 3}")
-begins = Parameter("begins", "TENSOR_INT32", "{2}", [1, -1])
-ends = Parameter("ends", "TENSOR_INT32", "{2}", [2, -4])
-strides = Parameter("strides", "TENSOR_INT32", "{2}", [2, -1])
-beginMask = Int32Scalar("beginMask", 0)
-endMask = Int32Scalar("endMask", 0)
-shrinkAxisMask = Int32Scalar("shrinkAxisMask", 0)
-
-output = Output("output", "TENSOR_FLOAT32", "{1, 3}")
-
-model = model.Operation("STRIDED_SLICE_EX", i1, begins, ends, strides, beginMask, endMask, shrinkAxisMask).To(output)
-
-# Example 1. Input in operand 0,
-input0 = {i1: # input 0
-          [1, 2, 3, 4, 5, 6]}
-
-output0 = {output: # output 0
-           [6, 5, 4]}
-
-# Instantiate an example
-Example((input0, output0))
diff --git a/runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_9.mod.py b/runtimes/tests/neural_networks_test/specs/Ex/strided_slice_ex_float_9.mod.py
deleted file mode 100644 (file)
index 5b65d16..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-model = Model()
-i1 = Input("input", "TENSOR_FLOAT32", "{2, 3}")
-begins = Parameter("begins", "TENSOR_INT32", "{2}", [1, 0])
-ends = Parameter("ends", "TENSOR_INT32", "{2}", [2, 2])
-strides = Parameter("strides", "TENSOR_INT32", "{2}", [1, 1])
-beginMask = Int32Scalar("beginMask", 1)
-endMask = Int32Scalar("endMask", 0)
-shrinkAxisMask = Int32Scalar("shrinkAxisMask", 0)
-
-output = Output("output", "TENSOR_FLOAT32", "{2, 2}")
-
-model = model.Operation("STRIDED_SLICE_EX", i1, begins, ends, strides, beginMask, endMask, shrinkAxisMask).To(output)
-
-# Example 1. Input in operand 0,
-input0 = {i1: # input 0
-          [1, 2, 3, 4, 5, 6]}
-
-output0 = {output: # output 0
-           [1, 2, 4, 5]}
-
-# Instantiate an example
-Example((input0, output0))