ArmNN
 20.08
CreateNetworkImpl< IParser > Struct Template Reference

#include <InferenceModel.hpp>

Public Types

using Params = InferenceModelInternal::Params
 

Static Public Member Functions

static armnn::INetworkPtr Create (const Params &params, std::vector< armnn::BindingPointInfo > &inputBindings, std::vector< armnn::BindingPointInfo > &outputBindings)
 

Detailed Description

template<typename IParser>
struct CreateNetworkImpl< IParser >

Definition at line 116 of file InferenceModel.hpp.

Member Typedef Documentation

◆ Params

Definition at line 119 of file InferenceModel.hpp.

Member Function Documentation

◆ Create()

static armnn::INetworkPtr Create ( const Params params,
std::vector< armnn::BindingPointInfo > &  inputBindings,
std::vector< armnn::BindingPointInfo > &  outputBindings 
)
inlinestatic

Definition at line 121 of file InferenceModel.hpp.

References ARMNN_ASSERT, ARMNN_SCOPED_HEAP_PROFILING, CHECK_LOCATION, BindingPointInfo::m_BindingId, Params::m_InferOutputShape, Params::m_InputBindings, Params::m_InputShapes, Params::m_IsModelBinary, Params::m_ModelPath, Params::m_OutputBindings, Params::m_ParseUnsupported, Params::m_SubgraphId, BindingPointInfo::m_TensorInfo, and armnn::numeric_cast().

Referenced by InferenceModel< IParser, TDataType >::InferenceModel().

124  {
125  const std::string& modelPath = params.m_ModelPath;
126 
127  // Create a network from a file on disk
128  auto parser(IParser::Create());
129 
130  std::map<std::string, armnn::TensorShape> inputShapes;
131  if (!params.m_InputShapes.empty())
132  {
133  const size_t numInputShapes = params.m_InputShapes.size();
134  const size_t numInputBindings = params.m_InputBindings.size();
135  if (numInputShapes < numInputBindings)
136  {
137  throw armnn::Exception(boost::str(boost::format(
138  "Not every input has its tensor shape specified: expected=%1%, got=%2%")
139  % numInputBindings % numInputShapes));
140  }
141 
142  for (size_t i = 0; i < numInputShapes; i++)
143  {
144  inputShapes[params.m_InputBindings[i]] = params.m_InputShapes[i];
145  }
146  }
147 
148  std::vector<std::string> requestedOutputs = params.m_OutputBindings;
149  armnn::INetworkPtr network{nullptr, [](armnn::INetwork *){}};
150 
151  {
152  ARMNN_SCOPED_HEAP_PROFILING("Parsing");
153  // Handle text and binary input differently by calling the corresponding parser function
154  network = (params.m_IsModelBinary ?
155  parser->CreateNetworkFromBinaryFile(modelPath.c_str(), inputShapes, requestedOutputs) :
156  parser->CreateNetworkFromTextFile(modelPath.c_str(), inputShapes, requestedOutputs));
157  }
158 
159  for (const std::string& inputLayerName : params.m_InputBindings)
160  {
161  inputBindings.push_back(parser->GetNetworkInputBindingInfo(inputLayerName));
162  }
163 
164  for (const std::string& outputLayerName : params.m_OutputBindings)
165  {
166  outputBindings.push_back(parser->GetNetworkOutputBindingInfo(outputLayerName));
167  }
168 
169  return network;
170  }
Main network class which provides the interface for building up a neural network. ...
Definition: INetwork.hpp:105
#define ARMNN_SCOPED_HEAP_PROFILING(TAG)
Base class for all ArmNN exceptions so that users can filter to just those.
Definition: Exceptions.hpp:46
std::unique_ptr< INetwork, void(*)(INetwork *network)> INetworkPtr
Definition: INetwork.hpp:101

The documentation for this struct was generated from the following file: