ArmNN  NotReleased
armnnDeserializer Namespace Reference

Classes

struct  BindingPointInfo
 
class  Deserializer
 
class  IDeserializer
 

Typedefs

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

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::ComparisonOperation ToComparisonOperation (armnnSerializer::ComparisonOperation operation)
 
armnn::UnaryOperation ToUnaryOperation (armnnSerializer::UnaryOperation operation)
 
armnn::ResizeMethod ToResizeMethod (armnnSerializer::ResizeMethod method)
 
armnn::TensorInfo ToTensorInfo (Deserializer::TensorRawPtr tensorPtr)
 
armnn::ConstTensor ToConstTensor (Deserializer::ConstTensorRawPtr constTensorPtr)
 
const armnnSerializer::OriginsDescriptor * GetOriginsDescriptor (const armnnSerializer::SerializedGraph *graph, unsigned int layerIndex)
 

Typedef Documentation

◆ IDeserializerPtr

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

Definition at line 25 of file IDeserializer.hpp.

Function Documentation

◆ CheckShape()

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

Definition at line 166 of file Deserializer.cpp.

References TensorShape::GetNumDimensions().

Referenced by Deserializer::OutputShapeOfReshape(), and TfLiteParser::OutputShapeOfReshape().

167 {
168  const unsigned int actualSize = actual.GetNumDimensions();
169  if (actualSize != expected.size())
170  {
171  return false;
172  }
173 
174  for (unsigned int i = 0u; i < actualSize; i++)
175  {
176  if (actual[i] != static_cast<unsigned int>(expected[i]))
177  {
178  return false;
179  }
180  }
181 
182  return true;
183 }
unsigned int GetNumDimensions() const
Definition: Tensor.hpp:43

◆ GetOriginsDescriptor()

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

Definition at line 1543 of file Deserializer.cpp.

References CHECK_LAYERS, CHECK_LOCATION, CHECK_VALID_SIZE, Deserializer::GetInputs(), Deserializer::GetLayerName(), Deserializer::GetOutputs(), IConnectableLayer::GetOutputSlot(), FullyConnectedDescriptor::m_BiasEnabled, ComparisonDescriptor::m_Operation, ElementwiseUnaryDescriptor::m_Operation, FullyConnectedDescriptor::m_TransposeWeightMatrix, IOutputSlot::SetTensorInfo(), ToComparisonOperation(), ToConstTensor(), ToTensorInfo(), and ToUnaryOperation().

1545 {
1546  auto layerType = graph->layers()->Get(layerIndex)->layer_type();
1547 
1548  switch (layerType)
1549  {
1550  case Layer::Layer_ConcatLayer:
1551  return graph->layers()->Get(layerIndex)->layer_as_ConcatLayer()->descriptor();
1552  case Layer::Layer_MergerLayer:
1553  return graph->layers()->Get(layerIndex)->layer_as_MergerLayer()->descriptor();
1554  default:
1555  throw armnn::Exception("unknown layer type, should be concat or merger");
1556  }
1557 }
Base class for all ArmNN exceptions so that users can filter to just those.
Definition: Exceptions.hpp:46

◆ ToActivationFunction()

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

Definition at line 402 of file Deserializer.cpp.

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

Referenced by Deserializer::GetNetworkOutputBindingInfo().

403 {
404  switch (function)
405  {
406  case armnnSerializer::ActivationFunction_Sigmoid:
408  case armnnSerializer::ActivationFunction_TanH:
410  case armnnSerializer::ActivationFunction_Linear:
412  case armnnSerializer::ActivationFunction_ReLu:
414  case armnnSerializer::ActivationFunction_BoundedReLu:
416  case armnnSerializer::ActivationFunction_LeakyReLu:
418  case armnnSerializer::ActivationFunction_Abs:
420  case armnnSerializer::ActivationFunction_Sqrt:
422  case armnnSerializer::ActivationFunction_Square:
424  default:
426  }
427 }

◆ ToArgMinMaxFunction()

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

Definition at line 429 of file Deserializer.cpp.

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

Referenced by Deserializer::GetNetworkOutputBindingInfo().

430 {
431  switch (function)
432  {
433  case armnnSerializer::ArgMinMaxFunction::ArgMinMaxFunction_Max:
435  case armnnSerializer::ArgMinMaxFunction::ArgMinMaxFunction_Min:
436  default:
438  }
439 }

◆ ToComparisonOperation()

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

Definition at line 441 of file Deserializer.cpp.

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

Referenced by GetOriginsDescriptor().

442 {
443  switch (operation)
444  {
445  case armnnSerializer::ComparisonOperation::ComparisonOperation_Equal:
447  case armnnSerializer::ComparisonOperation::ComparisonOperation_Greater:
449  case armnnSerializer::ComparisonOperation::ComparisonOperation_GreaterOrEqual:
451  case armnnSerializer::ComparisonOperation::ComparisonOperation_Less:
453  case armnnSerializer::ComparisonOperation::ComparisonOperation_LessOrEqual:
455  case armnnSerializer::ComparisonOperation::ComparisonOperation_NotEqual:
456  default:
458  }
459 }

◆ ToConstTensor()

armnn::ConstTensor armnnDeserializer::ToConstTensor ( Deserializer::ConstTensorRawPtr  constTensorPtr)

Definition at line 547 of file Deserializer.cpp.

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

Referenced by Deserializer::GetLstmDescriptor(), Deserializer::GetNetworkOutputBindingInfo(), and GetOriginsDescriptor().

548 {
549  CHECK_CONST_TENSOR_PTR(constTensorPtr);
550  armnn::TensorInfo tensorInfo = ToTensorInfo(constTensorPtr->info());
551 
552  switch (constTensorPtr->data_type())
553  {
554  case ConstTensorData_ByteData:
555  {
556  auto byteData = constTensorPtr->data_as_ByteData()->data();
557  CHECK_CONST_TENSOR_SIZE(byteData->size(), tensorInfo.GetNumElements());
558  return armnn::ConstTensor(tensorInfo, byteData->data());
559  }
560  case ConstTensorData_ShortData:
561  {
562  auto shortData = constTensorPtr->data_as_ShortData()->data();
563  CHECK_CONST_TENSOR_SIZE(shortData->size(), tensorInfo.GetNumElements());
564  return armnn::ConstTensor(tensorInfo, shortData->data());
565  }
566  case ConstTensorData_IntData:
567  {
568  auto intData = constTensorPtr->data_as_IntData()->data();
569  CHECK_CONST_TENSOR_SIZE(intData->size(), tensorInfo.GetNumElements());
570  return armnn::ConstTensor(tensorInfo, intData->data());
571  }
572  case ConstTensorData_LongData:
573  {
574  auto longData = constTensorPtr->data_as_LongData()->data();
575  CHECK_CONST_TENSOR_SIZE(longData->size(), tensorInfo.GetNumElements());
576  return armnn::ConstTensor(tensorInfo, longData->data());
577  }
578  default:
579  {
580  CheckLocation location = CHECK_LOCATION();
581  throw ParseException(
582  boost::str(boost::format("Unsupported data type %1% = %2%. %3%") %
583  constTensorPtr->data_type() %
584  EnumNameConstTensorData(constTensorPtr->data_type()) %
585  location.AsString()));
586  }
587  }
588 }
A tensor defined by a TensorInfo (shape and data type) and an immutable backing store.
Definition: Tensor.hpp:199
#define CHECK_CONST_TENSOR_SIZE(CONST_TENSOR_SIZE, TENSOR_SIZE)
#define CHECK_LOCATION()
Definition: Exceptions.hpp:169
unsigned int GetNumElements() const
Definition: Tensor.hpp:93
armnn::TensorInfo ToTensorInfo(Deserializer::TensorRawPtr tensorPtr)
#define CHECK_CONST_TENSOR_PTR(TENSOR_PTR)
std::string AsString() const
Definition: Exceptions.hpp:29

◆ ToDataLayout()

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

Definition at line 390 of file Deserializer.cpp.

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

Referenced by Deserializer::GetLstmDescriptor(), Deserializer::GetNetworkOutputBindingInfo(), Deserializer::GetNormalizationDescriptor(), and Deserializer::OutputShapeOfReshape().

391 {
392  switch (dataLayout)
393  {
394  case armnnSerializer::DataLayout::DataLayout_NHWC:
396  case armnnSerializer::DataLayout::DataLayout_NCHW:
397  default:
399  }
400 }

◆ ToResizeMethod()

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

Definition at line 480 of file Deserializer.cpp.

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

Referenced by Deserializer::OutputShapeOfReshape().

481 {
482  switch (method)
483  {
484  case armnnSerializer::ResizeMethod_NearestNeighbor:
486  case armnnSerializer::ResizeMethod_Bilinear:
488  default:
490  }
491 }

◆ ToTensorInfo()

armnn::TensorInfo armnnDeserializer::ToTensorInfo ( Deserializer::TensorRawPtr  tensorPtr)

Definition at line 493 of file Deserializer.cpp.

References CheckLocation::AsString(), armnn::Boolean, CHECK_LOCATION, CHECK_TENSOR_PTR, armnn::Float16, armnn::Float32, armnn::QAsymmU8, armnn::QSymmS16, and armnn::Signed32.

Referenced by TfLiteParser::CreateNetworkFromBinary(), OnnxParser::CreateNetworkFromString(), Deserializer::GetLstmDescriptor(), OnnxParser::GetNetworkInputBindingInfo(), TfLiteParser::GetNetworkInputBindingInfo(), Deserializer::GetNetworkOutputBindingInfo(), OnnxParser::GetNetworkOutputBindingInfo(), TfLiteParser::GetNetworkOutputBindingInfo(), Deserializer::GetNormalizationDescriptor(), GetOriginsDescriptor(), TfLiteParser::GetOutputTensorIds(), Deserializer::GetPoolingDescriptor(), Deserializer::OutputShapeOfReshape(), TfLiteParser::OutputShapeOfReshape(), TfLiteParser::OutputShapeOfSqueeze(), TfLiteParser::TfLiteParser(), and ToConstTensor().

494 {
495  armnn::DataType type;
496  CHECK_TENSOR_PTR(tensorPtr);
497 
498  switch (tensorPtr->dataType())
499  {
500  case DataType_QuantisedAsymm8:
501  case DataType_QAsymmU8:
503  break;
504  case DataType_QSymmS16:
505  case DataType_QuantisedSymm16:
507  break;
508  case DataType_Signed32:
510  break;
511  case DataType_Float32:
513  break;
514  case DataType_Float16:
516  break;
517  case DataType_Boolean:
519  break;
520  default:
521  {
522  CheckLocation location = CHECK_LOCATION();
523  throw ParseException(
524  boost::str(
525  boost::format("Unsupported data type %1% = %2%. %3%") %
526  tensorPtr->dataType() %
527  EnumNameDataType(tensorPtr->dataType()) %
528  location.AsString()));
529  }
530  }
531  float quantizationScale = tensorPtr->quantizationScale();
532  int32_t quantizationOffset = tensorPtr->quantizationOffset();
533 
534  auto dimensions = tensorPtr->dimensions();
535  unsigned int size = dimensions->size();
536  std::vector<unsigned int> outputDims(dimensions->begin(), dimensions->begin() + size);
537 
538  // two statements (on purpose) for easier debugging:
539  armnn::TensorInfo result(size,
540  outputDims.data(),
541  type,
542  quantizationScale,
543  quantizationOffset);
544  return result;
545 }
#define CHECK_LOCATION()
Definition: Exceptions.hpp:169
DataType
Definition: Types.hpp:32
std::string AsString() const
Definition: Exceptions.hpp:29
#define CHECK_TENSOR_PTR(TENSOR_PTR)

◆ ToUnaryOperation()

armnn::UnaryOperation armnnDeserializer::ToUnaryOperation ( armnnSerializer::UnaryOperation  operation)

Definition at line 461 of file Deserializer.cpp.

References armnn::Abs, armnn::Exp, armnn::Neg, armnn::Rsqrt, and armnn::Sqrt.

Referenced by GetOriginsDescriptor().

462 {
463  switch (operation)
464  {
465  case armnnSerializer::UnaryOperation::UnaryOperation_Abs:
467  case armnnSerializer::UnaryOperation::UnaryOperation_Rsqrt:
469  case armnnSerializer::UnaryOperation::UnaryOperation_Sqrt:
471  case armnnSerializer::UnaryOperation::UnaryOperation_Exp:
473  case armnnSerializer::UnaryOperation::UnaryOperation_Neg:
475  default:
476  throw armnn::InvalidArgumentException("Unary operation unknown");
477  }
478 }