ArmNN
 25.11
Loading...
Searching...
No Matches
armnnDeserializer Namespace Reference

Classes

struct  BindingPointInfo
class  IDeserializer

Typedefs

using IDeserializerPtr = std::unique_ptr<IDeserializer, void(*)(IDeserializer* parser)>
using ConstTensorRawPtr = const armnnSerializer::ConstTensor *
using GraphPtr = const armnnSerializer::SerializedGraph *
using TensorRawPtr = const armnnSerializer::TensorInfo *
using Pooling2dDescriptor = const armnnSerializer::Pooling2dDescriptor *
using Pooling3dDescriptor = const armnnSerializer::Pooling3dDescriptor *
using NormalizationDescriptorPtr = const armnnSerializer::NormalizationDescriptor *
using LstmDescriptorPtr = const armnnSerializer::LstmDescriptor *
using LstmInputParamsPtr = const armnnSerializer::LstmInputParams *
using QLstmDescriptorPtr = const armnnSerializer::QLstmDescriptor *
using QunatizedLstmInputParamsPtr = const armnnSerializer::QuantizedLstmInputParams *
using TensorRawPtrVector = std::vector<TensorRawPtr>
using LayerRawPtr = const armnnSerializer::LayerBase *
using LayerBaseRawPtr = const armnnSerializer::LayerBase *
using LayerBaseRawPtrVector = std::vector<LayerBaseRawPtr>
using UnidirectionalSequenceLstmDescriptorPtr = const armnnSerializer::UnidirectionalSequenceLstmDescriptor *

Functions

bool CheckShape (const armnn::TensorShape &actual, const std::vector< uint32_t > &expected)
armnn::DataLayout ToDataLayout (armnnSerializer::DataLayout dataLayout)
armnn::ActivationFunction ToActivationFunction (armnnSerializer::ActivationFunction function)
armnn::ArgMinMaxFunction ToArgMinMaxFunction (armnnSerializer::ArgMinMaxFunction function)
armnn::ScatterNdFunction ToScatterNdFunction (armnnSerializer::ScatterNdFunction function)
armnn::ComparisonOperation ToComparisonOperation (armnnSerializer::ComparisonOperation operation)
armnn::ReduceOperation ToReduceOperation (armnnSerializer::ReduceOperation operation)
armnn::LogicalBinaryOperation ToLogicalBinaryOperation (armnnSerializer::LogicalBinaryOperation operation)
armnn::BinaryOperation ToElementwiseBinaryOperation (armnnSerializer::BinaryOperation operation)
armnn::UnaryOperation ToElementwiseUnaryOperation (armnnSerializer::UnaryOperation operation)
armnn::PaddingMode ToPaddingMode (armnnSerializer::PaddingMode paddingMode)
armnn::ResizeMethod ToResizeMethod (armnnSerializer::ResizeMethod method)
armnn::TensorInfo ToTensorInfo (TensorRawPtr tensorPtr)
armnn::ConstTensor ToConstTensor (ConstTensorRawPtr constTensorPtr)
const armnnSerializer::OriginsDescriptor * GetOriginsDescriptor (const armnnSerializer::SerializedGraph *graph, unsigned int layerIndex)

Typedef Documentation

◆ ConstTensorRawPtr

using ConstTensorRawPtr = const armnnSerializer::ConstTensor *

Definition at line 18 of file Deserializer.hpp.

◆ GraphPtr

using GraphPtr = const armnnSerializer::SerializedGraph *

Definition at line 19 of file Deserializer.hpp.

◆ IDeserializerPtr

using IDeserializerPtr = std::unique_ptr<IDeserializer, void(*)(IDeserializer* parser)>

Definition at line 25 of file IDeserializer.hpp.

◆ LayerBaseRawPtr

using LayerBaseRawPtr = const armnnSerializer::LayerBase *

Definition at line 30 of file Deserializer.hpp.

◆ LayerBaseRawPtrVector

using LayerBaseRawPtrVector = std::vector<LayerBaseRawPtr>

Definition at line 31 of file Deserializer.hpp.

◆ LayerRawPtr

using LayerRawPtr = const armnnSerializer::LayerBase *

Definition at line 29 of file Deserializer.hpp.

◆ LstmDescriptorPtr

using LstmDescriptorPtr = const armnnSerializer::LstmDescriptor *

Definition at line 24 of file Deserializer.hpp.

◆ LstmInputParamsPtr

using LstmInputParamsPtr = const armnnSerializer::LstmInputParams *

Definition at line 25 of file Deserializer.hpp.

◆ NormalizationDescriptorPtr

using NormalizationDescriptorPtr = const armnnSerializer::NormalizationDescriptor *

Definition at line 23 of file Deserializer.hpp.

◆ Pooling2dDescriptor

using Pooling2dDescriptor = const armnnSerializer::Pooling2dDescriptor *

Definition at line 21 of file Deserializer.hpp.

◆ Pooling3dDescriptor

using Pooling3dDescriptor = const armnnSerializer::Pooling3dDescriptor *

Definition at line 22 of file Deserializer.hpp.

◆ QLstmDescriptorPtr

using QLstmDescriptorPtr = const armnnSerializer::QLstmDescriptor *

Definition at line 26 of file Deserializer.hpp.

◆ QunatizedLstmInputParamsPtr

using QunatizedLstmInputParamsPtr = const armnnSerializer::QuantizedLstmInputParams *

Definition at line 27 of file Deserializer.hpp.

◆ TensorRawPtr

using TensorRawPtr = const armnnSerializer::TensorInfo *

Definition at line 20 of file Deserializer.hpp.

◆ TensorRawPtrVector

using TensorRawPtrVector = std::vector<TensorRawPtr>

Definition at line 28 of file Deserializer.hpp.

◆ UnidirectionalSequenceLstmDescriptorPtr

using UnidirectionalSequenceLstmDescriptorPtr = const armnnSerializer::UnidirectionalSequenceLstmDescriptor *

Definition at line 32 of file Deserializer.hpp.

Function Documentation

◆ CheckShape()

bool CheckShape ( const armnn::TensorShape & actual,
const std::vector< uint32_t > & expected )

Definition at line 188 of file Deserializer.cpp.

189{
190 const unsigned int actualSize = actual.GetNumDimensions();
191 if (actualSize != expected.size())
192 {
193 return false;
194 }
195
196 for (unsigned int i = 0u; i < actualSize; i++)
197 {
198 if (actual[i] != static_cast<unsigned int>(expected[i]))
199 {
200 return false;
201 }
202 }
203
204 return true;
205}
unsigned int GetNumDimensions() const
Function that returns the tensor rank.
Definition Tensor.cpp:174

References CheckShape(), and TensorShape::GetNumDimensions().

Referenced by CheckShape().

◆ GetOriginsDescriptor()

const armnnSerializer::OriginsDescriptor * GetOriginsDescriptor ( const armnnSerializer::SerializedGraph * graph,
unsigned int layerIndex )

Definition at line 2057 of file Deserializer.cpp.

2059{
2060 auto layerType = graph->layers()->Get(layerIndex)->layer_type();
2061
2062 switch (layerType)
2063 {
2064 case Layer::Layer_ConcatLayer:
2065 return graph->layers()->Get(layerIndex)->layer_as_ConcatLayer()->descriptor();
2066 case Layer::Layer_MergerLayer:
2067 return graph->layers()->Get(layerIndex)->layer_as_MergerLayer()->descriptor();
2068 default:
2069 throw armnn::Exception("unknown layer type, should be concat or merger");
2070 }
2071}
Base class for all ArmNN exceptions so that users can filter to just those.

◆ ToActivationFunction()

armnn::ActivationFunction ToActivationFunction ( armnnSerializer::ActivationFunction function)

Definition at line 482 of file Deserializer.cpp.

483{
484 switch (function)
485 {
486 case armnnSerializer::ActivationFunction_Sigmoid:
488 case armnnSerializer::ActivationFunction_TanH:
490 case armnnSerializer::ActivationFunction_Linear:
492 case armnnSerializer::ActivationFunction_ReLu:
494 case armnnSerializer::ActivationFunction_BoundedReLu:
496 case armnnSerializer::ActivationFunction_LeakyReLu:
498 case armnnSerializer::ActivationFunction_Abs:
500 case armnnSerializer::ActivationFunction_Sqrt:
502 case armnnSerializer::ActivationFunction_Square:
504 case armnnSerializer::ActivationFunction_Elu:
506 case armnnSerializer::ActivationFunction_HardSwish:
508 case armnnSerializer::ActivationFunction_Gelu:
510 default:
512 }
513}
@ BoundedReLu
min(a, max(b, input)) ReLu1 & ReLu6.
Definition Types.hpp:92

References armnn::Abs, armnn::BoundedReLu, armnn::Elu, armnn::Gelu, armnn::HardSwish, armnn::LeakyReLu, armnn::Linear, armnn::ReLu, armnn::Sigmoid, armnn::Sqrt, armnn::Square, and armnn::TanH.

◆ ToArgMinMaxFunction()

armnn::ArgMinMaxFunction ToArgMinMaxFunction ( armnnSerializer::ArgMinMaxFunction function)

Definition at line 515 of file Deserializer.cpp.

516{
517 switch (function)
518 {
519 case armnnSerializer::ArgMinMaxFunction::ArgMinMaxFunction_Max:
521 case armnnSerializer::ArgMinMaxFunction::ArgMinMaxFunction_Min:
522 default:
524 }
525}

References armnn::Max, and armnn::Min.

◆ ToComparisonOperation()

armnn::ComparisonOperation ToComparisonOperation ( armnnSerializer::ComparisonOperation operation)

Definition at line 546 of file Deserializer.cpp.

547{
548 switch (operation)
549 {
550 case armnnSerializer::ComparisonOperation::ComparisonOperation_Equal:
552 case armnnSerializer::ComparisonOperation::ComparisonOperation_Greater:
554 case armnnSerializer::ComparisonOperation::ComparisonOperation_GreaterOrEqual:
556 case armnnSerializer::ComparisonOperation::ComparisonOperation_Less:
558 case armnnSerializer::ComparisonOperation::ComparisonOperation_LessOrEqual:
560 case armnnSerializer::ComparisonOperation::ComparisonOperation_NotEqual:
561 default:
563 }
564}

References armnn::Equal, armnn::Greater, armnn::GreaterOrEqual, armnn::Less, armnn::LessOrEqual, and armnn::NotEqual.

◆ ToConstTensor()

armnn::ConstTensor ToConstTensor ( ConstTensorRawPtr constTensorPtr)

Definition at line 784 of file Deserializer.cpp.

785{
786 CHECK_CONST_TENSOR_PTR(constTensorPtr);
787 armnn::TensorInfo tensorInfo = ToTensorInfo(constTensorPtr->info());
788 tensorInfo.SetConstant();
789
790 switch (constTensorPtr->data_type())
791 {
792 case ConstTensorData_ByteData:
793 {
794 auto byteData = constTensorPtr->data_as_ByteData()->data();
795 CHECK_CONST_TENSOR_SIZE(byteData->size(), tensorInfo.GetNumElements());
796 return armnn::ConstTensor(tensorInfo, byteData->data());
797 }
798 case ConstTensorData_ShortData:
799 {
800 auto shortData = constTensorPtr->data_as_ShortData()->data();
801 CHECK_CONST_TENSOR_SIZE(shortData->size(), tensorInfo.GetNumElements());
802 return armnn::ConstTensor(tensorInfo, shortData->data());
803 }
804 case ConstTensorData_IntData:
805 {
806 auto intData = constTensorPtr->data_as_IntData()->data();
807 CHECK_CONST_TENSOR_SIZE(intData->size(), tensorInfo.GetNumElements());
808 return armnn::ConstTensor(tensorInfo, intData->data());
809 }
810 case ConstTensorData_LongData:
811 {
812 auto longData = constTensorPtr->data_as_LongData()->data();
813 CHECK_CONST_TENSOR_SIZE(longData->size(), tensorInfo.GetNumElements());
814 return armnn::ConstTensor(tensorInfo, longData->data());
815 }
816 default:
817 {
818 CheckLocation location = CHECK_LOCATION();
819 throw ParseException(fmt::format("Unsupported data type {0} = {1}. {2}",
820 constTensorPtr->data_type(),
821 EnumNameConstTensorData(constTensorPtr->data_type()),
822 location.AsString()));
823 }
824 }
825}
#define CHECK_CONST_TENSOR_PTR(TENSOR_PTR)
#define CHECK_CONST_TENSOR_SIZE(CONST_TENSOR_SIZE, TENSOR_SIZE)
#define CHECK_LOCATION()
A tensor defined by a TensorInfo (shape and data type) and an immutable backing store.
Definition Tensor.hpp:330
unsigned int GetNumElements() const
Definition Tensor.hpp:198
void SetConstant(const bool IsConstant=true)
Marks the data corresponding to this tensor info as constant.
Definition Tensor.cpp:518
armnn::TensorInfo ToTensorInfo(TensorRawPtr tensorPtr)
std::string AsString() const

References CheckLocation::AsString(), CHECK_CONST_TENSOR_PTR, CHECK_CONST_TENSOR_SIZE, CHECK_LOCATION, TensorInfo::GetNumElements(), TensorInfo::SetConstant(), and ToTensorInfo().

◆ ToDataLayout()

armnn::DataLayout ToDataLayout ( armnnSerializer::DataLayout dataLayout)

Definition at line 466 of file Deserializer.cpp.

467{
468 switch (dataLayout)
469 {
470 case armnnSerializer::DataLayout::DataLayout_NHWC:
472 case armnnSerializer::DataLayout::DataLayout_NDHWC:
474 case armnnSerializer::DataLayout::DataLayout_NCDHW:
476 case armnnSerializer::DataLayout::DataLayout_NCHW:
477 default:
479 }
480}

References armnn::NCDHW, armnn::NCHW, armnn::NDHWC, and armnn::NHWC.

◆ ToElementwiseBinaryOperation()

armnn::BinaryOperation ToElementwiseBinaryOperation ( armnnSerializer::BinaryOperation operation)

Definition at line 598 of file Deserializer.cpp.

599{
600 switch (operation)
601 {
602 case armnnSerializer::BinaryOperation::BinaryOperation_Add:
604 case armnnSerializer::BinaryOperation::BinaryOperation_Div:
606 case armnnSerializer::BinaryOperation::BinaryOperation_FloorDiv:
608 case armnnSerializer::BinaryOperation::BinaryOperation_Maximum:
610 case armnnSerializer::BinaryOperation::BinaryOperation_Minimum:
612 case armnnSerializer::BinaryOperation::BinaryOperation_Mul:
614 case armnnSerializer::BinaryOperation::BinaryOperation_Sub:
616 case armnnSerializer::BinaryOperation::BinaryOperation_SqDiff:
618 case armnnSerializer::BinaryOperation::BinaryOperation_Power:
620 default:
621 throw armnn::InvalidArgumentException("Binary operation unknown");
622 }
623}

References armnn::Add, armnn::Div, armnn::FloorDiv, armnn::Maximum, armnn::Minimum, armnn::Mul, armnn::Power, armnn::SqDiff, and armnn::Sub.

◆ ToElementwiseUnaryOperation()

armnn::UnaryOperation ToElementwiseUnaryOperation ( armnnSerializer::UnaryOperation operation)

Definition at line 625 of file Deserializer.cpp.

626{
627 switch (operation)
628 {
629 case armnnSerializer::UnaryOperation::UnaryOperation_Abs:
631 case armnnSerializer::UnaryOperation::UnaryOperation_Ceil:
633 case armnnSerializer::UnaryOperation::UnaryOperation_Rsqrt:
635 case armnnSerializer::UnaryOperation::UnaryOperation_Sqrt:
637 case armnnSerializer::UnaryOperation::UnaryOperation_Exp:
639 case armnnSerializer::UnaryOperation::UnaryOperation_Neg:
641 case armnnSerializer::UnaryOperation::UnaryOperation_LogicalNot:
643 case armnnSerializer::UnaryOperation::UnaryOperation_Log:
645 case armnnSerializer::UnaryOperation::UnaryOperation_Sin:
647 default:
648 throw armnn::InvalidArgumentException("Unary operation unknown");
649 }
650}

References armnn::Abs, armnn::Ceil, armnn::Exp, armnn::Log, armnn::LogicalNot, armnn::Neg, armnn::Rsqrt, armnn::Sin, and armnn::Sqrt.

◆ ToLogicalBinaryOperation()

armnn::LogicalBinaryOperation ToLogicalBinaryOperation ( armnnSerializer::LogicalBinaryOperation operation)

Definition at line 585 of file Deserializer.cpp.

586{
587 switch (operation)
588 {
589 case armnnSerializer::LogicalBinaryOperation::LogicalBinaryOperation_LogicalAnd:
591 case armnnSerializer::LogicalBinaryOperation::LogicalBinaryOperation_LogicalOr:
593 default:
594 throw armnn::InvalidArgumentException("Logical Binary operation unknown");
595 }
596}

References armnn::LogicalAnd, and armnn::LogicalOr.

◆ ToPaddingMode()

armnn::PaddingMode ToPaddingMode ( armnnSerializer::PaddingMode paddingMode)

Definition at line 652 of file Deserializer.cpp.

653{
654 switch (paddingMode)
655 {
656 case armnnSerializer::PaddingMode::PaddingMode_Reflect:
658 case armnnSerializer::PaddingMode::PaddingMode_Symmetric:
660 default:
662 }
663}

References armnn::Constant, armnn::Reflect, and armnn::Symmetric.

◆ ToReduceOperation()

armnn::ReduceOperation ToReduceOperation ( armnnSerializer::ReduceOperation operation)

Definition at line 566 of file Deserializer.cpp.

567{
568 switch (operation)
569 {
570 case armnnSerializer::ReduceOperation::ReduceOperation_Sum:
572 case armnnSerializer::ReduceOperation::ReduceOperation_Max:
574 case armnnSerializer::ReduceOperation::ReduceOperation_Mean:
576 case armnnSerializer::ReduceOperation::ReduceOperation_Min:
578 case armnnSerializer::ReduceOperation::ReduceOperation_Prod:
580 default:
582 }
583}

References armnn::Max, armnn::Mean, armnn::Min, armnn::Prod, and armnn::Sum.

◆ ToResizeMethod()

armnn::ResizeMethod ToResizeMethod ( armnnSerializer::ResizeMethod method)

Definition at line 665 of file Deserializer.cpp.

666{
667 switch (method)
668 {
669 case armnnSerializer::ResizeMethod_NearestNeighbor:
671 case armnnSerializer::ResizeMethod_Bilinear:
673 default:
675 }
676}

References armnn::Bilinear, and armnn::NearestNeighbor.

◆ ToScatterNdFunction()

armnn::ScatterNdFunction ToScatterNdFunction ( armnnSerializer::ScatterNdFunction function)

Definition at line 527 of file Deserializer.cpp.

528{
529 switch (function)
530 {
531 case armnnSerializer::ScatterNdFunction_Update:
533 case armnnSerializer::ScatterNdFunction_Add:
535 case armnnSerializer::ScatterNdFunction_Sub:
537 case armnnSerializer::ScatterNdFunction_Max:
539 case armnnSerializer::ScatterNdFunction_Min:
541 default:
543 }
544}

References armnn::Add, armnn::Max, armnn::Min, armnn::Sub, and armnn::Update.

◆ ToTensorInfo()

armnn::TensorInfo ToTensorInfo ( TensorRawPtr tensorPtr)

Definition at line 678 of file Deserializer.cpp.

679{
680 armnn::DataType type;
681 CHECK_TENSOR_PTR(tensorPtr);
682
683 switch (tensorPtr->dataType())
684 {
685 case DataType_QAsymmS8:
687 break;
688 case DataType_QSymmS8:
690 break;
691 case DataType_QuantisedAsymm8:
692 case DataType_QAsymmU8:
694 break;
695 case DataType_QSymmS16:
696 case DataType_QuantisedSymm16:
698 break;
699 case DataType_Signed32:
701 break;
702 case DataType_Signed64:
704 break;
705 case DataType_Float32:
707 break;
708 case DataType_Float16:
710 break;
711 case DataType_Boolean:
713 break;
714 default:
715 {
716 CheckLocation location = CHECK_LOCATION();
717 throw ParseException(fmt::format("Unsupported data type {0} = {1}. {2}",
718 tensorPtr->dataType(),
719 EnumNameDataType(tensorPtr->dataType()),
720 location.AsString()));
721 }
722 }
723
724 float quantizationScale = tensorPtr->quantizationScale();
725 int32_t quantizationOffset = tensorPtr->quantizationOffset();
726
727 if (tensorPtr->dimensionality() == static_cast<unsigned int>(Dimensionality::Scalar))
728 {
729 return armnn::TensorInfo(TensorShape{armnn::Dimensionality::Scalar},
730 type,
731 quantizationScale,
732 quantizationOffset);
733 }
734 else if (tensorPtr->dimensionality() == static_cast<unsigned int>(Dimensionality::NotSpecified))
735 {
736 armnn::TensorInfo result(TensorShape{Dimensionality::NotSpecified},
737 type,
738 quantizationScale,
739 quantizationOffset);
740 return result;
741 }
742
743 auto dimensions = tensorPtr->dimensions();
744 unsigned int size = dimensions->size();
745 std::vector<unsigned int> outputDims(dimensions->begin(), dimensions->begin() + size);
746 bool dimensionsSpecificity[armnn::MaxNumOfTensorDimensions];
747 std::fill_n(dimensionsSpecificity, armnn::MaxNumOfTensorDimensions, true);
748 // For backwards compatibility check if the dimensionSpecificity vector is present first.
749 // The default is to have dimensionSpecificity set to all true's anyway.
750 if (tensorPtr->dimensionSpecificity() != nullptr)
751 {
752 auto dimensionSpecificity = tensorPtr->dimensionSpecificity();
753 size = dimensionSpecificity->size();
754 for (unsigned int i = 0; i < size; ++i)
755 {
756 dimensionsSpecificity[i] = dimensionSpecificity->Get(i);
757 }
758 }
759 // Construct a TensorShape
760 TensorShape shape(size, outputDims.data(), dimensionsSpecificity);
761
762 auto quantizationScales = tensorPtr->quantizationScales();
763 if (quantizationScales)
764 {
765 unsigned int quantizationScalesSize = quantizationScales->size();
766 std::vector<float> scales(quantizationScales->begin(), quantizationScales->begin() + quantizationScalesSize);
767 unsigned int quantizationDim = tensorPtr->quantizationDim();
768 armnn::TensorInfo result(shape,
769 type,
770 scales,
771 quantizationDim);
772 return result;
773 }
774
775 // two statements (on purpose) for easier debugging:
776 armnn::TensorInfo result(shape,
777 type,
778 quantizationScale,
779 quantizationOffset);
780
781 return result;
782}
#define CHECK_TENSOR_PTR(TENSOR_PTR)
constexpr unsigned int MaxNumOfTensorDimensions
Definition Types.hpp:31
DataType
Definition Types.hpp:49

References CheckLocation::AsString(), armnn::Boolean, CHECK_LOCATION, CHECK_TENSOR_PTR, armnn::Float16, armnn::Float32, armnn::MaxNumOfTensorDimensions, armnn::NotSpecified, armnn::QAsymmS8, armnn::QAsymmU8, armnn::QSymmS16, armnn::QSymmS8, armnn::Scalar, armnn::Signed32, and armnn::Signed64.

Referenced by ToConstTensor().