blob: a398bfac28b6e867c5a340a182e6668e4b521cf7 [file] [log] [blame]
Nina Drozd57728782019-02-27 10:53:27 +00001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
Nina Drozd57728782019-02-27 10:53:27 +00006#include "ParserFlatbuffersSerializeFixture.hpp"
Finn Williams85d36712021-01-26 22:30:06 +00007#include <armnnDeserializer/IDeserializer.hpp>
Nina Drozd57728782019-02-27 10:53:27 +00008
9#include <string>
Nina Drozd57728782019-02-27 10:53:27 +000010
Sadik Armagan1625efc2021-06-10 18:24:34 +010011TEST_SUITE("Deserializer_Normalization")
12{
Nina Drozd57728782019-02-27 10:53:27 +000013struct NormalizationFixture : public ParserFlatbuffersSerializeFixture
14{
15 explicit NormalizationFixture(const std::string &inputShape,
16 const std::string & outputShape,
17 const std::string &dataType,
18 const std::string &normAlgorithmChannel,
19 const std::string &normAlgorithmMethod,
20 const std::string &dataLayout)
21 {
22 m_JsonString = R"(
23 {
24 inputIds: [0],
25 outputIds: [2],
26 layers: [{
27 layer_type: "InputLayer",
28 layer: {
29 base: {
30 layerBindingId: 0,
31 base: {
32 index: 0,
33 layerName: "InputLayer",
34 layerType: "Input",
35 inputSlots: [{
36 index: 0,
37 connection: {sourceLayerIndex:0, outputSlotIndex:0 },
38 }],
39 outputSlots: [{
40 index: 0,
41 tensorInfo: {
42 dimensions: )" + inputShape + R"(,
43 dataType: )" + dataType + R"(,
44 quantizationScale: 0.5,
45 quantizationOffset: 0
46 },
47 }]
48 },
49 }
50 },
51 },
52 {
53 layer_type: "NormalizationLayer",
54 layer : {
55 base: {
56 index:1,
57 layerName: "NormalizationLayer",
58 layerType: "Normalization",
59 inputSlots: [{
60 index: 0,
61 connection: {sourceLayerIndex:0, outputSlotIndex:0 },
62 }],
63 outputSlots: [{
64 index: 0,
65 tensorInfo: {
66 dimensions: )" + outputShape + R"(,
67 dataType: )" + dataType + R"(
68 },
69 }],
70 },
71 descriptor: {
72 normChannelType: )" + normAlgorithmChannel + R"(,
73 normMethodType: )" + normAlgorithmMethod + R"(,
74 normSize: 3,
75 alpha: 1,
76 beta: 1,
77 k: 1,
78 dataLayout: )" + dataLayout + R"(
79 }
80 },
81 },
82 {
83 layer_type: "OutputLayer",
84 layer: {
85 base:{
86 layerBindingId: 0,
87 base: {
88 index: 2,
89 layerName: "OutputLayer",
90 layerType: "Output",
91 inputSlots: [{
92 index: 0,
93 connection: {sourceLayerIndex:1, outputSlotIndex:0 },
94 }],
95 outputSlots: [ {
96 index: 0,
97 tensorInfo: {
98 dimensions: )" + outputShape + R"(,
99 dataType: )" + dataType + R"(
100 },
101 }],
102 }
103 }},
104 }]
105 }
106 )";
107 SetupSingleInputSingleOutput("InputLayer", "OutputLayer");
108 }
109};
110
111struct FloatNhwcLocalBrightnessAcrossNormalizationFixture : NormalizationFixture
112{
113 FloatNhwcLocalBrightnessAcrossNormalizationFixture() : NormalizationFixture("[ 2, 2, 2, 1 ]", "[ 2, 2, 2, 1 ]",
114 "Float32", "0", "0", "NHWC") {}
115};
116
117
Sadik Armagan1625efc2021-06-10 18:24:34 +0100118TEST_CASE_FIXTURE(FloatNhwcLocalBrightnessAcrossNormalizationFixture, "Float32NormalizationNhwcDataLayout")
Nina Drozd57728782019-02-27 10:53:27 +0000119{
120 RunTest<4, armnn::DataType::Float32>(0, { 1.0f, 2.0f, 3.0f, 4.0f,
121 5.0f, 6.0f, 7.0f, 8.0f },
122 { 0.5f, 0.400000006f, 0.300000012f, 0.235294119f,
123 0.192307696f, 0.16216217f, 0.140000001f, 0.123076923f });
124}
125
126struct FloatNchwLocalBrightnessWithinNormalizationFixture : NormalizationFixture
127{
128 FloatNchwLocalBrightnessWithinNormalizationFixture() : NormalizationFixture("[ 2, 1, 2, 2 ]", "[ 2, 1, 2, 2 ]",
129 "Float32", "1", "0", "NCHW") {}
130};
131
Sadik Armagan1625efc2021-06-10 18:24:34 +0100132TEST_CASE_FIXTURE(FloatNchwLocalBrightnessWithinNormalizationFixture, "Float32NormalizationNchwDataLayout")
Nina Drozd57728782019-02-27 10:53:27 +0000133{
134 RunTest<4, armnn::DataType::Float32>(0, { 1.0f, 2.0f, 3.0f, 4.0f,
135 5.0f, 6.0f, 7.0f, 8.0f },
136 { 0.0322581f, 0.0645161f, 0.0967742f, 0.1290323f,
137 0.0285714f, 0.0342857f, 0.04f, 0.0457143f });
138}
139
Sadik Armagan1625efc2021-06-10 18:24:34 +0100140}