blob: 058394edb7f13fb93a43125ee57a2fc565bef4e5 [file] [log] [blame]
Sadik Armagan4b227bb2021-01-22 10:53:38 +00001//
2// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include "NormalizationTestHelper.hpp"
7
8#include <armnn_delegate.hpp>
9
10#include <flatbuffers/flatbuffers.h>
11#include <tensorflow/lite/schema/schema_generated.h>
12
13#include <doctest/doctest.h>
14
15namespace armnnDelegate
16{
17
18void L2NormalizationTest(std::vector<armnn::BackendId>& backends)
19{
20 // Set input data
21 std::vector<int32_t> inputShape { 1, 1, 1, 10 };
22 std::vector<int32_t> outputShape { 1, 1, 1, 10 };
23
24 std::vector<float> inputValues
25 {
26 1.0f,
27 2.0f,
28 3.0f,
29 4.0f,
30 5.0f,
31 6.0f,
32 7.0f,
33 8.0f,
34 9.0f,
35 10.0f
36 };
37
38 const float approxInvL2Norm = 0.050964719f;
39 std::vector<float> expectedOutputValues
40 {
41 1.0f * approxInvL2Norm,
42 2.0f * approxInvL2Norm,
43 3.0f * approxInvL2Norm,
44 4.0f * approxInvL2Norm,
45 5.0f * approxInvL2Norm,
46 6.0f * approxInvL2Norm,
47 7.0f * approxInvL2Norm,
48 8.0f * approxInvL2Norm,
49 9.0f * approxInvL2Norm,
50 10.0f * approxInvL2Norm
51 };
52
53 NormalizationTest<float>(tflite::BuiltinOperator_L2_NORMALIZATION,
54 ::tflite::TensorType_FLOAT32,
55 backends,
56 inputShape,
57 outputShape,
58 inputValues,
59 expectedOutputValues);
60}
61
62void LocalResponseNormalizationTest(std::vector<armnn::BackendId>& backends,
63 int32_t radius,
64 float bias,
65 float alpha,
66 float beta)
67{
68 // Set input data
69 std::vector<int32_t> inputShape { 2, 2, 2, 1 };
70 std::vector<int32_t> outputShape { 2, 2, 2, 1 };
71
72 std::vector<float> inputValues
73 {
74 1.0f, 2.0f,
75 3.0f, 4.0f,
76 5.0f, 6.0f,
77 7.0f, 8.0f
78 };
79
80 std::vector<float> expectedOutputValues
81 {
82 0.5f, 0.400000006f, 0.300000012f, 0.235294119f,
83 0.192307696f, 0.16216217f, 0.140000001f, 0.123076923f
84 };
85
86 NormalizationTest<float>(tflite::BuiltinOperator_LOCAL_RESPONSE_NORMALIZATION,
87 ::tflite::TensorType_FLOAT32,
88 backends,
89 inputShape,
90 outputShape,
91 inputValues,
92 expectedOutputValues,
93 radius,
94 bias,
95 alpha,
96 beta);
97}
98
99
100TEST_SUITE("L2Normalization_CpuRefTests")
101{
102
103TEST_CASE ("L2NormalizationFp32Test_CpuRef_Test")
104{
105 std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
106 L2NormalizationTest(backends);
107}
108
109} // TEST_SUITE("L2Normalization_CpuRefTests")
110
111TEST_SUITE("L2Normalization_CpuAccTests")
112{
113
114TEST_CASE ("L2NormalizationFp32Test_CpuAcc_Test")
115{
116 std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
117 L2NormalizationTest(backends);
118}
119
120} // TEST_SUITE("L2NormalizationFp32Test_CpuAcc_Test")
121
122TEST_SUITE("L2Normalization_GpuAccTests")
123{
124
125TEST_CASE ("L2NormalizationFp32Test_GpuAcc_Test")
126{
127 std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
128 L2NormalizationTest(backends);
129}
130
131} // TEST_SUITE("L2Normalization_GpuAccTests")
132
133TEST_SUITE("LocalResponseNormalization_CpuRefTests")
134{
135
136TEST_CASE ("LocalResponseNormalizationTest_CpuRef_Test")
137{
138 std::vector<armnn::BackendId> backends = { armnn::Compute::CpuRef };
139 LocalResponseNormalizationTest(backends, 3, 1.f, 1.f, 1.f);
140}
141
142} // TEST_SUITE("LocalResponseNormalization_CpuRefTests")
143
144TEST_SUITE("LocalResponseNormalization_CpuAccTests")
145{
146
147TEST_CASE ("LocalResponseNormalizationTest_CpuAcc_Test")
148{
149 std::vector<armnn::BackendId> backends = { armnn::Compute::CpuAcc };
150 LocalResponseNormalizationTest(backends, 3, 1.f, 1.f, 1.f);
151}
152
153} // TEST_SUITE("LocalResponseNormalization_CpuAccTests")
154
155TEST_SUITE("LocalResponseNormalization_GpuAccTests")
156{
157
158TEST_CASE ("LocalResponseNormalizationTest_GpuAcc_Test")
159{
160 std::vector<armnn::BackendId> backends = { armnn::Compute::GpuAcc };
161 LocalResponseNormalizationTest(backends, 3, 1.f, 1.f, 1.f);
162}
163
164} // TEST_SUITE("LocalResponseNormalization_GpuAccTests")
165
166} // namespace armnnDelegate