diff options
author | Teresa Charlin <teresa.charlinreyes@arm.com> | 2023-01-12 14:13:09 +0000 |
---|---|---|
committer | TeresaARM <teresa.charlinreyes@arm.com> | 2023-01-12 18:06:55 +0000 |
commit | c17a35f4b016c223add511a148ed3bb741770593 (patch) | |
tree | ce498d23f5e035a1bd59462086abe288cbe07527 /src/backends/backendsCommon/test/ReduceEndToEndTestImpl.hpp | |
parent | 6701daf754efbadcf95c969eee1ba57320763d84 (diff) | |
download | armnn-c17a35f4b016c223add511a148ed3bb741770593.tar.gz |
IVGCVSW-5128 Add EndToEnd test for REDUCE_SUM
* Call Reshape EndToEnd test from 3 backends
* Tidy up some naming of tests.
Signed-off-by: Teresa Charlin <teresa.charlinreyes@arm.com>
Change-Id: I5546af35e89d352d3f1529368518aecc0a4a534b
Diffstat (limited to 'src/backends/backendsCommon/test/ReduceEndToEndTestImpl.hpp')
-rw-r--r-- | src/backends/backendsCommon/test/ReduceEndToEndTestImpl.hpp | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/backends/backendsCommon/test/ReduceEndToEndTestImpl.hpp b/src/backends/backendsCommon/test/ReduceEndToEndTestImpl.hpp new file mode 100644 index 0000000000..83c59f594f --- /dev/null +++ b/src/backends/backendsCommon/test/ReduceEndToEndTestImpl.hpp @@ -0,0 +1,70 @@ +// +// Copyright © 2023 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// +#pragma once + +#include <armnn/INetwork.hpp> + +#include <CommonTestUtils.hpp> +#include <ResolveType.hpp> + +#include <doctest/doctest.h> + +namespace +{ + +template<typename armnn::DataType DataType> +armnn::INetworkPtr CreateReduceNetwork(const armnn::TensorShape& inputShape, + const armnn::TensorShape& outputShape, + const armnn::ReduceDescriptor& descriptor, + const float qScale = 1.0f, + const int32_t qOffset = 0) +{ + using namespace armnn; + + INetworkPtr network(INetwork::Create()); + + TensorInfo inputTensorInfo(inputShape, DataType, qScale, qOffset, true); + TensorInfo outputTensorInfo(outputShape, DataType, qScale, qOffset); + + + IConnectableLayer* reduce = network->AddReduceLayer(descriptor, "reduce"); + IConnectableLayer* input = network->AddInputLayer(0, "input"); + IConnectableLayer* output = network->AddOutputLayer(0, "output"); + + Connect(input, reduce, inputTensorInfo, 0, 0); + Connect(reduce, output, outputTensorInfo, 0, 0); + + return network; +} + +template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>> +void ReduceEndToEnd(const std::vector<armnn::BackendId>& backends) +{ + using namespace armnn; + + const TensorShape& inputShape = { 1, 1, 1, 5 }; + const TensorShape& outputShape = { 1, 1, 1 }; + + ReduceDescriptor descriptor; + descriptor.m_KeepDims = false; + descriptor.m_vAxis = { 3 }; + descriptor.m_ReduceOperation = ReduceOperation::Sum; + + INetworkPtr network = CreateReduceNetwork<ArmnnType>(inputShape, outputShape, descriptor); + + CHECK(network); + + std::vector<float> floatInputData({ 5.0f, 2.0f, 8.0f, 10.0f, 9.0f }); + std::vector<float> floatOutputData({ 34.0f }); + + std::vector<T> inputData = armnnUtils::QuantizedVector<T>(floatInputData); + std::vector<T> outputData = armnnUtils::QuantizedVector<T>(floatOutputData); + + std::map<int, std::vector<T>> inputTensorData = { { 0, inputData } }; + std::map<int, std::vector<T>> expectedOutputData = { { 0, outputData } }; + + EndToEndLayerTestImpl<ArmnnType, ArmnnType>(std::move(network), inputTensorData, expectedOutputData, backends); +} +} // anonymous namespace |