blob: b8d28f04050d42bc2761ebf18384fca540a618fb [file] [log] [blame]
Cathal Corbettbd18eab2022-11-15 12:56:16 +00001//
2// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include "AvgPool2DIgnoreValueChecker.hpp"
Cathal Corbett6d2647d2022-12-13 11:37:57 +00007#include <armnn/IRuntime.hpp>
Cathal Corbettbd18eab2022-11-15 12:56:16 +00008
9using namespace armnn;
10using namespace tosa;
11
12TEST_SUITE("TosaOperatorMappingOneToManyTests")
13{
14TEST_CASE("GetTosaMapping_AvgPool2DIgnoreValueLayer")
15{
16 armnn::Pooling2dDescriptor descriptor;
17 descriptor.m_PoolType = armnn::PoolingAlgorithm::Average;
18 descriptor.m_PoolWidth = descriptor.m_PoolHeight = 2;
19 descriptor.m_StrideX = descriptor.m_StrideY = 2;
20 descriptor.m_PadLeft = 1;
21 descriptor.m_PadRight = 1;
22 descriptor.m_PadTop = 1;
23 descriptor.m_PadBottom = 1;
24 descriptor.m_PaddingMethod = armnn::PaddingMethod::IgnoreValue;
25
26 armnn::TensorInfo inputTensorInfo({ 1, 1, 4, 4 }, DataType::Float32);
27 armnn::TensorInfo outputTensorInfo({ 1, 1, 3, 3 }, DataType::Float32);
28
29 std::vector<std::vector<int32_t>> inputShape = {{ 1, 1, 4, 4 }};
30 std::vector<std::vector<int32_t>> intermediateShape = {{ 1, 1, 6, 6 }};
31 std::vector<std::vector<int32_t>> outputShape = {{ 1, 1, 3, 3 }};
32
33 TosaSerializationBasicBlock* basicBlock =
Matthew Sloyanc5fe6e72022-11-25 16:10:00 +000034 GetTosaMapping(nullptr, LayerType::Pooling2d, {&inputTensorInfo}, {&outputTensorInfo}, descriptor);
Cathal Corbettbd18eab2022-11-15 12:56:16 +000035 VerifyAvgPool2DIgnoreValue(basicBlock,
36 inputShape,
37 outputShape,
38 intermediateShape,
39 descriptor);
40}
41
42TEST_CASE("GetTosaMappingFromLayer_AvgPool2DIgnoreValueLayer")
43{
44 IRuntime::CreationOptions options;
45 IRuntimePtr runtime(IRuntime::Create(options));
46
47 // Builds up the structure of the network.
48 INetworkPtr net(INetwork::Create());
49
50 armnn::Pooling2dDescriptor descriptor;
51 descriptor.m_PoolType = armnn::PoolingAlgorithm::Average;
52 descriptor.m_PoolWidth = descriptor.m_PoolHeight = 2;
53 descriptor.m_StrideX = descriptor.m_StrideY = 2;
54 descriptor.m_PadLeft = 1;
55 descriptor.m_PadRight = 1;
56 descriptor.m_PadTop = 1;
57 descriptor.m_PadBottom = 1;
58 descriptor.m_PaddingMethod = armnn::PaddingMethod::IgnoreValue;
59
60 IConnectableLayer* input0 = net->AddInputLayer(0, "input0");
61 IConnectableLayer* pool = net->AddPooling2dLayer(descriptor, "pool");
62 IConnectableLayer* output = net->AddOutputLayer(0, "output");
63
64 input0->GetOutputSlot(0).Connect(pool->GetInputSlot(0));
65 pool->GetOutputSlot(0).Connect(output->GetInputSlot(0));
66
67 armnn::TensorInfo inputTensorInfo({ 1, 1, 4, 4 }, DataType::Float32);
68 armnn::TensorInfo outputTensorInfo({ 1, 1, 3, 3 }, DataType::Float32);
69
70 std::vector<std::vector<int32_t>> inputShape = {{ 1, 1, 4, 4 }};
71 std::vector<std::vector<int32_t>> intermediateShape = {{ 1, 1, 6, 6 }};
72 std::vector<std::vector<int32_t>> outputShape = {{ 1, 1, 3, 3 }};
73
74 input0->GetOutputSlot(0).SetTensorInfo(inputTensorInfo);
75 pool->GetOutputSlot(0).SetTensorInfo(outputTensorInfo);
76
77 TosaSerializationBasicBlock* basicBlock =
Matthew Sloyanc5fe6e72022-11-25 16:10:00 +000078 GetTosaMappingFromLayer(PolymorphicDowncast<Layer*>(pool));
Cathal Corbettbd18eab2022-11-15 12:56:16 +000079 VerifyAvgPool2DIgnoreValue(basicBlock,
80 inputShape,
81 outputShape,
82 intermediateShape,
83 descriptor);
84}
85}