From 3bc6151567fc42bddeaad9d47cc40c589e831ee2 Mon Sep 17 00:00:00 2001 From: Maksim Doronin Date: Wed, 14 Oct 2020 14:30:59 +0300 Subject: [PATCH] [IE][VPU]: Added DSR_Reshape tests with dynamic output shape descriptor (#2607) * Added DSR_Reshape tests with dynamic output shape descriptor --- .../plugin/myriad/subgraph_tests/dsr_reshape.cpp | 60 ++++++++++++++++++---- 1 file changed, 50 insertions(+), 10 deletions(-) diff --git a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_reshape.cpp b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_reshape.cpp index 209c2ae..2ba3df2 100644 --- a/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_reshape.cpp +++ b/inference-engine/tests/functional/plugin/myriad/subgraph_tests/dsr_reshape.cpp @@ -16,8 +16,7 @@ using Parameters = std::tuple< ReshapeTestParams, LayerTestsUtils::TargetDevice>; - -class DSR_Reshape : public testing::WithParamInterface, public DSR_TestsCommon { +class DSR_ReshapeWithStaticDescriptor : public testing::WithParamInterface, public DSR_TestsCommon { protected: std::shared_ptr createTestedOp() override { const auto& parameters = GetParam(); @@ -33,30 +32,71 @@ protected: const auto outShapeDescriptorConstNode = std::make_shared( ngraph::element::i64, ngraph::Shape{outShapeDescriptor.size()}, outShapeDescriptor); - const auto reshape = std::make_shared( + + return std::make_shared( inputSubgraph, outShapeDescriptorConstNode, specialZero); + } +}; + +TEST_P(DSR_ReshapeWithStaticDescriptor, CompareWithReference) { + Run(); +} + +class DSR_ReshapeWithDynamicDescriptor : public testing::WithParamInterface, public DSR_TestsCommon { +protected: + std::shared_ptr createTestedOp() override { + const auto& parameters = GetParam(); + const auto& inDataType = std::get<0>(GetParam()); + const auto& inDataShapes = std::get<0>(std::get<1>(GetParam())); + targetDevice = std::get<2>(GetParam()); + + const auto inputSubgraph = createInputSubgraphWithDSR(inDataType, inDataShapes); + + const auto shapeDataType = inputSubgraph->get_input_element_type(1); + const auto shapeOf = std::make_shared(inputSubgraph, shapeDataType); + const auto axis = ngraph::opset3::Constant::create(shapeDataType, {1}, {0}); + const auto indices = ngraph::opset3::Constant::create(shapeDataType, {1}, {inDataShapes.shape.size() - 1}); + const auto outShapeDescriptorDynamicNode = std::make_shared( + ngraph::OutputVector{ + ngraph::opset3::Constant::create(shapeDataType, {1}, {1}), + ngraph::opset3::Constant::create(shapeDataType, {1}, {-1}), + std::make_shared(shapeOf, indices, axis)}, + 0); - return reshape; + return std::make_shared( + inputSubgraph, outShapeDescriptorDynamicNode, true); } }; -TEST_P(DSR_Reshape, CompareWithReference) { +TEST_P(DSR_ReshapeWithDynamicDescriptor, CompareWithReference) { Run(); } -std::vector reshapeTestParams = { +const std::vector reshapeTestParams = { std::make_tuple(DataShapeWithUpperBound{{1, 750}, {1, 1000}}, true, ShapeDescriptor{-1, 1}), std::make_tuple(DataShapeWithUpperBound{{750, 1}, {1000, 1}}, true, ShapeDescriptor{-1}), std::make_tuple(DataShapeWithUpperBound{{750, 1}, {750, 1}}, true, ShapeDescriptor{-1, 1, 1, 1}), std::make_tuple(DataShapeWithUpperBound{{750, 4}, {1000, 4}}, true, ShapeDescriptor{1, -1, 4}), std::make_tuple(DataShapeWithUpperBound{{750}, {1000}}, true, ShapeDescriptor{1, 1, -1}), + std::make_tuple(DataShapeWithUpperBound{{800, 81, 4}, {1000, 81, 4}}, true, ShapeDescriptor{0, -1}), + std::make_tuple(DataShapeWithUpperBound{{800, 256, 7, 7}, {1000, 256, 7, 7}}, true, ShapeDescriptor{0, -1}), }; -INSTANTIATE_TEST_CASE_P(smoke_DynamicReshape, DSR_Reshape, +const std::vector dataTypesVector = { + ngraph::element::f16, + ngraph::element::f32, + ngraph::element::i32, +}; + +INSTANTIATE_TEST_CASE_P(smoke_DynamicReshape, DSR_ReshapeWithStaticDescriptor, + ::testing::Combine( + ::testing::ValuesIn(dataTypesVector), + ::testing::ValuesIn(reshapeTestParams), + ::testing::Values(CommonTestUtils::DEVICE_MYRIAD))); + +INSTANTIATE_TEST_CASE_P(smoke_DynamicReshape, DSR_ReshapeWithDynamicDescriptor, ::testing::Combine( - ::testing::Values(ngraph::element::f16, - ngraph::element::f32, - ngraph::element::i32), + ::testing::ValuesIn(dataTypesVector), ::testing::ValuesIn(reshapeTestParams), ::testing::Values(CommonTestUtils::DEVICE_MYRIAD))); -- 2.7.4