blob: dd851e3960321cfd841da34709f64fa1f78370ef [file] [log] [blame]
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
8#include "CommonTestUtils.hpp"
9
Aron Virginas-Tar48623a02019-10-22 10:00:28 +010010#include <QuantizeHelper.hpp>
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010011#include <ResolveType.hpp>
12
13#include <armnn/ArmNN.hpp>
14
15namespace
16{
17
18armnn::INetworkPtr CreateAbsNetwork(const armnn::TensorInfo& tensorInfo)
19{
20 armnn::INetworkPtr network(armnn::INetwork::Create());
21
22 armnn::IConnectableLayer* inputLayer = network->AddInputLayer(0, "input");
23 armnn::IConnectableLayer* absLayer = network->AddAbsLayer("abs");
24 armnn::IConnectableLayer* outputLayer = network->AddOutputLayer(0, "output");
25
26 Connect(inputLayer, absLayer, tensorInfo, 0, 0);
27 Connect(absLayer, outputLayer, tensorInfo, 0, 0);
28
29 return network;
30}
31
32} // anonymous namespace
33
34template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
35void AbsEndToEnd(const std::vector<armnn::BackendId>& backends)
36{
37 using namespace armnn;
38
39 const float qScale = IsQuantizedType<T>() ? 0.25f : 1.0f;
40 const int32_t qOffset = IsQuantizedType<T>() ? 50 : 0;
41
42 TensorInfo tensorInfo({ 1, 1, 2, 3 }, ArmnnType, qScale, qOffset);
43
44 std::vector<float> inputData =
45 {
46 -1.f, 2.f, -3.f,
47 4.f, -5.f, 6.f
48 };
49
50 std::vector<float> expectedOutputData =
51 {
52 1.f, 2.f, 3.f,
53 4.f, 5.f, 6.f
54 };
55
56 // quantize data
Aron Virginas-Tar48623a02019-10-22 10:00:28 +010057 std::vector<T> qInputData = armnnUtils::QuantizedVector<T>(inputData, qScale, qOffset);
58 std::vector<T> qExpectedOutputData = armnnUtils::QuantizedVector<T>(expectedOutputData, qScale, qOffset);
Aron Virginas-Tar8fccd862019-09-09 11:22:56 +010059
60 INetworkPtr network = CreateAbsNetwork(tensorInfo);
61
62 EndToEndLayerTestImpl<ArmnnType, ArmnnType>(std::move(network),
63 { { 0, qInputData } },
64 { { 0, qExpectedOutputData } },
65 backends);
66}