ArmNN
 20.05
SerializerUtils.cpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #include "SerializerUtils.hpp"
7 
8 namespace armnnSerializer
9 {
10 
12 {
13  switch (comparisonOperation)
14  {
16  return armnnSerializer::ComparisonOperation::ComparisonOperation_Equal;
18  return armnnSerializer::ComparisonOperation::ComparisonOperation_Greater;
20  return armnnSerializer::ComparisonOperation::ComparisonOperation_GreaterOrEqual;
22  return armnnSerializer::ComparisonOperation::ComparisonOperation_Less;
24  return armnnSerializer::ComparisonOperation::ComparisonOperation_LessOrEqual;
26  default:
27  return armnnSerializer::ComparisonOperation::ComparisonOperation_NotEqual;
28  }
29 }
30 
31 armnnSerializer::ConstTensorData GetFlatBufferConstTensorData(armnn::DataType dataType)
32 {
33  switch (dataType)
34  {
37  return armnnSerializer::ConstTensorData::ConstTensorData_IntData;
40  return armnnSerializer::ConstTensorData::ConstTensorData_ShortData;
44  return armnnSerializer::ConstTensorData::ConstTensorData_ByteData;
45  default:
46  return armnnSerializer::ConstTensorData::ConstTensorData_NONE;
47  }
48 }
49 
51 {
52  switch (dataType)
53  {
55  return armnnSerializer::DataType::DataType_Float32;
57  return armnnSerializer::DataType::DataType_Float16;
59  return armnnSerializer::DataType::DataType_Signed32;
61  return armnnSerializer::DataType::DataType_QSymmS16;
63  return armnnSerializer::DataType::DataType_QAsymmS8;
65  return armnnSerializer::DataType::DataType_QAsymmU8;
67  return armnnSerializer::DataType::DataType_QSymmS8;
69  return armnnSerializer::DataType::DataType_Boolean;
70  default:
71  return armnnSerializer::DataType::DataType_Float16;
72  }
73 }
74 
76 {
77  switch (dataLayout)
78  {
80  return armnnSerializer::DataLayout::DataLayout_NHWC;
82  default:
83  return armnnSerializer::DataLayout::DataLayout_NCHW;
84  }
85 }
86 
88 {
89  switch (comparisonOperation)
90  {
92  return armnnSerializer::UnaryOperation::UnaryOperation_Abs;
94  return armnnSerializer::UnaryOperation::UnaryOperation_Rsqrt;
96  return armnnSerializer::UnaryOperation::UnaryOperation_Sqrt;
98  return armnnSerializer::UnaryOperation::UnaryOperation_Exp;
100  return armnnSerializer::UnaryOperation::UnaryOperation_Neg;
101  default:
102  throw armnn::InvalidArgumentException("Unary operation unknown");
103  }
104 }
105 
107 {
108  switch (poolingAlgorithm)
109  {
111  return armnnSerializer::PoolingAlgorithm::PoolingAlgorithm_Average;
113  return armnnSerializer::PoolingAlgorithm::PoolingAlgorithm_L2;
115  default:
116  return armnnSerializer::PoolingAlgorithm::PoolingAlgorithm_Max;
117  }
118 }
119 
121 {
122  switch (outputShapeRounding)
123  {
125  return armnnSerializer::OutputShapeRounding::OutputShapeRounding_Ceiling;
127  default:
128  return armnnSerializer::OutputShapeRounding::OutputShapeRounding_Floor;
129  }
130 }
131 
133 {
134  switch (paddingMethod)
135  {
137  return armnnSerializer::PaddingMethod::PaddingMethod_IgnoreValue;
139  default:
140  return armnnSerializer::PaddingMethod::PaddingMethod_Exclude;
141  }
142 }
143 
145  armnn::NormalizationAlgorithmChannel normalizationAlgorithmChannel)
146 {
147  switch (normalizationAlgorithmChannel)
148  {
150  return armnnSerializer::NormalizationAlgorithmChannel::NormalizationAlgorithmChannel_Across;
152  return armnnSerializer::NormalizationAlgorithmChannel::NormalizationAlgorithmChannel_Within;
153  default:
154  return armnnSerializer::NormalizationAlgorithmChannel::NormalizationAlgorithmChannel_Across;
155  }
156 }
157 
159  armnn::NormalizationAlgorithmMethod normalizationAlgorithmMethod)
160 {
161  switch (normalizationAlgorithmMethod)
162  {
164  return armnnSerializer::NormalizationAlgorithmMethod::NormalizationAlgorithmMethod_LocalBrightness;
166  return armnnSerializer::NormalizationAlgorithmMethod::NormalizationAlgorithmMethod_LocalContrast;
167  default:
168  return armnnSerializer::NormalizationAlgorithmMethod::NormalizationAlgorithmMethod_LocalBrightness;
169  }
170 }
171 
173 {
174  switch (method)
175  {
177  return armnnSerializer::ResizeMethod_NearestNeighbor;
179  return armnnSerializer::ResizeMethod_Bilinear;
180  default:
181  return armnnSerializer::ResizeMethod_NearestNeighbor;
182  }
183 }
184 
185 } // namespace armnnSerializer
armnnSerializer::UnaryOperation GetFlatBufferUnaryOperation(armnn::UnaryOperation comparisonOperation)
DataLayout
Definition: Types.hpp:49
armnnSerializer::OutputShapeRounding GetFlatBufferOutputShapeRounding(armnn::OutputShapeRounding outputShapeRounding)
The padding fields don't count and are ignored.
NormalizationAlgorithmChannel
Definition: Types.hpp:126
armnnSerializer::NormalizationAlgorithmMethod GetFlatBufferNormalizationAlgorithmMethod(armnn::NormalizationAlgorithmMethod normalizationAlgorithmMethod)
PoolingAlgorithm
Definition: Types.hpp:96
armnnSerializer::ConstTensorData GetFlatBufferConstTensorData(armnn::DataType dataType)
armnnSerializer::DataType GetFlatBufferDataType(armnn::DataType dataType)
PaddingMethod
The padding method modifies the output of pooling layers.
Definition: Types.hpp:118
ComparisonOperation
Definition: Types.hpp:77
armnnSerializer::NormalizationAlgorithmChannel GetFlatBufferNormalizationAlgorithmChannel(armnn::NormalizationAlgorithmChannel normalizationAlgorithmChannel)
DataType
Definition: Types.hpp:32
armnnSerializer::DataLayout GetFlatBufferDataLayout(armnn::DataLayout dataLayout)
OutputShapeRounding
Definition: Types.hpp:140
armnnSerializer::ComparisonOperation GetFlatBufferComparisonOperation(armnn::ComparisonOperation comparisonOperation)
The padding fields count, but are ignored.
Jarret 2009: Local Contrast Normalization.
armnnSerializer::ResizeMethod GetFlatBufferResizeMethod(armnn::ResizeMethod method)
ResizeMethod
Definition: Types.hpp:103
UnaryOperation
Definition: Types.hpp:87
armnnSerializer::PaddingMethod GetFlatBufferPaddingMethod(armnn::PaddingMethod paddingMethod)
Krichevsky 2012: Local Brightness Normalization.
NormalizationAlgorithmMethod
Definition: Types.hpp:132
armnnSerializer::PoolingAlgorithm GetFlatBufferPoolingAlgorithm(armnn::PoolingAlgorithm poolingAlgorithm)