From f08876fce2b472a8c31f09d976fbcfeaaa94d228 Mon Sep 17 00:00:00 2001 From: FrancisMurtagh Date: Mon, 4 Feb 2019 15:41:17 +0000 Subject: IVGCVSW-2551 Add Descriptor and name only unit tests for Visitor * Add concrete subclasses for layers taking descriptor as argument * Add unit test cases for all layers Change-Id: Ie0135b34a5a41e5ce654b7c3186eccea392ab919 Signed-off-by: FrancisMurtagh --- .../test/TestNameAndDescriptorLayerVisitor.cpp | 428 +++++++++++++++++++++ 1 file changed, 428 insertions(+) create mode 100644 src/armnn/test/TestNameAndDescriptorLayerVisitor.cpp (limited to 'src/armnn/test/TestNameAndDescriptorLayerVisitor.cpp') diff --git a/src/armnn/test/TestNameAndDescriptorLayerVisitor.cpp b/src/armnn/test/TestNameAndDescriptorLayerVisitor.cpp new file mode 100644 index 0000000000..dbadb75a09 --- /dev/null +++ b/src/armnn/test/TestNameAndDescriptorLayerVisitor.cpp @@ -0,0 +1,428 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// +#include "TestNameAndDescriptorLayerVisitor.hpp" +#include "Network.hpp" + +namespace armnn +{ + +void Set2dDataValues(SplitterDescriptor descriptor, u_int32_t value) +{ + for (unsigned int i = 0; i < descriptor.GetNumViews(); ++i) + { + for (unsigned int j = 0; j < descriptor.GetNumDimensions(); ++j) + { + descriptor.SetViewOriginCoord(i, j, value); + descriptor.SetViewSize(i, j, value); + } + } +} + +void Set2dDataValues(MergerDescriptor descriptor, u_int32_t value) +{ + for (unsigned int i = 0; i < descriptor.GetNumViews(); ++i) + { + for (unsigned int j = 0; j < descriptor.GetNumDimensions(); ++j) + { + descriptor.SetViewOriginCoord(i, j, value); + } + } +} + +BOOST_AUTO_TEST_SUITE(TestNameAndDescriptorLayerVisitor) + +BOOST_AUTO_TEST_CASE(CheckPermuteLayerVisitorNameAndDescriptor) +{ + const char* layerName = "PermuteLayer"; + PermuteDescriptor descriptor({0, 1, 2, 3}); + TestPermuteLayerVisitor visitor(descriptor, layerName); + Network net; + + IConnectableLayer *const layer = net.AddPermuteLayer(descriptor, layerName); + layer->Accept(visitor); +} + +BOOST_AUTO_TEST_CASE(CheckPermuteLayerVisitorNameNullAndDescriptor) +{ + PermuteDescriptor descriptor({0, 1, 2, 3}); + TestPermuteLayerVisitor visitor(descriptor); + Network net; + + IConnectableLayer *const layer = net.AddPermuteLayer(descriptor); + layer->Accept(visitor); +} + +BOOST_AUTO_TEST_CASE(CheckBatchToSpaceNdLayerVisitorNameAndDescriptor) +{ + const char* layerName = "BatchToSpaceNdLayer"; + BatchToSpaceNdDescriptor descriptor({1, 1}, {{0, 0}, {0, 0}}); + descriptor.m_DataLayout = armnn::DataLayout::NHWC; + TestBatchToSpaceNdLayerVisitor visitor(descriptor, layerName); + Network net; + + IConnectableLayer *const layer = net.AddBatchToSpaceNdLayer(descriptor, layerName); + layer->Accept(visitor); +} + +BOOST_AUTO_TEST_CASE(CheckBatchToSpaceNdLayerVisitorNameNullAndDescriptor) +{ + BatchToSpaceNdDescriptor descriptor({1, 1}, {{0, 0}, {0, 0}}); + descriptor.m_DataLayout = armnn::DataLayout::NHWC; + TestBatchToSpaceNdLayerVisitor visitor(descriptor); + Network net; + + IConnectableLayer *const layer = net.AddBatchToSpaceNdLayer(descriptor); + layer->Accept(visitor); +} + +BOOST_AUTO_TEST_CASE(CheckPooling2dLayerVisitorNameAndDescriptor) +{ + const char* layerName = "Pooling2dLayer"; + Pooling2dDescriptor descriptor; + descriptor.m_PoolType = PoolingAlgorithm::Max; + descriptor.m_PadLeft = 1; + descriptor.m_PadRight = 1; + descriptor.m_PadTop = 1; + descriptor.m_PadBottom = 1; + descriptor.m_PoolWidth = 1; + descriptor.m_PoolHeight = 1; + descriptor.m_StrideX = 1; + descriptor.m_StrideY = 1; + descriptor.m_OutputShapeRounding = OutputShapeRounding::Ceiling; + descriptor.m_PaddingMethod = PaddingMethod::IgnoreValue; + descriptor.m_DataLayout = DataLayout::NHWC; + TestPooling2dLayerVisitor visitor(descriptor, layerName); + Network net; + + IConnectableLayer *const layer = net.AddPooling2dLayer(descriptor, layerName); + layer->Accept(visitor); +} + +BOOST_AUTO_TEST_CASE(CheckPooling2dLayerVisitorNameNullAndDescriptor) +{ + Pooling2dDescriptor descriptor; + descriptor.m_PoolType = PoolingAlgorithm::Max; + descriptor.m_PadLeft = 1; + descriptor.m_PadRight = 1; + descriptor.m_PadTop = 1; + descriptor.m_PadBottom = 1; + descriptor.m_PoolWidth = 1; + descriptor.m_PoolHeight = 1; + descriptor.m_StrideX = 1; + descriptor.m_StrideY = 1; + descriptor.m_OutputShapeRounding = OutputShapeRounding::Ceiling; + descriptor.m_PaddingMethod = PaddingMethod::IgnoreValue; + descriptor.m_DataLayout = DataLayout::NHWC; + TestPooling2dLayerVisitor visitor(descriptor); + Network net; + + IConnectableLayer *const layer = net.AddPooling2dLayer(descriptor); + layer->Accept(visitor); +} + +BOOST_AUTO_TEST_CASE(CheckActivationLayerVisitorNameAndDescriptor) +{ + const char* layerName = "ActivationLayer"; + ActivationDescriptor descriptor; + descriptor.m_Function = ActivationFunction::Linear; + descriptor.m_A = 2; + descriptor.m_B = 2; + TestActivationLayerVisitor visitor(descriptor, layerName); + Network net; + + IConnectableLayer *const layer = net.AddActivationLayer(descriptor, layerName); + layer->Accept(visitor); +} + +BOOST_AUTO_TEST_CASE(CheckActivationLayerVisitorNameNullAndDescriptor) +{ + ActivationDescriptor descriptor; + descriptor.m_Function = ActivationFunction::Linear; + descriptor.m_A = 2; + descriptor.m_B = 2; + TestActivationLayerVisitor visitor(descriptor); + Network net; + + IConnectableLayer *const layer = net.AddActivationLayer(descriptor); + layer->Accept(visitor); +} + +BOOST_AUTO_TEST_CASE(CheckNormalizationLayerVisitorNameAndDescriptor) +{ + const char* layerName = "NormalizationLayer"; + NormalizationDescriptor descriptor; + descriptor.m_NormChannelType = NormalizationAlgorithmChannel::Within; + descriptor.m_NormMethodType = NormalizationAlgorithmMethod::LocalContrast; + descriptor.m_NormSize = 1; + descriptor.m_Alpha = 1; + descriptor.m_Beta = 1; + descriptor.m_K = 1; + descriptor.m_DataLayout = DataLayout::NHWC; + TestNormalizationLayerVisitor visitor(descriptor, layerName); + Network net; + + IConnectableLayer *const layer = net.AddNormalizationLayer(descriptor, layerName); + layer->Accept(visitor); +} + +BOOST_AUTO_TEST_CASE(CheckNormalizationLayerVisitorNameNullAndDescriptor) +{ + NormalizationDescriptor descriptor; + descriptor.m_NormChannelType = NormalizationAlgorithmChannel::Within; + descriptor.m_NormMethodType = NormalizationAlgorithmMethod::LocalContrast; + descriptor.m_NormSize = 1; + descriptor.m_Alpha = 1; + descriptor.m_Beta = 1; + descriptor.m_K = 1; + descriptor.m_DataLayout = DataLayout::NHWC; + TestNormalizationLayerVisitor visitor(descriptor); + Network net; + + IConnectableLayer *const layer = net.AddNormalizationLayer(descriptor); + layer->Accept(visitor); +} + +BOOST_AUTO_TEST_CASE(CheckSoftmaxLayerVisitorNameAndDescriptor) +{ + const char* layerName = "SoftmaxLayer"; + SoftmaxDescriptor descriptor; + descriptor.m_Beta = 2; + TestSoftmaxLayerVisitor visitor(descriptor, layerName); + Network net; + + IConnectableLayer *const layer = net.AddSoftmaxLayer(descriptor, layerName); + layer->Accept(visitor); +} + +BOOST_AUTO_TEST_CASE(CheckSoftmaxLayerVisitorNameNullAndDescriptor) +{ + SoftmaxDescriptor descriptor; + descriptor.m_Beta = 2; + TestSoftmaxLayerVisitor visitor(descriptor); + Network net; + + IConnectableLayer *const layer = net.AddSoftmaxLayer(descriptor); + layer->Accept(visitor); +} + +BOOST_AUTO_TEST_CASE(CheckSplitterLayerVisitorNameAndDescriptor) +{ + const char* layerName = "SplitterLayer"; + SplitterDescriptor descriptor(2, 2); + Set2dDataValues(descriptor, 1); + TestSplitterLayerVisitor visitor(descriptor, layerName); + Network net; + + IConnectableLayer *const layer = net.AddSplitterLayer(descriptor, layerName); + layer->Accept(visitor); +} + +BOOST_AUTO_TEST_CASE(CheckSplitterLayerVisitorNameNullAndDescriptor) +{ + SplitterDescriptor descriptor(2, 2); + Set2dDataValues(descriptor, 1); + TestSplitterLayerVisitor visitor(descriptor); + Network net; + + IConnectableLayer *const layer = net.AddSplitterLayer(descriptor); + layer->Accept(visitor); +} + +BOOST_AUTO_TEST_CASE(CheckMergerLayerVisitorNameAndDescriptor) +{ + const char* layerName = "MergerLayer"; + MergerDescriptor descriptor(2, 2); + Set2dDataValues(descriptor, 1); + descriptor.SetConcatAxis(1); + TestMergerLayerVisitor visitor(descriptor, layerName); + Network net; + + IConnectableLayer *const layer = net.AddMergerLayer(descriptor, layerName); + layer->Accept(visitor); +} + +BOOST_AUTO_TEST_CASE(CheckMergerLayerVisitorNameNullAndDescriptor) +{ + MergerDescriptor descriptor(2, 2); + Set2dDataValues(descriptor, 1); + descriptor.SetConcatAxis(1); + TestMergerLayerVisitor visitor(descriptor); + Network net; + + IConnectableLayer *const layer = net.AddMergerLayer(descriptor); + layer->Accept(visitor); +} + +BOOST_AUTO_TEST_CASE(CheckResizeBilinearLayerVisitorNameAndDescriptor) +{ + const char* layerName = "ResizeBilinearLayer"; + ResizeBilinearDescriptor descriptor; + descriptor.m_TargetHeight = 1; + descriptor.m_TargetWidth = 1; + descriptor.m_DataLayout = DataLayout::NHWC; + TestResizeBilinearLayerVisitor visitor(descriptor, layerName); + Network net; + + IConnectableLayer *const layer = net.AddResizeBilinearLayer(descriptor, layerName); + layer->Accept(visitor); +} + +BOOST_AUTO_TEST_CASE(CheckResizeBilinearLayerVisitorNameNullAndDescriptor) +{ + ResizeBilinearDescriptor descriptor; + descriptor.m_TargetHeight = 1; + descriptor.m_TargetWidth = 1; + descriptor.m_DataLayout = DataLayout::NHWC; + TestResizeBilinearLayerVisitor visitor(descriptor); + Network net; + + IConnectableLayer *const layer = net.AddResizeBilinearLayer(descriptor); + layer->Accept(visitor); +} + +BOOST_AUTO_TEST_CASE(CheckL2NormalizationLayerVisitorNameAndDescriptor) +{ + const char* layerName = "L2NormalizationLayer"; + L2NormalizationDescriptor descriptor; + descriptor.m_DataLayout = DataLayout::NHWC; + TestL2NormalizationLayerVisitor visitor(descriptor, layerName); + Network net; + + IConnectableLayer *const layer = net.AddL2NormalizationLayer(descriptor, layerName); + layer->Accept(visitor); +} + +BOOST_AUTO_TEST_CASE(CheckL2NormalizationLayerVisitorNameNullAndDescriptor) +{ + L2NormalizationDescriptor descriptor; + descriptor.m_DataLayout = DataLayout::NHWC; + TestL2NormalizationLayerVisitor visitor(descriptor); + Network net; + + IConnectableLayer *const layer = net.AddL2NormalizationLayer(descriptor); + layer->Accept(visitor); +} + +BOOST_AUTO_TEST_CASE(CheckReshapeLayerVisitorNameAndDescriptor) +{ + const char* layerName = "ReshapeLayer"; + ReshapeDescriptor descriptor({1, 2, 3, 4}); + TestReshapeLayerVisitor visitor(descriptor, layerName); + Network net; + + IConnectableLayer *const layer = net.AddReshapeLayer(descriptor, layerName); + layer->Accept(visitor); +} + +BOOST_AUTO_TEST_CASE(CheckReshapeLayerVisitorNameNullAndDescriptor) +{ + ReshapeDescriptor descriptor({1, 2, 3, 4}); + TestReshapeLayerVisitor visitor(descriptor); + Network net; + + IConnectableLayer *const layer = net.AddReshapeLayer(descriptor); + layer->Accept(visitor); +} + +BOOST_AUTO_TEST_CASE(CheckSpaceToBatchNdLayerVisitorNameAndDescriptor) +{ + const char* layerName = "SpaceToBatchNdLayer"; + SpaceToBatchNdDescriptor descriptor({2, 2}, {{1, 1}, {1, 1}}); + TestSpaceToBatchNdLayerVisitor visitor(descriptor, layerName); + Network net; + + IConnectableLayer *const layer = net.AddSpaceToBatchNdLayer(descriptor, layerName); + layer->Accept(visitor); +} + +BOOST_AUTO_TEST_CASE(CheckSpaceToBatchNdLayerVisitorNameNullAndDescriptor) +{ + SpaceToBatchNdDescriptor descriptor({2, 2}, {{1, 1}, {1, 1}}); + TestSpaceToBatchNdLayerVisitor visitor(descriptor); + Network net; + + IConnectableLayer *const layer = net.AddSpaceToBatchNdLayer(descriptor); + layer->Accept(visitor); +} + + +BOOST_AUTO_TEST_CASE(CheckMeanLayerVisitorNameAndDescriptor) +{ + const char* layerName = "MeanLayer"; + MeanDescriptor descriptor({1, 2}, false); + TestMeanLayerVisitor visitor(descriptor, layerName); + Network net; + + IConnectableLayer *const layer = net.AddMeanLayer(descriptor, layerName); + layer->Accept(visitor); +} + +BOOST_AUTO_TEST_CASE(CheckMeanLayerVisitorNameNullAndDescriptor) +{ + MeanDescriptor descriptor({1, 2}, false); + TestMeanLayerVisitor visitor(descriptor); + Network net; + + IConnectableLayer *const layer = net.AddMeanLayer(descriptor); + layer->Accept(visitor); +} + +BOOST_AUTO_TEST_CASE(CheckPadLayerVisitorNameAndDescriptor) +{ + const char* layerName = "PadLayer"; + PadDescriptor descriptor({{1, 2}, {3, 4}}); + TestPadLayerVisitor visitor(descriptor, layerName); + Network net; + + IConnectableLayer *const layer = net.AddPadLayer(descriptor, layerName); + layer->Accept(visitor); +} + +BOOST_AUTO_TEST_CASE(CheckPadLayerVisitorNameNullAndDescriptor) +{ + PadDescriptor descriptor({{1, 2}, {3, 4}}); + TestPadLayerVisitor visitor(descriptor); + Network net; + + IConnectableLayer *const layer = net.AddPadLayer(descriptor); + layer->Accept(visitor); +} + +BOOST_AUTO_TEST_CASE(CheckStridedSliceLayerVisitorNameAndDescriptor) +{ + const char* layerName = "StridedSliceLayer"; + StridedSliceDescriptor descriptor({1, 2}, {3, 4}, {3, 4}); + descriptor.m_BeginMask = 1; + descriptor.m_EndMask = 1; + descriptor.m_ShrinkAxisMask = 1; + descriptor.m_EllipsisMask = 1; + descriptor.m_NewAxisMask = 1; + descriptor.m_DataLayout = DataLayout::NHWC; + TestStridedSliceLayerVisitor visitor(descriptor, layerName); + Network net; + + IConnectableLayer *const layer = net.AddStridedSliceLayer(descriptor, layerName); + layer->Accept(visitor); +} + +BOOST_AUTO_TEST_CASE(CheckStridedSliceLayerVisitorNameNullAndDescriptor) +{ + StridedSliceDescriptor descriptor({1, 2}, {3, 4}, {3, 4}); + descriptor.m_BeginMask = 1; + descriptor.m_EndMask = 1; + descriptor.m_ShrinkAxisMask = 1; + descriptor.m_EllipsisMask = 1; + descriptor.m_NewAxisMask = 1; + descriptor.m_DataLayout = DataLayout::NHWC; + TestStridedSliceLayerVisitor visitor(descriptor); + Network net; + + IConnectableLayer *const layer = net.AddStridedSliceLayer(descriptor); + layer->Accept(visitor); +} + +BOOST_AUTO_TEST_SUITE_END() + +} //namespace armnn \ No newline at end of file -- cgit v1.2.1