ArmNN
 22.08
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)
 
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)
 
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)
 
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)
 
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)
 
IConnectableLayerAddDepthwiseConvolution2dLayer (const DepthwiseConvolution2dDescriptor &convolution2dDescriptor, const ConstTensor &weights, const Optional< ConstTensor > &biases, 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)
 
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)
 
IConnectableLayerAddFullyConnectedLayer (const FullyConnectedDescriptor &fullyConnectedDescriptor, const Optional< ConstTensor > &weights, const Optional< ConstTensor > &biases, 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)
 
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)
 
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 31 of file Network.hpp.

Constructor & Destructor Documentation

◆ NetworkImpl()

NetworkImpl ( NetworkOptions  networkOptions = {})

Definition at line 1905 of file Network.cpp.

1906 : m_NetworkOptions(networkOptions),
1907  m_Graph(std::make_unique<Graph>(GetShapeInferenceMethod(), GetAllowExpandedDims()))
1908 {}

◆ ~NetworkImpl()

Definition at line 1910 of file Network.cpp.

1911 {
1912 }

Member Function Documentation

◆ AddActivationLayer()

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

Definition at line 2168 of file Network.cpp.

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

2170 {
2171  return m_Graph->AddLayer<ActivationLayer>(activationDescriptor, name);
2172 }

◆ AddAdditionLayer()

IConnectableLayer * AddAdditionLayer ( const char *  name = nullptr)

Definition at line 2214 of file Network.cpp.

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

2215 {
2216  return m_Graph->AddLayer<AdditionLayer>(name);
2217 }

◆ AddArgMinMaxLayer()

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

Definition at line 2174 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2176 {
2177  return m_Graph->AddLayer<ArgMinMaxLayer>(argMinMaxDescriptor, name);
2178 }

◆ AddBatchMatMulLayer()

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

Definition at line 2889 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2890 {
2891  return m_Graph->AddLayer<BatchMatMulLayer>(desc, name);
2892 }

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

References BatchNormalizationLayer::m_Mean.

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

2235 {
2236  const auto layer = m_Graph->AddLayer<BatchNormalizationLayer>(desc, name);
2237 
2238  layer->m_Mean = std::make_shared<ScopedTensorHandle>(mean);
2239  layer->m_Variance = std::make_shared<ScopedTensorHandle>(variance);
2240  layer->m_Beta = std::make_shared<ScopedTensorHandle>(beta);
2241  layer->m_Gamma = std::make_shared<ScopedTensorHandle>(gamma);
2242 
2243  return layer;
2244 }

◆ AddBatchToSpaceNdLayer()

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

Definition at line 1925 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

1927 {
1928  return m_Graph->AddLayer<BatchToSpaceNdLayer>(batchToSpaceNdDescriptor, name);
1929 }

◆ AddCastLayer()

IConnectableLayer * AddCastLayer ( const char *  name = nullptr)

Definition at line 1931 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

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

◆ AddChannelShuffleLayer()

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

Definition at line 1935 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

1937 {
1938  return m_Graph->AddLayer<ChannelShuffleLayer>(channelShuffleDescriptor, name);
1939 }

◆ AddComparisonLayer()

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

Definition at line 1941 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

1943 {
1944  return m_Graph->AddLayer<ComparisonLayer>(comparisonDescriptor, name);
1945 }

◆ AddConcatLayer()

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

Definition at line 2041 of file Network.cpp.

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

2043 {
2044  return m_Graph->AddLayer<ConcatLayer>(concatDescriptor, name);
2045 }

◆ AddConstantLayer()

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

Definition at line 2285 of file Network.cpp.

References ConstantLayer::m_LayerOutput.

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

2286 {
2287  auto layer = m_Graph->AddLayer<ConstantLayer>(name);
2288 
2289  layer->m_LayerOutput = std::make_shared<ScopedTensorHandle>(input);
2290 
2291  return layer;
2292 }

◆ AddConvertFp16ToFp32Layer()

IConnectableLayer * AddConvertFp16ToFp32Layer ( const char *  name = nullptr)

Definition at line 2079 of file Network.cpp.

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

2080 {
2081  return m_Graph->AddLayer<ConvertFp16ToFp32Layer>(name);
2082 }

◆ AddConvertFp32ToFp16Layer()

IConnectableLayer * AddConvertFp32ToFp16Layer ( const char *  name = nullptr)

Definition at line 2084 of file Network.cpp.

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

2085 {
2086  return m_Graph->AddLayer<ConvertFp32ToFp16Layer>(name);
2087 }

◆ AddConvolution2dLayer() [1/4]

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

Definition at line 2047 of file Network.cpp.

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

2049 {
2050  return m_Graph->AddLayer<Convolution2dLayer>(convolution2dDescriptor, name);
2051 }

◆ AddConvolution2dLayer() [2/4]

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

Definition at line 2053 of file Network.cpp.

References OutputSlot::Connect(), Layer::GetOutputSlot(), OptionalBase::has_value(), ConstantLayer::m_LayerOutput, OutputSlot::SetTensorInfo(), and OptionalReferenceSwitch< std::is_reference< T >::value, T >::value().

2057 {
2058  auto layer = m_Graph->AddLayer<Convolution2dLayer>(convolution2dDescriptor, name);
2059  // Add a constant layer for weights
2060  ConstantLayer* weightsLayer = m_Graph->AddLayer<ConstantLayer>("Weights");
2061  auto weightsTensorHandle = std::make_shared<ScopedTensorHandle>(weights);
2062  weightsLayer->m_LayerOutput = weightsTensorHandle;
2063  layer->m_Weight = weightsTensorHandle;
2064  weightsLayer->GetOutputSlot(0).SetTensorInfo(weightsLayer->m_LayerOutput->GetTensorInfo());
2065  weightsLayer->GetOutputSlot(0).Connect(layer->GetInputSlot(1));
2066  // Add a constant layer for biases
2067  if (biases.has_value() && convolution2dDescriptor.m_BiasEnabled)
2068  {
2069  ConstantLayer* biasLayer = m_Graph->AddLayer<ConstantLayer>("Bias");
2070  auto biasTensorHandle = std::make_shared<ScopedTensorHandle>(biases.value());
2071  biasLayer->m_LayerOutput = biasTensorHandle;
2072  layer->m_Bias = biasTensorHandle;
2073  biasLayer->GetOutputSlot(0).SetTensorInfo(biasLayer->m_LayerOutput->GetTensorInfo());
2074  biasLayer->GetOutputSlot(0).Connect(layer->GetInputSlot(2));
2075  }
2076  return layer;
2077 }

◆ AddConvolution2dLayer() [3/4]

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

◆ AddConvolution2dLayer() [4/4]

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

◆ AddConvolution3dLayer()

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

Definition at line 2089 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2091 {
2092  return m_Graph->AddLayer<Convolution3dLayer>(convolution3dDescriptor, name);
2093 }

◆ AddDepthToSpaceLayer()

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

Definition at line 2095 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2097 {
2098  return m_Graph->AddLayer<DepthToSpaceLayer>(depthToSpaceDescriptor, name);
2099 }

◆ AddDepthwiseConvolution2dLayer() [1/2]

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

Definition at line 2101 of file Network.cpp.

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

2104 {
2105  return m_Graph->AddLayer<DepthwiseConvolution2dLayer>(convolution2dDescriptor, name);
2106 }

◆ AddDepthwiseConvolution2dLayer() [2/2]

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

Definition at line 2108 of file Network.cpp.

References OutputSlot::Connect(), Layer::GetOutputSlot(), OptionalBase::has_value(), ConstantLayer::m_LayerOutput, OutputSlot::SetTensorInfo(), and OptionalReferenceSwitch< std::is_reference< T >::value, T >::value().

2113 {
2114  auto layer = m_Graph->AddLayer<DepthwiseConvolution2dLayer>(convolution2dDescriptor, name);
2115 
2116  // Add a constant layer for weights
2117  ConstantLayer* weightsLayer = m_Graph->AddLayer<ConstantLayer>("Weights");
2118  auto weightsTensorHandle = std::make_shared<ScopedTensorHandle>(weights);
2119  weightsLayer->m_LayerOutput = weightsTensorHandle;
2120  layer->m_Weight = weightsTensorHandle;
2121 
2122  weightsLayer->GetOutputSlot(0).SetTensorInfo(weightsLayer->m_LayerOutput->GetTensorInfo());
2123  weightsLayer->GetOutputSlot(0).Connect(layer->GetInputSlot(1));
2124 
2125  // Add a constant layer for biases
2126  if (biases.has_value() && convolution2dDescriptor.m_BiasEnabled)
2127  {
2128  ConstantLayer* biasLayer = m_Graph->AddLayer<ConstantLayer>("Bias");
2129  auto biasTensorHandle = std::make_shared<ScopedTensorHandle>(biases.value());
2130  biasLayer->m_LayerOutput = biasTensorHandle;
2131  layer->m_Bias = biasTensorHandle;
2132 
2133  biasLayer->GetOutputSlot(0).SetTensorInfo(biasLayer->m_LayerOutput->GetTensorInfo());
2134  biasLayer->GetOutputSlot(0).Connect(layer->GetInputSlot(2));
2135  }
2136 
2137  return layer;
2138 }

◆ AddDequantizeLayer()

IConnectableLayer * AddDequantizeLayer ( const char *  name = nullptr)

Definition at line 2483 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2484 {
2485  return m_Graph->AddLayer<DequantizeLayer>(name);
2486 }

◆ AddDetectionPostProcessLayer()

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

Definition at line 2140 of file Network.cpp.

References DetectionPostProcessLayer::m_Anchors.

Referenced by NetworkImpl::GetGraph().

2142 {
2143  const auto layer = m_Graph->AddLayer<DetectionPostProcessLayer>(descriptor, name);
2144 
2145  layer->m_Anchors = std::make_shared<ScopedTensorHandle>(anchors);
2146 
2147  return layer;
2148 }

◆ AddDivisionLayer()

IConnectableLayer * AddDivisionLayer ( const char *  name = nullptr)

Definition at line 2458 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2459 {
2460  return m_Graph->AddLayer<DivisionLayer>(name);
2461 }

◆ AddElementwiseUnaryLayer()

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

Definition at line 1947 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

1949 {
1950  return m_Graph->AddLayer<ElementwiseUnaryLayer>(elementwiseUnaryDescriptor, name);
1951 }

◆ AddFillLayer()

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

Definition at line 1953 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

1955 {
1956  return m_Graph->AddLayer<FillLayer>(fillDescriptor, name);
1957 }

◆ AddFloorLayer()

IConnectableLayer * AddFloorLayer ( const char *  name = nullptr)

Definition at line 2312 of file Network.cpp.

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

2313 {
2314  return m_Graph->AddLayer<FloorLayer>(name);
2315 }

◆ AddFullyConnectedLayer() [1/2]

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

Definition at line 1959 of file Network.cpp.

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

1961 {
1962  return m_Graph->AddLayer<FullyConnectedLayer>(fullyConnectedDescriptor, name);
1963 }

◆ AddFullyConnectedLayer() [2/2]

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

Definition at line 1965 of file Network.cpp.

References OutputSlot::Connect(), FullyConnectedDescriptor::GetNumInputs(), Layer::GetOutputSlot(), OptionalBase::has_value(), FullyConnectedDescriptor::m_BiasEnabled, FullyConnectedDescriptor::m_ConstantWeights, ConstantLayer::m_LayerOutput, OutputSlot::SetTensorInfo(), and OptionalReferenceSwitch< std::is_reference< T >::value, T >::value().

1969 {
1970  ConstantLayer* weightsLayer = nullptr;
1971  ConstantLayer* biasLayer = nullptr;
1972  unsigned int numInputs = fullyConnectedDescriptor.GetNumInputs();
1973 
1974  // Add a constant layer for weights
1975  if (weights.has_value())
1976  {
1977  weightsLayer = m_Graph->AddLayer<ConstantLayer>("Weights");
1978  weightsLayer->m_LayerOutput = std::make_shared<ScopedTensorHandle>(weights.value());
1979 
1980  TensorInfo weightsInfo = weightsLayer->m_LayerOutput->GetTensorInfo();
1981  weightsInfo.SetConstant();
1982 
1983  weightsLayer->GetOutputSlot(0).SetTensorInfo(weightsInfo);
1984  }
1985  else if (fullyConnectedDescriptor.m_ConstantWeights)
1986  {
1987  throw InvalidArgumentException("AddFullyConnectedLayer: Constant weights tensor is empty.");
1988  }
1989 
1990  // Add a constant layer for biases
1991  if (biases.has_value() && fullyConnectedDescriptor.m_BiasEnabled)
1992  {
1993  biasLayer = m_Graph->AddLayer<ConstantLayer>("Biases");
1994  biasLayer->m_LayerOutput = std::make_shared<ScopedTensorHandle>(biases.value());
1995 
1996  TensorInfo biasInfo = biasLayer->m_LayerOutput->GetTensorInfo();
1997  biasInfo.SetConstant();
1998 
1999  biasLayer->GetOutputSlot(0).SetTensorInfo(biasInfo);
2000  }
2001 
2002  if (numInputs < 2)
2003  {
2004  throw InvalidArgumentException("AddFullyConnectedLayer: Requires at least 2 input tensors: Input, Weights");
2005  }
2006 
2007  auto layer = m_Graph->AddLayer<FullyConnectedLayer>(fullyConnectedDescriptor, name);
2008 
2009  if (weightsLayer)
2010  {
2011  // Connect weights layer
2012  weightsLayer->GetOutputSlot(0).Connect(layer->GetInputSlot(1));
2013  }
2014 
2015  if ( fullyConnectedDescriptor.m_BiasEnabled && numInputs == 3 )
2016  {
2017  if (biasLayer)
2018  {
2019  // Connect bias layer
2020  biasLayer->GetOutputSlot(0).Connect(layer->GetInputSlot(2));
2021  }
2022  }
2023  else if ( !fullyConnectedDescriptor.m_BiasEnabled && numInputs == 2 )
2024  {
2025  // Bias is disabled
2026  layer->m_Bias = nullptr;
2027  }
2028  else
2029  {
2030  throw InvalidArgumentException(fmt::format(
2031  "AddFullyConnectedLayer: Value mismatch. When bias is enabled in the "
2032  "descriptor the number of inputs is expected to be 3 otherwise 2. "
2033  "BiasEnabled={}, numInputs={}",
2034  fullyConnectedDescriptor.m_BiasEnabled,
2035  numInputs));
2036  }
2037 
2038  return layer;
2039 }

◆ AddGatherLayer()

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

Definition at line 2494 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

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

◆ AddGatherNdLayer()

IConnectableLayer * AddGatherNdLayer ( const char *  name = nullptr)

Definition at line 2500 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2501 {
2502  return m_Graph->AddLayer<GatherNdLayer>(name);
2503 }

◆ AddInputLayer()

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

Definition at line 1920 of file Network.cpp.

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

1921 {
1922  return m_Graph->AddLayer<InputLayer>(id, name);
1923 }

◆ AddInstanceNormalizationLayer()

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

Definition at line 2267 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2269 {
2270  return m_Graph->AddLayer<InstanceNormalizationLayer>(desc, name);
2271 }

◆ AddL2NormalizationLayer()

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

Definition at line 2273 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2275 {
2276  return m_Graph->AddLayer<L2NormalizationLayer>(desc, name);
2277 }

◆ AddLogicalBinaryLayer()

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

Definition at line 2741 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2743 {
2744  return m_Graph->AddLayer<LogicalBinaryLayer>(logicalBinaryDescriptor, name);
2745 }

◆ AddLogSoftmaxLayer()

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

Definition at line 2279 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2281 {
2282  return m_Graph->AddLayer<LogSoftmaxLayer>(desc, name);
2283 }

◆ AddLstmLayer()

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

Definition at line 2317 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 NetworkImpl::GetGraph(), and armnn::TEST_SUITE().

2320 {
2321  const auto layer = m_Graph->AddLayer<LstmLayer>(descriptor, name);
2322 
2323  //Lstm Basic Parameters
2324  layer->m_BasicParameters.m_InputToForgetWeights =
2325  std::make_shared<ScopedTensorHandle>(*(params.m_InputToForgetWeights));
2326  layer->m_BasicParameters.m_InputToCellWeights =
2327  std::make_shared<ScopedTensorHandle>(*(params.m_InputToCellWeights));
2328  layer->m_BasicParameters.m_InputToOutputWeights =
2329  std::make_shared<ScopedTensorHandle>(*(params.m_InputToOutputWeights));
2330  layer->m_BasicParameters.m_RecurrentToForgetWeights =
2331  std::make_shared<ScopedTensorHandle>(*(params.m_RecurrentToForgetWeights));
2332  layer->m_BasicParameters.m_RecurrentToCellWeights =
2333  std::make_shared<ScopedTensorHandle>(*(params.m_RecurrentToCellWeights));
2334  layer->m_BasicParameters.m_RecurrentToOutputWeights =
2335  std::make_shared<ScopedTensorHandle>(*(params.m_RecurrentToOutputWeights));
2336  layer->m_BasicParameters.m_ForgetGateBias =
2337  std::make_shared<ScopedTensorHandle>(*(params.m_ForgetGateBias));
2338  layer->m_BasicParameters.m_CellBias =
2339  std::make_shared<ScopedTensorHandle>(*(params.m_CellBias));
2340  layer->m_BasicParameters.m_OutputGateBias =
2341  std::make_shared<ScopedTensorHandle>(*(params.m_OutputGateBias));
2342 
2343  //Lstm Cifg parameters
2344  if(!descriptor.m_CifgEnabled)
2345  {
2346  if(params.m_InputToInputWeights == nullptr)
2347  {
2348  throw InvalidArgumentException("AddLstmLayer: Input To Input Weights cannot be NULL "
2349  "when CIFG is disabled.");
2350  }
2351  if(params.m_RecurrentToInputWeights == nullptr)
2352  {
2353  throw InvalidArgumentException(
2354  "AddLstmLayer: Recurrent To Input Weights cannot be NULL "
2355  "when CIFG is disabled.");
2356  }
2357  if(params.m_InputGateBias == nullptr)
2358  {
2359  throw InvalidArgumentException("AddLstmLayer: Input Gate Bias cannot be NULL "
2360  "when CIFG is disabled.");
2361  }
2362  layer->m_CifgParameters.m_InputToInputWeights =
2363  std::make_shared<ScopedTensorHandle>(*(params.m_InputToInputWeights));
2364  layer->m_CifgParameters.m_RecurrentToInputWeights =
2365  std::make_shared<ScopedTensorHandle>(*(params.m_RecurrentToInputWeights));
2366  layer->m_CifgParameters.m_InputGateBias =
2367  std::make_shared<ScopedTensorHandle>(*(params.m_InputGateBias));
2368  }
2369 
2370  //Lstm projection parameters
2371  if(descriptor.m_ProjectionEnabled)
2372  {
2373  if(params.m_ProjectionWeights == nullptr)
2374  {
2375  throw InvalidArgumentException("AddLstmLayer: Projection Weights cannot be NULL "
2376  "when projection is enabled.");
2377  }
2378  layer->m_ProjectionParameters.m_ProjectionWeights =
2379  std::make_shared<ScopedTensorHandle>(*(params.m_ProjectionWeights));
2380  if(params.m_ProjectionBias != nullptr)
2381  {
2382  layer->m_ProjectionParameters.m_ProjectionBias =
2383  std::make_shared<ScopedTensorHandle>(*(params.m_ProjectionBias));
2384  }
2385  }
2386 
2387  //Lstm Peephole params
2388  if(descriptor.m_PeepholeEnabled)
2389  {
2390  if(!descriptor.m_CifgEnabled)
2391  {
2392  if(params.m_CellToInputWeights == nullptr)
2393  {
2394  throw InvalidArgumentException("AddLstmLayer: Cell To Input Weights cannot be NULL "
2395  "when Peephole is enabled and CIFG disabled.");
2396  }
2397 
2398  layer->m_PeepholeParameters.m_CellToInputWeights =
2399  std::make_shared<ScopedTensorHandle>(*(params.m_CellToInputWeights));
2400  }
2401 
2402  if(params.m_CellToForgetWeights == nullptr)
2403  {
2404  throw InvalidArgumentException("AddLstmLayer: Cell To Forget Weights cannot be NULL "
2405  "when Peephole is enabled.");
2406  }
2407  if(params.m_CellToOutputWeights == nullptr)
2408  {
2409  throw InvalidArgumentException("AddLstmLayer: Cell To Output Weights cannot be NULL "
2410  "when Peephole is enabled.");
2411  }
2412 
2413  layer->m_PeepholeParameters.m_CellToForgetWeights =
2414  std::make_shared<ScopedTensorHandle>(*(params.m_CellToForgetWeights));
2415  layer->m_PeepholeParameters.m_CellToOutputWeights =
2416  std::make_shared<ScopedTensorHandle>(*(params.m_CellToOutputWeights));
2417  }
2418 
2419  //Lstm Layer Normalization params
2420  if(descriptor.m_LayerNormEnabled)
2421  {
2422  if(!descriptor.m_CifgEnabled)
2423  {
2424  if(params.m_InputLayerNormWeights == nullptr)
2425  {
2426  throw InvalidArgumentException("AddLstmLayer: Input layer normalization weights cannot be NULL "
2427  "when layer normalization is enabled and CIFG disabled.");
2428  }
2429  layer->m_LayerNormParameters.m_InputLayerNormWeights =
2430  std::make_shared<ScopedTensorHandle>(*(params.m_InputLayerNormWeights));
2431  }
2432 
2433  if(params.m_ForgetLayerNormWeights == nullptr)
2434  {
2435  throw InvalidArgumentException("AddLstmLayer: Forget layer normalization weights cannot be NULL "
2436  "when layer normalization is enabled.");
2437  }
2438  if(params.m_CellLayerNormWeights == nullptr)
2439  {
2440  throw InvalidArgumentException("AddLstmLayer: Cell layer normalization weights cannot be NULL "
2441  "when layer normalization is enabled.");
2442  }
2443  if(params.m_OutputLayerNormWeights == nullptr)
2444  {
2445  throw InvalidArgumentException("AddLstmLayer: Output layer normalization weights cannot be NULL "
2446  "when layer normalization is enabled.");
2447  }
2448  layer->m_LayerNormParameters.m_ForgetLayerNormWeights =
2449  std::make_shared<ScopedTensorHandle>(*(params.m_ForgetLayerNormWeights));
2450  layer->m_LayerNormParameters.m_CellLayerNormWeights =
2451  std::make_shared<ScopedTensorHandle>(*(params.m_CellLayerNormWeights));
2452  layer->m_LayerNormParameters.m_OutputLayerNormWeights =
2453  std::make_shared<ScopedTensorHandle>(*(params.m_OutputLayerNormWeights));
2454  }
2455  return layer;
2456 }

◆ AddMaximumLayer()

IConnectableLayer * AddMaximumLayer ( const char *  name = nullptr)

Definition at line 2204 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2205 {
2206  return m_Graph->AddLayer<MaximumLayer>(name);
2207 }

◆ AddMeanLayer()

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

Definition at line 2468 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2469 {
2470  return m_Graph->AddLayer<MeanLayer>(meanDescriptor,name);
2471 }

◆ AddMergeLayer()

IConnectableLayer * AddMergeLayer ( const char *  name = nullptr)

Definition at line 2505 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

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

◆ AddMinimumLayer()

IConnectableLayer * AddMinimumLayer ( const char *  name = nullptr)

Definition at line 2209 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2210 {
2211  return m_Graph->AddLayer<MinimumLayer>(name);
2212 }

◆ AddMultiplicationLayer()

IConnectableLayer * AddMultiplicationLayer ( const char *  name = nullptr)

Definition at line 2219 of file Network.cpp.

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

2220 {
2221  return m_Graph->AddLayer<MultiplicationLayer>(name);
2222 }

◆ AddNormalizationLayer()

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

Definition at line 2180 of file Network.cpp.

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

2183 {
2184  return m_Graph->AddLayer<NormalizationLayer>(normalizationDescriptor, name);
2185 }

◆ AddOutputLayer()

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

Definition at line 2224 of file Network.cpp.

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

2225 {
2226  return m_Graph->AddLayer<OutputLayer>(id, name);
2227 }

◆ AddPadLayer()

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

Definition at line 2473 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2474 {
2475  return m_Graph->AddLayer<PadLayer>(padDescriptor,name);
2476 }

◆ AddPermuteLayer()

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

Definition at line 2150 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2152 {
2153  return m_Graph->AddLayer<PermuteLayer>(permuteDescriptor, name);
2154 }

◆ AddPooling2dLayer()

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

Definition at line 2156 of file Network.cpp.

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

2158 {
2159  return m_Graph->AddLayer<Pooling2dLayer>(pooling2dDescriptor, name);
2160 }

◆ AddPooling3dLayer()

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

Definition at line 2162 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2164 {
2165  return m_Graph->AddLayer<Pooling3dLayer>(pooling3dDescriptor, name);
2166 }

◆ AddPrecompiledLayer()

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

Definition at line 2894 of file Network.cpp.

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

Referenced by NetworkImpl::GetGraph().

2898 {
2899  // Method use is for backend users.
2900  PreCompiledLayer* layer;
2901  if (name)
2902  {
2903  layer = m_Graph->AddLayer<PreCompiledLayer>(preCompiledDescriptor, name);
2904  }
2905  else
2906  {
2907  layer = m_Graph->AddLayer<PreCompiledLayer>(preCompiledDescriptor, "pre-compiled");
2908  }
2909 
2910  // Assign the pre-compiled object to layer
2911  // Pass only one compiled network, Arm NN does not handle multiple
2912  // pre-compiled objects in a single pre-compiled layer currently
2913  layer->SetPreCompiledObject(std::move(compiledBlobPtr));
2914 
2915  if (backend.has_value())
2916  {
2917  layer->SetBackendId(backend.value());
2918  }
2919  else if (layer->GetBackendHint().has_value())
2920  {
2921  layer->SetBackendId(layer->GetBackendHint().value());
2922  }
2923 
2924  return layer;
2925 }

◆ AddPreluLayer()

IConnectableLayer * AddPreluLayer ( const char *  name = nullptr)

Definition at line 2515 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

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

◆ AddQLstmLayer()

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

Definition at line 2599 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 NetworkImpl::GetGraph(), and armnn::TEST_SUITE().

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

◆ AddQuantizedLstmLayer()

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

Definition at line 2561 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 NetworkImpl::GetGraph(), and armnn::TEST_SUITE().

2563 {
2564  const auto layer = m_Graph->AddLayer<QuantizedLstmLayer>(name);
2565 
2566  // InputToX weights
2567  layer->m_QuantizedLstmParameters.m_InputToInputWeights =
2568  std::make_shared<ScopedTensorHandle>(params.GetInputToInputWeights());
2569  layer->m_QuantizedLstmParameters.m_InputToForgetWeights =
2570  std::make_shared<ScopedTensorHandle>(params.GetInputToForgetWeights());
2571  layer->m_QuantizedLstmParameters.m_InputToCellWeights =
2572  std::make_shared<ScopedTensorHandle>(params.GetInputToCellWeights());
2573  layer->m_QuantizedLstmParameters.m_InputToOutputWeights =
2574  std::make_shared<ScopedTensorHandle>(params.GetInputToOutputWeights());
2575 
2576  // RecurrentToX weights
2577  layer->m_QuantizedLstmParameters.m_RecurrentToInputWeights =
2578  std::make_shared<ScopedTensorHandle>(params.GetRecurrentToInputWeights());
2579  layer->m_QuantizedLstmParameters.m_RecurrentToForgetWeights =
2580  std::make_shared<ScopedTensorHandle>(params.GetRecurrentToForgetWeights());
2581  layer->m_QuantizedLstmParameters.m_RecurrentToCellWeights =
2582  std::make_shared<ScopedTensorHandle>(params.GetRecurrentToCellWeights());
2583  layer->m_QuantizedLstmParameters.m_RecurrentToOutputWeights =
2584  std::make_shared<ScopedTensorHandle>(params.GetRecurrentToOutputWeights());
2585 
2586  // Bias
2587  layer->m_QuantizedLstmParameters.m_InputGateBias =
2588  std::make_shared<ScopedTensorHandle>(params.GetInputGateBias());
2589  layer->m_QuantizedLstmParameters.m_ForgetGateBias =
2590  std::make_shared<ScopedTensorHandle>(params.GetForgetGateBias());
2591  layer->m_QuantizedLstmParameters.m_CellBias =
2592  std::make_shared<ScopedTensorHandle>(params.GetCellBias());
2593  layer->m_QuantizedLstmParameters.m_OutputGateBias =
2594  std::make_shared<ScopedTensorHandle>(params.GetOutputGateBias());
2595 
2596  return layer;
2597 }

◆ AddQuantizeLayer()

IConnectableLayer * AddQuantizeLayer ( const char *  name = nullptr)

Definition at line 2478 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2479 {
2480  return m_Graph->AddLayer<QuantizeLayer>(name);
2481 }

◆ AddRankLayer()

IConnectableLayer * AddRankLayer ( const char *  name = nullptr)

Definition at line 2246 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2247 {
2248  return m_Graph->AddLayer<RankLayer>(name);
2249 }

◆ AddReduceLayer()

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

Definition at line 2251 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2253 {
2254  return m_Graph->AddLayer<ReduceLayer>(reduceDescriptor, name);
2255 }

◆ AddReshapeLayer()

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

Definition at line 2294 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2296 {
2297  return m_Graph->AddLayer<ReshapeLayer>(reshapeDescriptor, name);
2298 }

◆ AddResizeLayer()

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

Definition at line 2257 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2258 {
2259  return m_Graph->AddLayer<ResizeLayer>(resizeDescriptor, name);
2260 }

◆ AddShapeLayer()

IConnectableLayer * AddShapeLayer ( const char *  name = nullptr)

Definition at line 2262 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2263 {
2264  return m_Graph->AddLayer<ShapeLayer>(name);
2265 }

◆ AddSliceLayer()

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

Definition at line 2187 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2188 {
2189  return m_Graph->AddLayer<SliceLayer>(sliceDescriptor, name);
2190 }

◆ AddSoftmaxLayer()

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

Definition at line 2192 of file Network.cpp.

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

2194 {
2195  return m_Graph->AddLayer<SoftmaxLayer>(softmaxDescriptor, name);
2196 }

◆ AddSpaceToBatchNdLayer()

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

Definition at line 2300 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

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

◆ AddSpaceToDepthLayer()

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

Definition at line 2306 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

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

◆ AddSplitterLayer()

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

Definition at line 2198 of file Network.cpp.

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

2200 {
2201  return m_Graph->AddLayer<SplitterLayer>(splitterDescriptor, name);
2202 }

◆ AddStackLayer()

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

Definition at line 2548 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2550 {
2551  return m_Graph->AddLayer<StackLayer>(stackDescriptor, name);
2552 }

◆ AddStandInLayer()

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

Definition at line 2555 of file Network.cpp.

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

2557 {
2558  return m_Graph->AddLayer<StandInLayer>(desc, name);
2559 }

◆ AddStridedSliceLayer()

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

Definition at line 2488 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2490 {
2491  return m_Graph->AddLayer<StridedSliceLayer>(stridedSliceDescriptor, name);
2492 }

◆ AddSubtractionLayer()

IConnectableLayer * AddSubtractionLayer ( const char *  name = nullptr)

Definition at line 2463 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2464 {
2465  return m_Graph->AddLayer<SubtractionLayer>(name);
2466 }

◆ AddSwitchLayer()

IConnectableLayer * AddSwitchLayer ( const char *  name = nullptr)

Definition at line 2510 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

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

◆ AddTransposeConvolution2dLayer()

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

Definition at line 2520 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().

2524 {
2525  if (descriptor.m_BiasEnabled && !biases.has_value())
2526  {
2527  throw InvalidArgumentException("AddTransposeConvolution2dLayer: Biases cannot be empty");
2528  }
2529 
2530  const auto layer = m_Graph->AddLayer<TransposeConvolution2dLayer>(descriptor, name);
2531 
2532  layer->m_Weight = std::make_shared<ScopedTensorHandle>(weights);
2533 
2534  if (descriptor.m_BiasEnabled)
2535  {
2536  layer->m_Bias = std::make_shared<ScopedTensorHandle>(biases.value());
2537  }
2538 
2539  return layer;
2540 }

◆ AddTransposeLayer()

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

Definition at line 2542 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2544 {
2545  return m_Graph->AddLayer<TransposeLayer>(transposeDescriptor, name);
2546 }

◆ AddUnidirectionalSequenceLstmLayer()

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

Definition at line 2747 of file Network.cpp.

References UnidirectionalSequenceLstmLayer::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 NetworkImpl::GetGraph().

2751 {
2752  const auto layer = m_Graph->AddLayer<UnidirectionalSequenceLstmLayer>(descriptor, name);
2753 
2754  //Lstm Basic Parameters
2755  layer->m_BasicParameters.m_InputToForgetWeights =
2756  std::make_shared<ScopedTensorHandle>(*(params.m_InputToForgetWeights));
2757  layer->m_BasicParameters.m_InputToCellWeights =
2758  std::make_shared<ScopedTensorHandle>(*(params.m_InputToCellWeights));
2759  layer->m_BasicParameters.m_InputToOutputWeights =
2760  std::make_shared<ScopedTensorHandle>(*(params.m_InputToOutputWeights));
2761  layer->m_BasicParameters.m_RecurrentToForgetWeights =
2762  std::make_shared<ScopedTensorHandle>(*(params.m_RecurrentToForgetWeights));
2763  layer->m_BasicParameters.m_RecurrentToCellWeights =
2764  std::make_shared<ScopedTensorHandle>(*(params.m_RecurrentToCellWeights));
2765  layer->m_BasicParameters.m_RecurrentToOutputWeights =
2766  std::make_shared<ScopedTensorHandle>(*(params.m_RecurrentToOutputWeights));
2767  layer->m_BasicParameters.m_ForgetGateBias =
2768  std::make_shared<ScopedTensorHandle>(*(params.m_ForgetGateBias));
2769  layer->m_BasicParameters.m_CellBias =
2770  std::make_shared<ScopedTensorHandle>(*(params.m_CellBias));
2771  layer->m_BasicParameters.m_OutputGateBias =
2772  std::make_shared<ScopedTensorHandle>(*(params.m_OutputGateBias));
2773 
2774  //Lstm Cifg parameters
2775  if(!descriptor.m_CifgEnabled)
2776  {
2777  if(params.m_InputToInputWeights == nullptr)
2778  {
2779  throw InvalidArgumentException("AddUnidirectionalSequenceLstmLayer: Input To Input Weights cannot be NULL "
2780  "when CIFG is disabled.");
2781  }
2782  if(params.m_RecurrentToInputWeights == nullptr)
2783  {
2784  throw InvalidArgumentException(
2785  "AddUnidirectionalSequenceLstmLayer: Recurrent To Input Weights cannot be NULL "
2786  "when CIFG is disabled.");
2787  }
2788  if(params.m_InputGateBias == nullptr)
2789  {
2790  throw InvalidArgumentException("AddUnidirectionalSequenceLstmLayer: Input Gate Bias cannot be NULL "
2791  "when CIFG is disabled.");
2792  }
2793  layer->m_CifgParameters.m_InputToInputWeights =
2794  std::make_shared<ScopedTensorHandle>(*(params.m_InputToInputWeights));
2795  layer->m_CifgParameters.m_RecurrentToInputWeights =
2796  std::make_shared<ScopedTensorHandle>(*(params.m_RecurrentToInputWeights));
2797  layer->m_CifgParameters.m_InputGateBias =
2798  std::make_shared<ScopedTensorHandle>(*(params.m_InputGateBias));
2799  }
2800 
2801  //Lstm projection parameters
2802  if(descriptor.m_ProjectionEnabled)
2803  {
2804  if(params.m_ProjectionWeights == nullptr)
2805  {
2806  throw InvalidArgumentException("AddUnidirectionalSequenceLstmLayer: Projection Weights cannot be NULL "
2807  "when projection is enabled.");
2808  }
2809  layer->m_ProjectionParameters.m_ProjectionWeights =
2810  std::make_shared<ScopedTensorHandle>(*(params.m_ProjectionWeights));
2811  if(params.m_ProjectionBias != nullptr)
2812  {
2813  layer->m_ProjectionParameters.m_ProjectionBias =
2814  std::make_shared<ScopedTensorHandle>(*(params.m_ProjectionBias));
2815  }
2816  }
2817 
2818  //Lstm Peephole params
2819  if(descriptor.m_PeepholeEnabled)
2820  {
2821  if(!descriptor.m_CifgEnabled)
2822  {
2823  if(params.m_CellToInputWeights == nullptr)
2824  {
2825  throw InvalidArgumentException("AddUnidirectionalSequenceLstmLayer: Cell To Input Weights "
2826  "cannot be NULL when Peephole is enabled and CIFG disabled.");
2827  }
2828 
2829  layer->m_PeepholeParameters.m_CellToInputWeights =
2830  std::make_shared<ScopedTensorHandle>(*(params.m_CellToInputWeights));
2831  }
2832 
2833  if(params.m_CellToForgetWeights == nullptr)
2834  {
2835  throw InvalidArgumentException("AddUnidirectionalSequenceLstmLayer: Cell To Forget Weights cannot be NULL "
2836  "when Peephole is enabled.");
2837  }
2838  if(params.m_CellToOutputWeights == nullptr)
2839  {
2840  throw InvalidArgumentException("AddUnidirectionalSequenceLstmLayer: Cell To Output Weights cannot be NULL "
2841  "when Peephole is enabled.");
2842  }
2843 
2844  layer->m_PeepholeParameters.m_CellToForgetWeights =
2845  std::make_shared<ScopedTensorHandle>(*(params.m_CellToForgetWeights));
2846  layer->m_PeepholeParameters.m_CellToOutputWeights =
2847  std::make_shared<ScopedTensorHandle>(*(params.m_CellToOutputWeights));
2848  }
2849 
2850  //Lstm Layer Normalization params
2851  if(descriptor.m_LayerNormEnabled)
2852  {
2853  if(!descriptor.m_CifgEnabled)
2854  {
2855  if(params.m_InputLayerNormWeights == nullptr)
2856  {
2857  throw InvalidArgumentException("AddUnidirectionalSequenceLstmLayer: Input layer normalization weights "
2858  "cannot be NULL when layer normalization is enabled and CIFG disabled.");
2859  }
2860  layer->m_LayerNormParameters.m_InputLayerNormWeights =
2861  std::make_shared<ScopedTensorHandle>(*(params.m_InputLayerNormWeights));
2862  }
2863 
2864  if(params.m_ForgetLayerNormWeights == nullptr)
2865  {
2866  throw InvalidArgumentException("AddUnidirectionalSequenceLstmLayer: Forget layer normalization weights "
2867  "cannot be NULL when layer normalization is enabled.");
2868  }
2869  if(params.m_CellLayerNormWeights == nullptr)
2870  {
2871  throw InvalidArgumentException("AddUnidirectionalSequenceLstmLayer: Cell layer normalization weights "
2872  "cannot be NULL when layer normalization is enabled.");
2873  }
2874  if(params.m_OutputLayerNormWeights == nullptr)
2875  {
2876  throw InvalidArgumentException("AddUnidirectionalSequenceLstmLayer: Output layer normalization weights "
2877  "cannot be NULL when layer normalization is enabled.");
2878  }
2879  layer->m_LayerNormParameters.m_ForgetLayerNormWeights =
2880  std::make_shared<ScopedTensorHandle>(*(params.m_ForgetLayerNormWeights));
2881  layer->m_LayerNormParameters.m_CellLayerNormWeights =
2882  std::make_shared<ScopedTensorHandle>(*(params.m_CellLayerNormWeights));
2883  layer->m_LayerNormParameters.m_OutputLayerNormWeights =
2884  std::make_shared<ScopedTensorHandle>(*(params.m_OutputLayerNormWeights));
2885  }
2886  return layer;
2887 }

◆ ExecuteStrategy()

void ExecuteStrategy ( IStrategy strategy) const

Definition at line 2927 of file Network.cpp.

References NetworkImpl::GetGraph().

Referenced by NetworkImpl::GetGraph().

2928 {
2929  for (auto layer : GetGraph())
2930  {
2931  layer->ExecuteStrategy(strategy);
2932  };
2933 }
const Graph & GetGraph() const
Definition: Network.hpp:37

◆ GetGraph()

const Graph& GetGraph ( ) const
inline

Definition at line 37 of file Network.hpp.

References NetworkImpl::AddActivationLayer(), NetworkImpl::AddAdditionLayer(), NetworkImpl::AddArgMinMaxLayer(), NetworkImpl::AddBatchMatMulLayer(), NetworkImpl::AddBatchNormalizationLayer(), NetworkImpl::AddBatchToSpaceNdLayer(), NetworkImpl::AddCastLayer(), NetworkImpl::AddChannelShuffleLayer(), NetworkImpl::AddComparisonLayer(), NetworkImpl::AddConcatLayer(), NetworkImpl::AddConstantLayer(), NetworkImpl::AddConvertFp16ToFp32Layer(), NetworkImpl::AddConvertFp32ToFp16Layer(), NetworkImpl::AddConvolution2dLayer(), NetworkImpl::AddConvolution3dLayer(), NetworkImpl::AddDepthToSpaceLayer(), NetworkImpl::AddDepthwiseConvolution2dLayer(), NetworkImpl::AddDequantizeLayer(), NetworkImpl::AddDetectionPostProcessLayer(), NetworkImpl::AddDivisionLayer(), NetworkImpl::AddElementwiseUnaryLayer(), NetworkImpl::AddFillLayer(), NetworkImpl::AddFloorLayer(), NetworkImpl::AddFullyConnectedLayer(), NetworkImpl::AddGatherLayer(), NetworkImpl::AddGatherNdLayer(), NetworkImpl::AddInputLayer(), NetworkImpl::AddInstanceNormalizationLayer(), NetworkImpl::AddL2NormalizationLayer(), NetworkImpl::AddLogicalBinaryLayer(), NetworkImpl::AddLogSoftmaxLayer(), NetworkImpl::AddLstmLayer(), NetworkImpl::AddMaximumLayer(), NetworkImpl::AddMeanLayer(), NetworkImpl::AddMergeLayer(), NetworkImpl::AddMinimumLayer(), NetworkImpl::AddMultiplicationLayer(), NetworkImpl::AddNormalizationLayer(), NetworkImpl::AddOutputLayer(), NetworkImpl::AddPadLayer(), NetworkImpl::AddPermuteLayer(), NetworkImpl::AddPooling2dLayer(), NetworkImpl::AddPooling3dLayer(), NetworkImpl::AddPrecompiledLayer(), NetworkImpl::AddPreluLayer(), NetworkImpl::AddQLstmLayer(), NetworkImpl::AddQuantizedLstmLayer(), NetworkImpl::AddQuantizeLayer(), NetworkImpl::AddRankLayer(), NetworkImpl::AddReduceLayer(), NetworkImpl::AddReshapeLayer(), NetworkImpl::AddResizeLayer(), NetworkImpl::AddShapeLayer(), NetworkImpl::AddSliceLayer(), NetworkImpl::AddSoftmaxLayer(), NetworkImpl::AddSpaceToBatchNdLayer(), NetworkImpl::AddSpaceToDepthLayer(), NetworkImpl::AddSplitterLayer(), NetworkImpl::AddStackLayer(), NetworkImpl::AddStandInLayer(), NetworkImpl::AddStridedSliceLayer(), NetworkImpl::AddSubtractionLayer(), NetworkImpl::AddSwitchLayer(), NetworkImpl::AddTransposeConvolution2dLayer(), NetworkImpl::AddTransposeLayer(), NetworkImpl::AddUnidirectionalSequenceLstmLayer(), ARMNN_DEPRECATED_MSG, armnn::ARMNN_DEPRECATED_MSG_REMOVAL_DATE(), NetworkImpl::ExecuteStrategy(), and NetworkImpl::PrintGraph().

Referenced by NetworkImpl::ExecuteStrategy(), and TEST_SUITE().

38  { return *m_Graph; }

◆ PrintGraph()

Status PrintGraph ( )

Definition at line 1914 of file Network.cpp.

References armnn::Success.

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

1915 {
1916  m_Graph->Print();
1917  return Status::Success;
1918 }

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