ArmNN
 23.08
Network.hpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 #pragma once
6 
8 #include <armnn/INetwork.hpp>
9 #include <armnn/LstmParams.hpp>
11 #include <armnn/TensorFwd.hpp>
12 #include <armnn/Types.hpp>
13 
14 #include <Graph.hpp>
15 #include <Layer.hpp>
16 #include <OptimizedNetworkImpl.hpp>
18 
19 #include <string>
20 #include <vector>
21 #include <map>
22 #include <memory>
23 
24 namespace armnn
25 {
26 
27 class Graph;
28 
29 using NetworkImplPtr = std::unique_ptr<NetworkImpl, void (*)(NetworkImpl* network)>;
30 
31 /// Private implementation of INetwork.
33 {
34 public:
35  NetworkImpl(const NetworkOptions& networkOptions = {});
36  ~NetworkImpl();
37 
38  const Graph& GetGraph() const
39  { return *m_Graph; }
40 
42 
43  IConnectableLayer* AddInputLayer(LayerBindingId id, const char* name = nullptr);
44 
45  IConnectableLayer* AddActivationLayer(const ActivationDescriptor& activationDescriptor,
46  const char* name = nullptr);
47  ARMNN_DEPRECATED_MSG_REMOVAL_DATE("Use AddElementwiseBinaryLayer instead", "24.02")
48  IConnectableLayer* AddAdditionLayer(const char* name = nullptr);
49 
51  const char* name = nullptr);
52 
54  const char* name = nullptr);
55 
57  const ConstTensor& mean,
58  const ConstTensor& variance,
59  const ConstTensor& beta,
60  const ConstTensor& gamma,
61  const char* name = nullptr);
62 
63  IConnectableLayer* AddBatchToSpaceNdLayer(const BatchToSpaceNdDescriptor& batchToSpaceNdDescriptor,
64  const char* name = nullptr);
65 
66  IConnectableLayer* AddCastLayer(const char* name = nullptr);
67 
68  IConnectableLayer* AddChannelShuffleLayer(const ChannelShuffleDescriptor& channelShuffleDescriptor,
69  const char* name = nullptr);
70 
71  IConnectableLayer* AddComparisonLayer(const ComparisonDescriptor& comparisonDescriptor,
72  const char* name = nullptr);
73 
74  IConnectableLayer* AddConcatLayer(const ConcatDescriptor& concatDescriptor,
75  const char* name = nullptr);
76 
77  IConnectableLayer* AddConvolution2dLayer(const Convolution2dDescriptor& convolution2dDescriptor,
78  const char* name = nullptr);
79 
80  IConnectableLayer* AddConvolution3dLayer(const Convolution3dDescriptor& convolution3dDescriptor,
81  const char* name = nullptr);
82 
83  IConnectableLayer* AddConstantLayer(const ConstTensor& input, const char* name = nullptr);
84 
85  IConnectableLayer* AddDepthToSpaceLayer(const DepthToSpaceDescriptor& depthToSpaceDescriptor,
86  const char* name = nullptr);
87 
89  const char* name = nullptr);
90 
91  IConnectableLayer* AddDequantizeLayer(const char* name = nullptr);
92 
94  const ConstTensor& anchors,
95  const char* name = nullptr);
96 
98  IConnectableLayer* AddDivisionLayer(const char* name = nullptr);
99 
100  IConnectableLayer* AddElementwiseBinaryLayer(const ElementwiseBinaryDescriptor& elementwiseBinaryDescriptor,
101  const char* name = nullptr);
102 
103  IConnectableLayer* AddElementwiseUnaryLayer(const ElementwiseUnaryDescriptor& elementwiseUnaryDescriptor,
104  const char* name = nullptr);
105 
106  IConnectableLayer* AddMergeLayer(const char* name = nullptr);
107 
108  IConnectableLayer* AddFillLayer(const FillDescriptor& fillDescriptor,
109  const char* name = nullptr);
110 
111  IConnectableLayer* AddFloorLayer(const char* name = nullptr);
112 
113  IConnectableLayer* AddFullyConnectedLayer(const FullyConnectedDescriptor& fullyConnectedDescriptor,
114  const char* name = nullptr);
115 
116  IConnectableLayer* AddGatherLayer(const GatherDescriptor& gatherDescriptor,
117  const char* name = nullptr);
118 
119  IConnectableLayer* AddGatherNdLayer(const char* name = nullptr);
120 
122  const char* name = nullptr);
123 
125  const char* name = nullptr);
126 
127  IConnectableLayer* AddLogSoftmaxLayer(const LogSoftmaxDescriptor& logSoftmaxDescriptor,
128  const char* name = nullptr);
129 
130  IConnectableLayer* AddLogicalBinaryLayer(const LogicalBinaryDescriptor& logicalBinaryDescriptor,
131  const char* name = nullptr);
132 
133  IConnectableLayer* AddLstmLayer(const LstmDescriptor& descriptor,
134  const LstmInputParams& params,
135  const char* name = nullptr);
136 
138  IConnectableLayer* AddMaximumLayer(const char* name = nullptr);
139 
140  IConnectableLayer* AddMeanLayer(const MeanDescriptor& meanDescriptor, const char* name = nullptr);
141 
143  IConnectableLayer* AddMinimumLayer(const char* name = nullptr);
144 
146  IConnectableLayer* AddMultiplicationLayer(const char* name = nullptr);
147 
148  IConnectableLayer* AddNormalizationLayer(const NormalizationDescriptor& normalizationDescriptor,
149  const char* name = nullptr);
150 
151  IConnectableLayer* AddOutputLayer(LayerBindingId id, const char* name = nullptr);
152 
153  IConnectableLayer* AddPadLayer(const PadDescriptor& padDescriptor, const char* name = nullptr);
154 
155  IConnectableLayer* AddPermuteLayer(const PermuteDescriptor& permuteDescriptor,
156  const char* name = nullptr);
157 
158  IConnectableLayer* AddPooling2dLayer(const Pooling2dDescriptor& pooling2dDescriptor,
159  const char* name = nullptr);
160 
161  IConnectableLayer* AddPooling3dLayer(const Pooling3dDescriptor& pooling3dDescriptor,
162  const char* name = nullptr);
163 
164  IConnectableLayer* AddPrecompiledLayer(const PreCompiledDescriptor& preCompiledDescriptor,
165  CompiledBlobPtr compiledBlobPtr,
166  const Optional<BackendId>& backend,
167  const char* name = nullptr);
168 
169  IConnectableLayer* AddPreluLayer(const char* name = nullptr);
170 
171  IConnectableLayer* AddQuantizeLayer(const char* name = nullptr);
172 
174  const LstmInputParams& params,
175  const char* name = nullptr);
176 
178  const char* name = nullptr);
179 
180  IConnectableLayer* AddRankLayer(const char* name = nullptr);
181 
182  IConnectableLayer* AddReduceLayer(const ReduceDescriptor& reduceDescriptor,
183  const char* name = nullptr);
184 
185  IConnectableLayer* AddResizeLayer(const ResizeDescriptor& resizeDescriptor,
186  const char* name = nullptr);
187 
188  IConnectableLayer* AddReshapeLayer(const ReshapeDescriptor& reshapeDescriptor,
189  const char* name = nullptr);
190 
191  IConnectableLayer* AddReverseV2Layer(const char* name = nullptr);
192 
193  IConnectableLayer* AddShapeLayer(const char* name = nullptr);
194 
195  IConnectableLayer* AddSliceLayer(const SliceDescriptor& sliceDescriptor, const char* name = nullptr);
196 
197  IConnectableLayer* AddSoftmaxLayer(const SoftmaxDescriptor& softmaxDescriptor,
198  const char* name = nullptr);
199 
200  IConnectableLayer* AddSplitterLayer(const ViewsDescriptor& splitterDescriptor,
201  const char* name = nullptr);
202 
203  IConnectableLayer* AddSpaceToBatchNdLayer(const SpaceToBatchNdDescriptor& spaceToBatchNdDescriptor,
204  const char* name = nullptr);
205 
206  IConnectableLayer* AddSpaceToDepthLayer(const SpaceToDepthDescriptor& spaceToDepthDescriptor,
207  const char* name = nullptr);
208 
209  IConnectableLayer* AddStackLayer(const StackDescriptor& stackDescriptor,
210  const char* name = nullptr);
211 
213  const char* name = nullptr);
214 
215  IConnectableLayer* AddStridedSliceLayer(const StridedSliceDescriptor& stridedSliceDescriptor,
216  const char* name = nullptr);
217 
219  IConnectableLayer* AddSubtractionLayer(const char* name = nullptr);
220 
221  IConnectableLayer* AddSwitchLayer(const char* name = nullptr);
222 
223  IConnectableLayer* AddTileLayer(const TileDescriptor& tileDescriptor,
224  const char* name = nullptr);
225 
227  const ConstTensor& weights,
228  const Optional<ConstTensor>& biases,
229  const char* name = nullptr);
230 
231  IConnectableLayer* AddTransposeLayer(const TransposeDescriptor& transposeDescriptor,
232  const char* name = nullptr);
233 
235  const LstmInputParams& params,
236  const char* name = nullptr);
237 
238  IConnectableLayer* AddConvertFp16ToFp32Layer(const char* name = nullptr);
239 
240  IConnectableLayer* AddConvertFp32ToFp16Layer(const char* name = nullptr);
241 
242  void ExecuteStrategy(IStrategy& strategy) const;
243 
244 private:
245 
246  bool GetShapeInferenceMethod();
247  bool GetAllowExpandedDims();
248  NetworkOptions m_NetworkOptions;
249 
250  std::unique_ptr<Graph> m_Graph;
251  ModelOptions m_ModelOptions;
252 };
253 
255 {
256  bool m_Warning;
257  bool m_Error;
258 
259  OptimizationResult(bool warning, bool error)
260  : m_Warning(warning), m_Error(error)
261  {}
262 
264  : OptimizationResult(false, false)
265  {}
266 
267  bool IsOk() const
268  { return !m_Warning && !m_Error; }
269  bool IsWarningOnly() const
270  { return m_Warning && !m_Error; }
271  bool IsError() const
272  { return m_Error; }
273 
274 };
275 
276 using BackendsMap = std::map<BackendId, std::unique_ptr<class IBackendInternal>>;
277 
279  struct BackendSettings& backendSettings);
280 
282  BackendsMap& backends,
283  TensorHandleFactoryRegistry& registry,
284  bool importEnabled,
285  bool exportEnabled,
286  Optional<std::vector<std::string>&> errMessages);
287 
289  BackendSettings& backendSettings,
290  Graph::Iterator& firstLayer,
291  Graph::Iterator& lastLayer,
292  Optional<std::vector<std::string>&> errMessages);
293 
294 
296  BackendSettings& backendSettings,
299  Optional<std::vector<std::string>&> errMessages);
300 
302 {
303  ~OptimizerOptionsOpaqueImpl() = default;
304 
306  : m_ReduceFp32ToFp16(false)
307  , m_Debug(false)
308  , m_DebugToFile(false)
309  , m_ReduceFp32ToBf16(false)
310  , m_shapeInferenceMethod(armnn::ShapeInferenceMethod::ValidateOnly)
311  , m_ImportEnabled(false)
312  , m_ModelOptions()
313  , m_ProfilingEnabled(false)
314  , m_ExportEnabled(false)
315  , m_AllowExpandedDims(false)
316  {
317  }
318 
319  explicit OptimizerOptionsOpaqueImpl(bool reduceFp32ToFp16, bool debug, bool reduceFp32ToBf16,
320  bool importEnabled, ModelOptions modelOptions = {},
321  bool exportEnabled = false, bool debugToFile = false)
322  : m_ReduceFp32ToFp16(reduceFp32ToFp16)
323  , m_Debug(debug)
324  , m_DebugToFile(debugToFile)
325  , m_ReduceFp32ToBf16(reduceFp32ToBf16)
326  , m_shapeInferenceMethod(armnn::ShapeInferenceMethod::ValidateOnly)
327  , m_ImportEnabled(importEnabled)
328  , m_ModelOptions(modelOptions)
329  , m_ProfilingEnabled(false)
330  , m_ExportEnabled(exportEnabled)
331  , m_AllowExpandedDims(false)
332  {
333  }
334 
335  explicit OptimizerOptionsOpaqueImpl(bool reduceFp32ToFp16, bool debug, bool reduceFp32ToBf16,
336  ShapeInferenceMethod shapeInferenceMethod,
337  bool importEnabled, ModelOptions modelOptions, bool exportEnabled,
338  bool debugToFile, bool allowExpandedDims)
339  : m_ReduceFp32ToFp16(reduceFp32ToFp16)
340  , m_Debug(debug)
341  , m_DebugToFile(debugToFile)
342  , m_ReduceFp32ToBf16(reduceFp32ToBf16)
343  , m_shapeInferenceMethod(shapeInferenceMethod)
344  , m_ImportEnabled(importEnabled)
345  , m_ModelOptions(modelOptions)
346  , m_ProfilingEnabled(false)
347  , m_ExportEnabled(exportEnabled)
348  , m_AllowExpandedDims(allowExpandedDims)
349  {
350  }
351 
352  /// Reduces all Fp32 operators in the model to Fp16 for faster processing.
353  /// If the first preferred backend does not have Fp16 support, this option will be disabled.
354  /// If the value of converted Fp16 is infinity, round to the closest finite Fp16 value.
355  /// @Note This feature works best if all operators of the model are in Fp32. ArmNN will add conversion layers
356  /// between layers that weren't in Fp32 in the first place or if the operator is not supported in Fp16.
357  /// The overhead of these conversions can lead to a slower overall performance if too many conversions are
358  /// required.
359  bool m_ReduceFp32ToFp16 = false;
360 
361  /// Add debug data for easier troubleshooting
362  bool m_Debug = false;
363 
364  /// Pass debug data to separate output files for easier troubleshooting
365  bool m_DebugToFile = false;
366 
367  /// @Note This feature has been replaced by enabling Fast Math in compute library backend options.
368  /// This is currently a placeholder option
369  bool m_ReduceFp32ToBf16 = false;
370 
371  /// Infer output size when not available
373 
374  /// Enable Import
375  bool m_ImportEnabled = false;
376 
377  /// Enable Model Options
379 
380  /// Enable profiling dump of the optimizer phase
381  bool m_ProfilingEnabled = false;
382 
383  /// Enable Export
384  bool m_ExportEnabled = false;
385 
386  /// When calculating tensor sizes, dimensions of size == 1 will be ignored
387  bool m_AllowExpandedDims = false;
388 };
389 
390 } // namespace armnn
armnn::NetworkImpl::AddDepthToSpaceLayer
IConnectableLayer * AddDepthToSpaceLayer(const DepthToSpaceDescriptor &depthToSpaceDescriptor, const char *name=nullptr)
Definition: Network.cpp:2226
armnn::BatchNormalizationDescriptor
A BatchNormalizationDescriptor for the BatchNormalizationLayer.
Definition: Descriptors.hpp:828
armnn::NetworkImpl::AddTransposeConvolution2dLayer
IConnectableLayer * AddTransposeConvolution2dLayer(const TransposeConvolution2dDescriptor &descriptor, const ConstTensor &weights, const Optional< ConstTensor > &biases, const char *name=nullptr)
Definition: Network.cpp:2619
armnn::OptimizerOptionsOpaqueImpl::OptimizerOptionsOpaqueImpl
OptimizerOptionsOpaqueImpl()
Definition: Network.hpp:305
armnn::OptimizationResult::m_Error
bool m_Error
Definition: Network.hpp:257
armnn::NetworkImpl::AddLogicalBinaryLayer
IConnectableLayer * AddLogicalBinaryLayer(const LogicalBinaryDescriptor &logicalBinaryDescriptor, const char *name=nullptr)
Definition: Network.cpp:2840
armnn::ViewsDescriptor
A ViewsDescriptor for the SplitterLayer.
Definition: Descriptors.hpp:244
armnn::ActivationDescriptor
An ActivationDescriptor for the ActivationLayer.
Definition: Descriptors.hpp:36
armnn::NetworkImpl::AddFullyConnectedLayer
IConnectableLayer * AddFullyConnectedLayer(const FullyConnectedDescriptor &fullyConnectedDescriptor, const char *name=nullptr)
Definition: Network.cpp:2192
armnn::BackendSettings
Definition: BackendSettings.hpp:18
armnn::FullyConnectedDescriptor
A FullyConnectedDescriptor for the FullyConnectedLayer.
Definition: Descriptors.hpp:507
armnn::NetworkImpl::AddReverseV2Layer
IConnectableLayer * AddReverseV2Layer(const char *name=nullptr)
Definition: Network.cpp:2993
armnn::OptimizationResult::IsWarningOnly
bool IsWarningOnly() const
Definition: Network.hpp:269
armnn::QLstmDescriptor
A QLstmDescriptor for the QLstmLayer.
Definition: Descriptors.hpp:1359
armnn::Optional
Definition: Optional.hpp:270
armnn::OptimizationResult::OptimizationResult
OptimizationResult(bool warning, bool error)
Definition: Network.hpp:259
armnn::NetworkImpl::AddTransposeLayer
IConnectableLayer * AddTransposeLayer(const TransposeDescriptor &transposeDescriptor, const char *name=nullptr)
Definition: Network.cpp:2641
armnn::NetworkImpl::AddConvolution2dLayer
IConnectableLayer * AddConvolution2dLayer(const Convolution2dDescriptor &convolution2dDescriptor, const char *name=nullptr)
Definition: Network.cpp:2204
armnn::NetworkImpl::AddTileLayer
IConnectableLayer * AddTileLayer(const TileDescriptor &tileDescriptor, const char *name=nullptr)
Definition: Network.cpp:2998
armnn::Pooling3dDescriptor
A Pooling3dDescriptor for the Pooling3dLayer.
Definition: Descriptors.hpp:431
armnn::NetworkImpl::AddDivisionLayer
IConnectableLayer * AddDivisionLayer(const char *name=nullptr)
Definition: Network.cpp:2557
armnn::ResizeDescriptor
A ResizeDescriptor for the ResizeLayer.
Definition: Descriptors.hpp:964
armnn::ArgMinMaxDescriptor
An ArgMinMaxDescriptor for ArgMinMaxLayer.
Definition: Descriptors.hpp:67
armnn::InstanceNormalizationDescriptor
An InstanceNormalizationDescriptor for InstanceNormalizationLayer.
Definition: Descriptors.hpp:847
armnn::TensorHandleFactoryRegistry
Definition: TensorHandleFactoryRegistry.hpp:23
armnn::NetworkImpl::AddAdditionLayer
IConnectableLayer * AddAdditionLayer(const char *name=nullptr)
Definition: Network.cpp:2313
armnn::GatherDescriptor
A GatherDescriptor for the GatherLayer.
Definition: Descriptors.hpp:944
armnn::NetworkImpl::AddSplitterLayer
IConnectableLayer * AddSplitterLayer(const ViewsDescriptor &splitterDescriptor, const char *name=nullptr)
Definition: Network.cpp:2297
armnn::L2NormalizationDescriptor
A L2NormalizationDescriptor for the L2NormalizationLayer.
Definition: Descriptors.hpp:809
Graph.hpp
armnn::NormalizationDescriptor
A NormalizationDescriptor for the NormalizationLayer.
Definition: Descriptors.hpp:769
armnn::NetworkImpl::AddSubtractionLayer
IConnectableLayer * AddSubtractionLayer(const char *name=nullptr)
Definition: Network.cpp:2562
armnn::NetworkImpl::AddStridedSliceLayer
IConnectableLayer * AddStridedSliceLayer(const StridedSliceDescriptor &stridedSliceDescriptor, const char *name=nullptr)
Definition: Network.cpp:2587
armnn::ChannelShuffleDescriptor
A ChannelShuffleDescriptor for the ChannelShuffle operator.
Definition: Descriptors.hpp:1541
armnn::NetworkImpl::AddLogSoftmaxLayer
IConnectableLayer * AddLogSoftmaxLayer(const LogSoftmaxDescriptor &logSoftmaxDescriptor, const char *name=nullptr)
Definition: Network.cpp:2378
armnn::NetworkImpl::~NetworkImpl
~NetworkImpl()
Definition: Network.cpp:2137
armnn::NetworkImpl::AddMeanLayer
IConnectableLayer * AddMeanLayer(const MeanDescriptor &meanDescriptor, const char *name=nullptr)
Definition: Network.cpp:2567
armnn::OptimizationResult::IsError
bool IsError() const
Definition: Network.hpp:271
armnn::NetworkImpl::AddResizeLayer
IConnectableLayer * AddResizeLayer(const ResizeDescriptor &resizeDescriptor, const char *name=nullptr)
Definition: Network.cpp:2356
armnn::AssignBackends
OptimizationResult AssignBackends(OptimizedNetworkImpl *optNetObjPtr, BackendSettings &backendSettings, Graph::Iterator &firstLayer, Graph::Iterator &lastLayer, Optional< std::vector< std::string > & > errMessages)
Definition: Network.cpp:1159
armnn::NetworkImpl::AddBatchMatMulLayer
IConnectableLayer * AddBatchMatMulLayer(const BatchMatMulDescriptor &desc, const char *name=nullptr)
Definition: Network.cpp:2988
armnn::Graph::Iterator
LayerList::const_iterator Iterator
Definition: Graph.hpp:53
armnn::NetworkImpl::AddLstmLayer
IConnectableLayer * AddLstmLayer(const LstmDescriptor &descriptor, const LstmInputParams &params, const char *name=nullptr)
Definition: Network.cpp:2416
armnn::NetworkImpl::AddReduceLayer
IConnectableLayer * AddReduceLayer(const ReduceDescriptor &reduceDescriptor, const char *name=nullptr)
Definition: Network.cpp:2350
armnn::NetworkImpl::AddConstantLayer
IConnectableLayer * AddConstantLayer(const ConstTensor &input, const char *name=nullptr)
Definition: Network.cpp:2384
armnn::OptimizerOptionsOpaqueImpl::OptimizerOptionsOpaqueImpl
OptimizerOptionsOpaqueImpl(bool reduceFp32ToFp16, bool debug, bool reduceFp32ToBf16, ShapeInferenceMethod shapeInferenceMethod, bool importEnabled, ModelOptions modelOptions, bool exportEnabled, bool debugToFile, bool allowExpandedDims)
Definition: Network.hpp:335
armnn::SubgraphView::IConnectableLayerIterator
IConnectableLayers::iterator IConnectableLayerIterator
Definition: SubgraphView.hpp:64
armnn::StackDescriptor
A StackDescriptor for the StackLayer.
Definition: Descriptors.hpp:1230
armnn::OptimizationResult::OptimizationResult
OptimizationResult()
Definition: Network.hpp:263
armnn::NetworkImpl::AddDepthwiseConvolution2dLayer
IConnectableLayer * AddDepthwiseConvolution2dLayer(const DepthwiseConvolution2dDescriptor &convolution2dDescriptor, const char *name=nullptr)
Definition: Network.cpp:2232
armnn::IStrategy
Definition: IStrategy.hpp:16
armnn::SelectTensorHandleStrategy
OptimizationResult SelectTensorHandleStrategy(Graph &optGraph, BackendsMap &backends, TensorHandleFactoryRegistry &registry, bool importEnabled, bool exportEnabled, Optional< std::vector< std::string > & > errMessages)
Definition: Network.cpp:1785
armnn::BoostLogSeverityMapping::error
@ error
armnn::NetworkImpl::AddComparisonLayer
IConnectableLayer * AddComparisonLayer(const ComparisonDescriptor &comparisonDescriptor, const char *name=nullptr)
Definition: Network.cpp:2168
armnn::NetworkImpl::ExecuteStrategy
void ExecuteStrategy(IStrategy &strategy) const
Definition: Network.cpp:3036
armnn::OptimizedNetworkImpl
Definition: OptimizedNetworkImpl.hpp:11
armnn::NetworkImpl::AddSwitchLayer
IConnectableLayer * AddSwitchLayer(const char *name=nullptr)
Definition: Network.cpp:2609
armnn::OptimizationResult
Definition: Network.hpp:254
armnn::NetworkImpl::AddSpaceToDepthLayer
IConnectableLayer * AddSpaceToDepthLayer(const SpaceToDepthDescriptor &spaceToDepthDescriptor, const char *name=nullptr)
Definition: Network.cpp:2405
armnn::NetworkImpl::AddFloorLayer
IConnectableLayer * AddFloorLayer(const char *name=nullptr)
Definition: Network.cpp:2411
armnn::OptimizationResult::IsOk
bool IsOk() const
Definition: Network.hpp:267
armnn::NetworkImpl::AddPermuteLayer
IConnectableLayer * AddPermuteLayer(const PermuteDescriptor &permuteDescriptor, const char *name=nullptr)
Definition: Network.cpp:2249
armnn::NetworkImpl::AddRankLayer
IConnectableLayer * AddRankLayer(const char *name=nullptr)
Definition: Network.cpp:2345
armnn::NetworkImpl::AddArgMinMaxLayer
IConnectableLayer * AddArgMinMaxLayer(const ArgMinMaxDescriptor &desc, const char *name=nullptr)
Definition: Network.cpp:2273
armnn::ElementwiseBinaryDescriptor
A ElementwiseBinaryDescriptor for the ElementwiseBinaryLayer.
Definition: Descriptors.hpp:109
armnn::CreateSupportedBackends
BackendsMap CreateSupportedBackends(TensorHandleFactoryRegistry &handleFactoryRegistry, BackendSettings &backendSettings)
Definition: Network.cpp:1282
armnn::NetworkImpl::AddBatchToSpaceNdLayer
IConnectableLayer * AddBatchToSpaceNdLayer(const BatchToSpaceNdDescriptor &batchToSpaceNdDescriptor, const char *name=nullptr)
Definition: Network.cpp:2152
armnn::NetworkImpl::AddPreluLayer
IConnectableLayer * AddPreluLayer(const char *name=nullptr)
Definition: Network.cpp:2614
armnn::NetworkImpl::AddUnidirectionalSequenceLstmLayer
IConnectableLayer * AddUnidirectionalSequenceLstmLayer(const UnidirectionalSequenceLstmDescriptor &descriptor, const LstmInputParams &params, const char *name=nullptr)
Definition: Network.cpp:2846
TensorFwd.hpp
armnn::NetworkImpl::AddSoftmaxLayer
IConnectableLayer * AddSoftmaxLayer(const SoftmaxDescriptor &softmaxDescriptor, const char *name=nullptr)
Definition: Network.cpp:2291
armnn::NetworkOptions
std::vector< BackendOptions > NetworkOptions
Definition: BackendOptions.hpp:16
LstmParams.hpp
armnn::NetworkImpl::AddBatchNormalizationLayer
IConnectableLayer * AddBatchNormalizationLayer(const BatchNormalizationDescriptor &desc, const ConstTensor &mean, const ConstTensor &variance, const ConstTensor &beta, const ConstTensor &gamma, const char *name=nullptr)
Definition: Network.cpp:2328
INetwork.hpp
armnn::NetworkImpl::AddFillLayer
IConnectableLayer * AddFillLayer(const FillDescriptor &fillDescriptor, const char *name=nullptr)
Definition: Network.cpp:2186
armnn::PadDescriptor
A PadDescriptor for the PadLayer.
Definition: Descriptors.hpp:1175
armnn::NetworkImpl::AddGatherNdLayer
IConnectableLayer * AddGatherNdLayer(const char *name=nullptr)
Definition: Network.cpp:2599
armnn::TransposeDescriptor
A TransposeDescriptor for the TransposeLayer.
Definition: Descriptors.hpp:1469
armnn::OptimizationResult::m_Warning
bool m_Warning
Definition: Network.hpp:256
armnn::SliceDescriptor
A SliceDescriptor for the SliceLayer.
Definition: Descriptors.hpp:1207
armnn::NetworkImpl::AddStackLayer
IConnectableLayer * AddStackLayer(const StackDescriptor &stackDescriptor, const char *name=nullptr)
Definition: Network.cpp:2647
armnn::NetworkImpl::AddElementwiseUnaryLayer
IConnectableLayer * AddElementwiseUnaryLayer(const ElementwiseUnaryDescriptor &elementwiseUnaryDescriptor, const char *name=nullptr)
Definition: Network.cpp:2180
armnn::ReshapeDescriptor
A ReshapeDescriptor for the ReshapeLayer.
Definition: Descriptors.hpp:1002
armnn::NetworkImpl::AddConvertFp16ToFp32Layer
IConnectableLayer * AddConvertFp16ToFp32Layer(const char *name=nullptr)
Definition: Network.cpp:2210
armnn::NetworkImpl::AddOutputLayer
IConnectableLayer * AddOutputLayer(LayerBindingId id, const char *name=nullptr)
Definition: Network.cpp:2323
armnn::LayerBindingId
int LayerBindingId
Type of identifiers for bindable layers (inputs, outputs).
Definition: Types.hpp:303
armnn::NetworkImpl::AddReshapeLayer
IConnectableLayer * AddReshapeLayer(const ReshapeDescriptor &reshapeDescriptor, const char *name=nullptr)
Definition: Network.cpp:2393
armnn::NetworkImpl::AddQLstmLayer
IConnectableLayer * AddQLstmLayer(const QLstmDescriptor &descriptor, const LstmInputParams &params, const char *name=nullptr)
Definition: Network.cpp:2698
armnn::NetworkImpl::PrintGraph
Status PrintGraph()
Definition: Network.cpp:2141
armnn::NetworkImpl::AddInputLayer
IConnectableLayer * AddInputLayer(LayerBindingId id, const char *name=nullptr)
Definition: Network.cpp:2147
armnn::NetworkImpl::GetGraph
const Graph & GetGraph() const
Definition: Network.hpp:38
armnn::PermuteDescriptor
A PermuteDescriptor for the PermuteLayer.
Definition: Descriptors.hpp:149
armnn::BatchMatMulDescriptor
A BatchMatMulDescriptor for the BatchMatMul operator.
Definition: Descriptors.hpp:1563
DescriptorsFwd.hpp
armnn::NetworkImpl::AddMinimumLayer
IConnectableLayer * AddMinimumLayer(const char *name=nullptr)
Definition: Network.cpp:2308
armnn::NetworkImpl::AddElementwiseBinaryLayer
IConnectableLayer * AddElementwiseBinaryLayer(const ElementwiseBinaryDescriptor &elementwiseBinaryDescriptor, const char *name=nullptr)
Definition: Network.cpp:2174
armnn::SpaceToBatchNdDescriptor
A SpaceToBatchNdDescriptor for the SpaceToBatchNdLayer.
Definition: Descriptors.hpp:1022
armnn::Convolution3dDescriptor
A Convolution3dDescriptor for the Convolution3dLayer.
Definition: Descriptors.hpp:588
armnn::NetworkImpl::AddQuantizeLayer
IConnectableLayer * AddQuantizeLayer(const char *name=nullptr)
Definition: Network.cpp:2577
armnn::NetworkImpl::AddNormalizationLayer
IConnectableLayer * AddNormalizationLayer(const NormalizationDescriptor &normalizationDescriptor, const char *name=nullptr)
Definition: Network.cpp:2279
armnn::NetworkImpl
Private implementation of INetwork.
Definition: Network.hpp:32
armnn::NetworkImpl::AddMergeLayer
IConnectableLayer * AddMergeLayer(const char *name=nullptr)
Definition: Network.cpp:2604
armnn::NetworkImplPtr
std::unique_ptr< NetworkImpl, void(*)(NetworkImpl *network)> NetworkImplPtr
Definition: Network.hpp:29
armnn::NetworkImpl::AddShapeLayer
IConnectableLayer * AddShapeLayer(const char *name=nullptr)
Definition: Network.cpp:2361
armnn::OptimizerOptionsOpaqueImpl::OptimizerOptionsOpaqueImpl
OptimizerOptionsOpaqueImpl(bool reduceFp32ToFp16, bool debug, bool reduceFp32ToBf16, bool importEnabled, ModelOptions modelOptions={}, bool exportEnabled=false, bool debugToFile=false)
Definition: Network.hpp:319
armnn::NetworkImpl::AddConcatLayer
IConnectableLayer * AddConcatLayer(const ConcatDescriptor &concatDescriptor, const char *name=nullptr)
Definition: Network.cpp:2198
armnn::NetworkImpl::AddCastLayer
IConnectableLayer * AddCastLayer(const char *name=nullptr)
Definition: Network.cpp:2158
armnn::ShapeInferenceMethod::ValidateOnly
@ ValidateOnly
Validate all output shapes.
armnn::BatchToSpaceNdDescriptor
A BatchToSpaceNdDescriptor for the BatchToSpaceNdLayer.
Definition: Descriptors.hpp:875
armnn::Convolution2dDescriptor
A Convolution2dDescriptor for the Convolution2dLayer.
Definition: Descriptors.hpp:534
armnn::NetworkImpl::AddStandInLayer
IConnectableLayer * AddStandInLayer(const StandInDescriptor &descriptor, const char *name=nullptr)
Definition: Network.cpp:2654
armnn::ComparisonDescriptor
A ComparisonDescriptor for the ComparisonLayer.
Definition: Descriptors.hpp:89
armnn::FillDescriptor
A FillDescriptor for the FillLayer.
Definition: Descriptors.hpp:925
armnn::NetworkImpl::AddQuantizedLstmLayer
IConnectableLayer * AddQuantizedLstmLayer(const QuantizedLstmInputParams &params, const char *name=nullptr)
Definition: Network.cpp:2660
armnn::StandInDescriptor
A StandInDescriptor for the StandIn layer.
Definition: Descriptors.hpp:1260
SubgraphView.hpp
armnn::NetworkImpl::AddDequantizeLayer
IConnectableLayer * AddDequantizeLayer(const char *name=nullptr)
Definition: Network.cpp:2582
armnn::LstmDescriptor
An LstmDescriptor for the LstmLayer.
Definition: Descriptors.hpp:1081
armnn::StridedSliceDescriptor
A StridedSliceDescriptor for the StridedSliceLayer.
Definition: Descriptors.hpp:1282
armnn::Status
Status
Definition: Types.hpp:42
OptimizedNetworkImpl.hpp
armnn::LogicalBinaryDescriptor
A LogicalBinaryDescriptor for the LogicalBinaryLayer.
Definition: Descriptors.hpp:1497
armnn::BoostLogSeverityMapping::debug
@ debug
std
Definition: BackendId.hpp:149
ARMNN_DEPRECATED_MSG_REMOVAL_DATE
#define ARMNN_DEPRECATED_MSG_REMOVAL_DATE(message, removed_in_release)
Definition: Deprecated.hpp:44
armnn::BackendId
Definition: BackendId.hpp:75
armnn::NetworkImpl::AddL2NormalizationLayer
IConnectableLayer * AddL2NormalizationLayer(const L2NormalizationDescriptor &desc, const char *name=nullptr)
Definition: Network.cpp:2372
armnn::NetworkImpl::AddActivationLayer
IConnectableLayer * AddActivationLayer(const ActivationDescriptor &activationDescriptor, const char *name=nullptr)
Definition: Network.cpp:2267
armnn::OriginsDescriptor
An OriginsDescriptor for the ConcatLayer.
Definition: Descriptors.hpp:201
armnn::BackendsMap
std::map< BackendId, std::unique_ptr< class IBackendInternal > > BackendsMap
Definition: Network.hpp:276
armnn::NetworkImpl::AddPooling3dLayer
IConnectableLayer * AddPooling3dLayer(const Pooling3dDescriptor &pooling3dDescriptor, const char *name=nullptr)
Definition: Network.cpp:2261
armnn
Copyright (c) 2021 ARM Limited and Contributors.
Definition: 01_00_quick_start.dox:6
armnn::ElementwiseUnaryDescriptor
A ElementwiseUnaryDescriptor for the ElementwiseUnaryLayer.
Definition: Descriptors.hpp:129
armnn::TransposeConvolution2dDescriptor
A TransposeConvolution2dDescriptor for the TransposeConvolution2dLayer.
Definition: Descriptors.hpp:1419
Types.hpp
Layer.hpp
armnn::NetworkImpl::AddPooling2dLayer
IConnectableLayer * AddPooling2dLayer(const Pooling2dDescriptor &pooling2dDescriptor, const char *name=nullptr)
Definition: Network.cpp:2255
QuantizedLstmParams.hpp
armnn::BoostLogSeverityMapping::warning
@ warning
armnn::ConstTensor
A tensor defined by a TensorInfo (shape and data type) and an immutable backing store.
Definition: Tensor.hpp:327
armnn::IConnectableLayer
Interface for a layer that is connectable to other layers via InputSlots and OutputSlots.
Definition: INetwork.hpp:80
armnn::NetworkImpl::AddMultiplicationLayer
IConnectableLayer * AddMultiplicationLayer(const char *name=nullptr)
Definition: Network.cpp:2318
armnn::ModelOptions
std::vector< BackendOptions > ModelOptions
Definition: BackendOptions.hpp:18
armnn::DetectionPostProcessDescriptor
Definition: Descriptors.hpp:713
armnn::PreCompiledDescriptor
A PreCompiledDescriptor for the PreCompiledLayer.
Definition: Descriptors.hpp:1346
armnn::NetworkImpl::AddConvertFp32ToFp16Layer
IConnectableLayer * AddConvertFp32ToFp16Layer(const char *name=nullptr)
Definition: Network.cpp:2215
armnn::NetworkImpl::AddInstanceNormalizationLayer
IConnectableLayer * AddInstanceNormalizationLayer(const InstanceNormalizationDescriptor &desc, const char *name=nullptr)
Definition: Network.cpp:2366
armnn::NetworkImpl::NetworkImpl
NetworkImpl(const NetworkOptions &networkOptions={})
Definition: Network.cpp:2132
armnn::NetworkImpl::AddConvolution3dLayer
IConnectableLayer * AddConvolution3dLayer(const Convolution3dDescriptor &convolution3dDescriptor, const char *name=nullptr)
Definition: Network.cpp:2220
armnn::Pooling2dDescriptor
A Pooling2dDescriptor for the Pooling2dLayer.
Definition: Descriptors.hpp:371
armnn::NetworkImpl::AddChannelShuffleLayer
IConnectableLayer * AddChannelShuffleLayer(const ChannelShuffleDescriptor &channelShuffleDescriptor, const char *name=nullptr)
Definition: Network.cpp:2162
armnn::DepthwiseConvolution2dDescriptor
A DepthwiseConvolution2dDescriptor for the DepthwiseConvolution2dLayer.
Definition: Descriptors.hpp:659
armnn::ShapeInferenceMethod
ShapeInferenceMethod
The ShapeInferenceMethod modify how the output shapes are treated.
Definition: Types.hpp:234
armnn::ReduceDescriptor
A ReduceDescriptor for the REDUCE operators.
Definition: Descriptors.hpp:1517
armnn::NetworkImpl::AddSpaceToBatchNdLayer
IConnectableLayer * AddSpaceToBatchNdLayer(const SpaceToBatchNdDescriptor &spaceToBatchNdDescriptor, const char *name=nullptr)
Definition: Network.cpp:2399
armnn::NetworkImpl::AddSliceLayer
IConnectableLayer * AddSliceLayer(const SliceDescriptor &sliceDescriptor, const char *name=nullptr)
Definition: Network.cpp:2286
armnn::OptimizerOptionsOpaqueImpl
Definition: Network.hpp:301
armnn::LstmInputParams
Definition: LstmParams.hpp:13
armnn::MeanDescriptor
A MeanDescriptor for the MeanLayer.
Definition: Descriptors.hpp:1151
armnn::QuantizedLstmInputParams
Definition: QuantizedLstmParams.hpp:13
armnn::CompiledBlobPtr
std::unique_ptr< void, CompiledBlobDeleter > CompiledBlobPtr
Definition: INetwork.hpp:343
armnn::Graph
Definition: Graph.hpp:30
armnn::NetworkImpl::AddGatherLayer
IConnectableLayer * AddGatherLayer(const GatherDescriptor &gatherDescriptor, const char *name=nullptr)
Definition: Network.cpp:2593
armnn::NetworkImpl::AddPrecompiledLayer
IConnectableLayer * AddPrecompiledLayer(const PreCompiledDescriptor &preCompiledDescriptor, CompiledBlobPtr compiledBlobPtr, const Optional< BackendId > &backend, const char *name=nullptr)
Definition: Network.cpp:3003
armnn::OptimizerOptionsOpaqueImpl::m_ModelOptions
ModelOptions m_ModelOptions
Enable Model Options.
Definition: Network.hpp:378
armnn::TileDescriptor
Definition: Descriptors.hpp:1619
armnn::NetworkImpl::AddPadLayer
IConnectableLayer * AddPadLayer(const PadDescriptor &padDescriptor, const char *name=nullptr)
Definition: Network.cpp:2572
armnn::SoftmaxDescriptor
A SoftmaxDescriptor for the SoftmaxLayer.
Definition: Descriptors.hpp:177
armnn::SpaceToDepthDescriptor
A SpaceToDepthDescriptor for the SpaceToDepthLayer.
Definition: Descriptors.hpp:1054
armnn::NetworkImpl::AddMaximumLayer
IConnectableLayer * AddMaximumLayer(const char *name=nullptr)
Definition: Network.cpp:2303
armnn::NetworkImpl::AddDetectionPostProcessLayer
IConnectableLayer * AddDetectionPostProcessLayer(const DetectionPostProcessDescriptor &descriptor, const ConstTensor &anchors, const char *name=nullptr)
Definition: Network.cpp:2239