From c2a60593436387d20ff142a619f4c3955a5cd41b Mon Sep 17 00:00:00 2001 From: Matthew Jackson Date: Fri, 30 Aug 2019 15:19:42 +0100 Subject: COMPMID-2639: CLPadLayer support for 4D padding Add support for 4D padding to CLPadLayerKernel. Add validation tests with 4D padding. Change-Id: I5579cc441a155c03fa1d14c6e77ba8ec693a806d Signed-off-by: Matthew Jackson Reviewed-on: https://review.mlplatform.org/c/1847 Comments-Addressed: Arm Jenkins Reviewed-by: Giorgio Arena Tested-by: Arm Jenkins --- tests/validation/CL/PadLayer.cpp | 52 ++++++++++++++++++++++++++++++---------- 1 file changed, 39 insertions(+), 13 deletions(-) (limited to 'tests/validation') diff --git a/tests/validation/CL/PadLayer.cpp b/tests/validation/CL/PadLayer.cpp index 518f541b8b..431b7ebd19 100644 --- a/tests/validation/CL/PadLayer.cpp +++ b/tests/validation/CL/PadLayer.cpp @@ -40,7 +40,8 @@ namespace validation { namespace { -const auto PaddingSizesDataset = framework::dataset::make("PaddingSize", { PaddingList{ { 0, 0 } }, +const auto PaddingSizesDataset3D = framework::dataset::make("PaddingSize", +{ PaddingList{ { 0, 0 } }, PaddingList{ { 1, 1 } }, PaddingList{ { 33, 33 } }, PaddingList{ { 1, 1 }, { 5, 5 } }, @@ -48,6 +49,12 @@ const auto PaddingSizesDataset = framework::dataset::make("PaddingSize", { Paddi PaddingList{ { 0, 0 }, { 1, 0 }, { 0, 1 } }, PaddingList{ { 0, 0 }, { 0, 0 }, { 0, 0 } } }); +const auto PaddingSizesDataset4D = framework::dataset::make("PaddingSize", +{ PaddingList{ { 1, 1 }, { 1, 0 }, { 1, 1 }, { 0, 0 } }, + PaddingList{ { 0, 0 }, { 0, 0 }, { 0, 0 }, { 1, 1 } }, + PaddingList{ { 0, 1 }, { 1, 0 }, { 2, 2 }, { 1, 0 } }, + PaddingList{ { 1, 1 }, { 1, 1 }, { 1, 1 }, { 3, 3 } } +}); } // namespace TEST_SUITE(CL) @@ -57,9 +64,10 @@ TEST_SUITE(PadLayer) // clang-format off DATA_TEST_CASE(Validate, framework::DatasetMode::ALL, zip(zip(zip(zip( - framework::dataset::make("InputInfo", { TensorInfo(TensorShape(27U, 13U, 2U), 1, DataType::F32), // Mismatching data type input/output + framework::dataset::make("InputInfo", { TensorInfo(TensorShape(27U, 13U, 2U), 1, DataType::F32), // Mismatching data type input/output TensorInfo(TensorShape(27U, 13U, 2U), 1, DataType::F32), // Mismatching shapes with padding TensorInfo(TensorShape(27U, 13U, 2U), 1, DataType::F32), + TensorInfo(TensorShape(27U, 13U, 2U), 1, DataType::F32), // Invalid number of pad dimensions TensorInfo(TensorShape(27U, 13U, 2U), 1, DataType::F32), // Mismatching shapes dimension TensorInfo(TensorShape(27U, 13U, 2U), 1, DataType::F32), TensorInfo(TensorShape(32U, 13U), 1, DataType::F32) // Invalid padding list @@ -68,29 +76,33 @@ DATA_TEST_CASE(Validate, framework::DatasetMode::ALL, zip(zip(zip(zip( TensorInfo(TensorShape(28U, 11U, 2U), 1, DataType::F32), TensorInfo(TensorShape(29U, 17U, 2U), 1, DataType::F32), TensorInfo(TensorShape(29U, 15U, 4U, 3U), 1, DataType::F32), + TensorInfo(TensorShape(29U, 15U, 4U, 3U), 1, DataType::F32), TensorInfo(TensorShape(29U, 17U, 2U), 1, DataType::F32), TensorInfo(TensorShape(32U, 13U), 1, DataType::F32) })), framework::dataset::make("PaddingSize", { PaddingList{{0, 0}}, PaddingList{{1, 1}}, PaddingList{{1, 1}, {2, 2}}, + PaddingList{{1,1}, {1,1}, {1,1}, {1,1}}, PaddingList{{1,1}, {1,1}, {1,1}}, PaddingList{{1, 1}, {2, 2}}, PaddingList{{0,0}, {0,0}, {1,1}} })), framework::dataset::make("PaddingMode", { PaddingMode::CONSTANT, + PaddingMode::CONSTANT, PaddingMode::CONSTANT, PaddingMode::CONSTANT, PaddingMode::SYMMETRIC, PaddingMode::REFLECT, PaddingMode::REFLECT -})), + })), framework::dataset::make("Expected", { false, - false, - true, - false, - true, - false })), + false, + true, + false, + false, + true, + false })), input_info, output_info, padding, mode, expected) { ARM_COMPUTE_EXPECT(bool(CLPadLayer::validate(&input_info.clone()->set_is_resizable(true), &output_info.clone()->set_is_resizable(true), padding, PixelValue(), mode)) == expected, framework::LogLevel::ERRORS); @@ -106,14 +118,21 @@ TEST_SUITE(Float) TEST_SUITE(FP32) FIXTURE_DATA_TEST_CASE(RunSmall, CLPaddingFixture, framework::DatasetMode::ALL, - combine(combine(combine(datasets::Small3DShapes(), framework::dataset::make("DataType", { DataType::F32 })), PaddingSizesDataset), + combine(combine(combine(datasets::Small3DShapes(), framework::dataset::make("DataType", { DataType::F32 })), PaddingSizesDataset3D), framework::dataset::make("PaddingMode", { PaddingMode::CONSTANT, PaddingMode::REFLECT, PaddingMode::SYMMETRIC }))) { // Validate output validate(CLAccessor(_target), _reference); } +FIXTURE_DATA_TEST_CASE(RunSmall4D, CLPaddingFixture, framework::DatasetMode::ALL, + combine(combine(combine(datasets::Small4DShapes(), framework::dataset::make("DataType", { DataType::F32 })), PaddingSizesDataset4D), + framework::dataset::make("PaddingMode", { PaddingMode::CONSTANT }))) +{ + // Validate output + validate(CLAccessor(_target), _reference); +} FIXTURE_DATA_TEST_CASE(RunLarge, CLPaddingFixture, framework::DatasetMode::NIGHTLY, - combine(combine(combine(datasets::Large3DShapes(), framework::dataset::make("DataType", { DataType::F32 })), PaddingSizesDataset), + combine(combine(combine(datasets::Large3DShapes(), framework::dataset::make("DataType", { DataType::F32 })), PaddingSizesDataset3D), framework::dataset::make("PaddingMode", { PaddingMode::CONSTANT, PaddingMode::REFLECT, PaddingMode::SYMMETRIC }))) { // Validate output @@ -123,7 +142,7 @@ TEST_SUITE_END() // FP32 TEST_SUITE(FP16) FIXTURE_DATA_TEST_CASE(RunLarge, CLPaddingFixture, framework::DatasetMode::NIGHTLY, - combine(combine(combine(datasets::Large3DShapes(), framework::dataset::make("DataType", { DataType::F16 })), PaddingSizesDataset), + combine(combine(combine(datasets::Large3DShapes(), framework::dataset::make("DataType", { DataType::F16 })), PaddingSizesDataset3D), framework::dataset::make("PaddingMode", { PaddingMode::CONSTANT, PaddingMode::REFLECT }))) { // Validate output @@ -135,14 +154,21 @@ TEST_SUITE_END() // Float TEST_SUITE(Quantized) TEST_SUITE(QASYMM8) FIXTURE_DATA_TEST_CASE(RunSmall, CLPaddingFixture, framework::DatasetMode::PRECOMMIT, - combine(combine(combine(datasets::Small3DShapes(), framework::dataset::make("DataType", { DataType::QASYMM8 })), PaddingSizesDataset), + combine(combine(combine(datasets::Small3DShapes(), framework::dataset::make("DataType", { DataType::QASYMM8 })), PaddingSizesDataset3D), framework::dataset::make("PaddingMode", { PaddingMode::CONSTANT, PaddingMode::REFLECT }))) { // Validate output validate(CLAccessor(_target), _reference); } +FIXTURE_DATA_TEST_CASE(RunSmall4D, CLPaddingFixture, framework::DatasetMode::PRECOMMIT, + combine(combine(combine(datasets::Small4DShapes(), framework::dataset::make("DataType", { DataType::QASYMM8 })), PaddingSizesDataset4D), + framework::dataset::make("PaddingMode", { PaddingMode::CONSTANT }))) +{ + // Validate output + validate(CLAccessor(_target), _reference); +} FIXTURE_DATA_TEST_CASE(RunLarge, CLPaddingFixture, framework::DatasetMode::NIGHTLY, - combine(combine(combine(datasets::Large3DShapes(), framework::dataset::make("DataType", { DataType::QASYMM8 })), PaddingSizesDataset), + combine(combine(combine(datasets::Large3DShapes(), framework::dataset::make("DataType", { DataType::QASYMM8 })), PaddingSizesDataset3D), framework::dataset::make("PaddingMode", { PaddingMode::CONSTANT, PaddingMode::REFLECT }))) { // Validate output -- cgit v1.2.1