From d8edabb894d723737f1cbd387779204b4441a801 Mon Sep 17 00:00:00 2001 From: Aron Virginas-Tar Date: Mon, 12 Aug 2019 14:29:59 +0100 Subject: IVGCVSW-3616 Add multi-channel unit test for TransposeConvolution2d Signed-off-by: Aron Virginas-Tar Change-Id: Ib9271920b39fb9d730006c79a322e32008096b56 --- src/backends/backendsCommon/test/LayerTests.cpp | 406 --------------------- src/backends/backendsCommon/test/LayerTests.hpp | 154 -------- .../test/TransposeConvolution2dTestImpl.hpp | 231 +++++++----- 3 files changed, 147 insertions(+), 644 deletions(-) (limited to 'src/backends/backendsCommon') diff --git a/src/backends/backendsCommon/test/LayerTests.cpp b/src/backends/backendsCommon/test/LayerTests.cpp index f431216969..6754106c49 100644 --- a/src/backends/backendsCommon/test/LayerTests.cpp +++ b/src/backends/backendsCommon/test/LayerTests.cpp @@ -10321,409 +10321,3 @@ LayerTestResult QuantizeClampInt16Test( { return QuantizeClampTest(workloadFactory, memoryManager); } - -// -// TransposeConvolution2d -// - -// Simple biased -LayerTestResult SimpleTransposeConvolution2dFloatNchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return SimpleTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - true, - armnn::DataLayout::NCHW); -} - -LayerTestResult SimpleTransposeConvolution2dFloatNhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return SimpleTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - true, - armnn::DataLayout::NHWC); -} - -LayerTestResult SimpleTransposeConvolution2dUint8NchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return SimpleTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - true, - armnn::DataLayout::NCHW); -} - -LayerTestResult SimpleTransposeConvolution2dUint8NhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return SimpleTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - true, - armnn::DataLayout::NHWC); -} - -LayerTestResult SimpleTransposeConvolution2dInt16NchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return SimpleTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - true, - armnn::DataLayout::NCHW); -} - -LayerTestResult SimpleTransposeConvolution2dInt16NhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return SimpleTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - true, - armnn::DataLayout::NHWC); -} - -// Simple unbiased -LayerTestResult UnbiasedSimpleTransposeConvolution2dFloatNchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return SimpleTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - false, - armnn::DataLayout::NCHW); -} - -LayerTestResult UnbiasedSimpleTransposeConvolution2dFloatNhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return SimpleTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - false, - armnn::DataLayout::NHWC); -} - -LayerTestResult UnbiasedSimpleTransposeConvolution2dUint8NchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return SimpleTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - false, - armnn::DataLayout::NCHW); -} - -LayerTestResult UnbiasedSimpleTransposeConvolution2dUint8NhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return SimpleTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - false, - armnn::DataLayout::NHWC); -} - -LayerTestResult UnbiasedSimpleTransposeConvolution2dInt16NchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return SimpleTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - false, - armnn::DataLayout::NCHW); -} - -LayerTestResult UnbiasedSimpleTransposeConvolution2dInt16NhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return SimpleTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - false, - armnn::DataLayout::NHWC); -} - -// Padded biased -LayerTestResult PaddedTransposeConvolution2dFloatNchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return PaddedTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - true, - armnn::DataLayout::NCHW); -} - -LayerTestResult PaddedTransposeConvolution2dFloatNhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return PaddedTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - true, - armnn::DataLayout::NHWC); -} - -LayerTestResult PaddedTransposeConvolution2dUint8NchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return PaddedTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - true, - armnn::DataLayout::NCHW); -} - -LayerTestResult PaddedTransposeConvolution2dUint8NhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return PaddedTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - true, - armnn::DataLayout::NHWC); -} - -LayerTestResult PaddedTransposeConvolution2dInt16NchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return PaddedTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - true, - armnn::DataLayout::NCHW); -} - -LayerTestResult PaddedTransposeConvolution2dInt16NhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return PaddedTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - true, - armnn::DataLayout::NHWC); -} - -// Padded unbiased -LayerTestResult UnbiasedPaddedTransposeConvolution2dFloatNchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return PaddedTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - false, - armnn::DataLayout::NCHW); -} - -LayerTestResult UnbiasedPaddedTransposeConvolution2dFloatNhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return PaddedTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - false, - armnn::DataLayout::NHWC); -} - -LayerTestResult UnbiasedPaddedTransposeConvolution2dUint8NchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return PaddedTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - false, - armnn::DataLayout::NCHW); -} - -LayerTestResult UnbiasedPaddedTransposeConvolution2dUint8NhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return PaddedTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - false, - armnn::DataLayout::NHWC); -} - -LayerTestResult UnbiasedPaddedTransposeConvolution2dInt16NchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return PaddedTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - false, - armnn::DataLayout::NCHW); -} - -LayerTestResult UnbiasedPaddedTransposeConvolution2dInt16NhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return PaddedTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - false, - armnn::DataLayout::NHWC); -} - -// Strided biased -LayerTestResult StridedTransposeConvolution2dFloatNchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return StridedTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - true, - armnn::DataLayout::NCHW); -} - -LayerTestResult StridedTransposeConvolution2dFloatNhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return StridedTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - true, - armnn::DataLayout::NHWC); -} - -LayerTestResult StridedTransposeConvolution2dUint8NchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return StridedTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - true, - armnn::DataLayout::NCHW); -} - -LayerTestResult StridedTransposeConvolution2dUint8NhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return StridedTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - true, - armnn::DataLayout::NHWC); -} - -LayerTestResult StridedTransposeConvolution2dInt16NchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return StridedTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - true, - armnn::DataLayout::NCHW); -} - -LayerTestResult StridedTransposeConvolution2dInt16NhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return StridedTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - true, - armnn::DataLayout::NHWC); -} - -// Strided unbiased -LayerTestResult UnbiasedStridedTransposeConvolution2dFloatNchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return StridedTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - false, - armnn::DataLayout::NCHW); -} - -LayerTestResult UnbiasedStridedTransposeConvolution2dFloatNhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return StridedTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - false, - armnn::DataLayout::NHWC); -} - -LayerTestResult UnbiasedStridedTransposeConvolution2dUint8NchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return StridedTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - false, - armnn::DataLayout::NCHW); -} - -LayerTestResult UnbiasedStridedTransposeConvolution2dUint8NhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return StridedTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - false, - armnn::DataLayout::NHWC); -} - -LayerTestResult UnbiasedStridedTransposeConvolution2dInt16NchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return StridedTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - false, - armnn::DataLayout::NCHW); -} - -LayerTestResult UnbiasedStridedTransposeConvolution2dInt16NhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager) -{ - return StridedTransposeConvolution2dTestImpl( - workloadFactory, - memoryManager, - false, - armnn::DataLayout::NHWC); -} \ No newline at end of file diff --git a/src/backends/backendsCommon/test/LayerTests.hpp b/src/backends/backendsCommon/test/LayerTests.hpp index 1121ae71e0..0fe5d09cd4 100644 --- a/src/backends/backendsCommon/test/LayerTests.hpp +++ b/src/backends/backendsCommon/test/LayerTests.hpp @@ -4361,160 +4361,6 @@ PreluTest( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); -// -// TransposeConvolution2d -// - -// Simple biased -LayerTestResult SimpleTransposeConvolution2dFloatNchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult SimpleTransposeConvolution2dFloatNhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult SimpleTransposeConvolution2dUint8NchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult SimpleTransposeConvolution2dUint8NhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult SimpleTransposeConvolution2dInt16NchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult SimpleTransposeConvolution2dInt16NhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -// Simple unbiased -LayerTestResult UnbiasedSimpleTransposeConvolution2dFloatNchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult UnbiasedSimpleTransposeConvolution2dFloatNhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult UnbiasedSimpleTransposeConvolution2dUint8NchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult UnbiasedSimpleTransposeConvolution2dUint8NhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult UnbiasedSimpleTransposeConvolution2dInt16NchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult UnbiasedSimpleTransposeConvolution2dInt16NhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -// Padded biased -LayerTestResult PaddedTransposeConvolution2dFloatNchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult PaddedTransposeConvolution2dFloatNhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult PaddedTransposeConvolution2dUint8NchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult PaddedTransposeConvolution2dUint8NhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult PaddedTransposeConvolution2dInt16NchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult PaddedTransposeConvolution2dInt16NhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -// Padded unbiased -LayerTestResult UnbiasedPaddedTransposeConvolution2dFloatNchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult UnbiasedPaddedTransposeConvolution2dFloatNhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult UnbiasedPaddedTransposeConvolution2dUint8NchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult UnbiasedPaddedTransposeConvolution2dUint8NhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult UnbiasedPaddedTransposeConvolution2dInt16NchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult UnbiasedPaddedTransposeConvolution2dInt16NhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -// Strided biased -LayerTestResult StridedTransposeConvolution2dFloatNchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult StridedTransposeConvolution2dFloatNhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult StridedTransposeConvolution2dUint8NchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult StridedTransposeConvolution2dUint8NhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult StridedTransposeConvolution2dInt16NchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult StridedTransposeConvolution2dInt16NhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -// Strided unbiased -LayerTestResult UnbiasedStridedTransposeConvolution2dFloatNchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult UnbiasedStridedTransposeConvolution2dFloatNhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult UnbiasedStridedTransposeConvolution2dUint8NchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult UnbiasedStridedTransposeConvolution2dUint8NhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult UnbiasedStridedTransposeConvolution2dInt16NchwTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - -LayerTestResult UnbiasedStridedTransposeConvolution2dInt16NhwcTest( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager); - template LayerTestResult StackTestHelper( armnn::IWorkloadFactory& workloadFactory, diff --git a/src/backends/backendsCommon/test/TransposeConvolution2dTestImpl.hpp b/src/backends/backendsCommon/test/TransposeConvolution2dTestImpl.hpp index 3bbd5d6770..bf424ebbaf 100644 --- a/src/backends/backendsCommon/test/TransposeConvolution2dTestImpl.hpp +++ b/src/backends/backendsCommon/test/TransposeConvolution2dTestImpl.hpp @@ -106,7 +106,7 @@ void TransposeConvolution2dTestImpl(armnn::IWorkloadFactory& workloadFactory, } template> -LayerTestResult TransposeConvolution2dTestImpl( +LayerTestResult TransposeConvolution2dTest( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, const armnn::TransposeConvolution2dDescriptor& descriptor, @@ -124,8 +124,8 @@ LayerTestResult TransposeConvolution2dTestImpl( // set up quantization parameters if (armnn::IsQuantizedType()) { - constexpr float qScale = 0.25f; - constexpr int32_t qOffset = 50; + constexpr float qScale = 0.50f; + constexpr int32_t qOffset = 10; inputInfo.SetQuantizationScale(qScale); inputInfo.SetQuantizationOffset(qOffset); @@ -191,10 +191,34 @@ LayerTestResult TransposeConvolution2dTestImpl( return testResult; } +template +void SwizzleData(const armnn::TensorInfo& inputInfo, + std::vector& inputData, + const armnn::TensorInfo& outputInfo, + std::vector& outputData, + const armnn::TensorInfo& weightsInfo, + std::vector& weightsData) +{ + constexpr size_t dataTypeSize = sizeof(float); + const armnn::PermutationVector nchwToNhwc = { 0, 3, 1, 2 }; + + std::vector tmp(inputData.size()); + armnnUtils::Permute(inputInfo.GetShape(), nchwToNhwc, inputData.data(), tmp.data(), dataTypeSize); + inputData = tmp; + + tmp.resize(weightsData.size()); + armnnUtils::Permute(weightsInfo.GetShape(), nchwToNhwc, weightsData.data(), tmp.data(), dataTypeSize); + weightsData = tmp; + + tmp.resize(outputData.size()); + armnnUtils::Permute(outputInfo.GetShape(), nchwToNhwc, outputData.data(), tmp.data(), dataTypeSize); + outputData = tmp; +} + } // anonymous namespace template> -LayerTestResult SimpleTransposeConvolution2dTestImpl( +LayerTestResult SimpleTransposeConvolution2dTest( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, bool biasEnabled, @@ -264,37 +288,24 @@ LayerTestResult SimpleTransposeConvolution2dTestImpl( // swizzle data if needed if (layout == armnn::DataLayout::NHWC) { - constexpr size_t dataTypeSize = sizeof(float); - const armnn::PermutationVector nchwToNhwc = { 0, 3, 1, 2 }; - - std::vector tmp(inputData.size()); - armnnUtils::Permute(inputInfo.GetShape(), nchwToNhwc, inputData.data(), tmp.data(), dataTypeSize); - inputData = tmp; - - tmp.resize(weightsData.size()); - armnnUtils::Permute(weightsInfo.GetShape(), nchwToNhwc, weightsData.data(), tmp.data(), dataTypeSize); - weightsData = tmp; - - tmp.resize(expectedOutputData.size()); - armnnUtils::Permute(outputInfo.GetShape(), nchwToNhwc, expectedOutputData.data(), tmp.data(), dataTypeSize); - expectedOutputData = tmp; + SwizzleData(inputInfo, inputData, outputInfo, expectedOutputData, weightsInfo, weightsData); } - return TransposeConvolution2dTestImpl(workloadFactory, - memoryManager, - descriptor, - inputInfo, - inputData, - outputInfo, - expectedOutputData, - weightsInfo, - weightsData, - biasesInfo, - biasesData); + return TransposeConvolution2dTest(workloadFactory, + memoryManager, + descriptor, + inputInfo, + inputData, + outputInfo, + expectedOutputData, + weightsInfo, + weightsData, + biasesInfo, + biasesData); } template> -LayerTestResult PaddedTransposeConvolution2dTestImpl( +LayerTestResult PaddedTransposeConvolution2dTest( armnn::IWorkloadFactory& workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, bool biasEnabled, @@ -366,41 +377,28 @@ LayerTestResult PaddedTransposeConvolution2dTestImpl( // swizzle data if needed if (layout == armnn::DataLayout::NHWC) { - constexpr size_t dataTypeSize = sizeof(float); - const armnn::PermutationVector nchwToNhwc = { 0, 3, 1, 2 }; - - std::vector tmp(inputData.size()); - armnnUtils::Permute(inputInfo.GetShape(), nchwToNhwc, inputData.data(), tmp.data(), dataTypeSize); - inputData = tmp; - - tmp.resize(weightsData.size()); - armnnUtils::Permute(weightsInfo.GetShape(), nchwToNhwc, weightsData.data(), tmp.data(), dataTypeSize); - weightsData = tmp; - - tmp.resize(expectedOutputData.size()); - armnnUtils::Permute(outputInfo.GetShape(), nchwToNhwc, expectedOutputData.data(), tmp.data(), dataTypeSize); - expectedOutputData = tmp; + SwizzleData(inputInfo, inputData, outputInfo, expectedOutputData, weightsInfo, weightsData); } - return TransposeConvolution2dTestImpl(workloadFactory, - memoryManager, - descriptor, - inputInfo, - inputData, - outputInfo, - expectedOutputData, - weightsInfo, - weightsData, - biasesInfo, - biasesData); + return TransposeConvolution2dTest(workloadFactory, + memoryManager, + descriptor, + inputInfo, + inputData, + outputInfo, + expectedOutputData, + weightsInfo, + weightsData, + biasesInfo, + biasesData); } - template> - LayerTestResult StridedTransposeConvolution2dTestImpl( - armnn::IWorkloadFactory& workloadFactory, - const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, - bool biasEnabled, - const armnn::DataLayout layout) +template> +LayerTestResult StridedTransposeConvolution2dTest( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, + bool biasEnabled, + const armnn::DataLayout layout) { using namespace armnn; @@ -468,31 +466,96 @@ LayerTestResult PaddedTransposeConvolution2dTestImpl( // swizzle data if needed if (layout == armnn::DataLayout::NHWC) { - constexpr size_t dataTypeSize = sizeof(float); - const armnn::PermutationVector nchwToNhwc = { 0, 3, 1, 2 }; + SwizzleData(inputInfo, inputData, outputInfo, expectedOutputData, weightsInfo, weightsData); + } + + return TransposeConvolution2dTest(workloadFactory, + memoryManager, + descriptor, + inputInfo, + inputData, + outputInfo, + expectedOutputData, + weightsInfo, + weightsData, + biasesInfo, + biasesData); +} + +template> +LayerTestResult MultiChannelTransposeConvolution2dTest( + armnn::IWorkloadFactory& workloadFactory, + const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager, + const armnn::DataLayout layout) +{ + using namespace armnn; - std::vector tmp(inputData.size()); - armnnUtils::Permute(inputInfo.GetShape(), nchwToNhwc, inputData.data(), tmp.data(), dataTypeSize); - inputData = tmp; + TensorShape inputShape = MakeTensorShape(1, 1, 2, 2, layout); + TensorShape outputShape = MakeTensorShape(1, 2, 5, 5, layout); - tmp.resize(weightsData.size()); - armnnUtils::Permute(weightsInfo.GetShape(), nchwToNhwc, weightsData.data(), tmp.data(), dataTypeSize); - weightsData = tmp; + TensorShape weightsShape = MakeTensorShape(1, 2, 3, 3, layout); + TensorShape biasesShape = { 2 }; - tmp.resize(expectedOutputData.size()); - armnnUtils::Permute(outputInfo.GetShape(), nchwToNhwc, expectedOutputData.data(), tmp.data(), dataTypeSize); - expectedOutputData = tmp; + TensorInfo inputInfo(inputShape, ArmnnType); + TensorInfo outputInfo(outputShape, ArmnnType); + TensorInfo weightsInfo(weightsShape, ArmnnType); + TensorInfo biasesInfo(biasesShape, ArmnnBType); + + std::vector inputData = + { + 1.f, 2.f, + 3.f, 4.f, + }; + + std::vector weightsData = + { + 1.f, 3.f, 5.f, + 7.f, 9.f, 11.f, + 13.f, 15.f, 17.f, + + 2.f, 4.f, 6.f, + 8.f, 10.f, 12.f, + 14.f, 16.f, 18.f + }; + + std::vector biasesData = { -1.5f, -2.0f }; + + std::vector expectedOutputData = + { + -0.5f, 1.5f, 5.5f, 4.5f, 8.5f, + 5.5f, 7.5f, 23.5f, 16.5f, 20.5f, + 14.5f, 22.5f, 60.5f, 40.5f, 52.5f, + 19.5f, 25.5f, 59.5f, 34.5f, 42.5f, + 37.5f, 43.5f, 101.5f, 58.5f, 66.5f, + + 0.0f, 2.0f, 8.0f, 6.0f, 10.0f, + 6.0f, 8.0f, 26.0f, 18.0f, 22.0f, + 18.0f, 26.0f, 70.0f, 46.0f, 58.0f, + 22.0f, 28.0f, 66.0f, 38.0f, 46.0f, + 40.0f, 46.0f, 108.0f, 62.0f, 70.0f, + }; + + TransposeConvolution2dDescriptor descriptor; + descriptor.m_StrideX = 2; + descriptor.m_StrideY = 2; + descriptor.m_BiasEnabled = true; + descriptor.m_DataLayout = layout; + + // swizzle data if needed + if (layout == armnn::DataLayout::NHWC) + { + SwizzleData(inputInfo, inputData, outputInfo, expectedOutputData, weightsInfo, weightsData); } - return TransposeConvolution2dTestImpl(workloadFactory, - memoryManager, - descriptor, - inputInfo, - inputData, - outputInfo, - expectedOutputData, - weightsInfo, - weightsData, - biasesInfo, - biasesData); -} \ No newline at end of file + return TransposeConvolution2dTest(workloadFactory, + memoryManager, + descriptor, + inputInfo, + inputData, + outputInfo, + expectedOutputData, + weightsInfo, + weightsData, + biasesInfo, + biasesData); +} -- cgit v1.2.1