ArmNN
 25.02
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
NetworkImpl Class Reference

Private implementation of INetwork. More...

#include <Network.hpp>

Public Member Functions

 NetworkImpl (const NetworkOptions &networkOptions={})
 
 ~NetworkImpl ()
 
const GraphGetGraph () const
 
Status PrintGraph ()
 
IConnectableLayerAddInputLayer (LayerBindingId id, const char *name=nullptr)
 
IConnectableLayerAddActivationLayer (const ActivationDescriptor &activationDescriptor, const char *name=nullptr)
 
IConnectableLayerAddAdditionLayer (const char *name=nullptr)
 
IConnectableLayerAddArgMinMaxLayer (const ArgMinMaxDescriptor &desc, const char *name=nullptr)
 
IConnectableLayerAddBatchMatMulLayer (const BatchMatMulDescriptor &desc, const char *name=nullptr)
 
IConnectableLayerAddBatchNormalizationLayer (const BatchNormalizationDescriptor &desc, const ConstTensor &mean, const ConstTensor &variance, const ConstTensor &beta, const ConstTensor &gamma, const char *name=nullptr)
 
IConnectableLayerAddBatchToSpaceNdLayer (const BatchToSpaceNdDescriptor &batchToSpaceNdDescriptor, const char *name=nullptr)
 
IConnectableLayerAddBroadcastToLayer (const BroadcastToDescriptor &descriptor, const char *name=nullptr)
 
IConnectableLayerAddCastLayer (const char *name=nullptr)
 
IConnectableLayerAddChannelShuffleLayer (const ChannelShuffleDescriptor &channelShuffleDescriptor, const char *name=nullptr)
 
IConnectableLayerAddComparisonLayer (const ComparisonDescriptor &comparisonDescriptor, const char *name=nullptr)
 
IConnectableLayerAddConcatLayer (const ConcatDescriptor &concatDescriptor, const char *name=nullptr)
 
IConnectableLayerAddConvolution2dLayer (const Convolution2dDescriptor &convolution2dDescriptor, const char *name=nullptr)
 
IConnectableLayerAddConvolution3dLayer (const Convolution3dDescriptor &convolution3dDescriptor, const char *name=nullptr)
 
IConnectableLayerAddConstantLayer (const ConstTensor &input, const char *name=nullptr)
 
IConnectableLayerAddDepthToSpaceLayer (const DepthToSpaceDescriptor &depthToSpaceDescriptor, const char *name=nullptr)
 
IConnectableLayerAddDepthwiseConvolution2dLayer (const DepthwiseConvolution2dDescriptor &convolution2dDescriptor, const char *name=nullptr)
 
IConnectableLayerAddDequantizeLayer (const char *name=nullptr)
 
IConnectableLayerAddDetectionPostProcessLayer (const DetectionPostProcessDescriptor &descriptor, const ConstTensor &anchors, const char *name=nullptr)
 
IConnectableLayerAddDivisionLayer (const char *name=nullptr)
 
IConnectableLayerAddElementwiseBinaryLayer (const ElementwiseBinaryDescriptor &elementwiseBinaryDescriptor, const char *name=nullptr)
 
IConnectableLayerAddElementwiseUnaryLayer (const ElementwiseUnaryDescriptor &elementwiseUnaryDescriptor, const char *name=nullptr)
 
IConnectableLayerAddMergeLayer (const char *name=nullptr)
 
IConnectableLayerAddFillLayer (const FillDescriptor &fillDescriptor, const char *name=nullptr)
 
IConnectableLayerAddFloorLayer (const char *name=nullptr)
 
IConnectableLayerAddFullyConnectedLayer (const FullyConnectedDescriptor &fullyConnectedDescriptor, const char *name=nullptr)
 
IConnectableLayerAddFusedLayer (const FusedDescriptor &fusedDescriptor, const char *name=nullptr)
 
IConnectableLayerAddGatherLayer (const GatherDescriptor &gatherDescriptor, const char *name=nullptr)
 
IConnectableLayerAddGatherNdLayer (const char *name=nullptr)
 
IConnectableLayerAddInstanceNormalizationLayer (const InstanceNormalizationDescriptor &desc, const char *name=nullptr)
 
IConnectableLayerAddL2NormalizationLayer (const L2NormalizationDescriptor &desc, const char *name=nullptr)
 
IConnectableLayerAddLogSoftmaxLayer (const LogSoftmaxDescriptor &logSoftmaxDescriptor, const char *name=nullptr)
 
IConnectableLayerAddLogicalBinaryLayer (const LogicalBinaryDescriptor &logicalBinaryDescriptor, const char *name=nullptr)
 
IConnectableLayerAddLstmLayer (const LstmDescriptor &descriptor, const LstmInputParams &params, const char *name=nullptr)
 
IConnectableLayerAddMaximumLayer (const char *name=nullptr)
 
IConnectableLayerAddMeanLayer (const MeanDescriptor &meanDescriptor, const char *name=nullptr)
 
IConnectableLayerAddMinimumLayer (const char *name=nullptr)
 
IConnectableLayerAddMultiplicationLayer (const char *name=nullptr)
 
IConnectableLayerAddNormalizationLayer (const NormalizationDescriptor &normalizationDescriptor, const char *name=nullptr)
 
IConnectableLayerAddOutputLayer (LayerBindingId id, const char *name=nullptr)
 
IConnectableLayerAddPadLayer (const PadDescriptor &padDescriptor, const char *name=nullptr)
 
IConnectableLayerAddPermuteLayer (const PermuteDescriptor &permuteDescriptor, const char *name=nullptr)
 
IConnectableLayerAddPooling2dLayer (const Pooling2dDescriptor &pooling2dDescriptor, const char *name=nullptr)
 
IConnectableLayerAddPooling3dLayer (const Pooling3dDescriptor &pooling3dDescriptor, const char *name=nullptr)
 
IConnectableLayerAddPrecompiledLayer (const PreCompiledDescriptor &preCompiledDescriptor, CompiledBlobPtr compiledBlobPtr, const Optional< BackendId > &backend, const char *name=nullptr)
 
IConnectableLayerAddPreluLayer (const char *name=nullptr)
 
IConnectableLayerAddQuantizeLayer (const char *name=nullptr)
 
IConnectableLayerAddQLstmLayer (const QLstmDescriptor &descriptor, const LstmInputParams &params, const char *name=nullptr)
 
IConnectableLayerAddQuantizedLstmLayer (const QuantizedLstmInputParams &params, const char *name=nullptr)
 
IConnectableLayerAddRankLayer (const char *name=nullptr)
 
IConnectableLayerAddReduceLayer (const ReduceDescriptor &reduceDescriptor, const char *name=nullptr)
 
IConnectableLayerAddResizeLayer (const ResizeDescriptor &resizeDescriptor, const char *name=nullptr)
 
IConnectableLayerAddReshapeLayer (const ReshapeDescriptor &reshapeDescriptor, const char *name=nullptr)
 
IConnectableLayerAddReverseV2Layer (const char *name=nullptr)
 
IConnectableLayerAddScatterNdLayer (const ScatterNdDescriptor &scatterDescriptor, const char *name=nullptr)
 
IConnectableLayerAddShapeLayer (const char *name=nullptr)
 
IConnectableLayerAddSliceLayer (const SliceDescriptor &sliceDescriptor, const char *name=nullptr)
 
IConnectableLayerAddSoftmaxLayer (const SoftmaxDescriptor &softmaxDescriptor, const char *name=nullptr)
 
IConnectableLayerAddSplitterLayer (const ViewsDescriptor &splitterDescriptor, const char *name=nullptr)
 
IConnectableLayerAddSpaceToBatchNdLayer (const SpaceToBatchNdDescriptor &spaceToBatchNdDescriptor, const char *name=nullptr)
 
IConnectableLayerAddSpaceToDepthLayer (const SpaceToDepthDescriptor &spaceToDepthDescriptor, const char *name=nullptr)
 
IConnectableLayerAddStackLayer (const StackDescriptor &stackDescriptor, const char *name=nullptr)
 
IConnectableLayerAddStandInLayer (const StandInDescriptor &descriptor, const char *name=nullptr)
 
IConnectableLayerAddStridedSliceLayer (const StridedSliceDescriptor &stridedSliceDescriptor, const char *name=nullptr)
 
IConnectableLayerAddSubtractionLayer (const char *name=nullptr)
 
IConnectableLayerAddSwitchLayer (const char *name=nullptr)
 
IConnectableLayerAddTileLayer (const TileDescriptor &tileDescriptor, const char *name=nullptr)
 
IConnectableLayerAddTransposeConvolution2dLayer (const TransposeConvolution2dDescriptor &descriptor, const ConstTensor &weights, const Optional< ConstTensor > &biases, const char *name=nullptr)
 
IConnectableLayerAddTransposeLayer (const TransposeDescriptor &transposeDescriptor, const char *name=nullptr)
 
IConnectableLayerAddUnidirectionalSequenceLstmLayer (const UnidirectionalSequenceLstmDescriptor &descriptor, const LstmInputParams &params, const char *name=nullptr)
 
IConnectableLayerAddConvertFp16ToFp32Layer (const char *name=nullptr)
 
IConnectableLayerAddConvertFp32ToFp16Layer (const char *name=nullptr)
 
void ExecuteStrategy (IStrategy &strategy) const
 

Detailed Description

Private implementation of INetwork.

Definition at line 32 of file Network.hpp.

Constructor & Destructor Documentation

◆ NetworkImpl()

NetworkImpl ( const NetworkOptions networkOptions = {})

Definition at line 2327 of file Network.cpp.

2328 : m_NetworkOptions(networkOptions),
2329  m_Graph(std::make_unique<Graph>(GetShapeInferenceMethod(), GetAllowExpandedDims()))
2330 {}

◆ ~NetworkImpl()

Definition at line 2332 of file Network.cpp.

2333 {
2334 }

Member Function Documentation

◆ AddActivationLayer()

IConnectableLayer * AddActivationLayer ( const ActivationDescriptor activationDescriptor,
const char *  name = nullptr 
)

Definition at line 2468 of file Network.cpp.

2470 {
2471  return m_Graph->AddLayer<ActivationLayer>(activationDescriptor, name);
2472 }

◆ AddAdditionLayer()

IConnectableLayer * AddAdditionLayer ( const char *  name = nullptr)

Definition at line 2514 of file Network.cpp.

2515 {
2516  return m_Graph->AddLayer<AdditionLayer>(name);
2517 }

◆ AddArgMinMaxLayer()

IConnectableLayer * AddArgMinMaxLayer ( const ArgMinMaxDescriptor desc,
const char *  name = nullptr 
)

Definition at line 2474 of file Network.cpp.

2476 {
2477  return m_Graph->AddLayer<ArgMinMaxLayer>(argMinMaxDescriptor, name);
2478 }

◆ AddBatchMatMulLayer()

IConnectableLayer * AddBatchMatMulLayer ( const BatchMatMulDescriptor desc,
const char *  name = nullptr 
)

Definition at line 3189 of file Network.cpp.

3190 {
3191  return m_Graph->AddLayer<BatchMatMulLayer>(desc, name);
3192 }

◆ AddBatchNormalizationLayer()

IConnectableLayer * AddBatchNormalizationLayer ( const BatchNormalizationDescriptor desc,
const ConstTensor mean,
const ConstTensor variance,
const ConstTensor beta,
const ConstTensor gamma,
const char *  name = nullptr 
)

Definition at line 2529 of file Network.cpp.

2535 {
2536  const auto layer = m_Graph->AddLayer<BatchNormalizationLayer>(desc, name);
2537 
2538  layer->m_Mean = std::make_shared<ScopedTensorHandle>(mean);
2539  layer->m_Variance = std::make_shared<ScopedTensorHandle>(variance);
2540  layer->m_Beta = std::make_shared<ScopedTensorHandle>(beta);
2541  layer->m_Gamma = std::make_shared<ScopedTensorHandle>(gamma);
2542 
2543  return layer;
2544 }

References BatchNormalizationLayer::m_Mean.

◆ AddBatchToSpaceNdLayer()

IConnectableLayer * AddBatchToSpaceNdLayer ( const BatchToSpaceNdDescriptor batchToSpaceNdDescriptor,
const char *  name = nullptr 
)

Definition at line 2347 of file Network.cpp.

2349 {
2350  return m_Graph->AddLayer<BatchToSpaceNdLayer>(batchToSpaceNdDescriptor, name);
2351 }

◆ AddBroadcastToLayer()

IConnectableLayer * AddBroadcastToLayer ( const BroadcastToDescriptor descriptor,
const char *  name = nullptr 
)

Definition at line 3237 of file Network.cpp.

3238 {
3239  return m_Graph->AddLayer<BroadcastToLayer>(desc, name);
3240 }

◆ AddCastLayer()

IConnectableLayer * AddCastLayer ( const char *  name = nullptr)

Definition at line 2353 of file Network.cpp.

2354 {
2355  return m_Graph->AddLayer<CastLayer>(name);
2356 }

◆ AddChannelShuffleLayer()

IConnectableLayer * AddChannelShuffleLayer ( const ChannelShuffleDescriptor channelShuffleDescriptor,
const char *  name = nullptr 
)

Definition at line 2357 of file Network.cpp.

2359 {
2360  return m_Graph->AddLayer<ChannelShuffleLayer>(channelShuffleDescriptor, name);
2361 }

◆ AddComparisonLayer()

IConnectableLayer * AddComparisonLayer ( const ComparisonDescriptor comparisonDescriptor,
const char *  name = nullptr 
)

Definition at line 2363 of file Network.cpp.

2365 {
2366  return m_Graph->AddLayer<ComparisonLayer>(comparisonDescriptor, name);
2367 }

◆ AddConcatLayer()

IConnectableLayer * AddConcatLayer ( const ConcatDescriptor concatDescriptor,
const char *  name = nullptr 
)

Definition at line 2399 of file Network.cpp.

2401 {
2402  return m_Graph->AddLayer<ConcatLayer>(concatDescriptor, name);
2403 }

◆ AddConstantLayer()

IConnectableLayer * AddConstantLayer ( const ConstTensor input,
const char *  name = nullptr 
)

Definition at line 2585 of file Network.cpp.

2586 {
2587  auto layer = m_Graph->AddLayer<ConstantLayer>(name);
2588 
2589  layer->m_LayerOutput = std::make_shared<ScopedTensorHandle>(input);
2590 
2591  return layer;
2592 }

References ConstantLayer::m_LayerOutput.

◆ AddConvertFp16ToFp32Layer()

IConnectableLayer * AddConvertFp16ToFp32Layer ( const char *  name = nullptr)

Definition at line 2411 of file Network.cpp.

2412 {
2413  return m_Graph->AddLayer<ConvertFp16ToFp32Layer>(name);
2414 }

◆ AddConvertFp32ToFp16Layer()

IConnectableLayer * AddConvertFp32ToFp16Layer ( const char *  name = nullptr)

Definition at line 2416 of file Network.cpp.

2417 {
2418  return m_Graph->AddLayer<ConvertFp32ToFp16Layer>(name);
2419 }

◆ AddConvolution2dLayer()

IConnectableLayer * AddConvolution2dLayer ( const Convolution2dDescriptor convolution2dDescriptor,
const char *  name = nullptr 
)

Definition at line 2405 of file Network.cpp.

2407 {
2408  return m_Graph->AddLayer<Convolution2dLayer>(convolution2dDescriptor, name);
2409 }

◆ AddConvolution3dLayer()

IConnectableLayer * AddConvolution3dLayer ( const Convolution3dDescriptor convolution3dDescriptor,
const char *  name = nullptr 
)

Definition at line 2421 of file Network.cpp.

2423 {
2424  return m_Graph->AddLayer<Convolution3dLayer>(convolution3dDescriptor, name);
2425 }

◆ AddDepthToSpaceLayer()

IConnectableLayer * AddDepthToSpaceLayer ( const DepthToSpaceDescriptor depthToSpaceDescriptor,
const char *  name = nullptr 
)

Definition at line 2427 of file Network.cpp.

2429 {
2430  return m_Graph->AddLayer<DepthToSpaceLayer>(depthToSpaceDescriptor, name);
2431 }

◆ AddDepthwiseConvolution2dLayer()

IConnectableLayer * AddDepthwiseConvolution2dLayer ( const DepthwiseConvolution2dDescriptor convolution2dDescriptor,
const char *  name = nullptr 
)

Definition at line 2433 of file Network.cpp.

2436 {
2437  return m_Graph->AddLayer<DepthwiseConvolution2dLayer>(convolution2dDescriptor, name);
2438 }

◆ AddDequantizeLayer()

IConnectableLayer * AddDequantizeLayer ( const char *  name = nullptr)

Definition at line 2783 of file Network.cpp.

2784 {
2785  return m_Graph->AddLayer<DequantizeLayer>(name);
2786 }

◆ AddDetectionPostProcessLayer()

IConnectableLayer * AddDetectionPostProcessLayer ( const DetectionPostProcessDescriptor descriptor,
const ConstTensor anchors,
const char *  name = nullptr 
)

Definition at line 2440 of file Network.cpp.

2442 {
2443  const auto layer = m_Graph->AddLayer<DetectionPostProcessLayer>(descriptor, name);
2444 
2445  layer->m_Anchors = std::make_shared<ScopedTensorHandle>(anchors);
2446 
2447  return layer;
2448 }

References DetectionPostProcessLayer::m_Anchors.

◆ AddDivisionLayer()

IConnectableLayer * AddDivisionLayer ( const char *  name = nullptr)

Definition at line 2758 of file Network.cpp.

2759 {
2760  return m_Graph->AddLayer<DivisionLayer>(name);
2761 }

◆ AddElementwiseBinaryLayer()

IConnectableLayer * AddElementwiseBinaryLayer ( const ElementwiseBinaryDescriptor elementwiseBinaryDescriptor,
const char *  name = nullptr 
)

Definition at line 2369 of file Network.cpp.

2371 {
2372  return m_Graph->AddLayer<ElementwiseBinaryLayer>(elementwiseBinaryDesc, name);
2373 }

◆ AddElementwiseUnaryLayer()

IConnectableLayer * AddElementwiseUnaryLayer ( const ElementwiseUnaryDescriptor elementwiseUnaryDescriptor,
const char *  name = nullptr 
)

Definition at line 2375 of file Network.cpp.

2377 {
2378  return m_Graph->AddLayer<ElementwiseUnaryLayer>(elementwiseUnaryDescriptor, name);
2379 }

◆ AddFillLayer()

IConnectableLayer * AddFillLayer ( const FillDescriptor fillDescriptor,
const char *  name = nullptr 
)

Definition at line 2381 of file Network.cpp.

2383 {
2384  return m_Graph->AddLayer<FillLayer>(fillDescriptor, name);
2385 }

◆ AddFloorLayer()

IConnectableLayer * AddFloorLayer ( const char *  name = nullptr)

Definition at line 2612 of file Network.cpp.

2613 {
2614  return m_Graph->AddLayer<FloorLayer>(name);
2615 }

◆ AddFullyConnectedLayer()

IConnectableLayer * AddFullyConnectedLayer ( const FullyConnectedDescriptor fullyConnectedDescriptor,
const char *  name = nullptr 
)

Definition at line 2387 of file Network.cpp.

2389 {
2390  return m_Graph->AddLayer<FullyConnectedLayer>(fullyConnectedDescriptor, name);
2391 }

◆ AddFusedLayer()

IConnectableLayer * AddFusedLayer ( const FusedDescriptor fusedDescriptor,
const char *  name = nullptr 
)

Definition at line 2393 of file Network.cpp.

2395 {
2396  return m_Graph->AddLayer<FusedLayer>(fusedDescriptor, name);
2397 }

◆ AddGatherLayer()

IConnectableLayer * AddGatherLayer ( const GatherDescriptor gatherDescriptor,
const char *  name = nullptr 
)

Definition at line 2794 of file Network.cpp.

2796 {
2797  return m_Graph->AddLayer<GatherLayer>(gatherDescriptor, name);
2798 }

◆ AddGatherNdLayer()

IConnectableLayer * AddGatherNdLayer ( const char *  name = nullptr)

Definition at line 2800 of file Network.cpp.

2801 {
2802  return m_Graph->AddLayer<GatherNdLayer>(name);
2803 }

◆ AddInputLayer()

IConnectableLayer * AddInputLayer ( LayerBindingId  id,
const char *  name = nullptr 
)

Definition at line 2342 of file Network.cpp.

2343 {
2344  return m_Graph->AddLayer<InputLayer>(id, name);
2345 }

◆ AddInstanceNormalizationLayer()

IConnectableLayer * AddInstanceNormalizationLayer ( const InstanceNormalizationDescriptor desc,
const char *  name = nullptr 
)

Definition at line 2567 of file Network.cpp.

2569 {
2570  return m_Graph->AddLayer<InstanceNormalizationLayer>(desc, name);
2571 }

◆ AddL2NormalizationLayer()

IConnectableLayer * AddL2NormalizationLayer ( const L2NormalizationDescriptor desc,
const char *  name = nullptr 
)

Definition at line 2573 of file Network.cpp.

2575 {
2576  return m_Graph->AddLayer<L2NormalizationLayer>(desc, name);
2577 }

◆ AddLogicalBinaryLayer()

IConnectableLayer * AddLogicalBinaryLayer ( const LogicalBinaryDescriptor logicalBinaryDescriptor,
const char *  name = nullptr 
)

Definition at line 3041 of file Network.cpp.

3043 {
3044  return m_Graph->AddLayer<LogicalBinaryLayer>(logicalBinaryDescriptor, name);
3045 }

◆ AddLogSoftmaxLayer()

IConnectableLayer * AddLogSoftmaxLayer ( const LogSoftmaxDescriptor logSoftmaxDescriptor,
const char *  name = nullptr 
)

Definition at line 2579 of file Network.cpp.

2581 {
2582  return m_Graph->AddLayer<LogSoftmaxLayer>(desc, name);
2583 }

◆ AddLstmLayer()

IConnectableLayer * AddLstmLayer ( const LstmDescriptor descriptor,
const LstmInputParams params,
const char *  name = nullptr 
)

Definition at line 2617 of file Network.cpp.

2620 {
2621  const auto layer = m_Graph->AddLayer<LstmLayer>(descriptor, name);
2622 
2623  //Lstm Basic Parameters
2624  layer->m_BasicParameters.m_InputToForgetWeights =
2625  std::make_shared<ScopedTensorHandle>(*(params.m_InputToForgetWeights));
2626  layer->m_BasicParameters.m_InputToCellWeights =
2627  std::make_shared<ScopedTensorHandle>(*(params.m_InputToCellWeights));
2628  layer->m_BasicParameters.m_InputToOutputWeights =
2629  std::make_shared<ScopedTensorHandle>(*(params.m_InputToOutputWeights));
2630  layer->m_BasicParameters.m_RecurrentToForgetWeights =
2631  std::make_shared<ScopedTensorHandle>(*(params.m_RecurrentToForgetWeights));
2632  layer->m_BasicParameters.m_RecurrentToCellWeights =
2633  std::make_shared<ScopedTensorHandle>(*(params.m_RecurrentToCellWeights));
2634  layer->m_BasicParameters.m_RecurrentToOutputWeights =
2635  std::make_shared<ScopedTensorHandle>(*(params.m_RecurrentToOutputWeights));
2636  layer->m_BasicParameters.m_ForgetGateBias =
2637  std::make_shared<ScopedTensorHandle>(*(params.m_ForgetGateBias));
2638  layer->m_BasicParameters.m_CellBias =
2639  std::make_shared<ScopedTensorHandle>(*(params.m_CellBias));
2640  layer->m_BasicParameters.m_OutputGateBias =
2641  std::make_shared<ScopedTensorHandle>(*(params.m_OutputGateBias));
2642 
2643  //Lstm Cifg parameters
2644  if(!descriptor.m_CifgEnabled)
2645  {
2646  if(params.m_InputToInputWeights == nullptr)
2647  {
2648  throw InvalidArgumentException("AddLstmLayer: Input To Input Weights cannot be NULL "
2649  "when CIFG is disabled.");
2650  }
2651  if(params.m_RecurrentToInputWeights == nullptr)
2652  {
2653  throw InvalidArgumentException(
2654  "AddLstmLayer: Recurrent To Input Weights cannot be NULL "
2655  "when CIFG is disabled.");
2656  }
2657  if(params.m_InputGateBias == nullptr)
2658  {
2659  throw InvalidArgumentException("AddLstmLayer: Input Gate Bias cannot be NULL "
2660  "when CIFG is disabled.");
2661  }
2662  layer->m_CifgParameters.m_InputToInputWeights =
2663  std::make_shared<ScopedTensorHandle>(*(params.m_InputToInputWeights));
2664  layer->m_CifgParameters.m_RecurrentToInputWeights =
2665  std::make_shared<ScopedTensorHandle>(*(params.m_RecurrentToInputWeights));
2666  layer->m_CifgParameters.m_InputGateBias =
2667  std::make_shared<ScopedTensorHandle>(*(params.m_InputGateBias));
2668  }
2669 
2670  //Lstm projection parameters
2671  if(descriptor.m_ProjectionEnabled)
2672  {
2673  if(params.m_ProjectionWeights == nullptr)
2674  {
2675  throw InvalidArgumentException("AddLstmLayer: Projection Weights cannot be NULL "
2676  "when projection is enabled.");
2677  }
2678  layer->m_ProjectionParameters.m_ProjectionWeights =
2679  std::make_shared<ScopedTensorHandle>(*(params.m_ProjectionWeights));
2680  if(params.m_ProjectionBias != nullptr)
2681  {
2682  layer->m_ProjectionParameters.m_ProjectionBias =
2683  std::make_shared<ScopedTensorHandle>(*(params.m_ProjectionBias));
2684  }
2685  }
2686 
2687  //Lstm Peephole params
2688  if(descriptor.m_PeepholeEnabled)
2689  {
2690  if(!descriptor.m_CifgEnabled)
2691  {
2692  if(params.m_CellToInputWeights == nullptr)
2693  {
2694  throw InvalidArgumentException("AddLstmLayer: Cell To Input Weights cannot be NULL "
2695  "when Peephole is enabled and CIFG disabled.");
2696  }
2697 
2698  layer->m_PeepholeParameters.m_CellToInputWeights =
2699  std::make_shared<ScopedTensorHandle>(*(params.m_CellToInputWeights));
2700  }
2701 
2702  if(params.m_CellToForgetWeights == nullptr)
2703  {
2704  throw InvalidArgumentException("AddLstmLayer: Cell To Forget Weights cannot be NULL "
2705  "when Peephole is enabled.");
2706  }
2707  if(params.m_CellToOutputWeights == nullptr)
2708  {
2709  throw InvalidArgumentException("AddLstmLayer: Cell To Output Weights cannot be NULL "
2710  "when Peephole is enabled.");
2711  }
2712 
2713  layer->m_PeepholeParameters.m_CellToForgetWeights =
2714  std::make_shared<ScopedTensorHandle>(*(params.m_CellToForgetWeights));
2715  layer->m_PeepholeParameters.m_CellToOutputWeights =
2716  std::make_shared<ScopedTensorHandle>(*(params.m_CellToOutputWeights));
2717  }
2718 
2719  //Lstm Layer Normalization params
2720  if(descriptor.m_LayerNormEnabled)
2721  {
2722  if(!descriptor.m_CifgEnabled)
2723  {
2724  if(params.m_InputLayerNormWeights == nullptr)
2725  {
2726  throw InvalidArgumentException("AddLstmLayer: Input layer normalization weights cannot be NULL "
2727  "when layer normalization is enabled and CIFG disabled.");
2728  }
2729  layer->m_LayerNormParameters.m_InputLayerNormWeights =
2730  std::make_shared<ScopedTensorHandle>(*(params.m_InputLayerNormWeights));
2731  }
2732 
2733  if(params.m_ForgetLayerNormWeights == nullptr)
2734  {
2735  throw InvalidArgumentException("AddLstmLayer: Forget layer normalization weights cannot be NULL "
2736  "when layer normalization is enabled.");
2737  }
2738  if(params.m_CellLayerNormWeights == nullptr)
2739  {
2740  throw InvalidArgumentException("AddLstmLayer: Cell layer normalization weights cannot be NULL "
2741  "when layer normalization is enabled.");
2742  }
2743  if(params.m_OutputLayerNormWeights == nullptr)
2744  {
2745  throw InvalidArgumentException("AddLstmLayer: Output layer normalization weights cannot be NULL "
2746  "when layer normalization is enabled.");
2747  }
2748  layer->m_LayerNormParameters.m_ForgetLayerNormWeights =
2749  std::make_shared<ScopedTensorHandle>(*(params.m_ForgetLayerNormWeights));
2750  layer->m_LayerNormParameters.m_CellLayerNormWeights =
2751  std::make_shared<ScopedTensorHandle>(*(params.m_CellLayerNormWeights));
2752  layer->m_LayerNormParameters.m_OutputLayerNormWeights =
2753  std::make_shared<ScopedTensorHandle>(*(params.m_OutputLayerNormWeights));
2754  }
2755  return layer;
2756 }

References LstmLayer::m_BasicParameters, LstmInputParams::m_CellBias, LstmInputParams::m_CellLayerNormWeights, LstmInputParams::m_CellToForgetWeights, LstmInputParams::m_CellToInputWeights, LstmInputParams::m_CellToOutputWeights, LstmDescriptor::m_CifgEnabled, LstmInputParams::m_ForgetGateBias, LstmInputParams::m_ForgetLayerNormWeights, LstmInputParams::m_InputGateBias, LstmInputParams::m_InputLayerNormWeights, LstmInputParams::m_InputToCellWeights, LstmInputParams::m_InputToForgetWeights, LstmBasicParameters::m_InputToForgetWeights, LstmInputParams::m_InputToInputWeights, LstmInputParams::m_InputToOutputWeights, LstmDescriptor::m_LayerNormEnabled, LstmInputParams::m_OutputGateBias, LstmInputParams::m_OutputLayerNormWeights, LstmDescriptor::m_PeepholeEnabled, LstmInputParams::m_ProjectionBias, LstmDescriptor::m_ProjectionEnabled, LstmInputParams::m_ProjectionWeights, LstmInputParams::m_RecurrentToCellWeights, LstmInputParams::m_RecurrentToForgetWeights, LstmInputParams::m_RecurrentToInputWeights, and LstmInputParams::m_RecurrentToOutputWeights.

◆ AddMaximumLayer()

IConnectableLayer * AddMaximumLayer ( const char *  name = nullptr)

Definition at line 2504 of file Network.cpp.

2505 {
2506  return m_Graph->AddLayer<MaximumLayer>(name);
2507 }

◆ AddMeanLayer()

IConnectableLayer * AddMeanLayer ( const MeanDescriptor meanDescriptor,
const char *  name = nullptr 
)

Definition at line 2768 of file Network.cpp.

2769 {
2770  return m_Graph->AddLayer<MeanLayer>(meanDescriptor,name);
2771 }

◆ AddMergeLayer()

IConnectableLayer * AddMergeLayer ( const char *  name = nullptr)

Definition at line 2805 of file Network.cpp.

2806 {
2807  return m_Graph->AddLayer<MergeLayer>(name);
2808 }

◆ AddMinimumLayer()

IConnectableLayer * AddMinimumLayer ( const char *  name = nullptr)

Definition at line 2509 of file Network.cpp.

2510 {
2511  return m_Graph->AddLayer<MinimumLayer>(name);
2512 }

◆ AddMultiplicationLayer()

IConnectableLayer * AddMultiplicationLayer ( const char *  name = nullptr)

Definition at line 2519 of file Network.cpp.

2520 {
2521  return m_Graph->AddLayer<MultiplicationLayer>(name);
2522 }

◆ AddNormalizationLayer()

IConnectableLayer * AddNormalizationLayer ( const NormalizationDescriptor normalizationDescriptor,
const char *  name = nullptr 
)

Definition at line 2480 of file Network.cpp.

2483 {
2484  return m_Graph->AddLayer<NormalizationLayer>(normalizationDescriptor, name);
2485 }

◆ AddOutputLayer()

IConnectableLayer * AddOutputLayer ( LayerBindingId  id,
const char *  name = nullptr 
)

Definition at line 2524 of file Network.cpp.

2525 {
2526  return m_Graph->AddLayer<OutputLayer>(id, name);
2527 }

◆ AddPadLayer()

IConnectableLayer * AddPadLayer ( const PadDescriptor padDescriptor,
const char *  name = nullptr 
)

Definition at line 2773 of file Network.cpp.

2774 {
2775  return m_Graph->AddLayer<PadLayer>(padDescriptor,name);
2776 }

◆ AddPermuteLayer()

IConnectableLayer * AddPermuteLayer ( const PermuteDescriptor permuteDescriptor,
const char *  name = nullptr 
)

Definition at line 2450 of file Network.cpp.

2452 {
2453  return m_Graph->AddLayer<PermuteLayer>(permuteDescriptor, name);
2454 }

◆ AddPooling2dLayer()

IConnectableLayer * AddPooling2dLayer ( const Pooling2dDescriptor pooling2dDescriptor,
const char *  name = nullptr 
)

Definition at line 2456 of file Network.cpp.

2458 {
2459  return m_Graph->AddLayer<Pooling2dLayer>(pooling2dDescriptor, name);
2460 }

◆ AddPooling3dLayer()

IConnectableLayer * AddPooling3dLayer ( const Pooling3dDescriptor pooling3dDescriptor,
const char *  name = nullptr 
)

Definition at line 2462 of file Network.cpp.

2464 {
2465  return m_Graph->AddLayer<Pooling3dLayer>(pooling3dDescriptor, name);
2466 }

◆ AddPrecompiledLayer()

IConnectableLayer * AddPrecompiledLayer ( const PreCompiledDescriptor preCompiledDescriptor,
CompiledBlobPtr  compiledBlobPtr,
const Optional< BackendId > &  backend,
const char *  name = nullptr 
)

Definition at line 3204 of file Network.cpp.

3208 {
3209  // Method use is for backend users.
3210  PreCompiledLayer* layer;
3211  if (name)
3212  {
3213  layer = m_Graph->AddLayer<PreCompiledLayer>(preCompiledDescriptor, name);
3214  }
3215  else
3216  {
3217  layer = m_Graph->AddLayer<PreCompiledLayer>(preCompiledDescriptor, "pre-compiled");
3218  }
3219 
3220  // Assign the pre-compiled object to layer
3221  // Pass only one compiled network, Arm NN does not handle multiple
3222  // pre-compiled objects in a single pre-compiled layer currently
3223  layer->SetPreCompiledObject(std::move(compiledBlobPtr));
3224 
3225  if (backend.has_value())
3226  {
3227  layer->SetBackendId(backend.value());
3228  }
3229  else if (layer->GetBackendHint().has_value())
3230  {
3231  layer->SetBackendId(layer->GetBackendHint().value());
3232  }
3233 
3234  return layer;
3235 }

References Layer::GetBackendHint(), OptionalBase::has_value(), Layer::SetBackendId(), PreCompiledLayer::SetPreCompiledObject(), and OptionalReferenceSwitch< IsReference, T >::value().

◆ AddPreluLayer()

IConnectableLayer * AddPreluLayer ( const char *  name = nullptr)

Definition at line 2815 of file Network.cpp.

2816 {
2817  return m_Graph->AddLayer<PreluLayer>(name);
2818 }

◆ AddQLstmLayer()

IConnectableLayer * AddQLstmLayer ( const QLstmDescriptor descriptor,
const LstmInputParams params,
const char *  name = nullptr 
)

Definition at line 2899 of file Network.cpp.

2902 {
2903  const auto layer = m_Graph->AddLayer<QLstmLayer>(descriptor, name);
2904 
2905  // QLstm Basic Parameters
2906  layer->m_BasicParameters.m_InputToForgetWeights =
2907  std::make_shared<ScopedTensorHandle>(*(params.m_InputToForgetWeights));
2908  layer->m_BasicParameters.m_InputToCellWeights =
2909  std::make_shared<ScopedTensorHandle>(*(params.m_InputToCellWeights));
2910  layer->m_BasicParameters.m_InputToOutputWeights =
2911  std::make_shared<ScopedTensorHandle>(*(params.m_InputToOutputWeights));
2912  layer->m_BasicParameters.m_RecurrentToForgetWeights =
2913  std::make_shared<ScopedTensorHandle>(*(params.m_RecurrentToForgetWeights));
2914  layer->m_BasicParameters.m_RecurrentToCellWeights =
2915  std::make_shared<ScopedTensorHandle>(*(params.m_RecurrentToCellWeights));
2916  layer->m_BasicParameters.m_RecurrentToOutputWeights =
2917  std::make_shared<ScopedTensorHandle>(*(params.m_RecurrentToOutputWeights));
2918  layer->m_BasicParameters.m_ForgetGateBias =
2919  std::make_shared<ScopedTensorHandle>(*(params.m_ForgetGateBias));
2920  layer->m_BasicParameters.m_CellBias =
2921  std::make_shared<ScopedTensorHandle>(*(params.m_CellBias));
2922  layer->m_BasicParameters.m_OutputGateBias =
2923  std::make_shared<ScopedTensorHandle>(*(params.m_OutputGateBias));
2924 
2925  // QLstm Cifg parameters
2926  if(!descriptor.m_CifgEnabled)
2927  {
2928  if(params.m_InputToInputWeights == nullptr)
2929  {
2930  throw InvalidArgumentException("AddQLstmLayer: Input To Input Weights cannot be NULL");
2931  }
2932 
2933  if(params.m_RecurrentToInputWeights == nullptr)
2934  {
2935  throw InvalidArgumentException(
2936  "AddQLstmLayer: Recurrent To Input Weights cannot be NULL");
2937  }
2938 
2939  if(params.m_InputGateBias == nullptr)
2940  {
2941  throw InvalidArgumentException("AddQLstmLayer: Input Gate Bias cannot be NULL");
2942  }
2943 
2944  layer->m_CifgParameters.m_InputToInputWeights =
2945  std::make_shared<ScopedTensorHandle>(*(params.m_InputToInputWeights));
2946  layer->m_CifgParameters.m_RecurrentToInputWeights =
2947  std::make_shared<ScopedTensorHandle>(*(params.m_RecurrentToInputWeights));
2948  layer->m_CifgParameters.m_InputGateBias =
2949  std::make_shared<ScopedTensorHandle>(*(params.m_InputGateBias));
2950  }
2951 
2952  // QLstm Projection parameters
2953  if(descriptor.m_ProjectionEnabled)
2954  {
2955  if(params.m_ProjectionWeights == nullptr)
2956  {
2957  throw InvalidArgumentException("AddQLstmLayer: Projection Weights cannot be NULL");
2958  }
2959 
2960  layer->m_ProjectionParameters.m_ProjectionWeights =
2961  std::make_shared<ScopedTensorHandle>(*(params.m_ProjectionWeights));
2962 
2963  // Projection bias is optional even if projection is enabled
2964  if(params.m_ProjectionBias != nullptr)
2965  {
2966  layer->m_ProjectionParameters.m_ProjectionBias =
2967  std::make_shared<ScopedTensorHandle>(*(params.m_ProjectionBias));
2968  }
2969 
2970  }
2971 
2972  // QLstm Peephole params
2973  if(descriptor.m_PeepholeEnabled)
2974  {
2975  if(params.m_CellToForgetWeights == nullptr)
2976  {
2977  throw InvalidArgumentException("AddQLstmLayer: Cell To Forget Weights cannot be NULL");
2978  }
2979 
2980  if(params.m_CellToOutputWeights == nullptr)
2981  {
2982  throw InvalidArgumentException("AddQLstmLayer: Cell To Output Weights cannot be NULL");
2983  }
2984 
2985  if(!descriptor.m_CifgEnabled)
2986  {
2987  if(params.m_CellToInputWeights == nullptr)
2988  {
2989  throw InvalidArgumentException("AddQLstmLayer: Cell To Input Weights cannot be NULL");
2990  }
2991 
2992  layer->m_PeepholeParameters.m_CellToInputWeights =
2993  std::make_shared<ScopedTensorHandle>(*(params.m_CellToInputWeights));
2994  }
2995 
2996  layer->m_PeepholeParameters.m_CellToForgetWeights =
2997  std::make_shared<ScopedTensorHandle>(*(params.m_CellToForgetWeights));
2998  layer->m_PeepholeParameters.m_CellToOutputWeights =
2999  std::make_shared<ScopedTensorHandle>(*(params.m_CellToOutputWeights));
3000  }
3001 
3002  // QLstm Layer Normalization params
3003  if(descriptor.m_LayerNormEnabled)
3004  {
3005  if(params.m_ForgetLayerNormWeights == nullptr)
3006  {
3007  throw InvalidArgumentException("AddQLstmLayer: Forget layer normalization weights cannot be NULL");
3008  }
3009 
3010  if(params.m_CellLayerNormWeights == nullptr)
3011  {
3012  throw InvalidArgumentException("AddQLstmLayer: Cell layer normalization weights cannot be NULL");
3013  }
3014 
3015  if(params.m_OutputLayerNormWeights == nullptr)
3016  {
3017  throw InvalidArgumentException("AddQLstmLayer: Output layer normalization weights cannot be NULL");
3018  }
3019 
3020  if(!descriptor.m_CifgEnabled)
3021  {
3022  if(params.m_InputLayerNormWeights == nullptr)
3023  {
3024  throw InvalidArgumentException("AddQLstmLayer: Input layer normalization weights cannot be NULL");
3025  }
3026 
3027  layer->m_LayerNormParameters.m_InputLayerNormWeights =
3028  std::make_shared<ScopedTensorHandle>(*(params.m_InputLayerNormWeights));
3029  }
3030 
3031  layer->m_LayerNormParameters.m_ForgetLayerNormWeights =
3032  std::make_shared<ScopedTensorHandle>(*(params.m_ForgetLayerNormWeights));
3033  layer->m_LayerNormParameters.m_CellLayerNormWeights =
3034  std::make_shared<ScopedTensorHandle>(*(params.m_CellLayerNormWeights));
3035  layer->m_LayerNormParameters.m_OutputLayerNormWeights =
3036  std::make_shared<ScopedTensorHandle>(*(params.m_OutputLayerNormWeights));
3037  }
3038  return layer;
3039 }

References QLstmLayer::m_BasicParameters, LstmInputParams::m_CellBias, LstmInputParams::m_CellLayerNormWeights, LstmInputParams::m_CellToForgetWeights, LstmInputParams::m_CellToInputWeights, LstmInputParams::m_CellToOutputWeights, QLstmDescriptor::m_CifgEnabled, LstmInputParams::m_ForgetGateBias, LstmInputParams::m_ForgetLayerNormWeights, LstmInputParams::m_InputGateBias, LstmInputParams::m_InputLayerNormWeights, LstmInputParams::m_InputToCellWeights, LstmInputParams::m_InputToForgetWeights, QLstmBasicParameters::m_InputToForgetWeights, LstmInputParams::m_InputToInputWeights, LstmInputParams::m_InputToOutputWeights, QLstmDescriptor::m_LayerNormEnabled, LstmInputParams::m_OutputGateBias, LstmInputParams::m_OutputLayerNormWeights, QLstmDescriptor::m_PeepholeEnabled, LstmInputParams::m_ProjectionBias, QLstmDescriptor::m_ProjectionEnabled, LstmInputParams::m_ProjectionWeights, LstmInputParams::m_RecurrentToCellWeights, LstmInputParams::m_RecurrentToForgetWeights, LstmInputParams::m_RecurrentToInputWeights, and LstmInputParams::m_RecurrentToOutputWeights.

◆ AddQuantizedLstmLayer()

IConnectableLayer * AddQuantizedLstmLayer ( const QuantizedLstmInputParams params,
const char *  name = nullptr 
)

Definition at line 2861 of file Network.cpp.

2863 {
2864  const auto layer = m_Graph->AddLayer<QuantizedLstmLayer>(name);
2865 
2866  // InputToX weights
2867  layer->m_QuantizedLstmParameters.m_InputToInputWeights =
2868  std::make_shared<ScopedTensorHandle>(params.GetInputToInputWeights());
2869  layer->m_QuantizedLstmParameters.m_InputToForgetWeights =
2870  std::make_shared<ScopedTensorHandle>(params.GetInputToForgetWeights());
2871  layer->m_QuantizedLstmParameters.m_InputToCellWeights =
2872  std::make_shared<ScopedTensorHandle>(params.GetInputToCellWeights());
2873  layer->m_QuantizedLstmParameters.m_InputToOutputWeights =
2874  std::make_shared<ScopedTensorHandle>(params.GetInputToOutputWeights());
2875 
2876  // RecurrentToX weights
2877  layer->m_QuantizedLstmParameters.m_RecurrentToInputWeights =
2878  std::make_shared<ScopedTensorHandle>(params.GetRecurrentToInputWeights());
2879  layer->m_QuantizedLstmParameters.m_RecurrentToForgetWeights =
2880  std::make_shared<ScopedTensorHandle>(params.GetRecurrentToForgetWeights());
2881  layer->m_QuantizedLstmParameters.m_RecurrentToCellWeights =
2882  std::make_shared<ScopedTensorHandle>(params.GetRecurrentToCellWeights());
2883  layer->m_QuantizedLstmParameters.m_RecurrentToOutputWeights =
2884  std::make_shared<ScopedTensorHandle>(params.GetRecurrentToOutputWeights());
2885 
2886  // Bias
2887  layer->m_QuantizedLstmParameters.m_InputGateBias =
2888  std::make_shared<ScopedTensorHandle>(params.GetInputGateBias());
2889  layer->m_QuantizedLstmParameters.m_ForgetGateBias =
2890  std::make_shared<ScopedTensorHandle>(params.GetForgetGateBias());
2891  layer->m_QuantizedLstmParameters.m_CellBias =
2892  std::make_shared<ScopedTensorHandle>(params.GetCellBias());
2893  layer->m_QuantizedLstmParameters.m_OutputGateBias =
2894  std::make_shared<ScopedTensorHandle>(params.GetOutputGateBias());
2895 
2896  return layer;
2897 }

References QuantizedLstmInputParams::GetCellBias(), QuantizedLstmInputParams::GetForgetGateBias(), QuantizedLstmInputParams::GetInputGateBias(), QuantizedLstmInputParams::GetInputToCellWeights(), QuantizedLstmInputParams::GetInputToForgetWeights(), QuantizedLstmInputParams::GetInputToInputWeights(), QuantizedLstmInputParams::GetInputToOutputWeights(), QuantizedLstmInputParams::GetOutputGateBias(), QuantizedLstmInputParams::GetRecurrentToCellWeights(), QuantizedLstmInputParams::GetRecurrentToForgetWeights(), QuantizedLstmInputParams::GetRecurrentToInputWeights(), QuantizedLstmInputParams::GetRecurrentToOutputWeights(), QuantizedLstmParameters::m_InputToInputWeights, and QuantizedLstmLayer::m_QuantizedLstmParameters.

◆ AddQuantizeLayer()

IConnectableLayer * AddQuantizeLayer ( const char *  name = nullptr)

Definition at line 2778 of file Network.cpp.

2779 {
2780  return m_Graph->AddLayer<QuantizeLayer>(name);
2781 }

◆ AddRankLayer()

IConnectableLayer * AddRankLayer ( const char *  name = nullptr)

Definition at line 2546 of file Network.cpp.

2547 {
2548  return m_Graph->AddLayer<RankLayer>(name);
2549 }

◆ AddReduceLayer()

IConnectableLayer * AddReduceLayer ( const ReduceDescriptor reduceDescriptor,
const char *  name = nullptr 
)

Definition at line 2551 of file Network.cpp.

2553 {
2554  return m_Graph->AddLayer<ReduceLayer>(reduceDescriptor, name);
2555 }

◆ AddReshapeLayer()

IConnectableLayer * AddReshapeLayer ( const ReshapeDescriptor reshapeDescriptor,
const char *  name = nullptr 
)

Definition at line 2594 of file Network.cpp.

2596 {
2597  return m_Graph->AddLayer<ReshapeLayer>(reshapeDescriptor, name);
2598 }

◆ AddResizeLayer()

IConnectableLayer * AddResizeLayer ( const ResizeDescriptor resizeDescriptor,
const char *  name = nullptr 
)

Definition at line 2557 of file Network.cpp.

2558 {
2559  return m_Graph->AddLayer<ResizeLayer>(resizeDescriptor, name);
2560 }

◆ AddReverseV2Layer()

IConnectableLayer * AddReverseV2Layer ( const char *  name = nullptr)

Definition at line 3194 of file Network.cpp.

3195 {
3196  return m_Graph->AddLayer<ReverseV2Layer>(name);
3197 }

◆ AddScatterNdLayer()

IConnectableLayer * AddScatterNdLayer ( const ScatterNdDescriptor scatterDescriptor,
const char *  name = nullptr 
)

Definition at line 3242 of file Network.cpp.

3243 {
3244  return m_Graph->AddLayer<ScatterNdLayer>(desc, name);
3245 }

◆ AddShapeLayer()

IConnectableLayer * AddShapeLayer ( const char *  name = nullptr)

Definition at line 2562 of file Network.cpp.

2563 {
2564  return m_Graph->AddLayer<ShapeLayer>(name);
2565 }

◆ AddSliceLayer()

IConnectableLayer * AddSliceLayer ( const SliceDescriptor sliceDescriptor,
const char *  name = nullptr 
)

Definition at line 2487 of file Network.cpp.

2488 {
2489  return m_Graph->AddLayer<SliceLayer>(sliceDescriptor, name);
2490 }

◆ AddSoftmaxLayer()

IConnectableLayer * AddSoftmaxLayer ( const SoftmaxDescriptor softmaxDescriptor,
const char *  name = nullptr 
)

Definition at line 2492 of file Network.cpp.

2494 {
2495  return m_Graph->AddLayer<SoftmaxLayer>(softmaxDescriptor, name);
2496 }

◆ AddSpaceToBatchNdLayer()

IConnectableLayer * AddSpaceToBatchNdLayer ( const SpaceToBatchNdDescriptor spaceToBatchNdDescriptor,
const char *  name = nullptr 
)

Definition at line 2600 of file Network.cpp.

2602 {
2603  return m_Graph->AddLayer<SpaceToBatchNdLayer>(spaceToBatchNdDescriptor, name);
2604 }

◆ AddSpaceToDepthLayer()

IConnectableLayer * AddSpaceToDepthLayer ( const SpaceToDepthDescriptor spaceToDepthDescriptor,
const char *  name = nullptr 
)

Definition at line 2606 of file Network.cpp.

2608 {
2609  return m_Graph->AddLayer<SpaceToDepthLayer>(spaceToDepthDescriptor, name);
2610 }

◆ AddSplitterLayer()

IConnectableLayer * AddSplitterLayer ( const ViewsDescriptor splitterDescriptor,
const char *  name = nullptr 
)

Definition at line 2498 of file Network.cpp.

2500 {
2501  return m_Graph->AddLayer<SplitterLayer>(splitterDescriptor, name);
2502 }

◆ AddStackLayer()

IConnectableLayer * AddStackLayer ( const StackDescriptor stackDescriptor,
const char *  name = nullptr 
)

Definition at line 2848 of file Network.cpp.

2850 {
2851  return m_Graph->AddLayer<StackLayer>(stackDescriptor, name);
2852 }

◆ AddStandInLayer()

IConnectableLayer * AddStandInLayer ( const StandInDescriptor descriptor,
const char *  name = nullptr 
)

Definition at line 2855 of file Network.cpp.

2857 {
2858  return m_Graph->AddLayer<StandInLayer>(desc, name);
2859 }

◆ AddStridedSliceLayer()

IConnectableLayer * AddStridedSliceLayer ( const StridedSliceDescriptor stridedSliceDescriptor,
const char *  name = nullptr 
)

Definition at line 2788 of file Network.cpp.

2790 {
2791  return m_Graph->AddLayer<StridedSliceLayer>(stridedSliceDescriptor, name);
2792 }

◆ AddSubtractionLayer()

IConnectableLayer * AddSubtractionLayer ( const char *  name = nullptr)

Definition at line 2763 of file Network.cpp.

2764 {
2765  return m_Graph->AddLayer<SubtractionLayer>(name);
2766 }

◆ AddSwitchLayer()

IConnectableLayer * AddSwitchLayer ( const char *  name = nullptr)

Definition at line 2810 of file Network.cpp.

2811 {
2812  return m_Graph->AddLayer<SwitchLayer>(name);
2813 }

◆ AddTileLayer()

IConnectableLayer * AddTileLayer ( const TileDescriptor tileDescriptor,
const char *  name = nullptr 
)

Definition at line 3199 of file Network.cpp.

3200 {
3201  return m_Graph->AddLayer<TileLayer>(desc, name);
3202 }

◆ AddTransposeConvolution2dLayer()

IConnectableLayer * AddTransposeConvolution2dLayer ( const TransposeConvolution2dDescriptor descriptor,
const ConstTensor weights,
const Optional< ConstTensor > &  biases,
const char *  name = nullptr 
)

Definition at line 2820 of file Network.cpp.

2824 {
2825  if (descriptor.m_BiasEnabled && !biases.has_value())
2826  {
2827  throw InvalidArgumentException("AddTransposeConvolution2dLayer: Biases cannot be empty");
2828  }
2829 
2830  const auto layer = m_Graph->AddLayer<TransposeConvolution2dLayer>(descriptor, name);
2831 
2832  layer->m_Weight = std::make_shared<ScopedTensorHandle>(weights);
2833 
2834  if (descriptor.m_BiasEnabled)
2835  {
2836  layer->m_Bias = std::make_shared<ScopedTensorHandle>(biases.value());
2837  }
2838 
2839  return layer;
2840 }

References OptionalBase::has_value(), TransposeConvolution2dDescriptor::m_BiasEnabled, TransposeConvolution2dLayer::m_Weight, and OptionalReferenceSwitch< IsReference, T >::value().

◆ AddTransposeLayer()

IConnectableLayer * AddTransposeLayer ( const TransposeDescriptor transposeDescriptor,
const char *  name = nullptr 
)

Definition at line 2842 of file Network.cpp.

2844 {
2845  return m_Graph->AddLayer<TransposeLayer>(transposeDescriptor, name);
2846 }

◆ AddUnidirectionalSequenceLstmLayer()

IConnectableLayer * AddUnidirectionalSequenceLstmLayer ( const UnidirectionalSequenceLstmDescriptor descriptor,
const LstmInputParams params,
const char *  name = nullptr 
)

Definition at line 3047 of file Network.cpp.

3051 {
3052  const auto layer = m_Graph->AddLayer<UnidirectionalSequenceLstmLayer>(descriptor, name);
3053 
3054  //Lstm Basic Parameters
3055  layer->m_BasicParameters.m_InputToForgetWeights =
3056  std::make_shared<ScopedTensorHandle>(*(params.m_InputToForgetWeights));
3057  layer->m_BasicParameters.m_InputToCellWeights =
3058  std::make_shared<ScopedTensorHandle>(*(params.m_InputToCellWeights));
3059  layer->m_BasicParameters.m_InputToOutputWeights =
3060  std::make_shared<ScopedTensorHandle>(*(params.m_InputToOutputWeights));
3061  layer->m_BasicParameters.m_RecurrentToForgetWeights =
3062  std::make_shared<ScopedTensorHandle>(*(params.m_RecurrentToForgetWeights));
3063  layer->m_BasicParameters.m_RecurrentToCellWeights =
3064  std::make_shared<ScopedTensorHandle>(*(params.m_RecurrentToCellWeights));
3065  layer->m_BasicParameters.m_RecurrentToOutputWeights =
3066  std::make_shared<ScopedTensorHandle>(*(params.m_RecurrentToOutputWeights));
3067  layer->m_BasicParameters.m_ForgetGateBias =
3068  std::make_shared<ScopedTensorHandle>(*(params.m_ForgetGateBias));
3069  layer->m_BasicParameters.m_CellBias =
3070  std::make_shared<ScopedTensorHandle>(*(params.m_CellBias));
3071  layer->m_BasicParameters.m_OutputGateBias =
3072  std::make_shared<ScopedTensorHandle>(*(params.m_OutputGateBias));
3073 
3074  //Lstm Cifg parameters
3075  if(!descriptor.m_CifgEnabled)
3076  {
3077  if(params.m_InputToInputWeights == nullptr)
3078  {
3079  throw InvalidArgumentException("AddUnidirectionalSequenceLstmLayer: Input To Input Weights cannot be NULL "
3080  "when CIFG is disabled.");
3081  }
3082  if(params.m_RecurrentToInputWeights == nullptr)
3083  {
3084  throw InvalidArgumentException(
3085  "AddUnidirectionalSequenceLstmLayer: Recurrent To Input Weights cannot be NULL "
3086  "when CIFG is disabled.");
3087  }
3088  if(params.m_InputGateBias == nullptr)
3089  {
3090  throw InvalidArgumentException("AddUnidirectionalSequenceLstmLayer: Input Gate Bias cannot be NULL "
3091  "when CIFG is disabled.");
3092  }
3093  layer->m_CifgParameters.m_InputToInputWeights =
3094  std::make_shared<ScopedTensorHandle>(*(params.m_InputToInputWeights));
3095  layer->m_CifgParameters.m_RecurrentToInputWeights =
3096  std::make_shared<ScopedTensorHandle>(*(params.m_RecurrentToInputWeights));
3097  layer->m_CifgParameters.m_InputGateBias =
3098  std::make_shared<ScopedTensorHandle>(*(params.m_InputGateBias));
3099  }
3100 
3101  //Lstm projection parameters
3102  if(descriptor.m_ProjectionEnabled)
3103  {
3104  if(params.m_ProjectionWeights == nullptr)
3105  {
3106  throw InvalidArgumentException("AddUnidirectionalSequenceLstmLayer: Projection Weights cannot be NULL "
3107  "when projection is enabled.");
3108  }
3109  layer->m_ProjectionParameters.m_ProjectionWeights =
3110  std::make_shared<ScopedTensorHandle>(*(params.m_ProjectionWeights));
3111  if(params.m_ProjectionBias != nullptr)
3112  {
3113  layer->m_ProjectionParameters.m_ProjectionBias =
3114  std::make_shared<ScopedTensorHandle>(*(params.m_ProjectionBias));
3115  }
3116  }
3117 
3118  //Lstm Peephole params
3119  if(descriptor.m_PeepholeEnabled)
3120  {
3121  if(!descriptor.m_CifgEnabled)
3122  {
3123  if(params.m_CellToInputWeights == nullptr)
3124  {
3125  throw InvalidArgumentException("AddUnidirectionalSequenceLstmLayer: Cell To Input Weights "
3126  "cannot be NULL when Peephole is enabled and CIFG disabled.");
3127  }
3128 
3129  layer->m_PeepholeParameters.m_CellToInputWeights =
3130  std::make_shared<ScopedTensorHandle>(*(params.m_CellToInputWeights));
3131  }
3132 
3133  if(params.m_CellToForgetWeights == nullptr)
3134  {
3135  throw InvalidArgumentException("AddUnidirectionalSequenceLstmLayer: Cell To Forget Weights cannot be NULL "
3136  "when Peephole is enabled.");
3137  }
3138  if(params.m_CellToOutputWeights == nullptr)
3139  {
3140  throw InvalidArgumentException("AddUnidirectionalSequenceLstmLayer: Cell To Output Weights cannot be NULL "
3141  "when Peephole is enabled.");
3142  }
3143 
3144  layer->m_PeepholeParameters.m_CellToForgetWeights =
3145  std::make_shared<ScopedTensorHandle>(*(params.m_CellToForgetWeights));
3146  layer->m_PeepholeParameters.m_CellToOutputWeights =
3147  std::make_shared<ScopedTensorHandle>(*(params.m_CellToOutputWeights));
3148  }
3149 
3150  //Lstm Layer Normalization params
3151  if(descriptor.m_LayerNormEnabled)
3152  {
3153  if(!descriptor.m_CifgEnabled)
3154  {
3155  if(params.m_InputLayerNormWeights == nullptr)
3156  {
3157  throw InvalidArgumentException("AddUnidirectionalSequenceLstmLayer: Input layer normalization weights "
3158  "cannot be NULL when layer normalization is enabled and CIFG disabled.");
3159  }
3160  layer->m_LayerNormParameters.m_InputLayerNormWeights =
3161  std::make_shared<ScopedTensorHandle>(*(params.m_InputLayerNormWeights));
3162  }
3163 
3164  if(params.m_ForgetLayerNormWeights == nullptr)
3165  {
3166  throw InvalidArgumentException("AddUnidirectionalSequenceLstmLayer: Forget layer normalization weights "
3167  "cannot be NULL when layer normalization is enabled.");
3168  }
3169  if(params.m_CellLayerNormWeights == nullptr)
3170  {
3171  throw InvalidArgumentException("AddUnidirectionalSequenceLstmLayer: Cell layer normalization weights "
3172  "cannot be NULL when layer normalization is enabled.");
3173  }
3174  if(params.m_OutputLayerNormWeights == nullptr)
3175  {
3176  throw InvalidArgumentException("AddUnidirectionalSequenceLstmLayer: Output layer normalization weights "
3177  "cannot be NULL when layer normalization is enabled.");
3178  }
3179  layer->m_LayerNormParameters.m_ForgetLayerNormWeights =
3180  std::make_shared<ScopedTensorHandle>(*(params.m_ForgetLayerNormWeights));
3181  layer->m_LayerNormParameters.m_CellLayerNormWeights =
3182  std::make_shared<ScopedTensorHandle>(*(params.m_CellLayerNormWeights));
3183  layer->m_LayerNormParameters.m_OutputLayerNormWeights =
3184  std::make_shared<ScopedTensorHandle>(*(params.m_OutputLayerNormWeights));
3185  }
3186  return layer;
3187 }

References UnidirectionalSequenceLstmLayer::m_BasicParameters, LstmInputParams::m_CellBias, LstmInputParams::m_CellLayerNormWeights, LstmInputParams::m_CellToForgetWeights, LstmInputParams::m_CellToInputWeights, LstmInputParams::m_CellToOutputWeights, LstmDescriptor::m_CifgEnabled, LstmInputParams::m_ForgetGateBias, LstmInputParams::m_ForgetLayerNormWeights, LstmInputParams::m_InputGateBias, LstmInputParams::m_InputLayerNormWeights, LstmInputParams::m_InputToCellWeights, LstmInputParams::m_InputToForgetWeights, LstmBasicParameters::m_InputToForgetWeights, LstmInputParams::m_InputToInputWeights, LstmInputParams::m_InputToOutputWeights, LstmDescriptor::m_LayerNormEnabled, LstmInputParams::m_OutputGateBias, LstmInputParams::m_OutputLayerNormWeights, LstmDescriptor::m_PeepholeEnabled, LstmInputParams::m_ProjectionBias, LstmDescriptor::m_ProjectionEnabled, LstmInputParams::m_ProjectionWeights, LstmInputParams::m_RecurrentToCellWeights, LstmInputParams::m_RecurrentToForgetWeights, LstmInputParams::m_RecurrentToInputWeights, and LstmInputParams::m_RecurrentToOutputWeights.

◆ ExecuteStrategy()

void ExecuteStrategy ( IStrategy strategy) const

Definition at line 3247 of file Network.cpp.

3248 {
3249  for (auto layer : GetGraph())
3250  {
3251  layer->ExecuteStrategy(strategy);
3252  };
3253 }
const Graph & GetGraph() const
Definition: Network.hpp:38

References NetworkImpl::GetGraph().

◆ GetGraph()

const Graph& GetGraph ( ) const
inline

Definition at line 38 of file Network.hpp.

39  { return *m_Graph; }

Referenced by NetworkImpl::ExecuteStrategy().

◆ PrintGraph()

Status PrintGraph ( )

Definition at line 2336 of file Network.cpp.

2337 {
2338  m_Graph->Print();
2339  return Status::Success;
2340 }

References armnn::Success.


The documentation for this class was generated from the following files: