From ed030e113ef635f1069d0cb81bce44bf6fdb9d97 Mon Sep 17 00:00:00 2001 From: Evgenya Stepyreva Date: Tue, 29 Mar 2022 16:42:52 +0300 Subject: [PATCH] StridedSlice default shape inference (#11292) --- src/core/include/openvino/op/strided_slice.hpp | 16 ++++++++++++++++ src/core/tests/CMakeLists.txt | 1 + src/core/tests/type_prop/strided_slice.cpp | 18 ++++++++++++++++++ 3 files changed, 35 insertions(+) diff --git a/src/core/include/openvino/op/strided_slice.hpp b/src/core/include/openvino/op/strided_slice.hpp index daa69ce64ad..b4fd03c0aaf 100644 --- a/src/core/include/openvino/op/strided_slice.hpp +++ b/src/core/include/openvino/op/strided_slice.hpp @@ -79,18 +79,34 @@ public: const std::vector& get_begin_mask() const { return m_begin_mask; } + void set_begin_mask(const std::vector& vec) { + m_begin_mask = vec; + } const std::vector& get_end_mask() const { return m_end_mask; } + void set_end_mask(const std::vector& vec) { + m_end_mask = vec; + } const std::vector& get_new_axis_mask() const { return m_new_axis_mask; } + void set_new_axis_mask(const std::vector& vec) { + m_new_axis_mask = vec; + } const std::vector& get_shrink_axis_mask() const { return m_shrink_axis_mask; } + void set_shrink_axis_mask(const std::vector& vec) { + m_shrink_axis_mask = vec; + } const std::vector& get_ellipsis_mask() const { return m_ellipsis_mask; } + void set_ellipsis_mask_mask(const std::vector& vec) { + m_ellipsis_mask = vec; + } + std::shared_ptr clone_with_new_inputs(const OutputVector& new_args) const override; void validate_and_infer_types() override; OPENVINO_SUPPRESS_DEPRECATED_START diff --git a/src/core/tests/CMakeLists.txt b/src/core/tests/CMakeLists.txt index f99c529ffea..96ac8b23f60 100644 --- a/src/core/tests/CMakeLists.txt +++ b/src/core/tests/CMakeLists.txt @@ -585,6 +585,7 @@ target_link_libraries(ov_core_unit_tests PRIVATE ngraph_test_util ngraph_reference ngraph::builder openvino::util + ov_shape_inference pugixml::static ${CMAKE_DL_LIBS} Threads::Threads diff --git a/src/core/tests/type_prop/strided_slice.cpp b/src/core/tests/type_prop/strided_slice.cpp index 78863a1629c..345226f245c 100644 --- a/src/core/tests/type_prop/strided_slice.cpp +++ b/src/core/tests/type_prop/strided_slice.cpp @@ -4,6 +4,7 @@ #include #include +#include #include "gtest/gtest.h" #include "ngraph/ngraph.hpp" @@ -191,3 +192,20 @@ TEST(type_prop, strided_slice_dynamic_value_and_label_propagation) { const auto& output_shape = bc->get_output_partial_shape(0); ASSERT_EQ(ov::DimensionTracker::get_label(output_shape[0]), 10); } + +TEST(type_prop, default_strided_slice_shape_inference) { + auto slice = new op::v1::StridedSlice; + slice->set_begin_mask({0, 0, 0}); + slice->set_end_mask({0, 0, 0}); + slice->set_new_axis_mask({1, 0, 0}); + slice->set_shrink_axis_mask({0, 0, 0, 1}); + slice->set_ellipsis_mask_mask({0, 0, 0}); + std::vector in = {{10, 11, 12}, {3}, {3}, {3}}, out = {PartialShape()}; + int64_t begin_data[] = {0, 0, 0, 0}, end_data[] = {1, 1, 5, 1}, stride_data[] = {1, 1, 1, 1}; + const std::map> const_data = { + {1, std::make_shared(element::i64, Shape{4}, begin_data)}, + {2, std::make_shared(element::i64, Shape{4}, end_data)}, + {3, std::make_shared(element::i64, Shape{4}, stride_data)}}; + ov::op::v1::shape_infer(slice, in, out, const_data); + ASSERT_EQ(out[0], PartialShape({1, 1, 5})); +} \ No newline at end of file