ArmNN
 22.11
Converter Class Reference

#include <Converter.hpp>

Public Types

using Model = ::android::nn::Model
 
using Operand = ::android::nn::Operand
 
using OperandLifeTime = ::android::nn::Operand::LifeTime
 
using OperandType = ::android::nn::OperandType
 
using Operation = ::android::nn::Operation
 
using OperationType = ::android::nn::OperationType
 
using ErrorStatus = ::android::nn::ErrorStatus
 

Static Public Member Functions

static bool ConvertOperation (const Operation &operation, const Model &model, ConversionData &data)
 

Detailed Description

Definition at line 20 of file Converter.hpp.

Member Typedef Documentation

◆ ErrorStatus

using ErrorStatus = ::android::nn::ErrorStatus

Definition at line 30 of file Converter.hpp.

◆ Model

using Model = ::android::nn::Model

Definition at line 24 of file Converter.hpp.

◆ Operand

using Operand = ::android::nn::Operand

Definition at line 25 of file Converter.hpp.

◆ OperandLifeTime

using OperandLifeTime = ::android::nn::Operand::LifeTime

Definition at line 26 of file Converter.hpp.

◆ OperandType

using OperandType = ::android::nn::OperandType

Definition at line 27 of file Converter.hpp.

◆ Operation

using Operation = ::android::nn::Operation

Definition at line 28 of file Converter.hpp.

◆ OperationType

using OperationType = ::android::nn::OperationType

Definition at line 29 of file Converter.hpp.

Member Function Documentation

◆ ConvertOperation()

bool ConvertOperation ( const Operation operation,
const Model model,
ConversionData data 
)
static

Definition at line 21 of file Converter.cpp.

References armnn::Across, armnn_driver::AreDynamicTensorsSupported(), ARMNN_ASSERT, armnn::BoundedReLu, Connect(), IOutputSlot::Connect(), LayerInputHandle::Connect(), armnn_driver::ConvertOperationInputToConstTensorPin(), armnn_driver::ConvertPaddings(), armnn_driver::ConvertPooling2d(), armnn_driver::ConvertReduce(), armnn_driver::ConvertToActivation(), armnn_driver::ConvertToLayerInputHandle(), armnn::CreateDescriptorForConcatenation(), armnn_driver::DequantizeAndMakeConstTensorPin(), armnn::error, armnnUtils::ExpandDims(), FORWARD_LAYER_SUPPORT_FUNC, armnn_driver::g_DontPermute, armnn::GetArgMinMaxFunctionAsCString(), DataLayoutIndexed::GetChannelsIndex(), armnn::GetComparisonOperationAsCString(), ConstTensorPin::GetConstTensor(), ConstTensorPin::GetConstTensorPtr(), TensorInfo::GetDataType(), armnn::GetDataTypeSize(), DataLayoutIndexed::GetHeightIndex(), BaseTensor< MemoryType >::GetInfo(), armnn_driver::GetInputActivationFunction(), armnn_driver::GetInputActivationFunctionFromTensor(), armnn_driver::GetInputFloat32(), armnn_driver::GetInputInt32(), armnn_driver::GetInputOperand(), armnn_driver::GetInputPaddingScheme(), armnn_driver::GetInputScalar(), IConnectableLayer::GetInputSlot(), armnn::GetLogicalBinaryOperationAsCString(), BaseTensor< MemoryType >::GetMemoryArea(), TensorShape::GetNumDimensions(), TensorInfo::GetNumDimensions(), TensorShape::GetNumElements(), IConnectableLayer::GetNumInputSlots(), IConnectableLayer::GetNumOutputSlots(), armnn_driver::GetOperandType(), armnn_driver::GetOptionalBool(), armnn_driver::GetOptionalConvolutionDilationParams(), armnn_driver::GetOptionalInputActivation(), armnn_driver::GetOutputOperand(), LayerInputHandle::GetOutputSlot(), IConnectableLayer::GetOutputSlot(), TensorInfo::GetQuantizationDim(), TensorInfo::GetQuantizationOffset(), TensorInfo::GetQuantizationScale(), TensorInfo::GetQuantizationScales(), armnn::GetResizeMethodAsCString(), TensorInfo::GetShape(), BaseTensor< MemoryType >::GetShape(), IOutputSlot::GetTensorInfo(), LayerInputHandle::GetTensorInfo(), armnn_driver::GetTensorInfoForOperand(), armnn_driver::GetTensorInt32Values(), armnn::GetUnaryOperationAsCString(), DataLayoutIndexed::GetWidthIndex(), OptionalBase::has_value(), TensorInfo::HasPerAxisQuantization(), armnn::IsActivationSupported(), armnn::IsAdditionSupported(), armnn::IsBatchToSpaceNdSupported(), armnn::IsConcatSupported(), armnn_driver::IsConnectedToDequantize(), armnn::IsConvolution2dSupported(), armnn::IsDepthwiseConvolutionSupported(), armnn::IsDequantizeSupported(), armnn::IsDivisionSupported(), armnn_driver::IsDynamicTensor(), armnn::IsFloorSupported(), armnn::IsFullyConnectedSupported(), armnn::IsL2NormalizationSupported(), armnn::IsLstmSupported(), armnn::IsMaximumSupported(), armnn::IsMeanSupported(), armnn::IsMinimumSupported(), armnn::IsMultiplicationSupported(), armnn::IsNormalizationSupported(), armnn_driver::IsOperandConstant(), ConstTensorPin::IsOptional(), armnn::IsPadSupported(), armnn::IsPreluSupported(), armnn::IsQuantizedLstmSupported(), armnn_driver::isQuantizedOperand(), armnn::IsReshapeSupported(), armnn::IsResizeSupported(), armnn::IsSoftmaxSupported(), armnn::IsSpaceToBatchNdSupported(), armnn::IsSpaceToDepthSupported(), armnn::IsSplitterSupported(), armnn::IsStridedSliceSupported(), armnn::IsSubtractionSupported(), IOutputSlot::IsTensorInfoSet(), armnn::IsTransposeConvolution2dSupported(), LayerInputHandle::IsValid(), ConstTensorPin::IsValid(), armnn_driver::IsWeightsValid(), armnn::LocalBrightness, ActivationDescriptor::m_A, LstmDescriptor::m_ActivationFunc, ResizeDescriptor::m_AlignCorners, NormalizationDescriptor::m_Alpha, ArgMinMaxDescriptor::m_Axis, SoftmaxDescriptor::m_Axis, GatherDescriptor::m_Axis, MeanDescriptor::m_Axis, ActivationDescriptor::m_B, ConversionData::m_Backends, StridedSliceDescriptor::m_Begin, StridedSliceDescriptor::m_BeginMask, SoftmaxDescriptor::m_Beta, NormalizationDescriptor::m_Beta, InstanceNormalizationDescriptor::m_Beta, FullyConnectedDescriptor::m_BiasEnabled, Convolution2dDescriptor::m_BiasEnabled, DepthwiseConvolution2dDescriptor::m_BiasEnabled, TransposeConvolution2dDescriptor::m_BiasEnabled, BatchToSpaceNdDescriptor::m_BlockShape, SpaceToBatchNdDescriptor::m_BlockShape, SpaceToDepthDescriptor::m_BlockSize, QuantizedLstmInputParams::m_CellBias, LstmInputParams::m_CellBias, LstmInputParamsInfo::m_CellBias, QuantizedLstmInputParamsInfo::m_CellBias, QLstmDescriptor::m_CellClip, QLstmDescriptor::m_CellIntermediateScale, LstmInputParams::m_CellLayerNormWeights, LstmInputParamsInfo::m_CellLayerNormWeights, LstmInputParams::m_CellToForgetWeights, LstmInputParamsInfo::m_CellToForgetWeights, LstmInputParams::m_CellToInputWeights, LstmInputParamsInfo::m_CellToInputWeights, LstmInputParams::m_CellToOutputWeights, LstmInputParamsInfo::m_CellToOutputWeights, LstmDescriptor::m_CifgEnabled, QLstmDescriptor::m_CifgEnabled, LstmDescriptor::m_ClippingThresCell, LstmDescriptor::m_ClippingThresProj, FullyConnectedDescriptor::m_ConstantWeights, BatchToSpaceNdDescriptor::m_Crops, Convolution2dDescriptor::m_DataLayout, DepthwiseConvolution2dDescriptor::m_DataLayout, NormalizationDescriptor::m_DataLayout, L2NormalizationDescriptor::m_DataLayout, InstanceNormalizationDescriptor::m_DataLayout, BatchToSpaceNdDescriptor::m_DataLayout, ResizeDescriptor::m_DataLayout, SpaceToBatchNdDescriptor::m_DataLayout, SpaceToDepthDescriptor::m_DataLayout, StridedSliceDescriptor::m_DataLayout, TransposeConvolution2dDescriptor::m_DataLayout, Convolution2dDescriptor::m_DilationX, DepthwiseConvolution2dDescriptor::m_DilationX, Convolution2dDescriptor::m_DilationY, DepthwiseConvolution2dDescriptor::m_DilationY, TransposeDescriptor::m_DimMappings, StridedSliceDescriptor::m_End, StridedSliceDescriptor::m_EndMask, InstanceNormalizationDescriptor::m_Eps, QuantizedLstmInputParams::m_ForgetGateBias, LstmInputParams::m_ForgetGateBias, LstmInputParamsInfo::m_ForgetGateBias, QuantizedLstmInputParamsInfo::m_ForgetGateBias, QLstmDescriptor::m_ForgetIntermediateScale, LstmInputParams::m_ForgetLayerNormWeights, LstmInputParamsInfo::m_ForgetLayerNormWeights, ActivationDescriptor::m_Function, ArgMinMaxDescriptor::m_Function, InstanceNormalizationDescriptor::m_Gamma, ResizeDescriptor::m_HalfPixelCenters, QLstmDescriptor::m_HiddenStateScale, QLstmDescriptor::m_HiddenStateZeroPoint, QuantizedLstmInputParams::m_InputGateBias, LstmInputParams::m_InputGateBias, LstmInputParamsInfo::m_InputGateBias, QuantizedLstmInputParamsInfo::m_InputGateBias, QLstmDescriptor::m_InputIntermediateScale, LstmInputParams::m_InputLayerNormWeights, LstmInputParamsInfo::m_InputLayerNormWeights, QuantizedLstmInputParams::m_InputToCellWeights, LstmInputParams::m_InputToCellWeights, LstmInputParamsInfo::m_InputToCellWeights, QuantizedLstmInputParamsInfo::m_InputToCellWeights, QuantizedLstmInputParams::m_InputToForgetWeights, LstmInputParams::m_InputToForgetWeights, LstmInputParamsInfo::m_InputToForgetWeights, QuantizedLstmInputParamsInfo::m_InputToForgetWeights, QuantizedLstmInputParams::m_InputToInputWeights, LstmInputParams::m_InputToInputWeights, LstmInputParamsInfo::m_InputToInputWeights, QuantizedLstmInputParamsInfo::m_InputToInputWeights, QuantizedLstmInputParams::m_InputToOutputWeights, LstmInputParams::m_InputToOutputWeights, LstmInputParamsInfo::m_InputToOutputWeights, QuantizedLstmInputParamsInfo::m_InputToOutputWeights, NormalizationDescriptor::m_K, MeanDescriptor::m_KeepDims, LstmDescriptor::m_LayerNormEnabled, QLstmDescriptor::m_LayerNormEnabled, ResizeDescriptor::m_Method, ConversionData::m_Network, NormalizationDescriptor::m_NormChannelType, NormalizationDescriptor::m_NormMethodType, NormalizationDescriptor::m_NormSize, QuantizedLstmInputParams::m_OutputGateBias, LstmInputParams::m_OutputGateBias, LstmInputParamsInfo::m_OutputGateBias, QuantizedLstmInputParamsInfo::m_OutputGateBias, QLstmDescriptor::m_OutputIntermediateScale, LstmInputParams::m_OutputLayerNormWeights, LstmInputParamsInfo::m_OutputLayerNormWeights, TransposeConvolution2dDescriptor::m_OutputShape, TransposeConvolution2dDescriptor::m_OutputShapeEnabled, Convolution2dDescriptor::m_PadBottom, DepthwiseConvolution2dDescriptor::m_PadBottom, TransposeConvolution2dDescriptor::m_PadBottom, Convolution2dDescriptor::m_PadLeft, DepthwiseConvolution2dDescriptor::m_PadLeft, TransposeConvolution2dDescriptor::m_PadLeft, SpaceToBatchNdDescriptor::m_PadList, Convolution2dDescriptor::m_PadRight, DepthwiseConvolution2dDescriptor::m_PadRight, TransposeConvolution2dDescriptor::m_PadRight, Convolution2dDescriptor::m_PadTop, DepthwiseConvolution2dDescriptor::m_PadTop, TransposeConvolution2dDescriptor::m_PadTop, PadDescriptor::m_PadValue, LstmDescriptor::m_PeepholeEnabled, QLstmDescriptor::m_PeepholeEnabled, LstmInputParams::m_ProjectionBias, LstmInputParamsInfo::m_ProjectionBias, QLstmDescriptor::m_ProjectionClip, LstmDescriptor::m_ProjectionEnabled, QLstmDescriptor::m_ProjectionEnabled, LstmInputParams::m_ProjectionWeights, LstmInputParamsInfo::m_ProjectionWeights, QuantizedLstmInputParams::m_RecurrentToCellWeights, LstmInputParams::m_RecurrentToCellWeights, LstmInputParamsInfo::m_RecurrentToCellWeights, QuantizedLstmInputParamsInfo::m_RecurrentToCellWeights, QuantizedLstmInputParams::m_RecurrentToForgetWeights, LstmInputParams::m_RecurrentToForgetWeights, LstmInputParamsInfo::m_RecurrentToForgetWeights, QuantizedLstmInputParamsInfo::m_RecurrentToForgetWeights, QuantizedLstmInputParams::m_RecurrentToInputWeights, LstmInputParams::m_RecurrentToInputWeights, LstmInputParamsInfo::m_RecurrentToInputWeights, QuantizedLstmInputParamsInfo::m_RecurrentToInputWeights, QuantizedLstmInputParams::m_RecurrentToOutputWeights, LstmInputParams::m_RecurrentToOutputWeights, LstmInputParamsInfo::m_RecurrentToOutputWeights, QuantizedLstmInputParamsInfo::m_RecurrentToOutputWeights, StridedSliceDescriptor::m_ShrinkAxisMask, StridedSliceDescriptor::m_Stride, Convolution2dDescriptor::m_StrideX, DepthwiseConvolution2dDescriptor::m_StrideX, TransposeConvolution2dDescriptor::m_StrideX, Convolution2dDescriptor::m_StrideY, DepthwiseConvolution2dDescriptor::m_StrideY, TransposeConvolution2dDescriptor::m_StrideY, ResizeDescriptor::m_TargetHeight, ReshapeDescriptor::m_TargetShape, ResizeDescriptor::m_TargetWidth, FullyConnectedDescriptor::m_TransposeWeightMatrix, BatchMatMulDescriptor::m_TransposeX, BatchMatMulDescriptor::m_TransposeY, FillDescriptor::m_Value, armnn::Max, armnn::Min, armnn::NHWC, armnn::numeric_cast(), armnn_driver::OptionalDataLayout(), armnn::QAsymmS8, armnn::QAsymmU8, armnn::ReLu, LayerInputHandle::SanitizeQuantizationScale(), OriginsDescriptor::SetConcatAxis(), TensorInfo::SetQuantizationOffset(), TensorInfo::SetQuantizationScale(), TensorInfo::SetQuantizationScales(), TensorInfo::SetShape(), IOutputSlot::SetTensorInfo(), armnn_driver::SetupAndTrackLayerOutputSlot(), OriginsDescriptor::SetViewOriginCoord(), ViewsDescriptor::SetViewOriginCoord(), ViewsDescriptor::SetViewSize(), armnn::Shape, armnn::Sigmoid, armnn::Sum, armnn::TanH, armnnUtils::TransposeTensorShape(), and OptionalReferenceSwitch< IsReference, T >::value().

Referenced by ModelToINetworkTransformer::ModelToINetworkTransformer().

22 {
23  switch (operation.type)
24  {
25  case OperationType::ABS:
26  return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Abs);
27  case OperationType::ADD:
28  return ConvertAdd(operation, model, data);
29  case OperationType::ARGMAX:
30  return ConvertArgMinMax(operation, model, data, ArgMinMaxFunction::Max);
31  case OperationType::ARGMIN:
32  return ConvertArgMinMax(operation, model, data, ArgMinMaxFunction::Min);
33  case OperationType::AVERAGE_POOL_2D:
34  return ConvertAveragePool2d(operation, model, data);
35  case OperationType::BATCH_MATMUL:
36  return ConvertBatchMatMul(operation, model, data);
37  case OperationType::BATCH_TO_SPACE_ND:
38  return ConvertBatchToSpaceNd(operation, model, data);
39  case OperationType::CAST:
40  return ConvertCast(operation, model, data);
41  case OperationType::CONCATENATION:
42  return ConvertConcatenation(operation, model, data);
43  case OperationType::CONV_2D:
44  return ConvertConv2d(operation, model, data);
45  case OperationType::DEPTH_TO_SPACE:
46  return ConvertDepthToSpace(operation, model, data);
47  case OperationType::DEPTHWISE_CONV_2D:
48  return ConvertDepthwiseConv2d(operation, model, data);
49  case OperationType::DEQUANTIZE:
50  return ConvertDequantize(operation, model, data);
51  case OperationType::DIV:
52  return ConvertDiv(operation, model, data);
53  case OperationType::ELU:
54  return ConvertElu(operation, model, data);
55  case OperationType::EQUAL:
56  return ConvertComparison(operation, model, data, ComparisonOperation::Equal);
57  case OperationType::EXP:
58  return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Exp);
59  case OperationType::EXPAND_DIMS:
60  return ConvertExpandDims(operation, model, data);
61  case OperationType::FILL:
62  return ConvertFill(operation, model, data);
63  case OperationType::FLOOR:
64  return ConvertFloor(operation, model, data);
65  case OperationType::FULLY_CONNECTED:
66  return ConvertFullyConnected(operation, model, data);
67  case OperationType::GATHER:
68  return ConvertGather(operation, model, data);
69  case OperationType::GREATER:
70  return ConvertComparison(operation, model, data, ComparisonOperation::Greater);
71  case OperationType::GREATER_EQUAL:
72  return ConvertComparison(operation, model, data, ComparisonOperation::GreaterOrEqual);
73  case OperationType::GROUPED_CONV_2D:
74  return ConvertGroupedConv2d(operation, model, data);
75  case OperationType::HARD_SWISH:
76  return ConvertHardSwish(operation, model, data);
77  case OperationType::INSTANCE_NORMALIZATION:
78  return ConvertInstanceNormalization(operation, model, data);
79  case OperationType::L2_NORMALIZATION:
80  return ConvertL2Normalization(operation, model, data);
81  case OperationType::L2_POOL_2D:
82  return ConvertL2Pool2d(operation, model, data);
83  case OperationType::LESS:
84  return ConvertComparison(operation, model, data, ComparisonOperation::Less);
85  case OperationType::LESS_EQUAL:
86  return ConvertComparison(operation, model, data, ComparisonOperation::LessOrEqual);
87  case OperationType::LOCAL_RESPONSE_NORMALIZATION:
88  return ConvertLocalResponseNormalization(operation, model, data);
89  case OperationType::LOG:
90  return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Log);
91  case OperationType::LOGICAL_AND:
92  return ConvertLogicalBinary(operation, model, data, LogicalBinaryOperation::LogicalAnd);
93  case OperationType::LOGICAL_NOT:
94  return ConvertElementwiseUnary(operation, model, data, UnaryOperation::LogicalNot);
95  case OperationType::LOGICAL_OR:
96  return ConvertLogicalBinary(operation, model, data, LogicalBinaryOperation::LogicalOr);
97  case OperationType::LOGISTIC:
98  return ConvertLogistic(operation, model, data);
99  case OperationType::LOG_SOFTMAX:
100  return ConvertLogSoftmax(operation, model, data);
101  case OperationType::LSTM:
102  return ConvertLstm(operation, model, data);
103  case OperationType::MAX_POOL_2D:
104  return ConvertMaxPool2d(operation, model, data);
105  case OperationType::MAXIMUM:
106  return ConvertMaximum(operation, model, data);
107  case OperationType::MEAN:
108  return ConvertMean(operation, model, data);
109  case OperationType::MINIMUM:
110  return ConvertMinimum(operation, model, data);
111  case OperationType::MUL:
112  return ConvertMul(operation, model, data);
113  case OperationType::NEG:
114  return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Neg);
115  case OperationType::NOT_EQUAL:
116  return ConvertComparison(operation, model, data, ComparisonOperation::NotEqual);
117  case OperationType::PAD:
118  return ConvertPad(operation, model, data);
119  case OperationType::PAD_V2:
120  return ConvertPadV2(operation, model, data);
121  case OperationType::PRELU:
122  return ConvertPrelu(operation, model, data);
123  case OperationType::QUANTIZE:
124  return ConvertQuantize(operation, model, data);
125  case OperationType::QUANTIZED_LSTM:
126  return ConvertQuantizedLstm(operation, model, data);
127  case OperationType::QUANTIZED_16BIT_LSTM:
128  return ConvertQuantized16BitLstm(operation, model, data);
129  case OperationType::RANK:
130  return ConvertRank(operation, model, data);
131  case OperationType::REDUCE_MAX:
132  return ConvertReduce(operation, model, data, armnn::ReduceOperation::Max);
133  case OperationType::REDUCE_MIN:
134  return ConvertReduce(operation, model, data, armnn::ReduceOperation::Min);
135  case OperationType::REDUCE_SUM:
136  return ConvertReduce(operation, model, data, armnn::ReduceOperation::Sum);
137  case OperationType::RELU:
138  return ConvertReLu(operation, model, data);
139  case OperationType::RELU1:
140  return ConvertReLu1(operation, model, data);
141  case OperationType::RELU6:
142  return ConvertReLu6(operation, model, data);
143  case OperationType::RESHAPE:
144  return ConvertReshape(operation, model, data);
145  case OperationType::RESIZE_BILINEAR:
146  return ConvertResize(operation, model, data, ResizeMethod::Bilinear);
147  case OperationType::RESIZE_NEAREST_NEIGHBOR:
148  return ConvertResize(operation, model, data, ResizeMethod::NearestNeighbor);
149  case OperationType::RSQRT:
150  return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Rsqrt);
151  case OperationType::SIN:
152  return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Sin);
153  case OperationType::SOFTMAX:
154  return ConvertSoftmax(operation, model, data);
155  case OperationType::SPACE_TO_BATCH_ND :
156  return ConvertSpaceToBatchNd(operation, model, data);
157  case OperationType::SPACE_TO_DEPTH:
158  return ConvertSpaceToDepth(operation, model, data);
159  case OperationType::SQRT:
160  return ConvertSqrt(operation, model, data);
161  case OperationType::SQUEEZE:
162  return ConvertSqueeze(operation, model, data);
163  case OperationType::STRIDED_SLICE:
164  return ConvertStridedSlice(operation, model, data);
165  case OperationType::SUB:
166  return ConvertSub(operation, model, data);
167  case OperationType::TRANSPOSE:
168  return ConvertTranspose(operation, model, data);
169  case OperationType::TRANSPOSE_CONV_2D:
170  return ConvertTransposeConv2d(operation, model, data);
171  case OperationType::TANH:
172  return ConvertTanH(operation, model, data);
173  default:
174  VLOG(DRIVER) << "Operation type: " << operation.type << "is not supported in ArmnnDriver";
175  return false;
176  }
177 }
bool ConvertReduce(const Operation &operation, const Model &model, ConversionData &data, armnn::ReduceOperation reduceOperation)

The documentation for this class was generated from the following files: