diff options
Diffstat (limited to 'tests/validation')
-rw-r--r-- | tests/validation/CL/DirectConvolutionLayer.cpp | 4 | ||||
-rw-r--r-- | tests/validation/CL/PoolingLayer.cpp | 12 | ||||
-rw-r--r-- | tests/validation/NEON/DirectConvolutionLayer.cpp | 4 | ||||
-rw-r--r-- | tests/validation/NEON/PoolingLayer.cpp | 9 | ||||
-rw-r--r-- | tests/validation/fixtures/PoolingLayerFixture.h | 13 | ||||
-rw-r--r-- | tests/validation/reference/DepthwiseConvolutionLayer.cpp | 8 |
6 files changed, 35 insertions, 15 deletions
diff --git a/tests/validation/CL/DirectConvolutionLayer.cpp b/tests/validation/CL/DirectConvolutionLayer.cpp index 4af825e526..bf8b4057ee 100644 --- a/tests/validation/CL/DirectConvolutionLayer.cpp +++ b/tests/validation/CL/DirectConvolutionLayer.cpp @@ -56,8 +56,8 @@ constexpr AbsoluteTolerance<uint8_t> tolerance_qasymm8(1); /**< Tolerance for qu const auto data = combine(datasets::SmallDirectConvolutionShapes(), combine(framework::dataset::make("StrideX", 1, 3), combine(framework::dataset::make("StrideY", 1, 3), - combine(concat(combine(framework::dataset::make("PadX", 0), - combine(framework::dataset::make("PadY", 0), + combine(concat(combine(framework::dataset::make("PadX", 0, 1), + combine(framework::dataset::make("PadY", 0, 1), framework::dataset::make("KernelSize", 1))), combine(framework::dataset::make("PadX", 0, 2), combine(framework::dataset::make("PadY", 0, 2), diff --git a/tests/validation/CL/PoolingLayer.cpp b/tests/validation/CL/PoolingLayer.cpp index dc9604423f..9da4c55c78 100644 --- a/tests/validation/CL/PoolingLayer.cpp +++ b/tests/validation/CL/PoolingLayer.cpp @@ -27,6 +27,7 @@ #include "arm_compute/runtime/CL/functions/CLPoolingLayer.h" #include "tests/CL/CLAccessor.h" #include "tests/PaddingCalculator.h" +#include "tests/datasets/PoolingLayerDataset.h" #include "tests/datasets/PoolingTypesDataset.h" #include "tests/datasets/ShapeDatasets.h" #include "tests/framework/Asserts.h" @@ -43,12 +44,6 @@ namespace validation { namespace { -/** Failing data set */ -const auto PoolingLayerDatasetSpecial = ((((framework::dataset::make("Shape", TensorShape{ 60U, 52U, 3U, 5U }) - * framework::dataset::make("PoolType", PoolingType::AVG)) - * framework::dataset::make("PoolingSize", Size2D(100, 100))) - * framework::dataset::make("PadStride", PadStrideInfo(5, 5, 50, 50))) - * framework::dataset::make("ExcludePadding", true)); /** Input data set for floating-point data types */ const auto PoolingLayerDatasetFP = combine(combine(combine(datasets::PoolingTypes(), framework::dataset::make("PoolingSize", { Size2D(2, 2), Size2D(3, 3), Size2D(7, 7), Size2D(9, 9), Size2D(5, 7), Size2D(7, 9) })), framework::dataset::make("PadStride", { PadStrideInfo(1, 1, 0, 0), PadStrideInfo(2, 1, 0, 0), PadStrideInfo(1, 2, 1, 1), PadStrideInfo(2, 2, 1, 0) })), @@ -121,9 +116,12 @@ DATA_TEST_CASE(Validate, framework::DatasetMode::ALL, zip(zip(zip( template <typename T> using CLPoolingLayerFixture = PoolingLayerValidationFixture<CLTensor, CLAccessor, CLPoolingLayer, T>; +template <typename T> +using CLSpecialPoolingLayerFixture = SpecialPoolingLayerValidationFixture<CLTensor, CLAccessor, CLPoolingLayer, T>; + TEST_SUITE(Float) TEST_SUITE(FP32) -FIXTURE_DATA_TEST_CASE(RunSpecial, CLPoolingLayerFixture<float>, framework::DatasetMode::ALL, PoolingLayerDatasetSpecial * framework::dataset::make("DataType", DataType::F32)) +FIXTURE_DATA_TEST_CASE(RunSpecial, CLSpecialPoolingLayerFixture<float>, framework::DatasetMode::ALL, datasets::PoolingLayerDatasetSpecial() * framework::dataset::make("DataType", DataType::F32)) { // Validate output validate(CLAccessor(_target), _reference, tolerance_f32); diff --git a/tests/validation/NEON/DirectConvolutionLayer.cpp b/tests/validation/NEON/DirectConvolutionLayer.cpp index f51752d946..57e030c349 100644 --- a/tests/validation/NEON/DirectConvolutionLayer.cpp +++ b/tests/validation/NEON/DirectConvolutionLayer.cpp @@ -49,8 +49,8 @@ constexpr AbsoluteTolerance<float> tolerance_fp16(0.01f); /**< Tolerance for ha constexpr AbsoluteTolerance<float> tolerance_fp32(0.001f); /**< Tolerance for floating point tests */ /** Direct convolution data set. */ -const auto data_pad_f32 = concat(concat(combine(framework::dataset::make("PadX", 0), - combine(framework::dataset::make("PadY", 0), +const auto data_pad_f32 = concat(concat(combine(framework::dataset::make("PadX", 0, 1), + combine(framework::dataset::make("PadY", 0, 1), framework::dataset::make("KernelSize", 1))), combine(framework::dataset::make("PadX", 0, 2), combine(framework::dataset::make("PadY", 0, 2), diff --git a/tests/validation/NEON/PoolingLayer.cpp b/tests/validation/NEON/PoolingLayer.cpp index 4697d4db01..350a7b883b 100644 --- a/tests/validation/NEON/PoolingLayer.cpp +++ b/tests/validation/NEON/PoolingLayer.cpp @@ -27,6 +27,7 @@ #include "arm_compute/runtime/TensorAllocator.h" #include "tests/NEON/Accessor.h" #include "tests/PaddingCalculator.h" +#include "tests/datasets/PoolingLayerDataset.h" #include "tests/datasets/PoolingTypesDataset.h" #include "tests/datasets/ShapeDatasets.h" #include "tests/framework/Asserts.h" @@ -119,8 +120,16 @@ DATA_TEST_CASE(Validate, framework::DatasetMode::ALL, zip(zip(zip( template <typename T> using NEPoolingLayerFixture = PoolingLayerValidationFixture<Tensor, Accessor, NEPoolingLayer, T>; +template <typename T> +using NESpecialPoolingLayerFixture = SpecialPoolingLayerValidationFixture<Tensor, Accessor, NEPoolingLayer, T>; + TEST_SUITE(Float) TEST_SUITE(FP32) +FIXTURE_DATA_TEST_CASE(RunSpecial, NESpecialPoolingLayerFixture<float>, framework::DatasetMode::ALL, datasets::PoolingLayerDatasetSpecial() * framework::dataset::make("DataType", DataType::F32)) +{ + // Validate output + validate(Accessor(_target), _reference, tolerance_f32); +} FIXTURE_DATA_TEST_CASE(RunSmall, NEPoolingLayerFixture<float>, framework::DatasetMode::ALL, combine(datasets::SmallShapes(), combine(PoolingLayerDatasetFP, framework::dataset::make("DataType", DataType::F32)))) { diff --git a/tests/validation/fixtures/PoolingLayerFixture.h b/tests/validation/fixtures/PoolingLayerFixture.h index f101199365..3bbb403ae7 100644 --- a/tests/validation/fixtures/PoolingLayerFixture.h +++ b/tests/validation/fixtures/PoolingLayerFixture.h @@ -164,6 +164,18 @@ public: }; template <typename TensorType, typename AccessorType, typename FunctionType, typename T> +class SpecialPoolingLayerValidationFixture : public PoolingLayerValidationGenericFixture<TensorType, AccessorType, FunctionType, T> +{ +public: + template <typename...> + void setup(TensorShape src_shape, TensorShape dst_shape, PoolingLayerInfo pool_info, DataType data_type) + { + ARM_COMPUTE_UNUSED(dst_shape); + PoolingLayerValidationGenericFixture<TensorType, AccessorType, FunctionType, T>::setup(src_shape, pool_info, data_type, 0, QuantizationInfo()); + } +}; + +template <typename TensorType, typename AccessorType, typename FunctionType, typename T> class GlobalPoolingLayerValidationFixture : public PoolingLayerValidationGenericFixture<TensorType, AccessorType, FunctionType, T> { public: @@ -173,6 +185,7 @@ public: PoolingLayerValidationGenericFixture<TensorType, AccessorType, FunctionType, T>::setup(shape, PoolingLayerInfo(pool_type), data_type, 0, QuantizationInfo()); } }; + } // namespace validation } // namespace test } // namespace arm_compute diff --git a/tests/validation/reference/DepthwiseConvolutionLayer.cpp b/tests/validation/reference/DepthwiseConvolutionLayer.cpp index ffea1bcf89..b2a7067709 100644 --- a/tests/validation/reference/DepthwiseConvolutionLayer.cpp +++ b/tests/validation/reference/DepthwiseConvolutionLayer.cpp @@ -143,10 +143,10 @@ SimpleTensor<uint8_t> depthwise_convolution(const SimpleTensor<uint8_t> &src, co const int filter_half_width = filter_width / 2; const int filter_half_height = filter_height / 2; - const int pad_left = std::min(static_cast<int>(conv_info.pad_left()), filter_half_width); - const int pad_top = std::min(static_cast<int>(conv_info.pad_top()), filter_half_height); - const int pad_right = std::min(static_cast<int>(conv_info.pad_right()), filter_half_width); - const int pad_bottom = std::min(static_cast<int>(conv_info.pad_bottom()), filter_half_height); + const int pad_left = conv_info.pad_left(); + const int pad_top = conv_info.pad_top(); + const int pad_right = conv_info.pad_right(); + const int pad_bottom = conv_info.pad_bottom(); const int minimum_x = -pad_left + filter_half_width; const int minimum_y = -pad_top + filter_half_height; |