ArmNN
 21.02
NetworkImpl Class Reference

Private implementation of INetwork. More...

#include <Network.hpp>

Public Member Functions

 NetworkImpl (NetworkOptions networkOptions={})
 
 ~NetworkImpl ()
 
const GraphGetGraph () const
 
Status PrintGraph ()
 
IConnectableLayerAddInputLayer (LayerBindingId id, const char *name=nullptr)
 
IConnectableLayerAddArgMinMaxLayer (const ArgMinMaxDescriptor &desc, const char *name=nullptr)
 
IConnectableLayerAddBatchToSpaceNdLayer (const BatchToSpaceNdDescriptor &batchToSpaceNdDescriptor, 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 ConstTensor &weights, const Optional< ConstTensor > &biases, const char *name=nullptr)
 
IConnectableLayerAddConvolution2dLayer (const Convolution2dDescriptor &convolution2dDescriptor, const ConstTensor &weights, const char *name=nullptr)
 
IConnectableLayerAddConvolution2dLayer (const Convolution2dDescriptor &convolution2dDescriptor, const ConstTensor &weights, const ConstTensor &biases, const char *name=nullptr)
 
IConnectableLayerAddDepthToSpaceLayer (const DepthToSpaceDescriptor &depthToSpaceDescriptor, const char *name=nullptr)
 
IConnectableLayerAddDepthwiseConvolution2dLayer (const DepthwiseConvolution2dDescriptor &convolution2dDescriptor, const ConstTensor &weights, const Optional< ConstTensor > &biases, const char *name=nullptr)
 
IConnectableLayerAddDepthwiseConvolution2dLayer (const DepthwiseConvolution2dDescriptor &convolution2dDescriptor, const ConstTensor &weights, const char *name=nullptr)
 
IConnectableLayerAddDepthwiseConvolution2dLayer (const DepthwiseConvolution2dDescriptor &convolution2dDescriptor, const ConstTensor &weights, const ConstTensor &biases, const char *name=nullptr)
 
IConnectableLayerAddDequantizeLayer (const char *name=nullptr)
 
IConnectableLayerAddDetectionPostProcessLayer (const DetectionPostProcessDescriptor &descriptor, const ConstTensor &anchors, const char *name=nullptr)
 
IConnectableLayerAddElementwiseUnaryLayer (const ElementwiseUnaryDescriptor &elementwiseUnaryDescriptor, const char *name=nullptr)
 
IConnectableLayerAddFillLayer (const FillDescriptor &fillDescriptor, const char *name=nullptr)
 
IConnectableLayerAddFullyConnectedLayer (const FullyConnectedDescriptor &fullyConnectedDescriptor, const ConstTensor &weights, const Optional< ConstTensor > &biases, const char *name=nullptr)
 
IConnectableLayerAddFullyConnectedLayer (const FullyConnectedDescriptor &fullyConnectedDescriptor, const ConstTensor &weights, const char *name=nullptr)
 
IConnectableLayerAddFullyConnectedLayer (const FullyConnectedDescriptor &fullyConnectedDescriptor, const ConstTensor &weights, const ConstTensor &biases, const char *name=nullptr)
 
IConnectableLayerAddGatherLayer (const char *name=nullptr)
 
IConnectableLayerAddGatherLayer (const GatherDescriptor &gatherDescriptor, const char *name=nullptr)
 
IConnectableLayerAddPermuteLayer (const PermuteDescriptor &permuteDescriptor, const char *name=nullptr)
 
IConnectableLayerAddPooling2dLayer (const Pooling2dDescriptor &pooling2dDescriptor, const char *name=nullptr)
 
IConnectableLayerAddActivationLayer (const ActivationDescriptor &activationDescriptor, const char *name=nullptr)
 
IConnectableLayerAddNormalizationLayer (const NormalizationDescriptor &normalizationDescriptor, 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)
 
IConnectableLayerAddMergerLayer (const MergerDescriptor &mergerDescriptor, const char *name=nullptr)
 
IConnectableLayerAddAbsLayer (const char *name=nullptr)
 
IConnectableLayerAddAdditionLayer (const char *name=nullptr)
 
IConnectableLayerAddMultiplicationLayer (const char *name=nullptr)
 
IConnectableLayerAddBatchNormalizationLayer (const BatchNormalizationDescriptor &desc, const ConstTensor &mean, const ConstTensor &variance, const ConstTensor &beta, const ConstTensor &gamma, const char *name=nullptr)
 
IConnectableLayerAddRankLayer (const char *name=nullptr)
 
IConnectableLayerAddResizeBilinearLayer (const ResizeBilinearDescriptor &resizeDesc, const char *name=nullptr)
 
IConnectableLayerAddResizeLayer (const ResizeDescriptor &resizeDescriptor, const char *name=nullptr)
 
IConnectableLayerAddReduceLayer (const ReduceDescriptor &reduceDescriptor, 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)
 
IConnectableLayerAddConstantLayer (const ConstTensor &input, const char *name=nullptr)
 
IConnectableLayerAddReshapeLayer (const ReshapeDescriptor &reshapeDescriptor, const char *name=nullptr)
 
IConnectableLayerAddSpaceToBatchNdLayer (const SpaceToBatchNdDescriptor &spaceToBatchNdDescriptor, const char *name=nullptr)
 
IConnectableLayerAddSpaceToDepthLayer (const SpaceToDepthDescriptor &spaceToDepthDescriptor, const char *name=nullptr)
 
IConnectableLayerAddFloorLayer (const char *name=nullptr)
 
IConnectableLayerAddOutputLayer (LayerBindingId id, const char *name=nullptr)
 
IConnectableLayerAddLstmLayer (const LstmDescriptor &descriptor, const LstmInputParams &params, const char *name=nullptr)
 
IConnectableLayerAddDivisionLayer (const char *name=nullptr)
 
IConnectableLayerAddSubtractionLayer (const char *name=nullptr)
 
IConnectableLayerAddMaximumLayer (const char *name=nullptr)
 
IConnectableLayerAddMeanLayer (const MeanDescriptor &meanDescriptor, const char *name=nullptr)
 
IConnectableLayerAddPadLayer (const PadDescriptor &padDescriptor, const char *name=nullptr)
 
IConnectableLayerAddQuantizeLayer (const char *name=nullptr)
 
IConnectableLayerAddStridedSliceLayer (const StridedSliceDescriptor &stridedSliceDescriptor, const char *name=nullptr)
 
IConnectableLayerAddMinimumLayer (const char *name=nullptr)
 
IConnectableLayerAddGreaterLayer (const char *name=nullptr)
 
IConnectableLayerAddEqualLayer (const char *name=nullptr)
 
IConnectableLayerAddRsqrtLayer (const char *name=nullptr)
 
IConnectableLayerAddMergeLayer (const char *name=nullptr)
 
IConnectableLayerAddSwitchLayer (const char *name=nullptr)
 
IConnectableLayerAddPreluLayer (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)
 
IConnectableLayerAddStackLayer (const StackDescriptor &stackDescriptor, const char *name=nullptr)
 
IConnectableLayerAddStandInLayer (const StandInDescriptor &descriptor, const char *name=nullptr)
 
IConnectableLayerAddQLstmLayer (const QLstmDescriptor &descriptor, const LstmInputParams &params, const char *name=nullptr)
 
IConnectableLayerAddQuantizedLstmLayer (const QuantizedLstmInputParams &params, const char *name=nullptr)
 
IConnectableLayerAddLogicalBinaryLayer (const LogicalBinaryDescriptor &logicalBinaryDescriptor, const char *name=nullptr)
 
void Accept (ILayerVisitor &visitor) const
 
void ExecuteStrategy (IStrategy &strategy) const
 

Detailed Description

Private implementation of INetwork.

Definition at line 31 of file Network.hpp.

Constructor & Destructor Documentation

◆ NetworkImpl()

NetworkImpl ( NetworkOptions  networkOptions = {})

Definition at line 1667 of file Network.cpp.

1668 : m_NetworkOptions(networkOptions),
1669  m_Graph(std::make_unique<Graph>(GetShapeInferenceMethod()))
1670 {}

◆ ~NetworkImpl()

Definition at line 1672 of file Network.cpp.

1673 {
1674 }

Member Function Documentation

◆ Accept()

void Accept ( ILayerVisitor visitor) const

Definition at line 2505 of file Network.cpp.

References NetworkImpl::GetGraph().

Referenced by NetworkImpl::GetGraph().

2506 {
2507  for (auto layer : GetGraph())
2508  {
2509  layer->Accept(visitor);
2510  };
2511 }
const Graph & GetGraph() const
Definition: Network.hpp:37

◆ AddAbsLayer()

IConnectableLayer * AddAbsLayer ( const char *  name = nullptr)

Definition at line 1942 of file Network.cpp.

References armnn::Abs, and NetworkImpl::AddElementwiseUnaryLayer().

Referenced by NetworkImpl::GetGraph().

1943 {
1944  return AddElementwiseUnaryLayer(ElementwiseUnaryDescriptor(UnaryOperation::Abs), name);
1945 }
IConnectableLayer * AddElementwiseUnaryLayer(const ElementwiseUnaryDescriptor &elementwiseUnaryDescriptor, const char *name=nullptr)
Definition: Network.cpp:1699

◆ AddActivationLayer()

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

Definition at line 1890 of file Network.cpp.

Referenced by BOOST_AUTO_TEST_CASE(), and NetworkImpl::GetGraph().

1892 {
1893  return m_Graph->AddLayer<ActivationLayer>(activationDescriptor, name);
1894 }

◆ AddAdditionLayer()

IConnectableLayer * AddAdditionLayer ( const char *  name = nullptr)

Definition at line 1947 of file Network.cpp.

Referenced by BOOST_AUTO_TEST_CASE(), armnn::BOOST_AUTO_TEST_CASE(), and NetworkImpl::GetGraph().

1948 {
1949  return m_Graph->AddLayer<AdditionLayer>(name);
1950 }

◆ AddArgMinMaxLayer()

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

Definition at line 1896 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

1898 {
1899  return m_Graph->AddLayer<ArgMinMaxLayer>(argMinMaxDescriptor, name);
1900 }

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

References BatchNormalizationLayer::m_Mean.

Referenced by BOOST_AUTO_TEST_CASE(), armnn::BOOST_AUTO_TEST_CASE(), and NetworkImpl::GetGraph().

1968 {
1969  const auto layer = m_Graph->AddLayer<BatchNormalizationLayer>(desc, name);
1970 
1971  layer->m_Mean = std::make_unique<ScopedCpuTensorHandle>(mean);
1972  layer->m_Variance = std::make_unique<ScopedCpuTensorHandle>(variance);
1973  layer->m_Beta = std::make_unique<ScopedCpuTensorHandle>(beta);
1974  layer->m_Gamma = std::make_unique<ScopedCpuTensorHandle>(gamma);
1975 
1976  return layer;
1977 }

◆ AddBatchToSpaceNdLayer()

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

Definition at line 1687 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

1689 {
1690  return m_Graph->AddLayer<BatchToSpaceNdLayer>(batchToSpaceNdDescriptor, name);
1691 }

◆ AddComparisonLayer()

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

Definition at line 1693 of file Network.cpp.

Referenced by NetworkImpl::AddEqualLayer(), NetworkImpl::AddGreaterLayer(), and NetworkImpl::GetGraph().

1695 {
1696  return m_Graph->AddLayer<ComparisonLayer>(comparisonDescriptor, name);
1697 }

◆ AddConcatLayer()

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

◆ AddConstantLayer()

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

Definition at line 2027 of file Network.cpp.

References ConstantLayer::m_LayerOutput.

Referenced by armnn::BOOST_AUTO_TEST_CASE(), and NetworkImpl::GetGraph().

2028 {
2029  auto layer = m_Graph->AddLayer<ConstantLayer>(name);
2030 
2031  layer->m_LayerOutput = std::make_unique<ScopedCpuTensorHandle>(input);
2032 
2033  return layer;
2034 }

◆ AddConvolution2dLayer() [1/3]

IConnectableLayer * AddConvolution2dLayer ( const Convolution2dDescriptor convolution2dDescriptor,
const ConstTensor weights,
const Optional< ConstTensor > &  biases,
const char *  name = nullptr 
)

Definition at line 1786 of file Network.cpp.

Referenced by BOOST_AUTO_TEST_CASE(), armnn::BOOST_AUTO_TEST_CASE(), and NetworkImpl::GetGraph().

1790 {
1791  return AddConvolution2dLayerImpl(convolution2dDescriptor, weights, biases, name);
1792 }

◆ AddConvolution2dLayer() [2/3]

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

Definition at line 1794 of file Network.cpp.

1797 {
1798  Optional<ConstTensor> biases;
1799  return AddConvolution2dLayerImpl(convolution2dDescriptor, weights, biases, name);
1800 }

◆ AddConvolution2dLayer() [3/3]

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

Definition at line 1802 of file Network.cpp.

References OptionalBase::has_value(), DepthwiseConvolution2dDescriptor::m_BiasEnabled, DepthwiseConvolution2dLayer::m_Weight, and OptionalReferenceSwitch< std::is_reference< T >::value, T >::value().

1806 {
1807  Optional<ConstTensor> optionalBiases(biases);
1808  return AddConvolution2dLayerImpl(convolution2dDescriptor, weights, optionalBiases, name);
1809 }

◆ AddDepthToSpaceLayer()

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

Definition at line 1834 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

1836 {
1837  return m_Graph->AddLayer<DepthToSpaceLayer>(depthToSpaceDescriptor, name);
1838 }

◆ AddDepthwiseConvolution2dLayer() [1/3]

IConnectableLayer * AddDepthwiseConvolution2dLayer ( const DepthwiseConvolution2dDescriptor convolution2dDescriptor,
const ConstTensor weights,
const Optional< ConstTensor > &  biases,
const char *  name = nullptr 
)

Definition at line 1840 of file Network.cpp.

Referenced by armnn::BOOST_AUTO_TEST_CASE(), and NetworkImpl::GetGraph().

1845 {
1846  return AddDepthwiseConvolution2dLayerImpl(convolution2dDescriptor, weights, biases, name);
1847 }

◆ AddDepthwiseConvolution2dLayer() [2/3]

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

Definition at line 1849 of file Network.cpp.

1853 {
1854  Optional<ConstTensor> biases;
1855  return AddDepthwiseConvolution2dLayerImpl(convolution2dDescriptor, weights, biases, name);
1856 }

◆ AddDepthwiseConvolution2dLayer() [3/3]

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

Definition at line 1858 of file Network.cpp.

1863 {
1864  Optional<ConstTensor> optionalBiases(biases);
1865  return AddDepthwiseConvolution2dLayerImpl(convolution2dDescriptor, weights, optionalBiases, name);
1866 }

◆ AddDequantizeLayer()

IConnectableLayer * AddDequantizeLayer ( const char *  name = nullptr)

Definition at line 2225 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2226 {
2227  return m_Graph->AddLayer<DequantizeLayer>(name);
2228 }

◆ AddDetectionPostProcessLayer()

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

Definition at line 1868 of file Network.cpp.

References anchors(), and DetectionPostProcessLayer::m_Anchors.

Referenced by NetworkImpl::GetGraph().

1870 {
1871  const auto layer = m_Graph->AddLayer<DetectionPostProcessLayer>(descriptor, name);
1872 
1873  layer->m_Anchors = std::make_unique<ScopedCpuTensorHandle>(anchors);
1874 
1875  return layer;
1876 }
std::vector< float > anchors({ 0.5f, 0.5f, 1.0f, 1.0f, 0.5f, 0.5f, 1.0f, 1.0f, 0.5f, 0.5f, 1.0f, 1.0f, 0.5f, 10.5f, 1.0f, 1.0f, 0.5f, 10.5f, 1.0f, 1.0f, 0.5f, 100.5f, 1.0f, 1.0f })

◆ AddDivisionLayer()

IConnectableLayer * AddDivisionLayer ( const char *  name = nullptr)

Definition at line 2200 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2201 {
2202  return m_Graph->AddLayer<DivisionLayer>(name);
2203 }

◆ AddElementwiseUnaryLayer()

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

Definition at line 1699 of file Network.cpp.

Referenced by NetworkImpl::AddAbsLayer(), NetworkImpl::AddRsqrtLayer(), and NetworkImpl::GetGraph().

1701 {
1702  return m_Graph->AddLayer<ElementwiseUnaryLayer>(elementwiseUnaryDescriptor, name);
1703 }

◆ AddEqualLayer()

IConnectableLayer * AddEqualLayer ( const char *  name = nullptr)

Definition at line 2241 of file Network.cpp.

References NetworkImpl::AddComparisonLayer(), and armnn::Equal.

Referenced by NetworkImpl::GetGraph().

2242 {
2243  return AddComparisonLayer(ComparisonDescriptor(ComparisonOperation::Equal), name);
2244 }
IConnectableLayer * AddComparisonLayer(const ComparisonDescriptor &comparisonDescriptor, const char *name=nullptr)
Definition: Network.cpp:1693

◆ AddFillLayer()

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

Definition at line 1705 of file Network.cpp.

References OptionalBase::has_value(), FullyConnectedDescriptor::m_BiasEnabled, FullyConnectedLayer::m_Weight, and OptionalReferenceSwitch< std::is_reference< T >::value, T >::value().

Referenced by NetworkImpl::GetGraph().

1707 {
1708  return m_Graph->AddLayer<FillLayer>(fillDescriptor, name);
1709 }

◆ AddFloorLayer()

IConnectableLayer * AddFloorLayer ( const char *  name = nullptr)

Definition at line 2054 of file Network.cpp.

Referenced by BOOST_AUTO_TEST_CASE(), and NetworkImpl::GetGraph().

2055 {
2056  return m_Graph->AddLayer<FloorLayer>(name);
2057 }

◆ AddFullyConnectedLayer() [1/3]

IConnectableLayer * AddFullyConnectedLayer ( const FullyConnectedDescriptor fullyConnectedDescriptor,
const ConstTensor weights,
const Optional< ConstTensor > &  biases,
const char *  name = nullptr 
)

Definition at line 1733 of file Network.cpp.

Referenced by BOOST_AUTO_TEST_CASE(), armnn::BOOST_AUTO_TEST_CASE(), and NetworkImpl::GetGraph().

1737 {
1738  return AddFullyConnectedLayerImpl(fullyConnectedDescriptor, weights, biases, name);
1739 }

◆ AddFullyConnectedLayer() [2/3]

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

Definition at line 1741 of file Network.cpp.

1744 {
1745  Optional<ConstTensor> biases;
1746  return AddFullyConnectedLayerImpl(fullyConnectedDescriptor, weights, biases, name);
1747 }

◆ AddFullyConnectedLayer() [3/3]

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

Definition at line 1749 of file Network.cpp.

1753 {
1754  Optional<ConstTensor> optionalBiases(biases);
1755  return AddFullyConnectedLayerImpl(fullyConnectedDescriptor, weights, optionalBiases, name);
1756 }

◆ AddGatherLayer() [1/2]

IConnectableLayer * AddGatherLayer ( const char *  name = nullptr)

Definition at line 2251 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2252 {
2253  GatherDescriptor gatherDescriptor{};
2254  return AddGatherLayer(gatherDescriptor, name);
2255 }
IConnectableLayer * AddGatherLayer(const char *name=nullptr)
Definition: Network.cpp:2251

◆ AddGatherLayer() [2/2]

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

Definition at line 2257 of file Network.cpp.

2259 {
2260  return m_Graph->AddLayer<GatherLayer>(gatherDescriptor, name);
2261 }

◆ AddGreaterLayer()

IConnectableLayer * AddGreaterLayer ( const char *  name = nullptr)

Definition at line 2236 of file Network.cpp.

References NetworkImpl::AddComparisonLayer(), and armnn::Greater.

Referenced by NetworkImpl::GetGraph().

2237 {
2238  return AddComparisonLayer(ComparisonDescriptor(ComparisonOperation::Greater), name);
2239 }
IConnectableLayer * AddComparisonLayer(const ComparisonDescriptor &comparisonDescriptor, const char *name=nullptr)
Definition: Network.cpp:1693

◆ AddInputLayer()

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

Definition at line 1682 of file Network.cpp.

Referenced by BOOST_AUTO_TEST_CASE(), armnn::BOOST_AUTO_TEST_CASE(), and NetworkImpl::GetGraph().

1683 {
1684  return m_Graph->AddLayer<InputLayer>(id, name);
1685 }

◆ AddInstanceNormalizationLayer()

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

Definition at line 2009 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2011 {
2012  return m_Graph->AddLayer<InstanceNormalizationLayer>(desc, name);
2013 }

◆ AddL2NormalizationLayer()

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

Definition at line 2015 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2017 {
2018  return m_Graph->AddLayer<L2NormalizationLayer>(desc, name);
2019 }

◆ AddLogicalBinaryLayer()

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

Definition at line 2499 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

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

◆ AddLogSoftmaxLayer()

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

Definition at line 2021 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2023 {
2024  return m_Graph->AddLayer<LogSoftmaxLayer>(desc, name);
2025 }

◆ AddLstmLayer()

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

Definition at line 2059 of file Network.cpp.

References LstmLayer::m_BasicParameters, LstmInputParams::m_CellBias, LstmInputParams::m_CellLayerNormWeights, LstmInputParams::m_CellToForgetWeights, LstmInputParams::m_CellToInputWeights, LstmInputParams::m_CellToOutputWeights, 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, LstmInputParams::m_OutputGateBias, LstmInputParams::m_OutputLayerNormWeights, LstmInputParams::m_ProjectionBias, LstmInputParams::m_ProjectionWeights, LstmInputParams::m_RecurrentToCellWeights, LstmInputParams::m_RecurrentToForgetWeights, LstmInputParams::m_RecurrentToInputWeights, and LstmInputParams::m_RecurrentToOutputWeights.

Referenced by armnn::BOOST_AUTO_TEST_CASE(), and NetworkImpl::GetGraph().

2062 {
2063  const auto layer = m_Graph->AddLayer<LstmLayer>(descriptor, name);
2064 
2065  //Lstm Basic Parameters
2066  layer->m_BasicParameters.m_InputToForgetWeights =
2067  std::make_unique<ScopedCpuTensorHandle>(*(params.m_InputToForgetWeights));
2068  layer->m_BasicParameters.m_InputToCellWeights =
2069  std::make_unique<ScopedCpuTensorHandle>(*(params.m_InputToCellWeights));
2070  layer->m_BasicParameters.m_InputToOutputWeights =
2071  std::make_unique<ScopedCpuTensorHandle>(*(params.m_InputToOutputWeights));
2072  layer->m_BasicParameters.m_RecurrentToForgetWeights =
2073  std::make_unique<ScopedCpuTensorHandle>(*(params.m_RecurrentToForgetWeights));
2074  layer->m_BasicParameters.m_RecurrentToCellWeights =
2075  std::make_unique<ScopedCpuTensorHandle>(*(params.m_RecurrentToCellWeights));
2076  layer->m_BasicParameters.m_RecurrentToOutputWeights =
2077  std::make_unique<ScopedCpuTensorHandle>(*(params.m_RecurrentToOutputWeights));
2078  layer->m_BasicParameters.m_ForgetGateBias =
2079  std::make_unique<ScopedCpuTensorHandle>(*(params.m_ForgetGateBias));
2080  layer->m_BasicParameters.m_CellBias =
2081  std::make_unique<ScopedCpuTensorHandle>(*(params.m_CellBias));
2082  layer->m_BasicParameters.m_OutputGateBias =
2083  std::make_unique<ScopedCpuTensorHandle>(*(params.m_OutputGateBias));
2084 
2085  //Lstm Cifg parameters
2086  if(!descriptor.m_CifgEnabled)
2087  {
2088  if(params.m_InputToInputWeights == nullptr)
2089  {
2090  throw InvalidArgumentException("AddLstmLayer: Input To Input Weights cannot be NULL "
2091  "when CIFG is disabled.");
2092  }
2093  if(params.m_RecurrentToInputWeights == nullptr)
2094  {
2095  throw InvalidArgumentException(
2096  "AddLstmLayer: Recurrent To Input Weights cannot be NULL "
2097  "when CIFG is disabled.");
2098  }
2099  if(params.m_InputGateBias == nullptr)
2100  {
2101  throw InvalidArgumentException("AddLstmLayer: Input Gate Bias cannot be NULL "
2102  "when CIFG is disabled.");
2103  }
2104  layer->m_CifgParameters.m_InputToInputWeights =
2105  std::make_unique<ScopedCpuTensorHandle>(*(params.m_InputToInputWeights));
2106  layer->m_CifgParameters.m_RecurrentToInputWeights =
2107  std::make_unique<ScopedCpuTensorHandle>(*(params.m_RecurrentToInputWeights));
2108  layer->m_CifgParameters.m_InputGateBias =
2109  std::make_unique<ScopedCpuTensorHandle>(*(params.m_InputGateBias));
2110  }
2111 
2112  //Lstm projection parameters
2113  if(descriptor.m_ProjectionEnabled)
2114  {
2115  if(params.m_ProjectionWeights == nullptr)
2116  {
2117  throw InvalidArgumentException("AddLstmLayer: Projection Weights cannot be NULL "
2118  "when projection is enabled.");
2119  }
2120  layer->m_ProjectionParameters.m_ProjectionWeights =
2121  std::make_unique<ScopedCpuTensorHandle>(*(params.m_ProjectionWeights));
2122  if(params.m_ProjectionBias != nullptr)
2123  {
2124  layer->m_ProjectionParameters.m_ProjectionBias =
2125  std::make_unique<ScopedCpuTensorHandle>(*(params.m_ProjectionBias));
2126  }
2127  }
2128 
2129  //Lstm Peephole params
2130  if(descriptor.m_PeepholeEnabled)
2131  {
2132  if(!descriptor.m_CifgEnabled)
2133  {
2134  if(params.m_CellToInputWeights == nullptr)
2135  {
2136  throw InvalidArgumentException("AddLstmLayer: Cell To Input Weights cannot be NULL "
2137  "when Peephole is enabled and CIFG disabled.");
2138  }
2139 
2140  layer->m_PeepholeParameters.m_CellToInputWeights =
2141  std::make_unique<ScopedCpuTensorHandle>(*(params.m_CellToInputWeights));
2142  }
2143 
2144  if(params.m_CellToForgetWeights == nullptr)
2145  {
2146  throw InvalidArgumentException("AddLstmLayer: Cell To Forget Weights cannot be NULL "
2147  "when Peephole is enabled.");
2148  }
2149  if(params.m_CellToOutputWeights == nullptr)
2150  {
2151  throw InvalidArgumentException("AddLstmLayer: Cell To Output Weights cannot be NULL "
2152  "when Peephole is enabled.");
2153  }
2154 
2155  layer->m_PeepholeParameters.m_CellToForgetWeights =
2156  std::make_unique<ScopedCpuTensorHandle>(*(params.m_CellToForgetWeights));
2157  layer->m_PeepholeParameters.m_CellToOutputWeights =
2158  std::make_unique<ScopedCpuTensorHandle>(*(params.m_CellToOutputWeights));
2159  }
2160 
2161  //Lstm Layer Normalization params
2162  if(descriptor.m_LayerNormEnabled)
2163  {
2164  if(!descriptor.m_CifgEnabled)
2165  {
2166  if(params.m_InputLayerNormWeights == nullptr)
2167  {
2168  throw InvalidArgumentException("AddLstmLayer: Input layer normalization weights cannot be NULL "
2169  "when layer normalization is enabled and CIFG disabled.");
2170  }
2171  layer->m_LayerNormParameters.m_InputLayerNormWeights =
2172  std::make_unique<ScopedCpuTensorHandle>(*(params.m_InputLayerNormWeights));
2173  }
2174 
2175  if(params.m_ForgetLayerNormWeights == nullptr)
2176  {
2177  throw InvalidArgumentException("AddLstmLayer: Forget layer normalization weights cannot be NULL "
2178  "when layer normalization is enabled.");
2179  }
2180  if(params.m_CellLayerNormWeights == nullptr)
2181  {
2182  throw InvalidArgumentException("AddLstmLayer: Cell layer normalization weights cannot be NULL "
2183  "when layer normalization is enabled.");
2184  }
2185  if(params.m_OutputLayerNormWeights == nullptr)
2186  {
2187  throw InvalidArgumentException("AddLstmLayer: Output layer normalization weights cannot be NULL "
2188  "when layer normalization is enabled.");
2189  }
2190  layer->m_LayerNormParameters.m_ForgetLayerNormWeights =
2191  std::make_unique<ScopedCpuTensorHandle>(*(params.m_ForgetLayerNormWeights));
2192  layer->m_LayerNormParameters.m_CellLayerNormWeights =
2193  std::make_unique<ScopedCpuTensorHandle>(*(params.m_CellLayerNormWeights));
2194  layer->m_LayerNormParameters.m_OutputLayerNormWeights =
2195  std::make_unique<ScopedCpuTensorHandle>(*(params.m_OutputLayerNormWeights));
2196  }
2197  return layer;
2198 }

◆ AddMaximumLayer()

IConnectableLayer * AddMaximumLayer ( const char *  name = nullptr)

Definition at line 1926 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

1927 {
1928  return m_Graph->AddLayer<MaximumLayer>(name);
1929 }

◆ AddMeanLayer()

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

Definition at line 2210 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2211 {
2212  return m_Graph->AddLayer<MeanLayer>(meanDescriptor,name);
2213 }

◆ AddMergeLayer()

IConnectableLayer * AddMergeLayer ( const char *  name = nullptr)

Definition at line 2263 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2264 {
2265  return m_Graph->AddLayer<MergeLayer>(name);
2266 }

◆ AddMergerLayer()

IConnectableLayer * AddMergerLayer ( const MergerDescriptor mergerDescriptor,
const char *  name = nullptr 
)

Definition at line 1936 of file Network.cpp.

References NetworkImpl::AddConcatLayer().

Referenced by NetworkImpl::GetGraph().

1938 {
1939  return AddConcatLayer(mergerDescriptor, name);
1940 }
IConnectableLayer * AddConcatLayer(const ConcatDescriptor &concatDescriptor, const char *name=nullptr)
Definition: Network.cpp:1758

◆ AddMinimumLayer()

IConnectableLayer * AddMinimumLayer ( const char *  name = nullptr)

Definition at line 1931 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

1932 {
1933  return m_Graph->AddLayer<MinimumLayer>(name);
1934 }

◆ AddMultiplicationLayer()

IConnectableLayer * AddMultiplicationLayer ( const char *  name = nullptr)

Definition at line 1952 of file Network.cpp.

Referenced by BOOST_AUTO_TEST_CASE(), and NetworkImpl::GetGraph().

1953 {
1954  return m_Graph->AddLayer<MultiplicationLayer>(name);
1955 }

◆ AddNormalizationLayer()

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

Definition at line 1902 of file Network.cpp.

Referenced by BOOST_AUTO_TEST_CASE(), and NetworkImpl::GetGraph().

1905 {
1906  return m_Graph->AddLayer<NormalizationLayer>(normalizationDescriptor, name);
1907 }

◆ AddOutputLayer()

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

Definition at line 1957 of file Network.cpp.

Referenced by BOOST_AUTO_TEST_CASE(), armnn::BOOST_AUTO_TEST_CASE(), and NetworkImpl::GetGraph().

1958 {
1959  return m_Graph->AddLayer<OutputLayer>(id, name);
1960 }

◆ AddPadLayer()

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

Definition at line 2215 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2216 {
2217  return m_Graph->AddLayer<PadLayer>(padDescriptor,name);
2218 }

◆ AddPermuteLayer()

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

Definition at line 1878 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

1880 {
1881  return m_Graph->AddLayer<PermuteLayer>(permuteDescriptor, name);
1882 }

◆ AddPooling2dLayer()

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

Definition at line 1884 of file Network.cpp.

Referenced by BOOST_AUTO_TEST_CASE(), and NetworkImpl::GetGraph().

1886 {
1887  return m_Graph->AddLayer<Pooling2dLayer>(pooling2dDescriptor, name);
1888 }

◆ AddPreluLayer()

IConnectableLayer * AddPreluLayer ( const char *  name = nullptr)

Definition at line 2273 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2274 {
2275  return m_Graph->AddLayer<PreluLayer>(name);
2276 }

◆ AddQLstmLayer()

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

Definition at line 2357 of file Network.cpp.

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

Referenced by armnn::BOOST_AUTO_TEST_CASE(), and NetworkImpl::GetGraph().

2360 {
2361  const auto layer = m_Graph->AddLayer<QLstmLayer>(descriptor, name);
2362 
2363  // QLstm Basic Parameters
2364  layer->m_BasicParameters.m_InputToForgetWeights =
2365  std::make_unique<ScopedCpuTensorHandle>(*(params.m_InputToForgetWeights));
2366  layer->m_BasicParameters.m_InputToCellWeights =
2367  std::make_unique<ScopedCpuTensorHandle>(*(params.m_InputToCellWeights));
2368  layer->m_BasicParameters.m_InputToOutputWeights =
2369  std::make_unique<ScopedCpuTensorHandle>(*(params.m_InputToOutputWeights));
2370  layer->m_BasicParameters.m_RecurrentToForgetWeights =
2371  std::make_unique<ScopedCpuTensorHandle>(*(params.m_RecurrentToForgetWeights));
2372  layer->m_BasicParameters.m_RecurrentToCellWeights =
2373  std::make_unique<ScopedCpuTensorHandle>(*(params.m_RecurrentToCellWeights));
2374  layer->m_BasicParameters.m_RecurrentToOutputWeights =
2375  std::make_unique<ScopedCpuTensorHandle>(*(params.m_RecurrentToOutputWeights));
2376  layer->m_BasicParameters.m_ForgetGateBias =
2377  std::make_unique<ScopedCpuTensorHandle>(*(params.m_ForgetGateBias));
2378  layer->m_BasicParameters.m_CellBias =
2379  std::make_unique<ScopedCpuTensorHandle>(*(params.m_CellBias));
2380  layer->m_BasicParameters.m_OutputGateBias =
2381  std::make_unique<ScopedCpuTensorHandle>(*(params.m_OutputGateBias));
2382 
2383  // QLstm Cifg parameters
2384  if(!descriptor.m_CifgEnabled)
2385  {
2386  if(params.m_InputToInputWeights == nullptr)
2387  {
2388  throw InvalidArgumentException("AddQLstmLayer: Input To Input Weights cannot be NULL");
2389  }
2390 
2391  if(params.m_RecurrentToInputWeights == nullptr)
2392  {
2393  throw InvalidArgumentException(
2394  "AddQLstmLayer: Recurrent To Input Weights cannot be NULL");
2395  }
2396 
2397  if(params.m_InputGateBias == nullptr)
2398  {
2399  throw InvalidArgumentException("AddQLstmLayer: Input Gate Bias cannot be NULL");
2400  }
2401 
2402  layer->m_CifgParameters.m_InputToInputWeights =
2403  std::make_unique<ScopedCpuTensorHandle>(*(params.m_InputToInputWeights));
2404  layer->m_CifgParameters.m_RecurrentToInputWeights =
2405  std::make_unique<ScopedCpuTensorHandle>(*(params.m_RecurrentToInputWeights));
2406  layer->m_CifgParameters.m_InputGateBias =
2407  std::make_unique<ScopedCpuTensorHandle>(*(params.m_InputGateBias));
2408  }
2409 
2410  // QLstm Projection parameters
2411  if(descriptor.m_ProjectionEnabled)
2412  {
2413  if(params.m_ProjectionWeights == nullptr)
2414  {
2415  throw InvalidArgumentException("AddQLstmLayer: Projection Weights cannot be NULL");
2416  }
2417 
2418  layer->m_ProjectionParameters.m_ProjectionWeights =
2419  std::make_unique<ScopedCpuTensorHandle>(*(params.m_ProjectionWeights));
2420 
2421  // Projection bias is optional even if projection is enabled
2422  if(params.m_ProjectionWeights != nullptr)
2423  {
2424  layer->m_ProjectionParameters.m_ProjectionBias =
2425  std::make_unique<ScopedCpuTensorHandle>(*(params.m_ProjectionBias));
2426  }
2427 
2428  }
2429 
2430  // QLstm Peephole params
2431  if(descriptor.m_PeepholeEnabled)
2432  {
2433  if(params.m_CellToForgetWeights == nullptr)
2434  {
2435  throw InvalidArgumentException("AddQLstmLayer: Cell To Forget Weights cannot be NULL");
2436  }
2437 
2438  if(params.m_CellToOutputWeights == nullptr)
2439  {
2440  throw InvalidArgumentException("AddQLstmLayer: Cell To Output Weights cannot be NULL");
2441  }
2442 
2443  if(!descriptor.m_CifgEnabled)
2444  {
2445  if(params.m_CellToInputWeights == nullptr)
2446  {
2447  throw InvalidArgumentException("AddQLstmLayer: Cell To Input Weights cannot be NULL");
2448  }
2449 
2450  layer->m_PeepholeParameters.m_CellToInputWeights =
2451  std::make_unique<ScopedCpuTensorHandle>(*(params.m_CellToInputWeights));
2452  }
2453 
2454  layer->m_PeepholeParameters.m_CellToForgetWeights =
2455  std::make_unique<ScopedCpuTensorHandle>(*(params.m_CellToForgetWeights));
2456  layer->m_PeepholeParameters.m_CellToOutputWeights =
2457  std::make_unique<ScopedCpuTensorHandle>(*(params.m_CellToOutputWeights));
2458  }
2459 
2460  // QLstm Layer Normalization params
2461  if(descriptor.m_LayerNormEnabled)
2462  {
2463  if(params.m_ForgetLayerNormWeights == nullptr)
2464  {
2465  throw InvalidArgumentException("AddQLstmLayer: Forget layer normalization weights cannot be NULL");
2466  }
2467 
2468  if(params.m_CellLayerNormWeights == nullptr)
2469  {
2470  throw InvalidArgumentException("AddQLstmLayer: Cell layer normalization weights cannot be NULL");
2471  }
2472 
2473  if(params.m_OutputLayerNormWeights == nullptr)
2474  {
2475  throw InvalidArgumentException("AddQLstmLayer: Output layer normalization weights cannot be NULL");
2476  }
2477 
2478  if(!descriptor.m_CifgEnabled)
2479  {
2480  if(params.m_InputLayerNormWeights == nullptr)
2481  {
2482  throw InvalidArgumentException("AddQLstmLayer: Input layer normalization weights cannot be NULL");
2483  }
2484 
2485  layer->m_LayerNormParameters.m_InputLayerNormWeights =
2486  std::make_unique<ScopedCpuTensorHandle>(*(params.m_InputLayerNormWeights));
2487  }
2488 
2489  layer->m_LayerNormParameters.m_ForgetLayerNormWeights =
2490  std::make_unique<ScopedCpuTensorHandle>(*(params.m_ForgetLayerNormWeights));
2491  layer->m_LayerNormParameters.m_CellLayerNormWeights =
2492  std::make_unique<ScopedCpuTensorHandle>(*(params.m_CellLayerNormWeights));
2493  layer->m_LayerNormParameters.m_OutputLayerNormWeights =
2494  std::make_unique<ScopedCpuTensorHandle>(*(params.m_OutputLayerNormWeights));
2495  }
2496  return layer;
2497 }

◆ AddQuantizedLstmLayer()

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

Definition at line 2319 of file Network.cpp.

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.

Referenced by armnn::BOOST_AUTO_TEST_CASE(), and NetworkImpl::GetGraph().

2321 {
2322  const auto layer = m_Graph->AddLayer<QuantizedLstmLayer>(name);
2323 
2324  // InputToX weights
2325  layer->m_QuantizedLstmParameters.m_InputToInputWeights =
2326  std::make_unique<ScopedCpuTensorHandle>(params.GetInputToInputWeights());
2327  layer->m_QuantizedLstmParameters.m_InputToForgetWeights =
2328  std::make_unique<ScopedCpuTensorHandle>(params.GetInputToForgetWeights());
2329  layer->m_QuantizedLstmParameters.m_InputToCellWeights =
2330  std::make_unique<ScopedCpuTensorHandle>(params.GetInputToCellWeights());
2331  layer->m_QuantizedLstmParameters.m_InputToOutputWeights =
2332  std::make_unique<ScopedCpuTensorHandle>(params.GetInputToOutputWeights());
2333 
2334  // RecurrentToX weights
2335  layer->m_QuantizedLstmParameters.m_RecurrentToInputWeights =
2336  std::make_unique<ScopedCpuTensorHandle>(params.GetRecurrentToInputWeights());
2337  layer->m_QuantizedLstmParameters.m_RecurrentToForgetWeights =
2338  std::make_unique<ScopedCpuTensorHandle>(params.GetRecurrentToForgetWeights());
2339  layer->m_QuantizedLstmParameters.m_RecurrentToCellWeights =
2340  std::make_unique<ScopedCpuTensorHandle>(params.GetRecurrentToCellWeights());
2341  layer->m_QuantizedLstmParameters.m_RecurrentToOutputWeights =
2342  std::make_unique<ScopedCpuTensorHandle>(params.GetRecurrentToOutputWeights());
2343 
2344  // Bias
2345  layer->m_QuantizedLstmParameters.m_InputGateBias =
2346  std::make_unique<ScopedCpuTensorHandle>(params.GetInputGateBias());
2347  layer->m_QuantizedLstmParameters.m_ForgetGateBias =
2348  std::make_unique<ScopedCpuTensorHandle>(params.GetForgetGateBias());
2349  layer->m_QuantizedLstmParameters.m_CellBias =
2350  std::make_unique<ScopedCpuTensorHandle>(params.GetCellBias());
2351  layer->m_QuantizedLstmParameters.m_OutputGateBias =
2352  std::make_unique<ScopedCpuTensorHandle>(params.GetOutputGateBias());
2353 
2354  return layer;
2355 }

◆ AddQuantizeLayer()

IConnectableLayer * AddQuantizeLayer ( const char *  name = nullptr)

Definition at line 2220 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2221 {
2222  return m_Graph->AddLayer<QuantizeLayer>(name);
2223 }

◆ AddRankLayer()

IConnectableLayer * AddRankLayer ( const char *  name = nullptr)

Definition at line 1979 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

1980 {
1981  return m_Graph->AddLayer<RankLayer>(name);
1982 }

◆ AddReduceLayer()

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

Definition at line 1984 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

1986 {
1987  return m_Graph->AddLayer<ReduceLayer>(reduceDescriptor, name);
1988 }

◆ AddReshapeLayer()

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

Definition at line 2036 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2038 {
2039  return m_Graph->AddLayer<ReshapeLayer>(reshapeDescriptor, name);
2040 }

◆ AddResizeBilinearLayer()

IConnectableLayer * AddResizeBilinearLayer ( const ResizeBilinearDescriptor resizeDesc,
const char *  name = nullptr 
)

Definition at line 1990 of file Network.cpp.

References armnn::Bilinear, ResizeBilinearDescriptor::m_AlignCorners, ResizeDescriptor::m_AlignCorners, ResizeBilinearDescriptor::m_DataLayout, ResizeDescriptor::m_DataLayout, ResizeBilinearDescriptor::m_HalfPixelCenters, ResizeDescriptor::m_HalfPixelCenters, ResizeDescriptor::m_Method, ResizeBilinearDescriptor::m_TargetHeight, ResizeDescriptor::m_TargetHeight, ResizeBilinearDescriptor::m_TargetWidth, and ResizeDescriptor::m_TargetWidth.

Referenced by NetworkImpl::GetGraph().

1992 {
1993  ResizeDescriptor resizeDescriptor;
1994  resizeDescriptor.m_Method = ResizeMethod::Bilinear;
1995  resizeDescriptor.m_DataLayout = descriptor.m_DataLayout;
1996  resizeDescriptor.m_TargetWidth = descriptor.m_TargetWidth;
1997  resizeDescriptor.m_TargetHeight = descriptor.m_TargetHeight;
1998  resizeDescriptor.m_AlignCorners = descriptor.m_AlignCorners;
1999  resizeDescriptor.m_HalfPixelCenters = descriptor.m_HalfPixelCenters;
2000 
2001  return m_Graph->AddLayer<ResizeLayer>(resizeDescriptor, name);
2002 }

◆ AddResizeLayer()

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

Definition at line 2004 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2005 {
2006  return m_Graph->AddLayer<ResizeLayer>(resizeDescriptor, name);
2007 }

◆ AddRsqrtLayer()

IConnectableLayer * AddRsqrtLayer ( const char *  name = nullptr)

Definition at line 2246 of file Network.cpp.

References NetworkImpl::AddElementwiseUnaryLayer(), and armnn::Rsqrt.

Referenced by NetworkImpl::GetGraph().

2247 {
2248  return AddElementwiseUnaryLayer(ElementwiseUnaryDescriptor(UnaryOperation::Rsqrt), name);
2249 }
IConnectableLayer * AddElementwiseUnaryLayer(const ElementwiseUnaryDescriptor &elementwiseUnaryDescriptor, const char *name=nullptr)
Definition: Network.cpp:1699

◆ AddSliceLayer()

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

Definition at line 1909 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

1910 {
1911  return m_Graph->AddLayer<SliceLayer>(sliceDescriptor, name);
1912 }

◆ AddSoftmaxLayer()

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

Definition at line 1914 of file Network.cpp.

Referenced by BOOST_AUTO_TEST_CASE(), and NetworkImpl::GetGraph().

1916 {
1917  return m_Graph->AddLayer<SoftmaxLayer>(softmaxDescriptor, name);
1918 }

◆ AddSpaceToBatchNdLayer()

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

Definition at line 2042 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2044 {
2045  return m_Graph->AddLayer<SpaceToBatchNdLayer>(spaceToBatchNdDescriptor, name);
2046 }

◆ AddSpaceToDepthLayer()

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

Definition at line 2048 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2050 {
2051  return m_Graph->AddLayer<SpaceToDepthLayer>(spaceToDepthDescriptor, name);
2052 }

◆ AddSplitterLayer()

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

Definition at line 1920 of file Network.cpp.

Referenced by BOOST_AUTO_TEST_CASE(), and NetworkImpl::GetGraph().

1922 {
1923  return m_Graph->AddLayer<SplitterLayer>(splitterDescriptor, name);
1924 }

◆ AddStackLayer()

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

Definition at line 2306 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2308 {
2309  return m_Graph->AddLayer<StackLayer>(stackDescriptor, name);
2310 }

◆ AddStandInLayer()

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

Definition at line 2313 of file Network.cpp.

Referenced by BOOST_AUTO_TEST_CASE(), and NetworkImpl::GetGraph().

2315 {
2316  return m_Graph->AddLayer<StandInLayer>(desc, name);
2317 }

◆ AddStridedSliceLayer()

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

Definition at line 2230 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2232 {
2233  return m_Graph->AddLayer<StridedSliceLayer>(stridedSliceDescriptor, name);
2234 }

◆ AddSubtractionLayer()

IConnectableLayer * AddSubtractionLayer ( const char *  name = nullptr)

Definition at line 2205 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2206 {
2207  return m_Graph->AddLayer<SubtractionLayer>(name);
2208 }

◆ AddSwitchLayer()

IConnectableLayer * AddSwitchLayer ( const char *  name = nullptr)

Definition at line 2268 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2269 {
2270  return m_Graph->AddLayer<SwitchLayer>(name);
2271 }

◆ AddTransposeConvolution2dLayer()

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

Definition at line 2278 of file Network.cpp.

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

Referenced by NetworkImpl::GetGraph().

2282 {
2283  if (descriptor.m_BiasEnabled && !biases.has_value())
2284  {
2285  throw InvalidArgumentException("AddTransposeConvolution2dLayer: Biases cannot be empty");
2286  }
2287 
2288  const auto layer = m_Graph->AddLayer<TransposeConvolution2dLayer>(descriptor, name);
2289 
2290  layer->m_Weight = std::make_unique<ScopedCpuTensorHandle>(weights);
2291 
2292  if (descriptor.m_BiasEnabled)
2293  {
2294  layer->m_Bias = std::make_unique<ScopedCpuTensorHandle>(biases.value());
2295  }
2296 
2297  return layer;
2298 }

◆ AddTransposeLayer()

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

Definition at line 2300 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2302 {
2303  return m_Graph->AddLayer<TransposeLayer>(transposeDescriptor, name);
2304 }

◆ ExecuteStrategy()

void ExecuteStrategy ( IStrategy strategy) const

Definition at line 2513 of file Network.cpp.

References NetworkImpl::GetGraph().

Referenced by NetworkImpl::GetGraph().

2514 {
2515  for (auto layer : GetGraph())
2516  {
2517  layer->ExecuteStrategy(strategy);
2518  };
2519 }
const Graph & GetGraph() const
Definition: Network.hpp:37

◆ GetGraph()

const Graph& GetGraph ( ) const
inline

Definition at line 37 of file Network.hpp.

References NetworkImpl::Accept(), NetworkImpl::AddAbsLayer(), NetworkImpl::AddActivationLayer(), NetworkImpl::AddAdditionLayer(), NetworkImpl::AddArgMinMaxLayer(), NetworkImpl::AddBatchNormalizationLayer(), NetworkImpl::AddBatchToSpaceNdLayer(), NetworkImpl::AddComparisonLayer(), NetworkImpl::AddConcatLayer(), NetworkImpl::AddConstantLayer(), NetworkImpl::AddConvolution2dLayer(), NetworkImpl::AddDepthToSpaceLayer(), NetworkImpl::AddDepthwiseConvolution2dLayer(), NetworkImpl::AddDequantizeLayer(), NetworkImpl::AddDetectionPostProcessLayer(), NetworkImpl::AddDivisionLayer(), NetworkImpl::AddElementwiseUnaryLayer(), NetworkImpl::AddEqualLayer(), NetworkImpl::AddFillLayer(), NetworkImpl::AddFloorLayer(), NetworkImpl::AddFullyConnectedLayer(), NetworkImpl::AddGatherLayer(), NetworkImpl::AddGreaterLayer(), NetworkImpl::AddInputLayer(), NetworkImpl::AddInstanceNormalizationLayer(), NetworkImpl::AddL2NormalizationLayer(), NetworkImpl::AddLogicalBinaryLayer(), NetworkImpl::AddLogSoftmaxLayer(), NetworkImpl::AddLstmLayer(), NetworkImpl::AddMaximumLayer(), NetworkImpl::AddMeanLayer(), NetworkImpl::AddMergeLayer(), NetworkImpl::AddMergerLayer(), NetworkImpl::AddMinimumLayer(), NetworkImpl::AddMultiplicationLayer(), NetworkImpl::AddNormalizationLayer(), NetworkImpl::AddOutputLayer(), NetworkImpl::AddPadLayer(), NetworkImpl::AddPermuteLayer(), NetworkImpl::AddPooling2dLayer(), NetworkImpl::AddPreluLayer(), NetworkImpl::AddQLstmLayer(), NetworkImpl::AddQuantizedLstmLayer(), NetworkImpl::AddQuantizeLayer(), NetworkImpl::AddRankLayer(), NetworkImpl::AddReduceLayer(), NetworkImpl::AddReshapeLayer(), NetworkImpl::AddResizeBilinearLayer(), NetworkImpl::AddResizeLayer(), NetworkImpl::AddRsqrtLayer(), NetworkImpl::AddSliceLayer(), NetworkImpl::AddSoftmaxLayer(), NetworkImpl::AddSpaceToBatchNdLayer(), NetworkImpl::AddSpaceToDepthLayer(), NetworkImpl::AddSplitterLayer(), NetworkImpl::AddStackLayer(), NetworkImpl::AddStandInLayer(), NetworkImpl::AddStridedSliceLayer(), NetworkImpl::AddSubtractionLayer(), NetworkImpl::AddSwitchLayer(), NetworkImpl::AddTransposeConvolution2dLayer(), NetworkImpl::AddTransposeLayer(), anchors(), ARMNN_DEPRECATED_MSG, NetworkImpl::ExecuteStrategy(), and NetworkImpl::PrintGraph().

Referenced by NetworkImpl::Accept(), BOOST_AUTO_TEST_CASE(), armnn::BOOST_AUTO_TEST_CASE(), NetworkImpl::ExecuteStrategy(), and armnn::GetInputTensorInfo().

37 { return *m_Graph; }

◆ PrintGraph()

Status PrintGraph ( )

Definition at line 1676 of file Network.cpp.

References armnn::Success.

Referenced by BOOST_AUTO_TEST_CASE(), and NetworkImpl::GetGraph().

1677 {
1678  m_Graph->Print();
1679  return Status::Success;
1680 }

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