ArmNN
 26.07
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 2335 of file Network.cpp.

2336 : m_NetworkOptions(networkOptions),
2337  m_Graph(std::make_unique<Graph>(GetShapeInferenceMethod(), GetAllowExpandedDims()))
2338 {}

◆ ~NetworkImpl()

Definition at line 2340 of file Network.cpp.

2341 {
2342 }

Member Function Documentation

◆ AddActivationLayer()

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

Definition at line 2476 of file Network.cpp.

2478 {
2479  return m_Graph->AddLayer<ActivationLayer>(activationDescriptor, name);
2480 }

◆ AddAdditionLayer()

IConnectableLayer * AddAdditionLayer ( const char *  name = nullptr)

Definition at line 2522 of file Network.cpp.

2523 {
2524  return m_Graph->AddLayer<AdditionLayer>(name);
2525 }

◆ AddArgMinMaxLayer()

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

Definition at line 2482 of file Network.cpp.

2484 {
2485  return m_Graph->AddLayer<ArgMinMaxLayer>(argMinMaxDescriptor, name);
2486 }

◆ AddBatchMatMulLayer()

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

Definition at line 3197 of file Network.cpp.

3198 {
3199  return m_Graph->AddLayer<BatchMatMulLayer>(desc, name);
3200 }

◆ 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 2537 of file Network.cpp.

2543 {
2544  const auto layer = m_Graph->AddLayer<BatchNormalizationLayer>(desc, name);
2545 
2546  layer->m_Mean = std::make_shared<ScopedTensorHandle>(mean);
2547  layer->m_Variance = std::make_shared<ScopedTensorHandle>(variance);
2548  layer->m_Beta = std::make_shared<ScopedTensorHandle>(beta);
2549  layer->m_Gamma = std::make_shared<ScopedTensorHandle>(gamma);
2550 
2551  return layer;
2552 }

References BatchNormalizationLayer::m_Mean.

◆ AddBatchToSpaceNdLayer()

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

Definition at line 2355 of file Network.cpp.

2357 {
2358  return m_Graph->AddLayer<BatchToSpaceNdLayer>(batchToSpaceNdDescriptor, name);
2359 }

◆ AddBroadcastToLayer()

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

Definition at line 3245 of file Network.cpp.

3246 {
3247  return m_Graph->AddLayer<BroadcastToLayer>(desc, name);
3248 }

◆ AddCastLayer()

IConnectableLayer * AddCastLayer ( const char *  name = nullptr)

Definition at line 2361 of file Network.cpp.

2362 {
2363  return m_Graph->AddLayer<CastLayer>(name);
2364 }

◆ AddChannelShuffleLayer()

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

Definition at line 2365 of file Network.cpp.

2367 {
2368  return m_Graph->AddLayer<ChannelShuffleLayer>(channelShuffleDescriptor, name);
2369 }

◆ AddComparisonLayer()

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

Definition at line 2371 of file Network.cpp.

2373 {
2374  return m_Graph->AddLayer<ComparisonLayer>(comparisonDescriptor, name);
2375 }

◆ AddConcatLayer()

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

Definition at line 2407 of file Network.cpp.

2409 {
2410  return m_Graph->AddLayer<ConcatLayer>(concatDescriptor, name);
2411 }

◆ AddConstantLayer()

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

Definition at line 2593 of file Network.cpp.

2594 {
2595  auto layer = m_Graph->AddLayer<ConstantLayer>(name);
2596 
2597  layer->m_LayerOutput = std::make_shared<ScopedTensorHandle>(input);
2598 
2599  return layer;
2600 }

References ConstantLayer::m_LayerOutput.

◆ AddConvertFp16ToFp32Layer()

IConnectableLayer * AddConvertFp16ToFp32Layer ( const char *  name = nullptr)

Definition at line 2419 of file Network.cpp.

2420 {
2421  return m_Graph->AddLayer<ConvertFp16ToFp32Layer>(name);
2422 }

◆ AddConvertFp32ToFp16Layer()

IConnectableLayer * AddConvertFp32ToFp16Layer ( const char *  name = nullptr)

Definition at line 2424 of file Network.cpp.

2425 {
2426  return m_Graph->AddLayer<ConvertFp32ToFp16Layer>(name);
2427 }

◆ AddConvolution2dLayer()

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

Definition at line 2413 of file Network.cpp.

2415 {
2416  return m_Graph->AddLayer<Convolution2dLayer>(convolution2dDescriptor, name);
2417 }

◆ AddConvolution3dLayer()

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

Definition at line 2429 of file Network.cpp.

2431 {
2432  return m_Graph->AddLayer<Convolution3dLayer>(convolution3dDescriptor, name);
2433 }

◆ AddDepthToSpaceLayer()

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

Definition at line 2435 of file Network.cpp.

2437 {
2438  return m_Graph->AddLayer<DepthToSpaceLayer>(depthToSpaceDescriptor, name);
2439 }

◆ AddDepthwiseConvolution2dLayer()

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

Definition at line 2441 of file Network.cpp.

2444 {
2445  return m_Graph->AddLayer<DepthwiseConvolution2dLayer>(convolution2dDescriptor, name);
2446 }

◆ AddDequantizeLayer()

IConnectableLayer * AddDequantizeLayer ( const char *  name = nullptr)

Definition at line 2791 of file Network.cpp.

2792 {
2793  return m_Graph->AddLayer<DequantizeLayer>(name);
2794 }

◆ AddDetectionPostProcessLayer()

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

Definition at line 2448 of file Network.cpp.

2450 {
2451  const auto layer = m_Graph->AddLayer<DetectionPostProcessLayer>(descriptor, name);
2452 
2453  layer->m_Anchors = std::make_shared<ScopedTensorHandle>(anchors);
2454 
2455  return layer;
2456 }

References DetectionPostProcessLayer::m_Anchors.

◆ AddDivisionLayer()

IConnectableLayer * AddDivisionLayer ( const char *  name = nullptr)

Definition at line 2766 of file Network.cpp.

2767 {
2768  return m_Graph->AddLayer<DivisionLayer>(name);
2769 }

◆ AddElementwiseBinaryLayer()

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

Definition at line 2377 of file Network.cpp.

2379 {
2380  return m_Graph->AddLayer<ElementwiseBinaryLayer>(elementwiseBinaryDesc, name);
2381 }

◆ AddElementwiseUnaryLayer()

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

Definition at line 2383 of file Network.cpp.

2385 {
2386  return m_Graph->AddLayer<ElementwiseUnaryLayer>(elementwiseUnaryDescriptor, name);
2387 }

◆ AddFillLayer()

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

Definition at line 2389 of file Network.cpp.

2391 {
2392  return m_Graph->AddLayer<FillLayer>(fillDescriptor, name);
2393 }

◆ AddFloorLayer()

IConnectableLayer * AddFloorLayer ( const char *  name = nullptr)

Definition at line 2620 of file Network.cpp.

2621 {
2622  return m_Graph->AddLayer<FloorLayer>(name);
2623 }

◆ AddFullyConnectedLayer()

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

Definition at line 2395 of file Network.cpp.

2397 {
2398  return m_Graph->AddLayer<FullyConnectedLayer>(fullyConnectedDescriptor, name);
2399 }

◆ AddFusedLayer()

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

Definition at line 2401 of file Network.cpp.

2403 {
2404  return m_Graph->AddLayer<FusedLayer>(fusedDescriptor, name);
2405 }

◆ AddGatherLayer()

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

Definition at line 2802 of file Network.cpp.

2804 {
2805  return m_Graph->AddLayer<GatherLayer>(gatherDescriptor, name);
2806 }

◆ AddGatherNdLayer()

IConnectableLayer * AddGatherNdLayer ( const char *  name = nullptr)

Definition at line 2808 of file Network.cpp.

2809 {
2810  return m_Graph->AddLayer<GatherNdLayer>(name);
2811 }

◆ AddInputLayer()

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

Definition at line 2350 of file Network.cpp.

2351 {
2352  return m_Graph->AddLayer<InputLayer>(id, name);
2353 }

◆ AddInstanceNormalizationLayer()

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

Definition at line 2575 of file Network.cpp.

2577 {
2578  return m_Graph->AddLayer<InstanceNormalizationLayer>(desc, name);
2579 }

◆ AddL2NormalizationLayer()

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

Definition at line 2581 of file Network.cpp.

2583 {
2584  return m_Graph->AddLayer<L2NormalizationLayer>(desc, name);
2585 }

◆ AddLogicalBinaryLayer()

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

Definition at line 3049 of file Network.cpp.

3051 {
3052  return m_Graph->AddLayer<LogicalBinaryLayer>(logicalBinaryDescriptor, name);
3053 }

◆ AddLogSoftmaxLayer()

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

Definition at line 2587 of file Network.cpp.

2589 {
2590  return m_Graph->AddLayer<LogSoftmaxLayer>(desc, name);
2591 }

◆ AddLstmLayer()

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

Definition at line 2625 of file Network.cpp.

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

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 2512 of file Network.cpp.

2513 {
2514  return m_Graph->AddLayer<MaximumLayer>(name);
2515 }

◆ AddMeanLayer()

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

Definition at line 2776 of file Network.cpp.

2777 {
2778  return m_Graph->AddLayer<MeanLayer>(meanDescriptor,name);
2779 }

◆ AddMergeLayer()

IConnectableLayer * AddMergeLayer ( const char *  name = nullptr)

Definition at line 2813 of file Network.cpp.

2814 {
2815  return m_Graph->AddLayer<MergeLayer>(name);
2816 }

◆ AddMinimumLayer()

IConnectableLayer * AddMinimumLayer ( const char *  name = nullptr)

Definition at line 2517 of file Network.cpp.

2518 {
2519  return m_Graph->AddLayer<MinimumLayer>(name);
2520 }

◆ AddMultiplicationLayer()

IConnectableLayer * AddMultiplicationLayer ( const char *  name = nullptr)

Definition at line 2527 of file Network.cpp.

2528 {
2529  return m_Graph->AddLayer<MultiplicationLayer>(name);
2530 }

◆ AddNormalizationLayer()

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

Definition at line 2488 of file Network.cpp.

2491 {
2492  return m_Graph->AddLayer<NormalizationLayer>(normalizationDescriptor, name);
2493 }

◆ AddOutputLayer()

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

Definition at line 2532 of file Network.cpp.

2533 {
2534  return m_Graph->AddLayer<OutputLayer>(id, name);
2535 }

◆ AddPadLayer()

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

Definition at line 2781 of file Network.cpp.

2782 {
2783  return m_Graph->AddLayer<PadLayer>(padDescriptor,name);
2784 }

◆ AddPermuteLayer()

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

Definition at line 2458 of file Network.cpp.

2460 {
2461  return m_Graph->AddLayer<PermuteLayer>(permuteDescriptor, name);
2462 }

◆ AddPooling2dLayer()

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

Definition at line 2464 of file Network.cpp.

2466 {
2467  return m_Graph->AddLayer<Pooling2dLayer>(pooling2dDescriptor, name);
2468 }

◆ AddPooling3dLayer()

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

Definition at line 2470 of file Network.cpp.

2472 {
2473  return m_Graph->AddLayer<Pooling3dLayer>(pooling3dDescriptor, name);
2474 }

◆ AddPrecompiledLayer()

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

Definition at line 3212 of file Network.cpp.

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

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 2823 of file Network.cpp.

2824 {
2825  return m_Graph->AddLayer<PreluLayer>(name);
2826 }

◆ AddQLstmLayer()

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

Definition at line 2907 of file Network.cpp.

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

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 2869 of file Network.cpp.

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

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 2786 of file Network.cpp.

2787 {
2788  return m_Graph->AddLayer<QuantizeLayer>(name);
2789 }

◆ AddRankLayer()

IConnectableLayer * AddRankLayer ( const char *  name = nullptr)

Definition at line 2554 of file Network.cpp.

2555 {
2556  return m_Graph->AddLayer<RankLayer>(name);
2557 }

◆ AddReduceLayer()

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

Definition at line 2559 of file Network.cpp.

2561 {
2562  return m_Graph->AddLayer<ReduceLayer>(reduceDescriptor, name);
2563 }

◆ AddReshapeLayer()

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

Definition at line 2602 of file Network.cpp.

2604 {
2605  return m_Graph->AddLayer<ReshapeLayer>(reshapeDescriptor, name);
2606 }

◆ AddResizeLayer()

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

Definition at line 2565 of file Network.cpp.

2566 {
2567  return m_Graph->AddLayer<ResizeLayer>(resizeDescriptor, name);
2568 }

◆ AddReverseV2Layer()

IConnectableLayer * AddReverseV2Layer ( const char *  name = nullptr)

Definition at line 3202 of file Network.cpp.

3203 {
3204  return m_Graph->AddLayer<ReverseV2Layer>(name);
3205 }

◆ AddScatterNdLayer()

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

Definition at line 3250 of file Network.cpp.

3251 {
3252  return m_Graph->AddLayer<ScatterNdLayer>(desc, name);
3253 }

◆ AddShapeLayer()

IConnectableLayer * AddShapeLayer ( const char *  name = nullptr)

Definition at line 2570 of file Network.cpp.

2571 {
2572  return m_Graph->AddLayer<ShapeLayer>(name);
2573 }

◆ AddSliceLayer()

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

Definition at line 2495 of file Network.cpp.

2496 {
2497  return m_Graph->AddLayer<SliceLayer>(sliceDescriptor, name);
2498 }

◆ AddSoftmaxLayer()

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

Definition at line 2500 of file Network.cpp.

2502 {
2503  return m_Graph->AddLayer<SoftmaxLayer>(softmaxDescriptor, name);
2504 }

◆ AddSpaceToBatchNdLayer()

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

Definition at line 2608 of file Network.cpp.

2610 {
2611  return m_Graph->AddLayer<SpaceToBatchNdLayer>(spaceToBatchNdDescriptor, name);
2612 }

◆ AddSpaceToDepthLayer()

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

Definition at line 2614 of file Network.cpp.

2616 {
2617  return m_Graph->AddLayer<SpaceToDepthLayer>(spaceToDepthDescriptor, name);
2618 }

◆ AddSplitterLayer()

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

Definition at line 2506 of file Network.cpp.

2508 {
2509  return m_Graph->AddLayer<SplitterLayer>(splitterDescriptor, name);
2510 }

◆ AddStackLayer()

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

Definition at line 2856 of file Network.cpp.

2858 {
2859  return m_Graph->AddLayer<StackLayer>(stackDescriptor, name);
2860 }

◆ AddStandInLayer()

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

Definition at line 2863 of file Network.cpp.

2865 {
2866  return m_Graph->AddLayer<StandInLayer>(desc, name);
2867 }

◆ AddStridedSliceLayer()

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

Definition at line 2796 of file Network.cpp.

2798 {
2799  return m_Graph->AddLayer<StridedSliceLayer>(stridedSliceDescriptor, name);
2800 }

◆ AddSubtractionLayer()

IConnectableLayer * AddSubtractionLayer ( const char *  name = nullptr)

Definition at line 2771 of file Network.cpp.

2772 {
2773  return m_Graph->AddLayer<SubtractionLayer>(name);
2774 }

◆ AddSwitchLayer()

IConnectableLayer * AddSwitchLayer ( const char *  name = nullptr)

Definition at line 2818 of file Network.cpp.

2819 {
2820  return m_Graph->AddLayer<SwitchLayer>(name);
2821 }

◆ AddTileLayer()

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

Definition at line 3207 of file Network.cpp.

3208 {
3209  return m_Graph->AddLayer<TileLayer>(desc, name);
3210 }

◆ AddTransposeConvolution2dLayer()

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

Definition at line 2828 of file Network.cpp.

2832 {
2833  if (descriptor.m_BiasEnabled && !biases.has_value())
2834  {
2835  throw InvalidArgumentException("AddTransposeConvolution2dLayer: Biases cannot be empty");
2836  }
2837 
2838  const auto layer = m_Graph->AddLayer<TransposeConvolution2dLayer>(descriptor, name);
2839 
2840  layer->m_Weight = std::make_shared<ScopedTensorHandle>(weights);
2841 
2842  if (descriptor.m_BiasEnabled)
2843  {
2844  layer->m_Bias = std::make_shared<ScopedTensorHandle>(biases.value());
2845  }
2846 
2847  return layer;
2848 }

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 2850 of file Network.cpp.

2852 {
2853  return m_Graph->AddLayer<TransposeLayer>(transposeDescriptor, name);
2854 }

◆ AddUnidirectionalSequenceLstmLayer()

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

Definition at line 3055 of file Network.cpp.

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

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 3255 of file Network.cpp.

3256 {
3257  for (auto layer : GetGraph())
3258  {
3259  layer->ExecuteStrategy(strategy);
3260  };
3261 }
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 2344 of file Network.cpp.

2345 {
2346  m_Graph->Print();
2347  return Status::Success;
2348 }

References armnn::Success.


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