From 1bf56cde4f199ea8df722d1875ee44bd0ffb414a Mon Sep 17 00:00:00 2001 From: Declan-ARM Date: Thu, 20 Jul 2023 17:32:57 +0100 Subject: IVGCVSW-7836 Add ReverseV2 End-to-End Tests * create implementation header * add copyright notice * add pragma once and anonymous namespace * create network function declaration * complete body of network function * create end-to-end function declaration * complete body of end-to-end function * add references to tests for supported data types Signed-off-by: Declan-ARM Signed-off-by: Matthew Sloyan Change-Id: I376e48efd8b6ca9e0e0b05b516be599c0acdbd16 --- .../test/ReverseV2EndToEndTestImpl.hpp | 72 ++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 src/backends/backendsCommon/test/ReverseV2EndToEndTestImpl.hpp (limited to 'src/backends/backendsCommon/test/ReverseV2EndToEndTestImpl.hpp') diff --git a/src/backends/backendsCommon/test/ReverseV2EndToEndTestImpl.hpp b/src/backends/backendsCommon/test/ReverseV2EndToEndTestImpl.hpp new file mode 100644 index 0000000000..b36d2eeb59 --- /dev/null +++ b/src/backends/backendsCommon/test/ReverseV2EndToEndTestImpl.hpp @@ -0,0 +1,72 @@ +// +// Copyright © 2023 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +namespace +{ + +armnn::INetworkPtr CreateReverseV2Network(const armnn::TensorInfo& inputInfo, + const armnn::TensorInfo& axisInfo, + const armnn::TensorInfo& outputInfo, + const std::vector& axisData) +{ + using namespace armnn; + + INetworkPtr network(INetwork::Create()); + + IConnectableLayer* inputLayer = network->AddInputLayer(0, "input"); + IConnectableLayer* axisLayer = network->AddConstantLayer(ConstTensor(axisInfo, axisData)); + IConnectableLayer* reverseLayer = network->AddReverseV2Layer("reverseV2"); + IConnectableLayer* outputLayer = network->AddOutputLayer(0, "output"); + + Connect(inputLayer, reverseLayer, inputInfo, 0, 0); + Connect(axisLayer, reverseLayer, axisInfo, 0, 1); + Connect(reverseLayer, outputLayer, outputInfo, 0, 0); + + return network; +} + +template > +void ReverseV2EndToEnd(const std::vector& backends) +{ + float qScale = 1.0f; + int32_t qOffset = 0; + bool qConst = true; + + TensorInfo inputInfo ( { 2, 3, 4 }, ArmnnType, qScale, qOffset, qConst); + TensorInfo axisInfo ( { 1 } , DataType::Signed32, qScale, qOffset, qConst); + TensorInfo outputInfo ( { 2, 3, 4 }, ArmnnType, qScale, qOffset); + + std::vector inputData = armnnUtils::QuantizedVector({ + 1, 2, 3, 4, + 5, 6 , 7, 8, + 9, 10, 11, 12, + 13, 14, 15, 16, + 17, 18, 19, 20, + 21, 22, 23, 24 + }, qScale, qOffset); + + std::vector axisData = { 1 }; + + std::vector expectedOutputData = armnnUtils::QuantizedVector({ + 9, 10, 11, 12, + 5, 6, 7 , 8, + 1, 2, 3, 4, + 21, 22, 23, 24, + 17, 18, 19, 20, + 13, 14, 15, 16 + }, qScale, qOffset); + + INetworkPtr network = CreateReverseV2Network(inputInfo, axisInfo, outputInfo, axisData); + + std::map> inputTensor = { { 0, inputData } }; + std::map> expectedOutputTensor = { { 0, expectedOutputData } }; + + EndToEndLayerTestImpl(std::move(network), inputTensor, expectedOutputTensor, backends); +} + +} // anonymous namespace + -- cgit v1.2.1