15 #include <boost/numeric/conversion/cast.hpp> 16 #include <flatbuffers/util.h> 20 using namespace armnn;
21 namespace fb = flatbuffers;
32 return serializer::ActivationFunction::ActivationFunction_Sigmoid;
34 return serializer::ActivationFunction::ActivationFunction_TanH;
36 return serializer::ActivationFunction::ActivationFunction_Linear;
38 return serializer::ActivationFunction::ActivationFunction_ReLu;
40 return serializer::ActivationFunction::ActivationFunction_BoundedReLu;
42 return serializer::ActivationFunction::ActivationFunction_LeakyReLu;
44 return serializer::ActivationFunction::ActivationFunction_Abs;
46 return serializer::ActivationFunction::ActivationFunction_Sqrt;
48 return serializer::ActivationFunction::ActivationFunction_Square;
50 return serializer::ActivationFunction::ActivationFunction_Elu;
52 return serializer::ActivationFunction::ActivationFunction_HardSwish;
54 return serializer::ActivationFunction::ActivationFunction_Sigmoid;
63 return serializer::ArgMinMaxFunction::ArgMinMaxFunction_Max;
66 return serializer::ArgMinMaxFunction::ArgMinMaxFunction_Min;
72 if (m_guidMap.empty())
74 m_guidMap.insert(std::make_pair(guid, m_layerId));
76 else if (m_guidMap.find(guid) == m_guidMap.end())
79 m_guidMap.insert(std::make_pair(guid, m_layerId));
83 return m_guidMap[guid];
92 auto flatBufferInputBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Input);
95 auto flatBufferInputBindableBaseLayer = serializer::CreateBindableLayerBase(m_flatBufferBuilder,
96 flatBufferInputBaseLayer,
99 m_inputIds.push_back(
id);
102 auto flatBufferInputLayer = serializer::CreateInputLayer(m_flatBufferBuilder, flatBufferInputBindableBaseLayer);
105 CreateAnyLayer(flatBufferInputLayer.o, serializer::Layer::Layer_InputLayer);
114 auto flatBufferOutputBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Output);
117 auto flatBufferOutputBindableBaseLayer = serializer::CreateBindableLayerBase(m_flatBufferBuilder,
118 flatBufferOutputBaseLayer,
121 m_outputIds.push_back(
id);
124 auto flatBufferOutputLayer = serializer::CreateOutputLayer(m_flatBufferBuilder, flatBufferOutputBindableBaseLayer);
126 CreateAnyLayer(flatBufferOutputLayer.o, serializer::Layer::Layer_OutputLayer);
132 auto flatBufferBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Abs);
133 auto flatBufferAbsLayer = serializer::CreateAbsLayer(m_flatBufferBuilder, flatBufferBaseLayer);
135 CreateAnyLayer(flatBufferAbsLayer.o, serializer::Layer::Layer_AbsLayer);
146 auto flatBufferBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Activation);
149 auto flatBufferDescriptor = CreateActivationDescriptor(m_flatBufferBuilder,
155 auto flatBufferAdditionLayer = CreateActivationLayer(m_flatBufferBuilder,
157 flatBufferDescriptor);
160 CreateAnyLayer(flatBufferAdditionLayer.o, serializer::Layer::Layer_ActivationLayer);
169 auto flatBufferAdditionBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Addition);
172 auto flatBufferAdditionLayer = serializer::CreateAdditionLayer(m_flatBufferBuilder, flatBufferAdditionBaseLayer);
175 CreateAnyLayer(flatBufferAdditionLayer.o, serializer::Layer::Layer_AdditionLayer);
186 auto flatBufferBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_ArgMinMax);
189 auto flatBufferDescriptor = CreateArgMinMaxDescriptor(m_flatBufferBuilder,
194 auto flatBufferLayer = CreateArgMinMaxLayer(m_flatBufferBuilder,
196 flatBufferDescriptor);
198 CreateAnyLayer(flatBufferLayer.o, serializer::Layer::Layer_ArgMinMaxLayer);
209 auto flatBufferBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_BatchToSpaceNd);
211 std::vector<unsigned int> crops;
212 crops.reserve(descriptor.
m_Crops.size() * 2);
213 for (
auto& crop : descriptor.
m_Crops)
215 crops.push_back(crop.first);
216 crops.push_back(crop.second);
219 auto flatBufferDescriptor =
220 CreateBatchToSpaceNdDescriptor(m_flatBufferBuilder,
221 m_flatBufferBuilder.CreateVector(descriptor.
m_BlockShape),
222 m_flatBufferBuilder.CreateVector(crops),
225 auto flatBufferLayer = serializer::CreateBatchToSpaceNdLayer(m_flatBufferBuilder,
227 flatBufferDescriptor);
229 CreateAnyLayer(flatBufferLayer.o, serializer::Layer::Layer_BatchToSpaceNdLayer);
242 auto fbBatchNormalizationBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_BatchNormalization);
243 auto fbBatchNormalizationDescriptor = serializer::CreateBatchNormalizationDescriptor(
245 batchNormDescriptor.
m_Eps,
248 auto fbMeanConstTensorInfo = CreateConstTensorInfo(mean);
249 auto fbVarianceConstTensorInfo = CreateConstTensorInfo(variance);
250 auto fbBetaConstTensorInfo = CreateConstTensorInfo(beta);
251 auto fbGammaConstTensorInfo = CreateConstTensorInfo(gamma);
252 auto fbBatchNormalizationLayer = serializer::CreateBatchNormalizationLayer(m_flatBufferBuilder,
253 fbBatchNormalizationBaseLayer,
254 fbBatchNormalizationDescriptor,
255 fbMeanConstTensorInfo,
256 fbVarianceConstTensorInfo,
257 fbBetaConstTensorInfo,
258 fbGammaConstTensorInfo);
260 CreateAnyLayer(fbBatchNormalizationLayer.o, serializer::Layer::Layer_BatchNormalizationLayer);
269 auto fbBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Comparison);
270 auto fbDescriptor = serializer::CreateComparisonDescriptor(
274 auto fbLayer = serializer::CreateComparisonLayer(m_flatBufferBuilder, fbBaseLayer, fbDescriptor);
275 CreateAnyLayer(fbLayer.o, serializer::Layer::Layer_ComparisonLayer);
286 auto flatBufferConstantBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Constant);
288 auto flatBufferConstTensorInfo = CreateConstTensorInfo(input);
291 auto flatBufferLayer = CreateConstantLayer(m_flatBufferBuilder,
292 flatBufferConstantBaseLayer,
293 flatBufferConstTensorInfo);
296 CreateAnyLayer(flatBufferLayer.o, serializer::Layer::Layer_ConstantLayer);
309 auto flatBufferBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Convolution2d);
311 auto flatBufferDescriptor = CreateConvolution2dDescriptor(m_flatBufferBuilder,
322 auto flatBufferWeightsConstTensorInfo = CreateConstTensorInfo(weights);
323 flatbuffers::Offset<serializer::ConstTensor> flatBufferBiasesConstTensorInfo;
327 flatBufferBiasesConstTensorInfo = CreateConstTensorInfo(biases.
value());
331 auto flatBufferLayer = CreateConvolution2dLayer(m_flatBufferBuilder,
333 flatBufferDescriptor,
334 flatBufferWeightsConstTensorInfo,
335 flatBufferBiasesConstTensorInfo);
338 CreateAnyLayer(flatBufferLayer.o, serializer::Layer::Layer_Convolution2dLayer);
347 auto fbBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_DepthToSpace);
348 auto fbDescriptor = CreateDepthToSpaceDescriptor(m_flatBufferBuilder,
352 auto fbLayer = serializer::CreateDepthToSpaceLayer(m_flatBufferBuilder, fbBaseLayer, fbDescriptor);
354 CreateAnyLayer(fbLayer.o, serializer::Layer::Layer_DepthToSpaceLayer);
365 auto fbBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_DepthwiseConvolution2d);
366 auto fbDescriptor = CreateDepthwiseConvolution2dDescriptor(m_flatBufferBuilder,
378 flatbuffers::Offset<serializer::ConstTensor> fbWeightsConstTensorInfo = CreateConstTensorInfo(weights);
379 flatbuffers::Offset<serializer::ConstTensor> fbBiasesConstTensorInfo;
382 fbBiasesConstTensorInfo = CreateConstTensorInfo(biases.
value());
385 auto flatBufferLayer = CreateDepthwiseConvolution2dLayer(m_flatBufferBuilder,
388 fbWeightsConstTensorInfo,
389 fbBiasesConstTensorInfo);
391 CreateAnyLayer(flatBufferLayer.o, serializer::Layer::Layer_DepthwiseConvolution2dLayer);
399 auto fbDequantizeBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Dequantize);
400 auto fbDequantizeLayer = serializer::CreateDequantizeLayer(m_flatBufferBuilder, fbDequantizeBaseLayer);
402 CreateAnyLayer(fbDequantizeLayer.o, serializer::Layer::Layer_DequantizeLayer);
412 auto fbBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_DetectionPostProcess);
413 auto fbDescriptor = CreateDetectionPostProcessDescriptor(m_flatBufferBuilder,
426 flatbuffers::Offset<serializer::ConstTensor> fbAnchorsConstTensorInfo = CreateConstTensorInfo(anchors);
428 auto flatBufferLayer = CreateDetectionPostProcessLayer(m_flatBufferBuilder,
431 fbAnchorsConstTensorInfo);
433 CreateAnyLayer(flatBufferLayer.o, serializer::Layer::Layer_DetectionPostProcessLayer);
440 auto fbDivisionBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Division);
441 auto fbDivisionLayer = serializer::CreateDivisionLayer(m_flatBufferBuilder, fbDivisionBaseLayer);
443 CreateAnyLayer(fbDivisionLayer.o, serializer::Layer::Layer_DivisionLayer);
452 auto fbBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_ElementwiseUnary);
453 auto fbDescriptor = serializer::CreateElementwiseUnaryDescriptor(
457 auto fbLayer = serializer::CreateElementwiseUnaryLayer(m_flatBufferBuilder, fbBaseLayer, fbDescriptor);
458 CreateAnyLayer(fbLayer.o, serializer::Layer::Layer_ElementwiseUnaryLayer);
465 auto fbBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Equal);
466 auto fbEqualLayer = serializer::CreateEqualLayer(m_flatBufferBuilder, fbBaseLayer);
468 CreateAnyLayer(fbEqualLayer.o, serializer::Layer::Layer_EqualLayer);
475 auto flatBufferFloorBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Floor);
476 auto flatBufferFloorLayer = serializer::CreateFloorLayer(m_flatBufferBuilder, flatBufferFloorBaseLayer);
478 CreateAnyLayer(flatBufferFloorLayer.o, serializer::Layer::Layer_FloorLayer);
485 auto fbGatherBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Gather);
486 auto flatBufferLayer = serializer::CreateGatherLayer(m_flatBufferBuilder, fbGatherBaseLayer);
488 CreateAnyLayer(flatBufferLayer.o, serializer::Layer::Layer_GatherLayer);
495 auto fbGreaterBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Greater);
496 auto fbGreaterLayer = serializer::CreateGreaterLayer(m_flatBufferBuilder, fbGreaterBaseLayer);
498 CreateAnyLayer(fbGreaterLayer.o, serializer::Layer::Layer_GreaterLayer);
501 void SerializerVisitor::VisitInstanceNormalizationLayer(
508 auto fbDescriptor = serializer::CreateInstanceNormalizationDescriptor(
510 instanceNormalizationDescriptor.
m_Gamma,
511 instanceNormalizationDescriptor.
m_Beta,
512 instanceNormalizationDescriptor.
m_Eps,
515 auto fbBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_InstanceNormalization);
516 auto fbLayer = serializer::CreateInstanceNormalizationLayer(m_flatBufferBuilder, fbBaseLayer, fbDescriptor);
518 CreateAnyLayer(fbLayer.o, serializer::Layer::Layer_InstanceNormalizationLayer);
528 auto fbBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_L2Normalization);
531 auto fbDescriptor = serializer::CreateL2NormalizationDescriptor(
534 l2NormalizationDescriptor.
m_Eps);
537 auto fbLayer = serializer::CreateL2NormalizationLayer(m_flatBufferBuilder, fbBaseLayer, fbDescriptor);
539 CreateAnyLayer(fbLayer.o, serializer::Layer::Layer_L2NormalizationLayer);
549 auto flatBufferLogSoftmaxBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_LogSoftmax);
552 auto flatBufferLogSoftmaxDesc =
553 serializer::CreateLogSoftmaxDescriptor(m_flatBufferBuilder,
554 logSoftmaxDescriptor.
m_Beta,
555 logSoftmaxDescriptor.
m_Axis);
558 auto flatBufferLogSoftmaxLayer =
559 serializer::CreateLogSoftmaxLayer(m_flatBufferBuilder,
560 flatBufferLogSoftmaxBaseLayer,
561 flatBufferLogSoftmaxDesc);
563 CreateAnyLayer(flatBufferLogSoftmaxLayer.o, serializer::Layer::Layer_LogSoftmaxLayer);
573 auto fbLstmBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Lstm);
575 auto fbLstmDescriptor = serializer::CreateLstmDescriptor(
593 auto cellBias = CreateConstTensorInfo(*params.
m_CellBias);
597 flatbuffers::Offset<serializer::ConstTensor> inputToInputWeights;
598 flatbuffers::Offset<serializer::ConstTensor> recurrentToInputWeights;
599 flatbuffers::Offset<serializer::ConstTensor> cellToInputWeights;
600 flatbuffers::Offset<serializer::ConstTensor> inputGateBias;
601 flatbuffers::Offset<serializer::ConstTensor> projectionWeights;
602 flatbuffers::Offset<serializer::ConstTensor> projectionBias;
603 flatbuffers::Offset<serializer::ConstTensor> cellToForgetWeights;
604 flatbuffers::Offset<serializer::ConstTensor> cellToOutputWeights;
605 flatbuffers::Offset<serializer::ConstTensor> inputLayerNormWeights;
606 flatbuffers::Offset<serializer::ConstTensor> forgetLayerNormWeights;
607 flatbuffers::Offset<serializer::ConstTensor> cellLayerNormWeights;
608 flatbuffers::Offset<serializer::ConstTensor> outputLayerNormWeights;
641 auto fbLstmParams = serializer::CreateLstmInputParams(
643 inputToForgetWeights,
645 inputToOutputWeights,
646 recurrentToForgetWeights,
647 recurrentToCellWeights,
648 recurrentToOutputWeights,
653 recurrentToInputWeights,
660 inputLayerNormWeights,
661 forgetLayerNormWeights,
662 cellLayerNormWeights,
663 outputLayerNormWeights);
665 auto fbLstmLayer = serializer::CreateLstmLayer(
671 CreateAnyLayer(fbLstmLayer.o, serializer::Layer::Layer_LstmLayer);
678 auto fbMaximumBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Maximum);
679 auto fbMaximumLayer = serializer::CreateMaximumLayer(m_flatBufferBuilder, fbMaximumBaseLayer);
681 CreateAnyLayer(fbMaximumLayer.o, serializer::Layer::Layer_MaximumLayer);
690 auto fbMeanBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Mean);
691 auto fbMeanDescriptor = serializer::CreateMeanDescriptor(m_flatBufferBuilder,
692 m_flatBufferBuilder.CreateVector(descriptor.
m_Axis),
695 auto fbMeanLayer = serializer::CreateMeanLayer(m_flatBufferBuilder,
699 CreateAnyLayer(fbMeanLayer.o, serializer::Layer::Layer_MeanLayer);
706 auto fbMinimumBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Minimum);
707 auto fbMinimumLayer = serializer::CreateMinimumLayer(m_flatBufferBuilder, fbMinimumBaseLayer);
709 CreateAnyLayer(fbMinimumLayer.o, serializer::Layer::Layer_MinimumLayer);
716 auto fbMergeBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Merge);
717 auto fbMergeLayer = serializer::CreateMergeLayer(m_flatBufferBuilder, fbMergeBaseLayer);
719 CreateAnyLayer(fbMergeLayer.o, serializer::Layer::Layer_MergeLayer);
726 VisitConcatLayer(layer, mergerDescriptor, name);
735 auto flatBufferConcatBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Concat);
737 std::vector<flatbuffers::Offset<UintVector>> views;
738 for (
unsigned int v = 0; v < concatDescriptor.
GetNumViews(); ++v)
741 std::vector<uint32_t> origins;
744 origins.push_back(origin[d]);
746 auto view = m_flatBufferBuilder.CreateVector(origins);
747 auto uintVector = CreateUintVector(m_flatBufferBuilder, view);
748 views.push_back(uintVector);
751 auto flatBufferConcatDescriptor = CreateOriginsDescriptor(m_flatBufferBuilder,
755 m_flatBufferBuilder.CreateVector(views));
757 auto flatBufferLayer = CreateConcatLayer(m_flatBufferBuilder,
758 flatBufferConcatBaseLayer,
759 flatBufferConcatDescriptor);
761 CreateAnyLayer(flatBufferLayer.o, serializer::Layer::Layer_ConcatLayer);
768 auto fbMultiplicationBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Multiplication);
769 auto fbMultiplicationLayer = serializer::CreateMultiplicationLayer(m_flatBufferBuilder,
770 fbMultiplicationBaseLayer);
772 CreateAnyLayer(fbMultiplicationLayer.o, serializer::Layer::Layer_MultiplicationLayer);
781 auto flatBufferBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Pad);
783 std::vector<unsigned int> padList;
786 padList.push_back(p.first);
787 padList.push_back(p.second);
790 auto flatBufferPadDesc = serializer::CreatePadDescriptor(m_flatBufferBuilder,
791 m_flatBufferBuilder.CreateVector(padList),
794 auto flatBufferPadLayer = serializer::CreatePadLayer(m_flatBufferBuilder,
798 CreateAnyLayer(flatBufferPadLayer.o, serializer::Layer::Layer_PadLayer);
808 auto flatBufferPermuteBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Permute);
810 std::vector<unsigned int> dimMappings;
816 auto flatBufferPermuteDesc = serializer::CreatePermuteDescriptor(m_flatBufferBuilder,
817 m_flatBufferBuilder.CreateVector(dimMappings));
820 auto flatBufferPermuteLayer = serializer::CreatePermuteLayer(m_flatBufferBuilder,
821 flatBufferPermuteBaseLayer,
822 flatBufferPermuteDesc);
825 CreateAnyLayer(flatBufferPermuteLayer.o, serializer::Layer::Layer_PermuteLayer);
836 auto flatBufferReshapeBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Reshape);
838 std::vector<unsigned int> targetShape;
844 auto flatBufferReshapeDesc = serializer::CreateReshapeDescriptor(m_flatBufferBuilder,
845 m_flatBufferBuilder.CreateVector(targetShape));
848 auto flatBufferReshapeLayer = serializer::CreateReshapeLayer(m_flatBufferBuilder, flatBufferReshapeBaseLayer,
849 flatBufferReshapeDesc);
852 CreateAnyLayer(flatBufferReshapeLayer.o, serializer::Layer::Layer_ReshapeLayer);
861 auto flatBufferBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_ResizeBilinear);
863 auto flatBufferDescriptor =
864 CreateResizeBilinearDescriptor(m_flatBufferBuilder,
869 auto flatBufferLayer = serializer::CreateResizeBilinearLayer(m_flatBufferBuilder,
871 flatBufferDescriptor);
873 CreateAnyLayer(flatBufferLayer.o, serializer::Layer::Layer_ResizeBilinearLayer);
882 auto flatBufferBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Resize);
884 auto flatBufferDescriptor =
885 CreateResizeDescriptor(m_flatBufferBuilder,
891 auto flatBufferLayer = serializer::CreateResizeLayer(m_flatBufferBuilder,
893 flatBufferDescriptor);
895 CreateAnyLayer(flatBufferLayer.o, serializer::Layer::Layer_ResizeLayer);
902 auto fbRsqrtBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Rsqrt);
903 auto fbRsqrtLayer = serializer::CreateRsqrtLayer(m_flatBufferBuilder, fbRsqrtBaseLayer);
905 CreateAnyLayer(fbRsqrtLayer.o, serializer::Layer::Layer_RsqrtLayer);
914 auto fbSliceBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Slice);
915 auto fbSliceDescriptor = CreateSliceDescriptor(m_flatBufferBuilder,
916 m_flatBufferBuilder.CreateVector(sliceDescriptor.
m_Begin),
917 m_flatBufferBuilder.CreateVector(sliceDescriptor.
m_Size));
919 auto fbSliceLayer = serializer::CreateSliceLayer(m_flatBufferBuilder, fbSliceBaseLayer, fbSliceDescriptor);
921 CreateAnyLayer(fbSliceLayer.o, serializer::Layer::Layer_SliceLayer);
932 auto flatBufferSoftmaxBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Softmax);
935 auto flatBufferSoftmaxDesc =
936 serializer::CreateSoftmaxDescriptor(m_flatBufferBuilder, softmaxDescriptor.
m_Beta);
939 auto flatBufferSoftmaxLayer =
940 serializer::CreateSoftmaxLayer(m_flatBufferBuilder,
941 flatBufferSoftmaxBaseLayer,
942 flatBufferSoftmaxDesc);
944 CreateAnyLayer(flatBufferSoftmaxLayer.o, serializer::Layer::Layer_SoftmaxLayer);
953 auto fbPooling2dBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Pooling2d);
954 auto fbPooling2dDescriptor = serializer::CreatePooling2dDescriptor(
969 auto fbPooling2dLayer = serializer::CreatePooling2dLayer(m_flatBufferBuilder,
970 fbPooling2dBaseLayer,
971 fbPooling2dDescriptor);
973 CreateAnyLayer(fbPooling2dLayer.o, serializer::Layer::Layer_Pooling2dLayer);
982 auto flatBufferPreluBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Prelu);
985 auto flatBufferPreluLayer = serializer::CreatePreluLayer(m_flatBufferBuilder, flatBufferPreluBaseLayer);
988 CreateAnyLayer(flatBufferPreluLayer.o, serializer::Layer::Layer_PreluLayer);
995 auto fbQuantizeBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Quantize);
996 auto fbQuantizeLayer = serializer::CreateQuantizeLayer(m_flatBufferBuilder,
997 fbQuantizeBaseLayer);
998 CreateAnyLayer(fbQuantizeLayer.o, serializer::Layer::Layer_QuantizeLayer);
1011 auto flatBufferBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_FullyConnected);
1014 auto flatBufferDescriptor =
1015 serializer::CreateFullyConnectedDescriptor(m_flatBufferBuilder,
1020 auto flatBufferWeights = CreateConstTensorInfo(weights);
1023 flatbuffers::Offset<serializer::ConstTensor> flatBufferBiases;
1026 flatBufferBiases = CreateConstTensorInfo(biases.
value());
1030 auto flatBufferLayer = serializer::CreateFullyConnectedLayer(m_flatBufferBuilder,
1031 flatBufferBaseLayer,
1032 flatBufferDescriptor,
1037 CreateAnyLayer(flatBufferLayer.o, serializer::Layer::Layer_FullyConnectedLayer);
1048 auto flatBufferBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_SpaceToBatchNd);
1050 std::vector<unsigned int> padList;
1051 padList.reserve(spaceToBatchNdDescriptor.
m_PadList.size()*2);
1052 for (
auto& pad : spaceToBatchNdDescriptor.
m_PadList)
1054 padList.push_back(pad.first);
1055 padList.push_back(pad.second);
1058 auto flatBufferDescriptor =
1059 CreateSpaceToBatchNdDescriptor(m_flatBufferBuilder,
1060 m_flatBufferBuilder.CreateVector(spaceToBatchNdDescriptor.
m_BlockShape),
1061 m_flatBufferBuilder.CreateVector(padList),
1064 auto flatBufferLayer = serializer::CreateSpaceToBatchNdLayer(m_flatBufferBuilder,
1065 flatBufferBaseLayer,
1066 flatBufferDescriptor);
1068 CreateAnyLayer(flatBufferLayer.o, serializer::Layer::Layer_SpaceToBatchNdLayer);
1078 auto flatBufferBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_SpaceToDepth);
1079 auto flatBufferDescriptor =
1080 CreateSpaceToDepthDescriptor(m_flatBufferBuilder,
1084 auto flatBufferLayer = serializer::CreateSpaceToDepthLayer(m_flatBufferBuilder,
1085 flatBufferBaseLayer,
1086 flatBufferDescriptor);
1088 CreateAnyLayer(flatBufferLayer.o, serializer::Layer::Layer_SpaceToDepthLayer);
1099 std::vector<flatbuffers::Offset<UintVector>> flatBufferViewOrigins;
1100 flatBufferViewOrigins.reserve(viewsDescriptor.
GetNumViews());
1102 for(
unsigned int vIdx = 0; vIdx < viewsDescriptor.
GetNumViews(); ++vIdx)
1104 std::vector<uint32_t> viewOrigin;
1108 for(
unsigned int dIdx = 0; dIdx < viewsDescriptor.
GetNumDimensions(); ++dIdx)
1110 viewOrigin.push_back(viewsDescriptor.
GetViewOrigin(vIdx)[dIdx]);
1113 flatBufferViewOrigins.push_back(CreateUintVector(m_flatBufferBuilder,
1114 m_flatBufferBuilder.CreateVector(viewOrigin)));
1118 auto flatBufferOriginDescriptor = CreateOriginsDescriptor(m_flatBufferBuilder,
1122 m_flatBufferBuilder.CreateVector(flatBufferViewOrigins));
1125 std::vector<flatbuffers::Offset<UintVector>> flatBufferViewSizes;
1126 flatBufferViewSizes.reserve(viewsDescriptor.
GetNumViews());
1128 for(
unsigned int vIdx = 0; vIdx < viewsDescriptor.
GetNumViews(); ++vIdx)
1130 std::vector<uint32_t> viewSize;
1134 for(
unsigned int dIdx = 0; dIdx < viewsDescriptor.
GetNumDimensions(); ++dIdx)
1136 viewSize.push_back(viewsDescriptor.
GetViewSizes(vIdx)[dIdx]);
1139 flatBufferViewSizes.push_back(CreateUintVector(m_flatBufferBuilder,
1140 m_flatBufferBuilder.CreateVector(viewSize)));
1144 auto flatBufferViewsDescriptor = CreateViewsDescriptor(m_flatBufferBuilder,
1145 flatBufferOriginDescriptor,
1146 m_flatBufferBuilder.CreateVector(flatBufferViewSizes));
1149 auto flatBufferBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Splitter);
1151 auto flatBufferSplitterLayer = serializer::CreateSplitterLayer(m_flatBufferBuilder,
1152 flatBufferBaseLayer,
1153 flatBufferViewsDescriptor);
1155 CreateAnyLayer(flatBufferSplitterLayer.o, serializer::Layer::Layer_SplitterLayer);
1164 auto fbNormalizationBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Normalization);
1166 auto fbNormalizationDescriptor = serializer::CreateNormalizationDescriptor(
1167 m_flatBufferBuilder,
1176 auto flatBufferLayer = serializer::CreateNormalizationLayer(m_flatBufferBuilder,
1177 fbNormalizationBaseLayer,
1178 fbNormalizationDescriptor);
1180 CreateAnyLayer(flatBufferLayer.o, serializer::Layer::Layer_NormalizationLayer);
1189 auto stackBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Stack);
1191 std::vector<unsigned int> inputShape;
1197 auto flatBufferStackDescriptor = CreateStackDescriptor(m_flatBufferBuilder,
1200 m_flatBufferBuilder.CreateVector(inputShape));
1202 auto stackLayer = serializer::CreateStackLayer(m_flatBufferBuilder, stackBaseLayer, flatBufferStackDescriptor);
1203 CreateAnyLayer(stackLayer.o, serializer::Layer::Layer_StackLayer);
1212 auto fbDescriptor = serializer::CreateStandInDescriptor(m_flatBufferBuilder,
1216 auto fbBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_StandIn);
1217 auto fbLayer = serializer::CreateStandInLayer(m_flatBufferBuilder, fbBaseLayer, fbDescriptor);
1219 CreateAnyLayer(fbLayer.o, serializer::Layer::Layer_StandInLayer);
1228 auto flatBufferBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_StridedSlice);
1230 auto flatBufferDescriptor =
1231 CreateStridedSliceDescriptor(m_flatBufferBuilder,
1232 m_flatBufferBuilder.CreateVector(stridedSliceDescriptor.
m_Begin),
1233 m_flatBufferBuilder.CreateVector(stridedSliceDescriptor.
m_End),
1234 m_flatBufferBuilder.CreateVector(stridedSliceDescriptor.
m_Stride),
1242 auto flatBufferLayer = serializer::CreateStridedSliceLayer(m_flatBufferBuilder,
1243 flatBufferBaseLayer,
1244 flatBufferDescriptor);
1246 CreateAnyLayer(flatBufferLayer.o, serializer::Layer::Layer_StridedSliceLayer);
1253 auto fbSubtractionBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Subtraction);
1254 auto fbSubtractionLayer = serializer::CreateSubtractionLayer(m_flatBufferBuilder, fbSubtractionBaseLayer);
1256 CreateAnyLayer(fbSubtractionLayer.o, serializer::Layer::Layer_SubtractionLayer);
1263 auto fbSwitchBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Switch);
1264 auto fbSwitchLayer = serializer::CreateSwitchLayer(m_flatBufferBuilder, fbSwitchBaseLayer);
1266 CreateAnyLayer(fbSwitchLayer.o, serializer::Layer::Layer_SwitchLayer);
1269 void SerializerVisitor::VisitTransposeConvolution2dLayer(
1278 auto fbBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Convolution2d);
1279 auto fbDescriptor = CreateTransposeConvolution2dDescriptor(m_flatBufferBuilder,
1290 auto fbWeightsConstTensorInfo = CreateConstTensorInfo(weights);
1291 flatbuffers::Offset<serializer::ConstTensor> fbBiasesConstTensorInfo;
1294 fbBiasesConstTensorInfo = CreateConstTensorInfo(biases.
value());
1297 auto fbLayer = CreateTransposeConvolution2dLayer(m_flatBufferBuilder,
1300 fbWeightsConstTensorInfo,
1301 fbBiasesConstTensorInfo);
1303 CreateAnyLayer(fbLayer.o, serializer::Layer::Layer_TransposeConvolution2dLayer);
1313 auto flatBufferBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_Transpose);
1315 std::vector<unsigned int> dimMappings;
1321 auto flatBufferDesc = serializer::CreateTransposeDescriptor(m_flatBufferBuilder,
1322 m_flatBufferBuilder.CreateVector(dimMappings));
1325 auto flatBufferLayer = serializer::CreateTransposeLayer(m_flatBufferBuilder,
1326 flatBufferBaseLayer,
1330 CreateAnyLayer(flatBufferLayer.o, serializer::Layer::Layer_TransposeLayer);
1339 auto fbQuantizedLstmBaseLayer = CreateLayerBase(layer, serializer::LayerType::LayerType_QuantizedLstm);
1354 auto cellBias = CreateConstTensorInfo(params.
GetCellBias());
1357 auto fbQuantizedLstmParams = serializer::CreateQuantizedLstmInputParams(
1358 m_flatBufferBuilder,
1359 inputToInputWeights,
1360 inputToForgetWeights,
1362 inputToOutputWeights,
1363 recurrentToInputWeights,
1364 recurrentToForgetWeights,
1365 recurrentToCellWeights,
1366 recurrentToOutputWeights,
1372 auto fbQuantizedLstmLayer = serializer::CreateQuantizedLstmLayer(
1373 m_flatBufferBuilder,
1374 fbQuantizedLstmBaseLayer,
1375 fbQuantizedLstmParams);
1377 CreateAnyLayer(fbQuantizedLstmLayer.o, serializer::Layer::Layer_QuantizedLstmLayer);
1380 fb::Offset<serializer::LayerBase> SerializerVisitor::CreateLayerBase(
const IConnectableLayer* layer,
1384 uint32_t fbIndex = GetSerializedId(layer->
GetGuid());
1386 std::vector<fb::Offset<serializer::InputSlot>> inputSlots = CreateInputSlots(layer);
1387 std::vector<fb::Offset<serializer::OutputSlot>> outputSlots = CreateOutputSlots(layer);
1389 return serializer::CreateLayerBase(m_flatBufferBuilder,
1391 m_flatBufferBuilder.CreateString(layer->
GetName()),
1393 m_flatBufferBuilder.CreateVector(inputSlots),
1394 m_flatBufferBuilder.CreateVector(outputSlots));
1397 void SerializerVisitor::CreateAnyLayer(
const flatbuffers::Offset<void>& layer,
const serializer::Layer serializerLayer)
1400 auto anyLayer = armnnSerializer::CreateAnyLayer(m_flatBufferBuilder, serializerLayer, layer);
1401 m_serializedLayers.push_back(anyLayer);
1404 template <
typename T>
1405 flatbuffers::Offset<flatbuffers::Vector<T>> SerializerVisitor::CreateDataVector(
const void* memory,
unsigned int size)
1407 const T* buffer =
reinterpret_cast<const T*
>(memory);
1408 std::vector<T> vector(buffer, buffer + (size /
sizeof(T)));
1409 auto fbVector = m_flatBufferBuilder.CreateVector(vector);
1413 flatbuffers::Offset<serializer::ConstTensor>
1419 std::vector<unsigned int> shape;
1423 shape.push_back(tensorInfo.
GetShape()[dim]);
1427 auto flatBufferTensorInfo = serializer::CreateTensorInfo(m_flatBufferBuilder,
1428 m_flatBufferBuilder.CreateVector(shape),
1432 flatbuffers::Offset<void> fbPayload;
1440 flatbuffers::Offset<serializer::IntData> flatBuffersData = serializer::CreateIntData(
1441 m_flatBufferBuilder,
1443 fbPayload = flatBuffersData.o;
1449 flatbuffers::Offset<serializer::ShortData> flatBuffersData = serializer::CreateShortData(
1450 m_flatBufferBuilder,
1452 fbPayload = flatBuffersData.o;
1458 flatbuffers::Offset<serializer::ShortData> flatBuffersData = serializer::CreateShortData(
1459 m_flatBufferBuilder,
1461 fbPayload = flatBuffersData.o;
1469 flatbuffers::Offset<serializer::ByteData> flatBuffersData = serializer::CreateByteData(
1470 m_flatBufferBuilder,
1472 fbPayload = flatBuffersData.o;
1475 flatbuffers::Offset<serializer::ConstTensor> flatBufferConstTensor = serializer::CreateConstTensor(
1476 m_flatBufferBuilder,
1477 flatBufferTensorInfo,
1480 return flatBufferConstTensor;
1483 flatbuffers::Offset<armnnSerializer::FeatureCompatibilityVersions> SerializerVisitor::GetVersionTable()
1485 flatbuffers::Offset<armnnSerializer::FeatureCompatibilityVersions> versionsTable =
1486 serializer::CreateFeatureCompatibilityVersions(
1487 m_flatBufferBuilder,
1490 return versionsTable;
1493 std::vector<fb::Offset<serializer::InputSlot>>
1496 std::vector<fb::Offset<serializer::InputSlot>> inputSlots;
1499 for (
unsigned int slotIndex = 0; slotIndex<layer->
GetNumInputSlots(); ++slotIndex)
1510 inputSlots.push_back(serializer::CreateInputSlot(m_flatBufferBuilder, slotIndex, &conn));
1515 std::vector<fb::Offset<serializer::OutputSlot>>
1518 std::vector<fb::Offset<serializer::OutputSlot>> outputSlots;
1521 for (
unsigned int slotIndex = 0; slotIndex < layer->
GetNumOutputSlots(); ++slotIndex)
1527 std::vector<unsigned int> shape;
1530 shape.push_back(tensorInfo.
GetShape()[dim]);
1534 auto flatBufferTensorInfo = serializer::CreateTensorInfo(m_flatBufferBuilder,
1535 m_flatBufferBuilder.CreateVector(shape),
1541 outputSlots.push_back(serializer::CreateOutputSlot(m_flatBufferBuilder,
1543 flatBufferTensorInfo));
1567 inNetwork.
Accept(m_SerializerVisitor);
1568 flatbuffers::FlatBufferBuilder& fbBuilder = m_SerializerVisitor.GetFlatBufferBuilder();
1571 auto serializedGraph = serializer::CreateSerializedGraph(
1573 fbBuilder.CreateVector(m_SerializerVisitor.GetSerializedLayers()),
1574 fbBuilder.CreateVector(m_SerializerVisitor.GetInputIds()),
1575 fbBuilder.CreateVector(m_SerializerVisitor.GetOutputIds()),
1576 m_SerializerVisitor.GetVersionTable());
1579 fbBuilder.Finish(serializedGraph);
1582 bool Serializer::SaveSerializedToStream(std::ostream& stream)
1584 flatbuffers::FlatBufferBuilder& fbBuilder = m_SerializerVisitor.GetFlatBufferBuilder();
1587 stream.write(reinterpret_cast<const char*>(fbBuilder.GetBufferPointer()), bytesToWrite);
1588 return !stream.bad();
uint32_t m_PadBottom
Padding bottom value in the height dimension.
bool m_BiasEnabled
Enable/disable bias.
float m_Eps
Used to avoid dividing by zero.
virtual unsigned int GetNumOutputSlots() const =0
Returns the number of connectable output slots.
armnnSerializer::UnaryOperation GetFlatBufferUnaryOperation(armnn::UnaryOperation comparisonOperation)
bool m_ProjectionEnabled
Enable/disable the projection layer.
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
UnaryOperation m_Operation
Specifies the elementwiseUnary operation to execute.
uint32_t m_Axis
0-based axis along which to stack the input tensors.
A ViewsDescriptor for the SplitterLayer.
Interface for a layer that is connectable to other layers via InputSlots and OutputSlots.
float m_ScaleW
Center size encoding scale weight.
uint32_t m_PadBottom
Padding bottom value in the height dimension.
bool m_BiasEnabled
Enable/disable bias.
virtual unsigned int GetNumInputSlots() const =0
Returns the number of connectable input slots.
float m_K
Kappa value used for the across channel normalization equation.
int m_Axis
Scalar, defaulted to the last index (-1), specifying the dimension the activation will be performed o...
A TransposeConvolution2dDescriptor for the TransposeConvolution2dLayer.
const TensorShape & GetShape() const
uint32_t m_PadBottom
Padding bottom value in the height dimension.
uint32_t m_PadLeft
Padding left value in the width dimension.
float m_ClippingThresProj
Clipping threshold value for the projection.
int32_t m_ShrinkAxisMask
Shrink axis mask value. If set, the nth specification shrinks the dimensionality by 1...
A ReshapeDescriptor for the ReshapeLayer.
std::vector< int > m_Begin
Begin values for the input that will be sliced.
float m_PadValue
Optional value to use for padding, defaults to 0.
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
uint32_t GetNumDimensions() const
Get the number of dimensions.
A ComparisonDescriptor for the ComparisonLayer.
float m_ScaleX
Center size encoding scale x.
TensorShape m_InputShape
Required shape of all input tensors.
uint32_t m_TargetWidth
Target width value.
bool m_TransposeWeightMatrix
Enable/disable transpose weight matrix.
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
uint32_t m_PoolWidth
Pooling width value.
armnnSerializer::OutputShapeRounding GetFlatBufferOutputShapeRounding(armnn::OutputShapeRounding outputShapeRounding)
A Convolution2dDescriptor for the Convolution2dLayer.
float m_Alpha
Alpha value for the normalization equation.
uint32_t m_PadLeft
Padding left value in the width dimension.
bool m_BiasEnabled
Enable/disable bias.
ResizeMethod m_Method
The Interpolation method to use (Bilinear, NearestNeighbor).
float m_Gamma
Gamma, the scale scalar value applied for the normalized tensor. Defaults to 1.0. ...
float m_Beta
Exponentiation value.
std::vector< unsigned int > m_Size
Size of the slice in each dimension.
float m_Eps
Value to add to the variance. Used to avoid dividing by zero.
PaddingMethod m_PaddingMethod
The padding method to be used. (Exclude, IgnoreValue).
ArgMinMaxFunction m_Function
Specify if the function is to find Min or Max.
uint32_t m_DetectionsPerClass
Detections per classes, used in Regular NMS.
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
serializer::ActivationFunction GetFlatBufferActivationFunction(armnn::ActivationFunction function)
Main network class which provides the interface for building up a neural network. ...
armnnSerializer::NormalizationAlgorithmMethod GetFlatBufferNormalizationAlgorithmMethod(armnn::NormalizationAlgorithmMethod normalizationAlgorithmMethod)
uint32_t m_PadTop
Padding top value in the height dimension.
uint32_t m_PadRight
Padding right value in the width dimension.
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
MemoryType GetMemoryArea() const
std::vector< std::pair< unsigned int, unsigned int > > m_PadList
Specifies the padding for input dimension.
uint32_t GetNumViews() const
Get the number of views.
Copyright (c) 2020 ARM Limited.
void IgnoreUnused(Ts &&...)
uint32_t m_PadBottom
Padding bottom value in the height dimension.
int32_t m_BeginMask
Begin mask value.
uint32_t m_DilationY
Dilation along y axis.
int32_t m_EndMask
End mask value.
A SpaceToDepthDescriptor for the SpaceToDepthLayer.
std::vector< std::pair< unsigned int, unsigned int > > m_PadList
Specifies the padding values for the input dimension: heightPad{top, bottom} widthPad{left, right}.
uint32_t m_DilationY
Dilation factor value for height dimension.
armnnSerializer::ConstTensorData GetFlatBufferConstTensorData(armnn::DataType dataType)
A BatchToSpaceNdDescriptor for the BatchToSpaceNdLayer.
uint32_t m_StrideX
Stride value when proceeding through input for the width dimension.
PermutationVector m_DimMappings
Indicates how to translate tensor elements from a given source into the target destination, when source and target potentially have different memory layouts e.g.
int LayerBindingId
Type of identifiers for bindable layers (inputs, outputs).
armnnSerializer::DataType GetFlatBufferDataType(armnn::DataType dataType)
uint32_t m_NumOutputs
Number of output tensors.
NormalizationAlgorithmMethod m_NormMethodType
Normalization method algorithm to use (LocalBrightness, LocalContrast).
A ResizeDescriptor for the ResizeLayer.
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
uint32_t m_MaxClassesPerDetection
Maximum numbers of classes per detection, used in Fast NMS.
std::vector< unsigned int > m_Axis
Values for the dimensions to reduce.
A StackDescriptor for the StackLayer.
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
serializer::ArgMinMaxFunction GetFlatBufferArgMinMaxFunction(armnn::ArgMinMaxFunction function)
TensorShape m_TargetShape
Target shape value.
uint32_t m_PoolHeight
Pooling height value.
uint32_t m_PadTop
Padding top value in the height dimension.
uint32_t m_MaxDetections
Maximum numbers of detections.
A PadDescriptor for the PadLayer.
const uint32_t * GetViewOrigin(uint32_t idx) const
Return the view origin at the int value idx.
uint32_t m_StrideX
Stride value when proceeding through input for the width dimension.
armnnSerializer::NormalizationAlgorithmChannel GetFlatBufferNormalizationAlgorithmChannel(armnn::NormalizationAlgorithmChannel normalizationAlgorithmChannel)
uint32_t m_StrideX
Stride value when proceeding through input for the width dimension.
float m_NmsIouThreshold
Intersection over union threshold.
An LstmDescriptor for the LstmLayer.
uint32_t m_PadRight
Padding right value in the width dimension.
uint32_t m_DilationX
Dilation factor value for width dimension.
uint32_t m_PadTop
Padding top value in the height dimension.
std::vector< unsigned int > m_Begin
Beginning indices of the slice in each dimension.
int32_t m_NewAxisMask
New axis mask value.
bool m_KeepDims
Enable/disable keep dimensions. If true, then the reduced dimensions that are of length 1 are kept...
std::vector< unsigned int > m_BlockShape
Block shape values.
float m_Eps
Epsilon, small scalar value added to variance to avoid dividing by zero. Defaults to 1e-12f...
An output connection slot for a layer.
A L2NormalizationDescriptor for the L2NormalizationLayer.
int32_t GetQuantizationOffset() const
An ArgMinMaxDescriptor for ArgMinMaxLayer.
float GetQuantizationScale() const
DataType GetDataType() const
An OriginsDescriptor for the ConcatLayer.
bool has_value() const noexcept
A FullyConnectedDescriptor for the FullyConnectedLayer.
int32_t m_EllipsisMask
Ellipsis mask value.
virtual LayerGuid GetGuid() const =0
Returns the unique id of the layer.
bool m_BiasEnabled
Enable/disable bias.
A tensor defined by a TensorInfo (shape and data type) and an immutable backing store.
uint32_t m_TargetWidth
Target width value.
bool m_PeepholeEnabled
Enable/disable peephole.
uint32_t m_NumClasses
Number of classes.
uint32_t m_PadTop
Padding top value in the height dimension.
A StandInDescriptor for the StandIn layer.
virtual unsigned int CalculateIndexOnOwner() const =0
std::enable_if_t< std::is_unsigned< Source >::value &&std::is_unsigned< Dest >::value, Dest > numeric_cast(Source source)
bool m_UseRegularNms
Use Regular NMS.
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
std::vector< unsigned int > m_BlockShape
Block shape value.
std::vector< int > m_Stride
Stride values for the input that will be sliced.
An ActivationDescriptor for the ActivationLayer.
const TensorInfo & GetInfo() const
min(a, max(b, input)) ReLu1 & ReLu6.
uint32_t m_TargetHeight
Target height value.
uint32_t m_NumInputs
Number of input tensors.
uint32_t m_TargetHeight
Target height value.
uint32_t m_ActivationFunc
The activation function to use.
A SliceDescriptor for the SliceLayer.
uint32_t m_StrideY
Stride value when proceeding through input for the height dimension.
float m_ClippingThresCell
Clipping threshold value for the cell state.
unsigned int m_BlockSize
Scalar specifying the input block size. It must be >= 1.
const uint32_t * GetViewOrigin(uint32_t idx) const
Get the view origin at the int value idx.
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
float m_Beta
Beta, the offset scalar value applied for the normalized tensor. Defaults to 1.0. ...
armnnSerializer::DataLayout GetFlatBufferDataLayout(armnn::DataLayout dataLayout)
float m_ScaleH
Center size encoding scale height.
ComparisonOperation m_Operation
Specifies the comparison operation to execute.
std::vector< int > m_End
End values for the input that will be sliced.
A SpaceToBatchNdDescriptor for the SpaceToBatchNdLayer.
NormalizationAlgorithmChannel m_NormChannelType
Normalization channel algorithm to use (Across, Within).
const uint32_t * GetViewSizes(uint32_t idx) const
Get the view sizes at the int value idx.
float m_A
Alpha upper bound value used by the activation functions. (BoundedReLu, Linear, TanH).
uint32_t m_DilationX
Dilation along x axis.
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
bool m_CifgEnabled
Enable/disable cifg (coupled input & forget gate).
std::unique_ptr< ISerializer, void(*)(ISerializer *serializer)> ISerializerPtr
uint32_t m_PadLeft
Padding left value in the width dimension.
armnnSerializer::ComparisonOperation GetFlatBufferComparisonOperation(armnn::ComparisonOperation comparisonOperation)
uint32_t m_StrideX
Stride value when proceeding through input for the width dimension.
virtual void Accept(ILayerVisitor &visitor) const =0
A ElementwiseUnaryDescriptor for the ElementwiseUnaryLayer.
PoolingAlgorithm m_PoolType
The pooling algorithm to use (Max. Average, L2).
uint32_t m_StrideY
Stride value when proceeding through input for the height dimension.
uint32_t m_StrideY
Stride value when proceeding through input for the height dimension.
std::vector< std::pair< unsigned int, unsigned int > > m_Crops
The values to crop from the input dimension.
unsigned int GetNumDimensions() const
OutputShapeRounding m_OutputShapeRounding
The rounding method for the output shape. (Floor, Ceiling).
armnnSerializer::ResizeMethod GetFlatBufferResizeMethod(armnn::ResizeMethod method)
uint32_t m_NumInputs
Number of input tensors.
uint32_t GetNumDimensions() const
Get the number of dimensions.
virtual const IInputSlot & GetInputSlot(unsigned int index) const =0
Get a const input slot handle by slot index.
A MeanDescriptor for the MeanLayer.
armnnSerializer::PaddingMethod GetFlatBufferPaddingMethod(armnn::PaddingMethod paddingMethod)
bool m_LayerNormEnabled
Enable/disable layer normalization.
uint32_t m_PadRight
Padding right value in the width dimension.
A TransposeDescriptor for the TransposeLayer.
A StridedSliceDescriptor for the StridedSliceLayer.
virtual const TensorInfo & GetTensorInfo() const =0
virtual const IOutputSlot & GetOutputSlot(unsigned int index) const =0
Get the const output slot handle by slot index.
int m_Axis
Axis to reduce across the input tensor.
virtual const char * GetName() const =0
Returns the name of the layer.
float m_ScaleY
Center size encoding scale y.
uint32_t GetNumViews() const
Get the number of views.
float m_NmsScoreThreshold
NMS score threshold.
virtual LayerGuid GetOwningLayerGuid() const =0
A Pooling2dDescriptor for the Pooling2dLayer.
A NormalizationDescriptor for the NormalizationLayer.
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
An InstanceNormalizationDescriptor for InstanceNormalizationLayer.
unsigned int GetConcatAxis() const
Get the concatenation axis value.
A ResizeBilinearDescriptor for the ResizeBilinearLayer.
float m_B
Beta lower bound value used by the activation functions. (BoundedReLu, Linear, TanH).
A SoftmaxDescriptor for the SoftmaxLayer.
float m_Beta
Beta value for the normalization equation.
const OriginsDescriptor & GetOrigins() const
Get the View Origins.
PermutationVector m_DimMappings
Indicates how to translate tensor elements from a given source into the target destination, when source and target potentially have different memory layouts e.g.
uint32_t m_NormSize
Depth radius value.
ActivationFunction m_Function
The activation function to use (Sigmoid, TanH, Linear, ReLu, BoundedReLu, SoftReLu, LeakyReLu, Abs, Sqrt, Square).
armnnSerializer::PoolingAlgorithm GetFlatBufferPoolingAlgorithm(armnn::PoolingAlgorithm poolingAlgorithm)
uint32_t m_StrideY
Stride value when proceeding through input for the height dimension.
A DepthwiseConvolution2dDescriptor for the DepthwiseConvolution2dLayer.
A BatchNormalizationDescriptor for the BatchNormalizationLayer.
uint32_t m_PadLeft
Padding left value in the width dimension.
unsigned int GetNumBytes() const
A PermuteDescriptor for the PermuteLayer.
uint32_t m_PadRight
Padding right value in the width dimension.
std::vector< float > anchors({ 0.5f, 0.5f, 1.0f, 1.0f, 0.5f, 0.5f, 1.0f, 1.0f, 0.5f, 0.5f, 1.0f, 1.0f, 0.5f, 10.5f, 1.0f, 1.0f, 0.5f, 10.5f, 1.0f, 1.0f, 0.5f, 100.5f, 1.0f, 1.0f })