From 3aab7c301bcbc206169c12ac04162b1445b4d472 Mon Sep 17 00:00:00 2001 From: jimfly01 Date: Mon, 12 Nov 2018 13:32:08 +0000 Subject: IVGCVSW-2017: Refactored L2Normalisation Tests * L2Normalisation Tests now take the layout as an argument. Change-Id: Ib393889eedb3a81c9a500da91593e90a18549c33 --- src/backends/backendsCommon/test/LayerTests.cpp | 375 +++++------------------- src/backends/backendsCommon/test/LayerTests.hpp | 17 +- src/backends/cl/test/ClLayerTests.cpp | 18 +- src/backends/neon/test/NeonLayerTests.cpp | 18 +- src/backends/reference/test/RefLayerTests.cpp | 17 +- 5 files changed, 111 insertions(+), 334 deletions(-) diff --git a/src/backends/backendsCommon/test/LayerTests.cpp b/src/backends/backendsCommon/test/LayerTests.cpp index 85b3e1b2b7..2556a3e1f5 100755 --- a/src/backends/backendsCommon/test/LayerTests.cpp +++ b/src/backends/backendsCommon/test/LayerTests.cpp @@ -66,6 +66,24 @@ static std::vector ConvInput3x8x16({ // 2-channel bias used by a number of Conv2d tests. static std::vector Bias2({0, 2}); +armnn::TensorShape GetTestTensorShape(unsigned int numberOfBatches, + unsigned int numberOfChannels, + unsigned int height, + unsigned int width, + const armnn::DataLayoutIndexed& dataLayout) +{ + switch (dataLayout.GetDataLayout()) + { + case armnn::DataLayout::NCHW: + return armnn::TensorShape({numberOfBatches, numberOfChannels, height, width}); + case armnn::DataLayout::NHWC: + return armnn::TensorShape({numberOfBatches, height, width, numberOfChannels}); + default: + throw armnn::InvalidArgumentException("unknown data layout [" + + std::to_string(static_cast(dataLayout.GetDataLayout())) + "]"); + } +} + // Helper function that returns either Bias2 or an empty vector depending on whether bias is enabled. template boost::multi_array GetBias2(bool biasEnabled, float qScale, int32_t qOffset) @@ -3396,21 +3414,38 @@ LayerTestResult L2NormalizationTestImpl(armnn::IWorkloadFactory& workl const armnn::TensorShape& inputOutputTensorShape, const std::vector& inputValues, const std::vector& expectedOutputValues, - armnn::DataLayout dataLayout) + const armnn::DataLayoutIndexed& layout) { const armnn::TensorInfo inputTensorInfo(inputOutputTensorShape, armnn::DataType::Float32); const armnn::TensorInfo outputTensorInfo(inputOutputTensorShape, armnn::DataType::Float32); - auto inputTensor = MakeTensor(inputTensorInfo, std::vector(inputValues)); + // at this point if we require it permute the input data + const armnn::PermutationVector NCHWToNHWC = { 0, 3, 1, 2 }; + std::vector inputData = inputValues; + if (layout.GetDataLayout() == armnn::DataLayout::NHWC) + { + std::vector tmp(inputData.size()); + armnnUtils::Permute(inputTensorInfo.GetShape(), NCHWToNHWC, inputData.data(), tmp.data()); + inputData = tmp; + } + + auto inputTensor = MakeTensor(inputTensorInfo, std::vector(inputData)); LayerTestResult result(outputTensorInfo); - result.outputExpected = MakeTensor(inputTensorInfo, std::vector(expectedOutputValues)); + std::vector expectedOutputData = expectedOutputValues; + if (layout.GetDataLayout() == armnn::DataLayout::NHWC) + { + std::vector tmp(expectedOutputData.size()); + armnnUtils::Permute(inputTensorInfo.GetShape(), NCHWToNHWC, expectedOutputData.data(), tmp.data()); + expectedOutputData = tmp; + } + result.outputExpected = MakeTensor(inputTensorInfo, std::vector(expectedOutputData)); std::unique_ptr inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo); std::unique_ptr outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo); armnn::L2NormalizationQueueDescriptor descriptor; - descriptor.m_Parameters.m_DataLayout = dataLayout; + descriptor.m_Parameters.m_DataLayout = layout.GetDataLayout(); armnn::WorkloadInfo info; AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get()); @@ -3848,14 +3883,21 @@ LayerTestResult PadFloat324dTest(armnn::IWorkloadFactory& workloadFact return Pad4dTestCommon(workloadFactory, 0.0f, 0); } -LayerTestResult L2Normalization1dTest(armnn::IWorkloadFactory& workloadFactory) +LayerTestResult L2Normalization1dTest(armnn::IWorkloadFactory& workloadFactory, + const armnn::DataLayoutIndexed& layout) { // Width: 1 // Height: 1 // Channels: 10 // BatchSize: 1 + unsigned int numberOfBatches = 1; + unsigned int numberOfChannels = 10; + unsigned int height = 1; + unsigned int width = 1; + - const armnn::TensorShape inputOutputShape{ 1, 10, 1, 1 }; + const armnn::TensorShape inputOutputShape = GetTestTensorShape( + numberOfBatches, numberOfChannels, height, width, layout); std::vector inputValues { // Batch 0, Channel 0, Height (1) x Width (1) @@ -3905,50 +3947,23 @@ LayerTestResult L2Normalization1dTest(armnn::IWorkloadFactory& workloa }; return L2NormalizationTestImpl(workloadFactory, inputOutputShape, - inputValues, expectedOutputValues, armnn::DataLayout::NCHW); -} - -LayerTestResult L2Normalization1dNhwcTest(armnn::IWorkloadFactory& workloadFactory) -{ - // Width: 1 - // Height: 1 - // Channels: 10 - // BatchSize: 1 - - const armnn::TensorShape inputOutputShape{ 1, 1, 1, 10 }; - std::vector inputValues - { - // Batch 0, Height 0, Width (1) x Channel (10) - 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f - }; - const float approxInvL2Norm = 0.050964719f; - std::vector expectedOutputValues - { - // Batch 0, Height 0, Width (1) x Channel (10) - 1.0f * approxInvL2Norm, - 2.0f * approxInvL2Norm, - 3.0f * approxInvL2Norm, - 4.0f * approxInvL2Norm, - 5.0f * approxInvL2Norm, - 6.0f * approxInvL2Norm, - 7.0f * approxInvL2Norm, - 8.0f * approxInvL2Norm, - 9.0f * approxInvL2Norm, - 10.0f * approxInvL2Norm - }; - - return L2NormalizationTestImpl(workloadFactory, inputOutputShape, - inputValues, expectedOutputValues, armnn::DataLayout::NHWC); + inputValues, expectedOutputValues, layout); } -LayerTestResult L2Normalization2dTest(armnn::IWorkloadFactory& workloadFactory) +LayerTestResult L2Normalization2dTest(armnn::IWorkloadFactory& workloadFactory, + const armnn::DataLayoutIndexed& layout) { // Width: 5 // Height: 1 // Channels: 2 // BatchSize: 1 + unsigned int numberOfBatches = 1; + unsigned int numberOfChannels = 2; + unsigned int height = 1; + unsigned int width = 5; - const armnn::TensorShape inputOutputShape{ 1, 2, 1, 5 }; + const armnn::TensorShape inputOutputShape = GetTestTensorShape( + numberOfBatches, numberOfChannels, height, width, layout); std::vector inputValues { // Batch 0, Channel 0, Height (1) x Width (5) @@ -3975,53 +3990,23 @@ LayerTestResult L2Normalization2dTest(armnn::IWorkloadFactory& workloa }; return L2NormalizationTestImpl(workloadFactory, inputOutputShape, - inputValues, expectedOutputValues, armnn::DataLayout::NCHW); -} - -LayerTestResult L2Normalization2dNhwcTest(armnn::IWorkloadFactory& workloadFactory) -{ - // Width: 5 - // Height: 1 - // Channels: 2 - // BatchSize: 1 - - const armnn::TensorShape inputOutputShape{ 1, 1, 5, 2 }; - std::vector inputValues - { - // Batch 0, Height 0, Width (5) x Channel (2) - 1.0f, 2.0f, - 3.0f, 4.0f, - 5.0f, 6.0f, - 7.0f, 8.0f, - 9.0f, 10.0f - }; - std::vector expectedOutputValues - { - // Batch 0, Height 0, Width (5) x Channel (2) - 1.0f * CalcInvL2Norm({ 1.0f, 2.0f }), - 2.0f * CalcInvL2Norm({ 1.0f, 2.0f }), - 3.0f * CalcInvL2Norm({ 3.0f, 4.0f }), - 4.0f * CalcInvL2Norm({ 3.0f, 4.0f }), - 5.0f * CalcInvL2Norm({ 5.0f, 6.0f }), - 6.0f * CalcInvL2Norm({ 5.0f, 6.0f }), - 7.0f * CalcInvL2Norm({ 7.0f, 8.0f }), - 8.0f * CalcInvL2Norm({ 7.0f, 8.0f }), - 9.0f * CalcInvL2Norm({ 9.0f, 10.0f }), - 10.0f * CalcInvL2Norm({ 9.0f, 10.0f }) - }; - - return L2NormalizationTestImpl(workloadFactory, inputOutputShape, - inputValues, expectedOutputValues, armnn::DataLayout::NHWC); + inputValues, expectedOutputValues, layout); } -LayerTestResult L2Normalization3dTest(armnn::IWorkloadFactory& workloadFactory) +LayerTestResult L2Normalization3dTest(armnn::IWorkloadFactory& workloadFactory, + const armnn::DataLayoutIndexed& layout) { // Width: 3 // Height: 4 // Channels: 2 // BatchSize: 1 + unsigned int numberOfBatches = 1; + unsigned int numberOfChannels = 2; + unsigned int height = 4; + unsigned int width = 3; - const armnn::TensorShape inputOutputShape{ 1, 2, 4, 3 }; + const armnn::TensorShape inputOutputShape = GetTestTensorShape( + numberOfBatches, numberOfChannels, height, width, layout); std::vector inputValues { // Batch 0, Channel 0, Height (4) x Width (3) @@ -4068,86 +4053,23 @@ LayerTestResult L2Normalization3dTest(armnn::IWorkloadFactory& workloa }; return L2NormalizationTestImpl(workloadFactory, inputOutputShape, - inputValues, expectedOutputValues, armnn::DataLayout::NCHW); + inputValues, expectedOutputValues, layout); } -LayerTestResult L2Normalization3dNhwcTest(armnn::IWorkloadFactory& workloadFactory) -{ - // Width: 3 - // Height: 4 - // Channels: 2 - // BatchSize: 1 - - const armnn::TensorShape inputOutputShape{ 1, 4, 3, 2 }; - std::vector inputValues - { - // Batch 0, Height 0, Width (3) x Channel (2) - 119.0f, 110.0f, - 21.0f, 140.0f, - 150.0f, 73.0f, - - // Batch 0, Height 1, Width (3) x Channel (2) - 149.0f, 211.0f, - 32.0f, 212.0f, - 179.0f, 89.0f, - - // Batch 0, Height 2, Width (3) x Channel (2) - 15.0f, 24.0f, - 227.0f, 138.0f, - 141.0f, 188.0f, - - // Batch 0, Height 3, Width (3) x Channel (2) - 147.0f, 162.0f, - 199.0f, 12.0f, - 220.0f, 161.0f - }; - std::vector expectedOutputValues - { - // Batch 0, Height 0, Width (3) x Channel (2) - 119.0f * CalcInvL2Norm({ 119.0f, 110.0f }), - 110.0f * CalcInvL2Norm({ 119.0f, 110.0f }), - 21.0f * CalcInvL2Norm({ 21.0f, 140.0f }), - 140.0f * CalcInvL2Norm({ 21.0f, 140.0f }), - 150.0f * CalcInvL2Norm({ 150.0f, 73.0f }), - 73.0f * CalcInvL2Norm({ 150.0f, 73.0f }), - - // Batch 0, Height 1, Width (3) x Channel (2) - 149.0f * CalcInvL2Norm({ 149.0f, 211.0f }), - 211.0f * CalcInvL2Norm({ 149.0f, 211.0f }), - 32.0f * CalcInvL2Norm({ 32.0f, 212.0f }), - 212.0f * CalcInvL2Norm({ 32.0f, 212.0f }), - 179.0f * CalcInvL2Norm({ 179.0f, 89.0f }), - 89.0f * CalcInvL2Norm({ 179.0f, 89.0f }), - - // Batch 0, Height 2, Width (3) x Channel (2) - 15.0f * CalcInvL2Norm({ 15.0f, 24.0f }), - 24.0f * CalcInvL2Norm({ 15.0f, 24.0f }), - 227.0f * CalcInvL2Norm({ 227.0f, 138.0f }), - 138.0f * CalcInvL2Norm({ 227.0f, 138.0f }), - 141.0f * CalcInvL2Norm({ 141.0f, 188.0f }), - 188.0f * CalcInvL2Norm({ 141.0f, 188.0f }), - - // Batch 0, Height 3, Width (3) x Channel (2) - 147.0f * CalcInvL2Norm({ 147.0f, 162.0f }), - 162.0f * CalcInvL2Norm({ 147.0f, 162.0f }), - 199.0f * CalcInvL2Norm({ 199.0f, 12.0f }), - 12.0f * CalcInvL2Norm({ 199.0f, 12.0f }), - 220.0f * CalcInvL2Norm({ 220.0f, 161.0f }), - 161.0f * CalcInvL2Norm({ 220.0f, 161.0f }) - }; - - return L2NormalizationTestImpl(workloadFactory, inputOutputShape, - inputValues, expectedOutputValues, armnn::DataLayout::NHWC); -} - -LayerTestResult L2Normalization4dTest(armnn::IWorkloadFactory& workloadFactory) +LayerTestResult L2Normalization4dTest(armnn::IWorkloadFactory& workloadFactory, + const armnn::DataLayoutIndexed& layout) { // Width: 3 // Height: 4 // Channels: 3 // BatchSize: 2 + unsigned int numberOfBatches = 2; + unsigned int numberOfChannels = 3; + unsigned int height = 4; + unsigned int width = 3; - const armnn::TensorShape inputOutputShape{ 2, 3, 4, 3 }; + const armnn::TensorShape inputOutputShape = GetTestTensorShape( + numberOfBatches, numberOfChannels, height, width, layout); std::vector inputValues { // Batch 0, Channel 0, Height (4) x Width (3) @@ -4274,152 +4196,7 @@ LayerTestResult L2Normalization4dTest(armnn::IWorkloadFactory& workloa }; return L2NormalizationTestImpl(workloadFactory, inputOutputShape, - inputValues, expectedOutputValues, armnn::DataLayout::NCHW); -} - -LayerTestResult L2Normalization4dNhwcTest(armnn::IWorkloadFactory& workloadFactory) -{ - // Width: 3 - // Height: 4 - // Channels: 3 - // BatchSize: 2 - - const armnn::TensorShape inputOutputShape{ 2, 4, 3, 3 }; - std::vector inputValues - { - // Batch 0, Height 0, Width (3) x Channel (3) - 235.0f, 113.0f, 56.0f, - 46.0f, 95.0f, 170.0f, - 178.0f, 202.0f, 162.0f, - - // Batch 0, Height 1, Width (3) x Channel (3) - 100.0f, 77.0f, 194.0f, - 123.0f, 114.0f, 89.0f, - 19.0f, 71.0f, 254.0f, - - // Batch 0, Height 2, Width (3) x Channel (3) - 172.0f, 122.0f, 12.0f, - 74.0f, 246.0f, 209.0f, - 250.0f, 166.0f, 200.0f, - - // Batch 0, Height 3, Width (3) x Channel (3) - 6.0f, 82.0f, 1.0f, - 195.0f, 28.0f, 64.0f, - 80.0f, 37.0f, 54.0f, - - // Batch 1, Height 0, Width (3) x Channel (3) - 67.0f, 239.0f, 97.0f, - 90.0f, 104.0f, 145.0f, - 49.0f, 199.0f, 215.0f, - - // Batch 1, Height 1, Width (3) x Channel (3) - 7.0f, 17.0f, 115.0f, - 163.0f, 124.0f, 116.0f, - 18.0f, 153.0f, 238.0f, - - // Batch 1, Height 2, Width (3) x Channel (3) - 25.0f, 222.0f, 226.0f, - 117.0f, 217.0f, 16.0f, - 103.0f, 75.0f, 132.0f, - - // Batch 1, Height 3, Width (3) x Channel (3) - 247.0f, 32.0f, 92.0f, - 59.0f, 126.0f, 125.0f, - 189.0f, 21.0f, 88.0f - }; - std::vector expectedOutputValues - { - // Batch 0, Height 0, Width (3) x Channel (3) - 235.0f * CalcInvL2Norm({ 235.0f, 113.0f, 56.0f }), - 113.0f * CalcInvL2Norm({ 235.0f, 113.0f, 56.0f }), - 56.0f * CalcInvL2Norm({ 235.0f, 113.0f, 56.0f }), - 46.0f * CalcInvL2Norm({ 46.0f, 95.0f, 170.0f }), - 95.0f * CalcInvL2Norm({ 46.0f, 95.0f, 170.0f }), - 170.0f * CalcInvL2Norm({ 46.0f, 95.0f, 170.0f }), - 178.0f * CalcInvL2Norm({ 178.0f, 202.0F, 162.0f }), - 202.0f * CalcInvL2Norm({ 178.0f, 202.0F, 162.0f }), - 162.0f * CalcInvL2Norm({ 178.0f, 202.0F, 162.0f }), - - // Batch 0, Height 1, Width (3) x Channel (3) - 100.0f * CalcInvL2Norm({ 100.0f, 77.0f, 194.0f }), - 77.0f * CalcInvL2Norm({ 100.0f, 77.0f, 194.0f }), - 194.0f * CalcInvL2Norm({ 100.0f, 77.0f, 194.0f }), - 123.0f * CalcInvL2Norm({ 123.0f, 114.0f, 89.0f }), - 114.0f * CalcInvL2Norm({ 123.0f, 114.0f, 89.0f }), - 89.0f * CalcInvL2Norm({ 123.0f, 114.0f, 89.0f }), - 19.0f * CalcInvL2Norm({ 19.0f, 71.0f, 254.0f }), - 71.0f * CalcInvL2Norm({ 19.0f, 71.0f, 254.0f }), - 254.0f * CalcInvL2Norm({ 19.0f, 71.0f, 254.0f }), - - // Batch 0, Height 2, Width (3) x Channel (3) - 172.0f * CalcInvL2Norm({ 172.0f, 122.0f, 12.0f }), - 122.0f * CalcInvL2Norm({ 172.0f, 122.0f, 12.0f }), - 12.0f * CalcInvL2Norm({ 172.0f, 122.0f, 12.0f }), - 74.0f * CalcInvL2Norm({ 74.0f, 246.0f, 209.0f }), - 246.0f * CalcInvL2Norm({ 74.0f, 246.0f, 209.0f }), - 209.0f * CalcInvL2Norm({ 74.0f, 246.0f, 209.0f }), - 250.0f * CalcInvL2Norm({ 250.0f, 166.0f, 200.0f }), - 166.0f * CalcInvL2Norm({ 250.0f, 166.0f, 200.0f }), - 200.0f * CalcInvL2Norm({ 250.0f, 166.0f, 200.0f }), - - // Batch 0, Height 3, Width (3) x Channel (3) - 6.0f * CalcInvL2Norm({ 6.0f, 82.0f, 1.0f }), - 82.0f * CalcInvL2Norm({ 6.0f, 82.0f, 1.0f }), - 1.0f * CalcInvL2Norm({ 6.0f, 82.0f, 1.0f }), - 195.0f * CalcInvL2Norm({ 195.0f, 28.0f, 64.0f }), - 28.0f * CalcInvL2Norm({ 195.0f, 28.0f, 64.0f }), - 64.0f * CalcInvL2Norm({ 195.0f, 28.0f, 64.0f }), - 80.0f * CalcInvL2Norm({ 80.0f, 37.0f, 54.0f }), - 37.0f * CalcInvL2Norm({ 80.0f, 37.0f, 54.0f }), - 54.0f * CalcInvL2Norm({ 80.0f, 37.0f, 54.0f }), - - // Batch 1, Height 0, Width (3) x Channel (3) - 67.0f * CalcInvL2Norm({ 67.0f, 239.0f, 97.0f }), - 239.0f * CalcInvL2Norm({ 67.0f, 239.0f, 97.0f }), - 97.0f * CalcInvL2Norm({ 67.0f, 239.0f, 97.0f }), - 90.0f * CalcInvL2Norm({ 90.0f, 104.0f, 145.0f }), - 104.0f * CalcInvL2Norm({ 90.0f, 104.0f, 145.0f }), - 145.0f * CalcInvL2Norm({ 90.0f, 104.0f, 145.0f }), - 49.0f * CalcInvL2Norm({ 49.0f, 199.0f, 215.0f }), - 199.0f * CalcInvL2Norm({ 49.0f, 199.0f, 215.0f }), - 215.0f * CalcInvL2Norm({ 49.0f, 199.0f, 215.0f }), - - // Batch 1, Height 1, Width (3) x Channel (3) - 7.0f * CalcInvL2Norm({ 7.0f, 17.0f, 115.0f }), - 17.0f * CalcInvL2Norm({ 7.0f, 17.0f, 115.0f }), - 115.0f * CalcInvL2Norm({ 7.0f, 17.0f, 115.0f }), - 163.0f * CalcInvL2Norm({ 163.0f, 124.0f, 116.0f }), - 124.0f * CalcInvL2Norm({ 163.0f, 124.0f, 116.0f }), - 116.0f * CalcInvL2Norm({ 163.0f, 124.0f, 116.0f }), - 18.0f * CalcInvL2Norm({ 18.0f, 153.0f, 238.0f }), - 153.0f * CalcInvL2Norm({ 18.0f, 153.0f, 238.0f }), - 238.0f * CalcInvL2Norm({ 18.0f, 153.0f, 238.0f }), - - // Batch 1, Height 2, Width (3) x Channel (3) - 25.0f * CalcInvL2Norm({ 25.0f, 222.0f, 226.0f }), - 222.0f * CalcInvL2Norm({ 25.0f, 222.0f, 226.0f }), - 226.0f * CalcInvL2Norm({ 25.0f, 222.0f, 226.0f }), - 117.0f * CalcInvL2Norm({ 117.0f, 217.0f, 16.0f }), - 217.0f * CalcInvL2Norm({ 117.0f, 217.0f, 16.0f }), - 16.0f * CalcInvL2Norm({ 117.0f, 217.0f, 16.0f }), - 103.0f * CalcInvL2Norm({ 103.0f, 75.0f, 132.0f }), - 75.0f * CalcInvL2Norm({ 103.0f, 75.0f, 132.0f }), - 132.0f * CalcInvL2Norm({ 103.0f, 75.0f, 132.0f }), - - // Batch 1, Height 3, Width (3) x Channel (3) - 247.0f * CalcInvL2Norm({ 247.0f, 32.0f, 92.0f }), - 32.0f * CalcInvL2Norm({ 247.0f, 32.0f, 92.0f }), - 92.0f * CalcInvL2Norm({ 247.0f, 32.0f, 92.0f }), - 59.0f * CalcInvL2Norm({ 59.0f, 126.0f, 125.0f }), - 126.0f * CalcInvL2Norm({ 59.0f, 126.0f, 125.0f }), - 125.0f * CalcInvL2Norm({ 59.0f, 126.0f, 125.0f }), - 189.0f * CalcInvL2Norm({ 189.0f, 21.0f, 88.0f }), - 21.0f * CalcInvL2Norm({ 189.0f, 21.0f, 88.0f }), - 88.0f * CalcInvL2Norm({ 189.0f, 21.0f, 88.0f }) - }; - - return L2NormalizationTestImpl(workloadFactory, inputOutputShape, - inputValues, expectedOutputValues, armnn::DataLayout::NHWC); + inputValues, expectedOutputValues, layout); } template diff --git a/src/backends/backendsCommon/test/LayerTests.hpp b/src/backends/backendsCommon/test/LayerTests.hpp index cd8758e477..34d55832da 100644 --- a/src/backends/backendsCommon/test/LayerTests.hpp +++ b/src/backends/backendsCommon/test/LayerTests.hpp @@ -280,15 +280,14 @@ LayerTestResult BatchNormNhwcTest(armnn::IWorkloadFactory& workloadFac LayerTestResult FakeQuantizationTest(armnn::IWorkloadFactory& workloadFactory); -LayerTestResult L2Normalization1dTest(armnn::IWorkloadFactory& workloadFactory); -LayerTestResult L2Normalization2dTest(armnn::IWorkloadFactory& workloadFactory); -LayerTestResult L2Normalization3dTest(armnn::IWorkloadFactory& workloadFactory); -LayerTestResult L2Normalization4dTest(armnn::IWorkloadFactory& workloadFactory); - -LayerTestResult L2Normalization1dNhwcTest(armnn::IWorkloadFactory& workloadFactory); -LayerTestResult L2Normalization2dNhwcTest(armnn::IWorkloadFactory& workloadFactory); -LayerTestResult L2Normalization3dNhwcTest(armnn::IWorkloadFactory& workloadFactory); -LayerTestResult L2Normalization4dNhwcTest(armnn::IWorkloadFactory& workloadFactory); +LayerTestResult L2Normalization1dTest(armnn::IWorkloadFactory& workloadFactory, + const armnn::DataLayoutIndexed& layout); +LayerTestResult L2Normalization2dTest(armnn::IWorkloadFactory& workloadFactory, + const armnn::DataLayoutIndexed& layout); +LayerTestResult L2Normalization3dTest(armnn::IWorkloadFactory& workloadFactory, + const armnn::DataLayoutIndexed& layout); +LayerTestResult L2Normalization4dTest(armnn::IWorkloadFactory& workloadFactory, + const armnn::DataLayoutIndexed& layout); LayerTestResult ConstantTest(armnn::IWorkloadFactory& workloadFactory); diff --git a/src/backends/cl/test/ClLayerTests.cpp b/src/backends/cl/test/ClLayerTests.cpp index c7d64ef607..2559fb45ae 100755 --- a/src/backends/cl/test/ClLayerTests.cpp +++ b/src/backends/cl/test/ClLayerTests.cpp @@ -224,15 +224,15 @@ ARMNN_AUTO_TEST_CASE(BatchNorm, BatchNormTest) ARMNN_AUTO_TEST_CASE(BatchNormNhwc, BatchNormNhwcTest) // L2 Normalization -ARMNN_AUTO_TEST_CASE(L2Normalization1d, L2Normalization1dTest) -ARMNN_AUTO_TEST_CASE(L2Normalization2d, L2Normalization2dTest) -ARMNN_AUTO_TEST_CASE(L2Normalization3d, L2Normalization3dTest) -ARMNN_AUTO_TEST_CASE(L2Normalization4d, L2Normalization4dTest) - -ARMNN_AUTO_TEST_CASE(L2Normalization1dNhwc, L2Normalization1dNhwcTest) -ARMNN_AUTO_TEST_CASE(L2Normalization2dNhwc, L2Normalization2dNhwcTest) -ARMNN_AUTO_TEST_CASE(L2Normalization3dNhwc, L2Normalization3dNhwcTest) -ARMNN_AUTO_TEST_CASE(L2Normalization4dNhwc, L2Normalization4dNhwcTest) +ARMNN_AUTO_TEST_CASE(L2Normalization1d, L2Normalization1dTest, armnn::DataLayout::NCHW) +ARMNN_AUTO_TEST_CASE(L2Normalization2d, L2Normalization2dTest, armnn::DataLayout::NCHW) +ARMNN_AUTO_TEST_CASE(L2Normalization3d, L2Normalization3dTest, armnn::DataLayout::NCHW) +ARMNN_AUTO_TEST_CASE(L2Normalization4d, L2Normalization4dTest, armnn::DataLayout::NCHW) + +ARMNN_AUTO_TEST_CASE(L2Normalization1dNhwc, L2Normalization1dTest, armnn::DataLayout::NHWC) +ARMNN_AUTO_TEST_CASE(L2Normalization2dNhwc, L2Normalization2dTest, armnn::DataLayout::NHWC) +ARMNN_AUTO_TEST_CASE(L2Normalization3dNhwc, L2Normalization3dTest, armnn::DataLayout::NHWC) +ARMNN_AUTO_TEST_CASE(L2Normalization4dNhwc, L2Normalization4dTest, armnn::DataLayout::NHWC) // Resize Bilinear - NCHW data layout ARMNN_AUTO_TEST_CASE(ResizeBilinearNop, ResizeBilinearNopTest, armnn::DataLayout::NCHW) diff --git a/src/backends/neon/test/NeonLayerTests.cpp b/src/backends/neon/test/NeonLayerTests.cpp index 48ef667323..d4bfa17960 100644 --- a/src/backends/neon/test/NeonLayerTests.cpp +++ b/src/backends/neon/test/NeonLayerTests.cpp @@ -415,15 +415,15 @@ ARMNN_AUTO_TEST_CASE(Concatenation3dDim2DiffInputDims, Concatenation3dDim2DiffIn ARMNN_AUTO_TEST_CASE(Concatenation3dDim2DiffInputDimsUint8, Concatenation3dDim2DiffInputDimsUint8Test) // L2 Normalization -ARMNN_AUTO_TEST_CASE(L2Normalization1d, L2Normalization1dTest) -ARMNN_AUTO_TEST_CASE(L2Normalization2d, L2Normalization2dTest) -ARMNN_AUTO_TEST_CASE(L2Normalization3d, L2Normalization3dTest) -ARMNN_AUTO_TEST_CASE(L2Normalization4d, L2Normalization4dTest) - -ARMNN_AUTO_TEST_CASE(L2Normalization1dNhwc, L2Normalization1dNhwcTest) -ARMNN_AUTO_TEST_CASE(L2Normalization2dNhwc, L2Normalization2dNhwcTest) -ARMNN_AUTO_TEST_CASE(L2Normalization3dNhwc, L2Normalization3dNhwcTest) -ARMNN_AUTO_TEST_CASE(L2Normalization4dNhwc, L2Normalization4dNhwcTest) +ARMNN_AUTO_TEST_CASE(L2Normalization1d, L2Normalization1dTest, armnn::DataLayout::NCHW) +ARMNN_AUTO_TEST_CASE(L2Normalization2d, L2Normalization2dTest, armnn::DataLayout::NCHW) +ARMNN_AUTO_TEST_CASE(L2Normalization3d, L2Normalization3dTest, armnn::DataLayout::NCHW) +ARMNN_AUTO_TEST_CASE(L2Normalization4d, L2Normalization4dTest, armnn::DataLayout::NCHW) + +ARMNN_AUTO_TEST_CASE(L2Normalization1dNhwc, L2Normalization1dTest, armnn::DataLayout::NHWC) +ARMNN_AUTO_TEST_CASE(L2Normalization2dNhwc, L2Normalization2dTest, armnn::DataLayout::NHWC) +ARMNN_AUTO_TEST_CASE(L2Normalization3dNhwc, L2Normalization3dTest, armnn::DataLayout::NHWC) +ARMNN_AUTO_TEST_CASE(L2Normalization4dNhwc, L2Normalization4dTest, armnn::DataLayout::NHWC) // Floor ARMNN_AUTO_TEST_CASE(SimpleFloor, SimpleFloorTest) diff --git a/src/backends/reference/test/RefLayerTests.cpp b/src/backends/reference/test/RefLayerTests.cpp index 95ddbadbcc..8bbf11bfad 100644 --- a/src/backends/reference/test/RefLayerTests.cpp +++ b/src/backends/reference/test/RefLayerTests.cpp @@ -270,10 +270,15 @@ ARMNN_AUTO_TEST_CASE(ResizeBilinearMagNhwc, ResizeBilinearMagTest, armnn::DataLa ARMNN_AUTO_TEST_CASE(FakeQuantization, FakeQuantizationTest) // L2 Normalization -ARMNN_AUTO_TEST_CASE(L2Normalization1d, L2Normalization1dTest) -ARMNN_AUTO_TEST_CASE(L2Normalization2d, L2Normalization2dTest) -ARMNN_AUTO_TEST_CASE(L2Normalization3d, L2Normalization3dTest) -ARMNN_AUTO_TEST_CASE(L2Normalization4d, L2Normalization4dTest) +ARMNN_AUTO_TEST_CASE(L2Normalization1d, L2Normalization1dTest, armnn::DataLayout::NCHW) +ARMNN_AUTO_TEST_CASE(L2Normalization2d, L2Normalization2dTest, armnn::DataLayout::NCHW) +ARMNN_AUTO_TEST_CASE(L2Normalization3d, L2Normalization3dTest, armnn::DataLayout::NCHW) +ARMNN_AUTO_TEST_CASE(L2Normalization4d, L2Normalization4dTest, armnn::DataLayout::NCHW) + +ARMNN_AUTO_TEST_CASE(L2Normalization1dNhwc, L2Normalization1dTest, armnn::DataLayout::NHWC) +ARMNN_AUTO_TEST_CASE(L2Normalization2dNhwc, L2Normalization2dTest, armnn::DataLayout::NHWC) +ARMNN_AUTO_TEST_CASE(L2Normalization3dNhwc, L2Normalization3dTest, armnn::DataLayout::NHWC) +ARMNN_AUTO_TEST_CASE(L2Normalization4dNhwc, L2Normalization4dTest, armnn::DataLayout::NHWC) // Pad ARMNN_AUTO_TEST_CASE(PadFloat322d, PadFloat322dTest) @@ -284,10 +289,6 @@ ARMNN_AUTO_TEST_CASE(PadUint82d, PadUint82dTest) ARMNN_AUTO_TEST_CASE(PadUint83d, PadUint83dTest) ARMNN_AUTO_TEST_CASE(PadUint84d, PadUint84dTest) -ARMNN_AUTO_TEST_CASE(L2Normalization1dNhwc, L2Normalization1dNhwcTest) -ARMNN_AUTO_TEST_CASE(L2Normalization2dNhwc, L2Normalization2dNhwcTest) -ARMNN_AUTO_TEST_CASE(L2Normalization3dNhwc, L2Normalization3dNhwcTest) -ARMNN_AUTO_TEST_CASE(L2Normalization4dNhwc, L2Normalization4dNhwcTest) // Constant ARMNN_AUTO_TEST_CASE(Constant, ConstantTest) -- cgit v1.2.1