diff --git a/src/core/src/validation_util.cpp b/src/core/src/validation_util.cpp index 7f4667791ca..25d82517842 100644 --- a/src/core/src/validation_util.cpp +++ b/src/core/src/validation_util.cpp @@ -1298,7 +1298,9 @@ HostTensorPtr ngraph::evaluate_upper_bound(const Output& output) { } pair ngraph::evaluate_both_bounds(const Output& output) { - return {evaluate_bound(output, false, false), evaluate_upper_bound(output)}; + evaluate_bound(output, false, false); + evaluate_upper_bound(output); + return {output.get_tensor_ptr()->get_lower_value(), output.get_tensor_ptr()->get_upper_value()}; } bool ov::evaluate_as_partial_shape(const Output& output, PartialShape& pshape) { diff --git a/src/core/tests/validation_utils.cpp b/src/core/tests/validation_utils.cpp index 329d4480c20..403e6fc8d90 100644 --- a/src/core/tests/validation_utils.cpp +++ b/src/core/tests/validation_utils.cpp @@ -34,3 +34,16 @@ TEST(get_constant_from_source, invalidation_check) { ASSERT_FALSE(div->get_output_tensor(0).get_lower_value()); ASSERT_FALSE(div->get_output_tensor(0).get_upper_value()); } + +TEST(get_constant_from_source, extract_static_dim_from_dynamic_shape_check) { + auto data = std::make_shared(ngraph::element::f32, ov::PartialShape{-1, 1, 128}); + auto shape = std::make_shared(data); + auto one = ov::opset8::Constant::create(ov::element::i64, {1}, {1}); + auto zero = ov::opset8::Constant::create(ov::element::i64, {1}, {0}); + const auto extract_static_dimension = std::make_shared(shape, one, zero); + + ASSERT_TRUE(ov::get_constant_from_source(extract_static_dimension)); + + ASSERT_TRUE(extract_static_dimension->get_output_tensor(0).get_lower_value()); + ASSERT_TRUE(extract_static_dimension->get_output_tensor(0).get_upper_value()); +}