diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/backends/backendsCommon/test/LayerTests.cpp | 101 | ||||
-rw-r--r-- | src/backends/backendsCommon/test/LayerTests.hpp | 7 | ||||
-rw-r--r-- | src/backends/reference/test/RefLayerTests.cpp | 32 |
3 files changed, 133 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, diff --git a/src/backends/reference/test/RefLayerTests.cpp b/src/backends/reference/test/RefLayerTests.cpp index bc64725747..447d95e2ee 100644 --- a/src/backends/reference/test/RefLayerTests.cpp +++ b/src/backends/reference/test/RefLayerTests.cpp @@ -121,6 +121,38 @@ ARMNN_AUTO_TEST_CASE(Convolution2d2x3x3Dilation3x3NhwcInt16, false, armnn::DataLayout::NHWC) +ARMNN_AUTO_TEST_CASE(Convolution2d2x2Dilation2x2Padding1x1, + Convolution2d2x2Dilation2x2Padding2x2Stride3x3Test + <armnn::DataType::Float32, armnn::DataType::Float32>, + false, + armnn::DataLayout::NCHW) +ARMNN_AUTO_TEST_CASE(Convolution2d2x2Dilation2x2Padding1x1TestNhwc, + Convolution2d2x2Dilation2x2Padding2x2Stride3x3Test + <armnn::DataType::Float32, armnn::DataType::Float32>, + false, + armnn::DataLayout::NHWC) +ARMNN_AUTO_TEST_CASE(Convolution2d2x2Dilation2x2Padding1x1TestUint8, + Convolution2d2x2Dilation2x2Padding2x2Stride3x3Test + <armnn::DataType::QuantisedAsymm8, armnn::DataType::Signed32>, + false, + armnn::DataLayout::NCHW) +ARMNN_AUTO_TEST_CASE(Convolution2d2x2Dilation2x2Padding1x1TestNhwcUint8, + Convolution2d2x2Dilation2x2Padding2x2Stride3x3Test + <armnn::DataType::QuantisedAsymm8, armnn::DataType::Signed32>, + false, + armnn::DataLayout::NHWC) +ARMNN_AUTO_TEST_CASE(Convolution2d2x2Dilation2x2Padding1x1TestInt16, + Convolution2d2x2Dilation2x2Padding2x2Stride3x3Test + <armnn::DataType::QuantisedSymm16, armnn::DataType::Signed32>, + false, + armnn::DataLayout::NCHW) +ARMNN_AUTO_TEST_CASE(Convolution2d2x2Dilation2x2Padding1x1TestNhwcInt16, + Convolution2d2x2Dilation2x2Padding2x2Stride3x3Test + <armnn::DataType::QuantisedSymm16, armnn::DataType::Signed32>, + false, + armnn::DataLayout::NHWC) + + // Depthwise Convolution ARMNN_AUTO_TEST_CASE(DepthwiseConvolution2d, DepthwiseConvolution2dTest, true, armnn::DataLayout::NCHW) ARMNN_AUTO_TEST_CASE(DepthwiseConvolution2dUint8, DepthwiseConvolution2dUint8Test, true, armnn::DataLayout::NCHW) |