blob: 3e1be6cf72cd89f6097f933d83222e0188218d73 [file] [log] [blame]
ruoyan018e7fa232019-02-28 15:09:07 +00001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include <boost/test/unit_test.hpp>
7#include "ParserFlatbuffersSerializeFixture.hpp"
8#include "../Deserializer.hpp"
9
10#include <string>
11#include <iostream>
12
13BOOST_AUTO_TEST_SUITE(Deserializer)
14
15struct BatchNormalizationFixture : public ParserFlatbuffersSerializeFixture
16{
17 explicit BatchNormalizationFixture(const std::string &inputShape,
18 const std::string &outputShape,
19 const std::string &meanShape,
20 const std::string &varianceShape,
21 const std::string &offsetShape,
22 const std::string &scaleShape,
23 const std::string &dataType,
24 const std::string &dataLayout)
25 {
26 m_JsonString = R"(
27 {
28 inputIds: [0],
29 outputIds: [2],
30 layers: [
31 {
32 layer_type: "InputLayer",
33 layer: {
34 base: {
35 layerBindingId: 0,
36 base: {
37 index: 0,
38 layerName: "InputLayer",
39 layerType: "Input",
40 inputSlots: [{
41 index: 0,
42 connection: {sourceLayerIndex:0, outputSlotIndex:0 },
43 }],
44 outputSlots: [{
45 index: 0,
46 tensorInfo: {
47 dimensions: )" + inputShape + R"(,
48 dataType: ")" + dataType + R"(",
49 quantizationScale: 0.5,
50 quantizationOffset: 0
51 },
52 }]
53 },
54 }
55 },
56 },
57 {
58 layer_type: "BatchNormalizationLayer",
59 layer : {
60 base: {
61 index:1,
62 layerName: "BatchNormalizationLayer",
63 layerType: "BatchNormalization",
64 inputSlots: [{
65 index: 0,
66 connection: {sourceLayerIndex:0, outputSlotIndex:0 },
67 }],
68 outputSlots: [{
69 index: 0,
70 tensorInfo: {
71 dimensions: )" + outputShape + R"(,
72 dataType: ")" + dataType + R"("
73 },
74 }],
75 },
76 descriptor: {
77 eps: 0.0010000000475,
78 dataLayout: ")" + dataLayout + R"("
79 },
80 mean: {
81 info: {
82 dimensions: )" + meanShape + R"(,
83 dataType: ")" + dataType + R"("
84 },
85 data_type: IntData,
86 data: {
87 data: [1084227584],
88 }
89 },
90 variance: {
91 info: {
92 dimensions: )" + varianceShape + R"(,
93 dataType: ")" + dataType + R"("
94 },
95 data_type: IntData,
96 data: {
97 data: [1073741824],
98 }
99 },
100 beta: {
101 info: {
102 dimensions: )" + offsetShape + R"(,
103 dataType: ")" + dataType + R"("
104 },
105 data_type: IntData,
106 data: {
107 data: [0],
108 }
109 },
110 gamma: {
111 info: {
112 dimensions: )" + scaleShape + R"(,
113 dataType: ")" + dataType + R"("
114 },
115 data_type: IntData,
116 data: {
117 data: [1065353216],
118 }
119 },
120 },
121 },
122 {
123 layer_type: "OutputLayer",
124 layer: {
125 base:{
126 layerBindingId: 0,
127 base: {
128 index: 2,
129 layerName: "OutputLayer",
130 layerType: "Output",
131 inputSlots: [{
132 index: 0,
133 connection: {sourceLayerIndex:1, outputSlotIndex:0 },
134 }],
135 outputSlots: [ {
136 index: 0,
137 tensorInfo: {
138 dimensions: )" + outputShape + R"(,
139 dataType: ")" + dataType + R"("
140 },
141 }],
142 }
143 }},
144 }]
145 }
146)";
147 Setup();
148 }
149};
150
151struct BatchNormFixture : BatchNormalizationFixture
152{
153 BatchNormFixture():BatchNormalizationFixture("[ 1, 3, 3, 1 ]",
154 "[ 1, 3, 3, 1 ]",
155 "[ 1 ]",
156 "[ 1 ]",
157 "[ 1 ]",
158 "[ 1 ]",
159 "Float32",
160 "NHWC"){}
161};
162
163BOOST_FIXTURE_TEST_CASE(BatchNormalizationFloat32, BatchNormFixture)
164{
165 RunTest<4, armnn::DataType::Float32>(0,
166 {{"InputLayer", { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f }}},
167 {{"OutputLayer",{ -2.8277204f, -2.12079024f, -1.4138602f,
168 -0.7069301f, 0.0f, 0.7069301f,
169 1.4138602f, 2.12079024f, 2.8277204f }}});
170}
171
172BOOST_AUTO_TEST_SUITE_END()