ArmNN
 25.11
Loading...
Searching...
No Matches
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 2328 of file Network.cpp.

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

◆ ~NetworkImpl()

Definition at line 2333 of file Network.cpp.

2334{
2335}

Member Function Documentation

◆ AddActivationLayer()

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

Definition at line 2469 of file Network.cpp.

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

◆ AddAdditionLayer()

IConnectableLayer * AddAdditionLayer ( const char * name = nullptr)

Definition at line 2515 of file Network.cpp.

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

◆ AddArgMinMaxLayer()

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

Definition at line 2475 of file Network.cpp.

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

◆ AddBatchMatMulLayer()

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

Definition at line 3190 of file Network.cpp.

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

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

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

References BatchNormalizationLayer::m_Mean.

◆ AddBatchToSpaceNdLayer()

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

Definition at line 2348 of file Network.cpp.

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

◆ AddBroadcastToLayer()

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

Definition at line 3238 of file Network.cpp.

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

◆ AddCastLayer()

IConnectableLayer * AddCastLayer ( const char * name = nullptr)

Definition at line 2354 of file Network.cpp.

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

◆ AddChannelShuffleLayer()

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

Definition at line 2358 of file Network.cpp.

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

◆ AddComparisonLayer()

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

Definition at line 2364 of file Network.cpp.

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

◆ AddConcatLayer()

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

Definition at line 2400 of file Network.cpp.

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

◆ AddConstantLayer()

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

Definition at line 2586 of file Network.cpp.

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

References ConstantLayer::m_LayerOutput.

◆ AddConvertFp16ToFp32Layer()

IConnectableLayer * AddConvertFp16ToFp32Layer ( const char * name = nullptr)

Definition at line 2412 of file Network.cpp.

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

◆ AddConvertFp32ToFp16Layer()

IConnectableLayer * AddConvertFp32ToFp16Layer ( const char * name = nullptr)

Definition at line 2417 of file Network.cpp.

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

◆ AddConvolution2dLayer()

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

Definition at line 2406 of file Network.cpp.

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

◆ AddConvolution3dLayer()

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

Definition at line 2422 of file Network.cpp.

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

◆ AddDepthToSpaceLayer()

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

Definition at line 2428 of file Network.cpp.

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

◆ AddDepthwiseConvolution2dLayer()

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

Definition at line 2434 of file Network.cpp.

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

◆ AddDequantizeLayer()

IConnectableLayer * AddDequantizeLayer ( const char * name = nullptr)

Definition at line 2784 of file Network.cpp.

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

◆ AddDetectionPostProcessLayer()

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

Definition at line 2441 of file Network.cpp.

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

References DetectionPostProcessLayer::m_Anchors.

◆ AddDivisionLayer()

IConnectableLayer * AddDivisionLayer ( const char * name = nullptr)

Definition at line 2759 of file Network.cpp.

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

◆ AddElementwiseBinaryLayer()

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

Definition at line 2370 of file Network.cpp.

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

◆ AddElementwiseUnaryLayer()

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

Definition at line 2376 of file Network.cpp.

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

◆ AddFillLayer()

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

Definition at line 2382 of file Network.cpp.

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

◆ AddFloorLayer()

IConnectableLayer * AddFloorLayer ( const char * name = nullptr)

Definition at line 2613 of file Network.cpp.

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

◆ AddFullyConnectedLayer()

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

Definition at line 2388 of file Network.cpp.

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

◆ AddFusedLayer()

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

Definition at line 2394 of file Network.cpp.

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

◆ AddGatherLayer()

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

Definition at line 2795 of file Network.cpp.

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

◆ AddGatherNdLayer()

IConnectableLayer * AddGatherNdLayer ( const char * name = nullptr)

Definition at line 2801 of file Network.cpp.

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

◆ AddInputLayer()

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

Definition at line 2343 of file Network.cpp.

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

◆ AddInstanceNormalizationLayer()

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

Definition at line 2568 of file Network.cpp.

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

◆ AddL2NormalizationLayer()

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

Definition at line 2574 of file Network.cpp.

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

◆ AddLogicalBinaryLayer()

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

Definition at line 3042 of file Network.cpp.

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

◆ AddLogSoftmaxLayer()

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

Definition at line 2580 of file Network.cpp.

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

◆ AddLstmLayer()

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

Definition at line 2618 of file Network.cpp.

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

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, LstmBasicParameters::m_InputToForgetWeights, LstmInputParams::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 2505 of file Network.cpp.

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

◆ AddMeanLayer()

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

Definition at line 2769 of file Network.cpp.

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

◆ AddMergeLayer()

IConnectableLayer * AddMergeLayer ( const char * name = nullptr)

Definition at line 2806 of file Network.cpp.

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

◆ AddMinimumLayer()

IConnectableLayer * AddMinimumLayer ( const char * name = nullptr)

Definition at line 2510 of file Network.cpp.

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

◆ AddMultiplicationLayer()

IConnectableLayer * AddMultiplicationLayer ( const char * name = nullptr)

Definition at line 2520 of file Network.cpp.

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

◆ AddNormalizationLayer()

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

Definition at line 2481 of file Network.cpp.

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

◆ AddOutputLayer()

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

Definition at line 2525 of file Network.cpp.

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

◆ AddPadLayer()

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

Definition at line 2774 of file Network.cpp.

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

◆ AddPermuteLayer()

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

Definition at line 2451 of file Network.cpp.

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

◆ AddPooling2dLayer()

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

Definition at line 2457 of file Network.cpp.

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

◆ AddPooling3dLayer()

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

Definition at line 2463 of file Network.cpp.

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

◆ AddPrecompiledLayer()

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

Definition at line 3205 of file Network.cpp.

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

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

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

◆ AddQLstmLayer()

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

Definition at line 2900 of file Network.cpp.

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

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

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

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

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

◆ AddRankLayer()

IConnectableLayer * AddRankLayer ( const char * name = nullptr)

Definition at line 2547 of file Network.cpp.

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

◆ AddReduceLayer()

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

Definition at line 2552 of file Network.cpp.

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

◆ AddReshapeLayer()

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

Definition at line 2595 of file Network.cpp.

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

◆ AddResizeLayer()

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

Definition at line 2558 of file Network.cpp.

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

◆ AddReverseV2Layer()

IConnectableLayer * AddReverseV2Layer ( const char * name = nullptr)

Definition at line 3195 of file Network.cpp.

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

◆ AddScatterNdLayer()

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

Definition at line 3243 of file Network.cpp.

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

◆ AddShapeLayer()

IConnectableLayer * AddShapeLayer ( const char * name = nullptr)

Definition at line 2563 of file Network.cpp.

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

◆ AddSliceLayer()

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

Definition at line 2488 of file Network.cpp.

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

◆ AddSoftmaxLayer()

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

Definition at line 2493 of file Network.cpp.

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

◆ AddSpaceToBatchNdLayer()

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

Definition at line 2601 of file Network.cpp.

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

◆ AddSpaceToDepthLayer()

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

Definition at line 2607 of file Network.cpp.

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

◆ AddSplitterLayer()

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

Definition at line 2499 of file Network.cpp.

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

◆ AddStackLayer()

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

Definition at line 2849 of file Network.cpp.

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

◆ AddStandInLayer()

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

Definition at line 2856 of file Network.cpp.

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

◆ AddStridedSliceLayer()

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

Definition at line 2789 of file Network.cpp.

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

◆ AddSubtractionLayer()

IConnectableLayer * AddSubtractionLayer ( const char * name = nullptr)

Definition at line 2764 of file Network.cpp.

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

◆ AddSwitchLayer()

IConnectableLayer * AddSwitchLayer ( const char * name = nullptr)

Definition at line 2811 of file Network.cpp.

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

◆ AddTileLayer()

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

Definition at line 3200 of file Network.cpp.

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

◆ AddTransposeConvolution2dLayer()

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

Definition at line 2821 of file Network.cpp.

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

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

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

◆ AddUnidirectionalSequenceLstmLayer()

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

Definition at line 3048 of file Network.cpp.

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

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, LstmBasicParameters::m_InputToForgetWeights, LstmInputParams::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 3248 of file Network.cpp.

3249{
3250 for (auto layer : GetGraph())
3251 {
3252 layer->ExecuteStrategy(strategy);
3253 };
3254}

References GetGraph().

◆ GetGraph()

const Graph & GetGraph ( ) const
inline

Definition at line 38 of file Network.hpp.

39 { return *m_Graph; }

Referenced by ExecuteStrategy().

◆ PrintGraph()

Status PrintGraph ( )

Definition at line 2337 of file Network.cpp.

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

References armnn::Success.


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