ArmNN
 25.02
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
SerializerUtils.cpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017,2019-2021,2023-2024 Arm Ltd and Contributors. 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 
32  armnn::LogicalBinaryOperation logicalBinaryOperation)
33 {
34  switch (logicalBinaryOperation)
35  {
37  return armnnSerializer::LogicalBinaryOperation::LogicalBinaryOperation_LogicalAnd;
39  return armnnSerializer::LogicalBinaryOperation::LogicalBinaryOperation_LogicalOr;
40  default:
41  throw armnn::InvalidArgumentException("Logical Binary operation unknown");
42  }
43 }
44 
45 armnnSerializer::ConstTensorData GetFlatBufferConstTensorData(armnn::DataType dataType)
46 {
47  switch (dataType)
48  {
51  return armnnSerializer::ConstTensorData::ConstTensorData_IntData;
54  return armnnSerializer::ConstTensorData::ConstTensorData_ShortData;
59  return armnnSerializer::ConstTensorData::ConstTensorData_ByteData;
61  return armnnSerializer::ConstTensorData::ConstTensorData_LongData;
62  default:
63  return armnnSerializer::ConstTensorData::ConstTensorData_NONE;
64  }
65 }
66 
68 {
69  switch (dataType)
70  {
72  return armnnSerializer::DataType::DataType_Float32;
74  return armnnSerializer::DataType::DataType_Float16;
76  return armnnSerializer::DataType::DataType_Signed32;
78  return armnnSerializer::DataType::DataType_Signed64;
80  return armnnSerializer::DataType::DataType_QSymmS16;
82  return armnnSerializer::DataType::DataType_QAsymmS8;
84  return armnnSerializer::DataType::DataType_QAsymmU8;
86  return armnnSerializer::DataType::DataType_QSymmS8;
88  return armnnSerializer::DataType::DataType_Boolean;
89  default:
90  return armnnSerializer::DataType::DataType_Float16;
91  }
92 }
93 
95 {
96  switch (dataLayout)
97  {
99  return armnnSerializer::DataLayout::DataLayout_NHWC;
101  return armnnSerializer::DataLayout::DataLayout_NDHWC;
103  return armnnSerializer::DataLayout::DataLayout_NCDHW;
105  default:
106  return armnnSerializer::DataLayout::DataLayout_NCHW;
107  }
108 }
109 
111 {
112  switch (binaryOperation)
113  {
115  return armnnSerializer::BinaryOperation::BinaryOperation_Add;
117  return armnnSerializer::BinaryOperation::BinaryOperation_Div;
119  return armnnSerializer::BinaryOperation::BinaryOperation_Div;
121  return armnnSerializer::BinaryOperation::BinaryOperation_Maximum;
123  return armnnSerializer::BinaryOperation::BinaryOperation_Minimum;
125  return armnnSerializer::BinaryOperation::BinaryOperation_Mul;
127  return armnnSerializer::BinaryOperation::BinaryOperation_Sub;
129  return armnnSerializer::BinaryOperation::BinaryOperation_SqDiff;
131  return armnnSerializer::BinaryOperation::BinaryOperation_Power;
132  default:
133  throw armnn::InvalidArgumentException("Elementwise Binary operation unknown");
134  }
135 }
136 
138 {
139  switch (unaryOperation)
140  {
142  return armnnSerializer::UnaryOperation::UnaryOperation_Abs;
144  return armnnSerializer::UnaryOperation::UnaryOperation_Ceil;
146  return armnnSerializer::UnaryOperation::UnaryOperation_Rsqrt;
148  return armnnSerializer::UnaryOperation::UnaryOperation_Sqrt;
150  return armnnSerializer::UnaryOperation::UnaryOperation_Exp;
152  return armnnSerializer::UnaryOperation::UnaryOperation_Neg;
154  return armnnSerializer::UnaryOperation::UnaryOperation_LogicalNot;
156  return armnnSerializer::UnaryOperation::UnaryOperation_Log;
158  return armnnSerializer::UnaryOperation::UnaryOperation_Sin;
159  default:
160  throw armnn::InvalidArgumentException("Elementwise Unary operation unknown");
161  }
162 }
163 
165 {
166  switch (poolingAlgorithm)
167  {
169  return armnnSerializer::PoolingAlgorithm::PoolingAlgorithm_Average;
171  return armnnSerializer::PoolingAlgorithm::PoolingAlgorithm_L2;
173  default:
174  return armnnSerializer::PoolingAlgorithm::PoolingAlgorithm_Max;
175  }
176 }
177 
179 {
180  switch (outputShapeRounding)
181  {
183  return armnnSerializer::OutputShapeRounding::OutputShapeRounding_Ceiling;
185  default:
186  return armnnSerializer::OutputShapeRounding::OutputShapeRounding_Floor;
187  }
188 }
189 
191 {
192  switch (paddingMethod)
193  {
195  return armnnSerializer::PaddingMethod::PaddingMethod_IgnoreValue;
197  default:
198  return armnnSerializer::PaddingMethod::PaddingMethod_Exclude;
199  }
200 }
201 
203 {
204  switch (paddingMode)
205  {
207  return armnnSerializer::PaddingMode::PaddingMode_Reflect;
209  return armnnSerializer::PaddingMode::PaddingMode_Symmetric;
210  default:
211  return armnnSerializer::PaddingMode::PaddingMode_Constant;
212  }
213 }
214 
216  armnn::NormalizationAlgorithmChannel normalizationAlgorithmChannel)
217 {
218  switch (normalizationAlgorithmChannel)
219  {
221  return armnnSerializer::NormalizationAlgorithmChannel::NormalizationAlgorithmChannel_Across;
223  return armnnSerializer::NormalizationAlgorithmChannel::NormalizationAlgorithmChannel_Within;
224  default:
225  return armnnSerializer::NormalizationAlgorithmChannel::NormalizationAlgorithmChannel_Across;
226  }
227 }
228 
230  armnn::NormalizationAlgorithmMethod normalizationAlgorithmMethod)
231 {
232  switch (normalizationAlgorithmMethod)
233  {
235  return armnnSerializer::NormalizationAlgorithmMethod::NormalizationAlgorithmMethod_LocalBrightness;
237  return armnnSerializer::NormalizationAlgorithmMethod::NormalizationAlgorithmMethod_LocalContrast;
238  default:
239  return armnnSerializer::NormalizationAlgorithmMethod::NormalizationAlgorithmMethod_LocalBrightness;
240  }
241 }
242 
244 {
245  switch (method)
246  {
248  return armnnSerializer::ResizeMethod_NearestNeighbor;
250  return armnnSerializer::ResizeMethod_Bilinear;
251  default:
252  return armnnSerializer::ResizeMethod_NearestNeighbor;
253  }
254 }
255 
257 {
258  switch (reduceOperation)
259  {
261  return armnnSerializer::ReduceOperation::ReduceOperation_Sum;
263  return armnnSerializer::ReduceOperation::ReduceOperation_Max;
265  return armnnSerializer::ReduceOperation::ReduceOperation_Mean;
267  return armnnSerializer::ReduceOperation::ReduceOperation_Min;
269  return armnnSerializer::ReduceOperation::ReduceOperation_Prod;
270  default:
271  return armnnSerializer::ReduceOperation::ReduceOperation_Sum;
272  }
273 }
274 
275 } // namespace armnnSerializer
PaddingMode
The padding mode controls whether the padding should be filled with constant values (Constant),...
Definition: Types.hpp:202
UnaryOperation
Definition: Types.hpp:126
ComparisonOperation
Definition: Types.hpp:110
LogicalBinaryOperation
Definition: Types.hpp:120
PaddingMethod
The padding method modifies the output of pooling layers.
Definition: Types.hpp:190
@ Exclude
The padding fields don't count and are ignored.
@ IgnoreValue
The padding fields count, but are ignored.
PoolingAlgorithm
Definition: Types.hpp:152
ResizeMethod
Definition: Types.hpp:168
ReduceOperation
Definition: Types.hpp:159
NormalizationAlgorithmChannel
Definition: Types.hpp:209
BinaryOperation
Definition: Types.hpp:139
DataLayout
Definition: Types.hpp:63
NormalizationAlgorithmMethod
Definition: Types.hpp:215
@ LocalContrast
Jarret 2009: Local Contrast Normalization.
@ LocalBrightness
Krichevsky 2012: Local Brightness Normalization.
DataType
Definition: Types.hpp:49
OutputShapeRounding
Definition: Types.hpp:223
armnnSerializer::ComparisonOperation GetFlatBufferComparisonOperation(armnn::ComparisonOperation comparisonOperation)
armnnSerializer::ResizeMethod GetFlatBufferResizeMethod(armnn::ResizeMethod method)
armnnSerializer::DataType GetFlatBufferDataType(armnn::DataType dataType)
armnnSerializer::ReduceOperation GetFlatBufferReduceOperation(armnn::ReduceOperation reduceOperation)
armnnSerializer::LogicalBinaryOperation GetFlatBufferLogicalBinaryOperation(armnn::LogicalBinaryOperation logicalBinaryOperation)
armnnSerializer::PaddingMethod GetFlatBufferPaddingMethod(armnn::PaddingMethod paddingMethod)
armnnSerializer::BinaryOperation GetFlatBufferBinaryOperation(armnn::BinaryOperation binaryOperation)
armnnSerializer::PaddingMode GetFlatBufferPaddingMode(armnn::PaddingMode paddingMode)
armnnSerializer::DataLayout GetFlatBufferDataLayout(armnn::DataLayout dataLayout)
armnnSerializer::OutputShapeRounding GetFlatBufferOutputShapeRounding(armnn::OutputShapeRounding outputShapeRounding)
armnnSerializer::PoolingAlgorithm GetFlatBufferPoolingAlgorithm(armnn::PoolingAlgorithm poolingAlgorithm)
armnnSerializer::NormalizationAlgorithmMethod GetFlatBufferNormalizationAlgorithmMethod(armnn::NormalizationAlgorithmMethod normalizationAlgorithmMethod)
armnnSerializer::UnaryOperation GetFlatBufferUnaryOperation(armnn::UnaryOperation unaryOperation)
armnnSerializer::NormalizationAlgorithmChannel GetFlatBufferNormalizationAlgorithmChannel(armnn::NormalizationAlgorithmChannel normalizationAlgorithmChannel)
armnnSerializer::ConstTensorData GetFlatBufferConstTensorData(armnn::DataType dataType)