ArmNN
 20.11
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 
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;
58  return armnnSerializer::ConstTensorData::ConstTensorData_ByteData;
59  default:
60  return armnnSerializer::ConstTensorData::ConstTensorData_NONE;
61  }
62 }
63 
65 {
66  switch (dataType)
67  {
69  return armnnSerializer::DataType::DataType_Float32;
71  return armnnSerializer::DataType::DataType_Float16;
73  return armnnSerializer::DataType::DataType_Signed32;
75  return armnnSerializer::DataType::DataType_QSymmS16;
77  return armnnSerializer::DataType::DataType_QAsymmS8;
79  return armnnSerializer::DataType::DataType_QAsymmU8;
81  return armnnSerializer::DataType::DataType_QSymmS8;
83  return armnnSerializer::DataType::DataType_Boolean;
84  default:
85  return armnnSerializer::DataType::DataType_Float16;
86  }
87 }
88 
90 {
91  switch (dataLayout)
92  {
94  return armnnSerializer::DataLayout::DataLayout_NHWC;
96  default:
97  return armnnSerializer::DataLayout::DataLayout_NCHW;
98  }
99 }
100 
102 {
103  switch (comparisonOperation)
104  {
106  return armnnSerializer::UnaryOperation::UnaryOperation_Abs;
108  return armnnSerializer::UnaryOperation::UnaryOperation_Rsqrt;
110  return armnnSerializer::UnaryOperation::UnaryOperation_Sqrt;
112  return armnnSerializer::UnaryOperation::UnaryOperation_Exp;
114  return armnnSerializer::UnaryOperation::UnaryOperation_Neg;
116  return armnnSerializer::UnaryOperation::UnaryOperation_LogicalNot;
117  default:
118  throw armnn::InvalidArgumentException("Unary operation unknown");
119  }
120 }
121 
123 {
124  switch (poolingAlgorithm)
125  {
127  return armnnSerializer::PoolingAlgorithm::PoolingAlgorithm_Average;
129  return armnnSerializer::PoolingAlgorithm::PoolingAlgorithm_L2;
131  default:
132  return armnnSerializer::PoolingAlgorithm::PoolingAlgorithm_Max;
133  }
134 }
135 
137 {
138  switch (outputShapeRounding)
139  {
141  return armnnSerializer::OutputShapeRounding::OutputShapeRounding_Ceiling;
143  default:
144  return armnnSerializer::OutputShapeRounding::OutputShapeRounding_Floor;
145  }
146 }
147 
149 {
150  switch (paddingMethod)
151  {
153  return armnnSerializer::PaddingMethod::PaddingMethod_IgnoreValue;
155  default:
156  return armnnSerializer::PaddingMethod::PaddingMethod_Exclude;
157  }
158 }
159 
161  armnn::NormalizationAlgorithmChannel normalizationAlgorithmChannel)
162 {
163  switch (normalizationAlgorithmChannel)
164  {
166  return armnnSerializer::NormalizationAlgorithmChannel::NormalizationAlgorithmChannel_Across;
168  return armnnSerializer::NormalizationAlgorithmChannel::NormalizationAlgorithmChannel_Within;
169  default:
170  return armnnSerializer::NormalizationAlgorithmChannel::NormalizationAlgorithmChannel_Across;
171  }
172 }
173 
175  armnn::NormalizationAlgorithmMethod normalizationAlgorithmMethod)
176 {
177  switch (normalizationAlgorithmMethod)
178  {
180  return armnnSerializer::NormalizationAlgorithmMethod::NormalizationAlgorithmMethod_LocalBrightness;
182  return armnnSerializer::NormalizationAlgorithmMethod::NormalizationAlgorithmMethod_LocalContrast;
183  default:
184  return armnnSerializer::NormalizationAlgorithmMethod::NormalizationAlgorithmMethod_LocalBrightness;
185  }
186 }
187 
189 {
190  switch (method)
191  {
193  return armnnSerializer::ResizeMethod_NearestNeighbor;
195  return armnnSerializer::ResizeMethod_Bilinear;
196  default:
197  return armnnSerializer::ResizeMethod_NearestNeighbor;
198  }
199 }
200 
201 } // namespace armnnSerializer
armnnSerializer::UnaryOperation GetFlatBufferUnaryOperation(armnn::UnaryOperation comparisonOperation)
DataLayout
Definition: Types.hpp:50
armnnSerializer::OutputShapeRounding GetFlatBufferOutputShapeRounding(armnn::OutputShapeRounding outputShapeRounding)
The padding fields don't count and are ignored.
NormalizationAlgorithmChannel
Definition: Types.hpp:141
armnnSerializer::NormalizationAlgorithmMethod GetFlatBufferNormalizationAlgorithmMethod(armnn::NormalizationAlgorithmMethod normalizationAlgorithmMethod)
PoolingAlgorithm
Definition: Types.hpp:104
armnnSerializer::ConstTensorData GetFlatBufferConstTensorData(armnn::DataType dataType)
LogicalBinaryOperation
Definition: Types.hpp:88
armnnSerializer::DataType GetFlatBufferDataType(armnn::DataType dataType)
PaddingMethod
The padding method modifies the output of pooling layers.
Definition: Types.hpp:133
ComparisonOperation
Definition: Types.hpp:78
armnnSerializer::NormalizationAlgorithmChannel GetFlatBufferNormalizationAlgorithmChannel(armnn::NormalizationAlgorithmChannel normalizationAlgorithmChannel)
DataType
Definition: Types.hpp:32
armnnSerializer::LogicalBinaryOperation GetFlatBufferLogicalBinaryOperation(armnn::LogicalBinaryOperation logicalBinaryOperation)
armnnSerializer::DataLayout GetFlatBufferDataLayout(armnn::DataLayout dataLayout)
OutputShapeRounding
Definition: Types.hpp:155
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:111
UnaryOperation
Definition: Types.hpp:94
armnnSerializer::PaddingMethod GetFlatBufferPaddingMethod(armnn::PaddingMethod paddingMethod)
Krichevsky 2012: Local Brightness Normalization.
NormalizationAlgorithmMethod
Definition: Types.hpp:147
armnnSerializer::PoolingAlgorithm GetFlatBufferPoolingAlgorithm(armnn::PoolingAlgorithm poolingAlgorithm)