diff options
author | Teresa Charlin <teresa.charlinreyes@arm.com> | 2019-07-09 15:45:35 +0100 |
---|---|---|
committer | Teresa Charlin <teresa.charlinreyes@arm.com> | 2019-07-10 16:03:01 +0100 |
commit | 2b7519dcab1c7907d5c38abceedb078d58998db9 (patch) | |
tree | de4642007334470c9ac39be80a035d8d665b4b17 /src/backends/backendsCommon/test | |
parent | 2b8c1da565871b3e69567c2cfc46c8dcbef301aa (diff) | |
download | armnn-2b7519dcab1c7907d5c38abceedb078d58998db9.tar.gz |
IVGCVSW-3468 Add Unit test for Conv2D that combines
strides, dilation and padding
Signed-off-by: Teresa Charlin <teresa.charlinreyes@arm.com>
Change-Id: Iea99a162e1f0c823cd0f8bc0ae2fb5f461778515
Diffstat (limited to 'src/backends/backendsCommon/test')
-rw-r--r-- | src/backends/backendsCommon/test/LayerTests.cpp | 101 | ||||
-rw-r--r-- | src/backends/backendsCommon/test/LayerTests.hpp | 7 |
2 files changed, 101 insertions, 7 deletions
diff --git a/src/backends/backendsCommon/test/LayerTests.cpp b/src/backends/backendsCommon/test/LayerTests.cpp index 82dda3b342..b8f0541ee2 100644 --- a/src/backends/backendsCommon/test/LayerTests.cpp +++ b/src/backends/backendsCommon/test/LayerTests.cpp @@ -642,6 +642,12 @@ LayerTestResult<T, 4> Convolution2d3x3DilationTestCommon( uint32_t dilationX, uint32_t dilationY, armnn::DataLayout layout = armnn::DataLayout::NCHW, + uint32_t padLeft = 0, + uint32_t padTop = 0, + uint32_t padRight = 0, + uint32_t padBottom = 0, + uint32_t strideX = 1, + uint32_t strideY = 1, bool biasEnabled = false ) { @@ -690,13 +696,6 @@ LayerTestResult<T, 4> Convolution2d3x3DilationTestCommon( outputTensorInfo.GetQuantizationOffset(), outputExpectedNoQuantizedValues))); - uint32_t padLeft = 0; - uint32_t padTop = 0; - uint32_t padRight = 0; - uint32_t padBottom = 0; - uint32_t strideX = 1; - uint32_t strideY = 1; - return SimpleConvolution2dTestImpl<ArmnnType, ArmnnBType>( workloadFactory, memoryManager, @@ -844,6 +843,73 @@ LayerTestResult<T, 4> Convolution2d2x3x3Dilation3x3Test( biasEnabled); } +template<armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T> +LayerTestResult<T, 4> Convolution2d2x2Dilation2x2Padding2x2Stride3x3Test( + armnn::IWorkloadFactory &workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, + bool biasEnabled, + const armnn::DataLayout layout) +{ + armnn::TensorInfo inputTensorInfo({1, 1, 10, 10}, ArmnnType); + std::vector<float> inputNoQuantizedValues = + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 + }; + + armnn::TensorInfo kernelTensorInfo({ 1, 1, 2, 2}, ArmnnType); + std::vector<float> kernelNoQuantizedValues = + { + 1, 2, + 3, 4 + }; + + // Since the dilation rate is 2 this will dilate the kernel to be like 3x3: d(K-1)+1 --> 2 x (2-1) + 1 = 3, + // therefore the output will be 4x4: (I − K + 2P)/S +1 => trunc ( (10 - 3 + 2x2 ) / 3 + 1 ) + // where, dilation size = d = 2; kernel size = K = 2; input size = I = 10; padding size = P = 2; stride = S = 1 + armnn::TensorInfo outputTensorInfo({ 1, 1, 4, 4}, ArmnnType); + std::vector<float> outputExpectedNoQuantizedValues = + { + 4, 7, 7, 3, + 6, 10, 10, 4, + 6, 10, 10, 4, + 2, 3, 3, 1 + }; + uint32_t padLeft = 1; + uint32_t padTop = 1; + uint32_t padRight = 1; + uint32_t padBottom = 1; + + return Convolution2d3x3DilationTestCommon<ArmnnType, ArmnnBType>( + workloadFactory, + memoryManager, + inputNoQuantizedValues, + inputTensorInfo, + kernelNoQuantizedValues, + kernelTensorInfo, + outputExpectedNoQuantizedValues, + outputTensorInfo, + 2, + 2, + layout, + padLeft, + padTop, + padRight, + padBottom, + 3, + 3, + biasEnabled + ); +} + template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4> Convolution2d3x3Dilation3x3Test<armnn::DataType::Float32, armnn::DataType::Float32>( armnn::IWorkloadFactory&, @@ -886,6 +952,27 @@ Convolution2d2x3x3Dilation3x3Test<armnn::DataType::QuantisedSymm16, armnn::DataT bool, armnn::DataLayout); +template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4> +Convolution2d2x2Dilation2x2Padding2x2Stride3x3Test<armnn::DataType::Float32, armnn::DataType::Float32>( + armnn::IWorkloadFactory &workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, + bool biasEnabled, + const armnn::DataLayout layout); + +template LayerTestResult<armnn::ResolveType<armnn::DataType::QuantisedAsymm8>, 4> +Convolution2d2x2Dilation2x2Padding2x2Stride3x3Test<armnn::DataType::QuantisedAsymm8, armnn::DataType::Signed32>( + armnn::IWorkloadFactory &workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, + bool biasEnabled, + const armnn::DataLayout layout); + +template LayerTestResult<armnn::ResolveType<armnn::DataType::QuantisedSymm16>, 4> +Convolution2d2x2Dilation2x2Padding2x2Stride3x3Test<armnn::DataType::QuantisedSymm16, armnn::DataType::Signed32>( + armnn::IWorkloadFactory &workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, + bool biasEnabled, + const armnn::DataLayout layout); + template<armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType<ArmnnType>> LayerTestResult<T, 4> DepthwiseConvolution2dAsymmetricTestCommon( diff --git a/src/backends/backendsCommon/test/LayerTests.hpp b/src/backends/backendsCommon/test/LayerTests.hpp index 108ea79070..7db8471db6 100644 --- a/src/backends/backendsCommon/test/LayerTests.hpp +++ b/src/backends/backendsCommon/test/LayerTests.hpp @@ -128,6 +128,13 @@ LayerTestResult<T, 4> Convolution2d2x3x3Dilation3x3Test( const armnn::DataLayout layout); template<armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType<ArmnnType>> +LayerTestResult<T, 4> Convolution2d2x2Dilation2x2Padding2x2Stride3x3Test( + armnn::IWorkloadFactory &workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, + bool biasEnabled, + const armnn::DataLayout layout); + +template<armnn::DataType ArmnnType, armnn::DataType ArmnnBType, typename T = armnn::ResolveType<ArmnnType>> LayerTestResult<T, 4> DepthwiseConvolution2d3x3Dilation3x3Test( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, |