ArmNN
 22.11
NetworkImpl Class Reference

Private implementation of INetwork. More...

#include <Network.hpp>

Public Member Functions

 NetworkImpl (const NetworkOptions &networkOptions={})
 
 ~NetworkImpl ()
 
const GraphGetGraph () const
 
Status PrintGraph ()
 
IConnectableLayerAddInputLayer (LayerBindingId id, const char *name=nullptr)
 
IConnectableLayerAddActivationLayer (const ActivationDescriptor &activationDescriptor, const char *name=nullptr)
 
IConnectableLayerAddAdditionLayer (const char *name=nullptr)
 
IConnectableLayerAddArgMinMaxLayer (const ArgMinMaxDescriptor &desc, const char *name=nullptr)
 
IConnectableLayerAddBatchMatMulLayer (const BatchMatMulDescriptor &desc, const char *name=nullptr)
 
IConnectableLayerAddBatchNormalizationLayer (const BatchNormalizationDescriptor &desc, const ConstTensor &mean, const ConstTensor &variance, const ConstTensor &beta, const ConstTensor &gamma, const char *name=nullptr)
 
IConnectableLayerAddBatchToSpaceNdLayer (const BatchToSpaceNdDescriptor &batchToSpaceNdDescriptor, const char *name=nullptr)
 
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 ( const NetworkOptions networkOptions = {})

Definition at line 1891 of file Network.cpp.

1892 : m_NetworkOptions(networkOptions),
1893  m_Graph(std::make_unique<Graph>(GetShapeInferenceMethod(), GetAllowExpandedDims()))
1894 {}

◆ ~NetworkImpl()

Definition at line 1896 of file Network.cpp.

1897 {
1898 }

Member Function Documentation

◆ AddActivationLayer()

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

Definition at line 2154 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2156 {
2157  return m_Graph->AddLayer<ActivationLayer>(activationDescriptor, name);
2158 }

◆ AddAdditionLayer()

IConnectableLayer * AddAdditionLayer ( const char *  name = nullptr)

Definition at line 2200 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

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

◆ AddArgMinMaxLayer()

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

Definition at line 2160 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2162 {
2163  return m_Graph->AddLayer<ArgMinMaxLayer>(argMinMaxDescriptor, name);
2164 }

◆ AddBatchMatMulLayer()

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

Definition at line 2875 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2876 {
2877  return m_Graph->AddLayer<BatchMatMulLayer>(desc, name);
2878 }

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

References BatchNormalizationLayer::m_Mean.

Referenced by NetworkImpl::GetGraph().

2221 {
2222  const auto layer = m_Graph->AddLayer<BatchNormalizationLayer>(desc, name);
2223 
2224  layer->m_Mean = std::make_shared<ScopedTensorHandle>(mean);
2225  layer->m_Variance = std::make_shared<ScopedTensorHandle>(variance);
2226  layer->m_Beta = std::make_shared<ScopedTensorHandle>(beta);
2227  layer->m_Gamma = std::make_shared<ScopedTensorHandle>(gamma);
2228 
2229  return layer;
2230 }

◆ AddBatchToSpaceNdLayer()

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

Definition at line 1911 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

1913 {
1914  return m_Graph->AddLayer<BatchToSpaceNdLayer>(batchToSpaceNdDescriptor, name);
1915 }

◆ AddCastLayer()

IConnectableLayer * AddCastLayer ( const char *  name = nullptr)

Definition at line 1917 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

1918 {
1919  return m_Graph->AddLayer<CastLayer>(name);
1920 }

◆ AddChannelShuffleLayer()

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

Definition at line 1921 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

1923 {
1924  return m_Graph->AddLayer<ChannelShuffleLayer>(channelShuffleDescriptor, name);
1925 }

◆ AddComparisonLayer()

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

Definition at line 1927 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

1929 {
1930  return m_Graph->AddLayer<ComparisonLayer>(comparisonDescriptor, name);
1931 }

◆ AddConcatLayer()

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

Definition at line 2027 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2029 {
2030  return m_Graph->AddLayer<ConcatLayer>(concatDescriptor, name);
2031 }

◆ AddConstantLayer()

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

Definition at line 2271 of file Network.cpp.

References ConstantLayer::m_LayerOutput.

Referenced by NetworkImpl::GetGraph().

2272 {
2273  auto layer = m_Graph->AddLayer<ConstantLayer>(name);
2274 
2275  layer->m_LayerOutput = std::make_shared<ScopedTensorHandle>(input);
2276 
2277  return layer;
2278 }

◆ AddConvertFp16ToFp32Layer()

IConnectableLayer * AddConvertFp16ToFp32Layer ( const char *  name = nullptr)

Definition at line 2065 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2066 {
2067  return m_Graph->AddLayer<ConvertFp16ToFp32Layer>(name);
2068 }

◆ AddConvertFp32ToFp16Layer()

IConnectableLayer * AddConvertFp32ToFp16Layer ( const char *  name = nullptr)

Definition at line 2070 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2071 {
2072  return m_Graph->AddLayer<ConvertFp32ToFp16Layer>(name);
2073 }

◆ AddConvolution2dLayer() [1/4]

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

Definition at line 2033 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2035 {
2036  return m_Graph->AddLayer<Convolution2dLayer>(convolution2dDescriptor, name);
2037 }

◆ AddConvolution2dLayer() [2/4]

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

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

2043 {
2044  auto layer = m_Graph->AddLayer<Convolution2dLayer>(convolution2dDescriptor, name);
2045  // Add a constant layer for weights
2046  ConstantLayer* weightsLayer = m_Graph->AddLayer<ConstantLayer>("Weights");
2047  auto weightsTensorHandle = std::make_shared<ScopedTensorHandle>(weights);
2048  weightsLayer->m_LayerOutput = weightsTensorHandle;
2049  layer->m_Weight = weightsTensorHandle;
2050  weightsLayer->GetOutputSlot(0).SetTensorInfo(weightsLayer->m_LayerOutput->GetTensorInfo());
2051  weightsLayer->GetOutputSlot(0).Connect(layer->GetInputSlot(1));
2052  // Add a constant layer for biases
2053  if (biases.has_value() && convolution2dDescriptor.m_BiasEnabled)
2054  {
2055  ConstantLayer* biasLayer = m_Graph->AddLayer<ConstantLayer>("Bias");
2056  auto biasTensorHandle = std::make_shared<ScopedTensorHandle>(biases.value());
2057  biasLayer->m_LayerOutput = biasTensorHandle;
2058  layer->m_Bias = biasTensorHandle;
2059  biasLayer->GetOutputSlot(0).SetTensorInfo(biasLayer->m_LayerOutput->GetTensorInfo());
2060  biasLayer->GetOutputSlot(0).Connect(layer->GetInputSlot(2));
2061  }
2062  return layer;
2063 }

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

Referenced by NetworkImpl::GetGraph().

2077 {
2078  return m_Graph->AddLayer<Convolution3dLayer>(convolution3dDescriptor, name);
2079 }

◆ AddDepthToSpaceLayer()

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

Definition at line 2081 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2083 {
2084  return m_Graph->AddLayer<DepthToSpaceLayer>(depthToSpaceDescriptor, name);
2085 }

◆ AddDepthwiseConvolution2dLayer() [1/2]

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

Definition at line 2087 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2090 {
2091  return m_Graph->AddLayer<DepthwiseConvolution2dLayer>(convolution2dDescriptor, name);
2092 }

◆ AddDepthwiseConvolution2dLayer() [2/2]

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

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

2099 {
2100  auto layer = m_Graph->AddLayer<DepthwiseConvolution2dLayer>(convolution2dDescriptor, name);
2101 
2102  // Add a constant layer for weights
2103  ConstantLayer* weightsLayer = m_Graph->AddLayer<ConstantLayer>("Weights");
2104  auto weightsTensorHandle = std::make_shared<ScopedTensorHandle>(weights);
2105  weightsLayer->m_LayerOutput = weightsTensorHandle;
2106  layer->m_Weight = weightsTensorHandle;
2107 
2108  weightsLayer->GetOutputSlot(0).SetTensorInfo(weightsLayer->m_LayerOutput->GetTensorInfo());
2109  weightsLayer->GetOutputSlot(0).Connect(layer->GetInputSlot(1));
2110 
2111  // Add a constant layer for biases
2112  if (biases.has_value() && convolution2dDescriptor.m_BiasEnabled)
2113  {
2114  ConstantLayer* biasLayer = m_Graph->AddLayer<ConstantLayer>("Bias");
2115  auto biasTensorHandle = std::make_shared<ScopedTensorHandle>(biases.value());
2116  biasLayer->m_LayerOutput = biasTensorHandle;
2117  layer->m_Bias = biasTensorHandle;
2118 
2119  biasLayer->GetOutputSlot(0).SetTensorInfo(biasLayer->m_LayerOutput->GetTensorInfo());
2120  biasLayer->GetOutputSlot(0).Connect(layer->GetInputSlot(2));
2121  }
2122 
2123  return layer;
2124 }

◆ AddDequantizeLayer()

IConnectableLayer * AddDequantizeLayer ( const char *  name = nullptr)

Definition at line 2469 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2470 {
2471  return m_Graph->AddLayer<DequantizeLayer>(name);
2472 }

◆ AddDetectionPostProcessLayer()

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

Definition at line 2126 of file Network.cpp.

References DetectionPostProcessLayer::m_Anchors.

Referenced by NetworkImpl::GetGraph().

2128 {
2129  const auto layer = m_Graph->AddLayer<DetectionPostProcessLayer>(descriptor, name);
2130 
2131  layer->m_Anchors = std::make_shared<ScopedTensorHandle>(anchors);
2132 
2133  return layer;
2134 }

◆ AddDivisionLayer()

IConnectableLayer * AddDivisionLayer ( const char *  name = nullptr)

Definition at line 2444 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2445 {
2446  return m_Graph->AddLayer<DivisionLayer>(name);
2447 }

◆ AddElementwiseUnaryLayer()

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

Definition at line 1933 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

1935 {
1936  return m_Graph->AddLayer<ElementwiseUnaryLayer>(elementwiseUnaryDescriptor, name);
1937 }

◆ AddFillLayer()

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

Definition at line 1939 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

1941 {
1942  return m_Graph->AddLayer<FillLayer>(fillDescriptor, name);
1943 }

◆ AddFloorLayer()

IConnectableLayer * AddFloorLayer ( const char *  name = nullptr)

Definition at line 2298 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2299 {
2300  return m_Graph->AddLayer<FloorLayer>(name);
2301 }

◆ AddFullyConnectedLayer() [1/2]

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

Definition at line 1945 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

1947 {
1948  return m_Graph->AddLayer<FullyConnectedLayer>(fullyConnectedDescriptor, name);
1949 }

◆ AddFullyConnectedLayer() [2/2]

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

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

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

◆ AddGatherLayer()

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

Definition at line 2480 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2482 {
2483  return m_Graph->AddLayer<GatherLayer>(gatherDescriptor, name);
2484 }

◆ AddGatherNdLayer()

IConnectableLayer * AddGatherNdLayer ( const char *  name = nullptr)

Definition at line 2486 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2487 {
2488  return m_Graph->AddLayer<GatherNdLayer>(name);
2489 }

◆ AddInputLayer()

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

Definition at line 1906 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

1907 {
1908  return m_Graph->AddLayer<InputLayer>(id, name);
1909 }

◆ AddInstanceNormalizationLayer()

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

Definition at line 2253 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2255 {
2256  return m_Graph->AddLayer<InstanceNormalizationLayer>(desc, name);
2257 }

◆ AddL2NormalizationLayer()

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

Definition at line 2259 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2261 {
2262  return m_Graph->AddLayer<L2NormalizationLayer>(desc, name);
2263 }

◆ AddLogicalBinaryLayer()

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

Definition at line 2727 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2729 {
2730  return m_Graph->AddLayer<LogicalBinaryLayer>(logicalBinaryDescriptor, name);
2731 }

◆ AddLogSoftmaxLayer()

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

Definition at line 2265 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2267 {
2268  return m_Graph->AddLayer<LogSoftmaxLayer>(desc, name);
2269 }

◆ AddLstmLayer()

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

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

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

◆ AddMaximumLayer()

IConnectableLayer * AddMaximumLayer ( const char *  name = nullptr)

Definition at line 2190 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2191 {
2192  return m_Graph->AddLayer<MaximumLayer>(name);
2193 }

◆ AddMeanLayer()

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

Definition at line 2454 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2455 {
2456  return m_Graph->AddLayer<MeanLayer>(meanDescriptor,name);
2457 }

◆ AddMergeLayer()

IConnectableLayer * AddMergeLayer ( const char *  name = nullptr)

Definition at line 2491 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2492 {
2493  return m_Graph->AddLayer<MergeLayer>(name);
2494 }

◆ AddMinimumLayer()

IConnectableLayer * AddMinimumLayer ( const char *  name = nullptr)

Definition at line 2195 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2196 {
2197  return m_Graph->AddLayer<MinimumLayer>(name);
2198 }

◆ AddMultiplicationLayer()

IConnectableLayer * AddMultiplicationLayer ( const char *  name = nullptr)

Definition at line 2205 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

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

◆ AddNormalizationLayer()

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

Definition at line 2166 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2169 {
2170  return m_Graph->AddLayer<NormalizationLayer>(normalizationDescriptor, name);
2171 }

◆ AddOutputLayer()

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

Definition at line 2210 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

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

◆ AddPadLayer()

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

Definition at line 2459 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

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

◆ AddPermuteLayer()

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

Definition at line 2136 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2138 {
2139  return m_Graph->AddLayer<PermuteLayer>(permuteDescriptor, name);
2140 }

◆ AddPooling2dLayer()

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

Definition at line 2142 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2144 {
2145  return m_Graph->AddLayer<Pooling2dLayer>(pooling2dDescriptor, name);
2146 }

◆ AddPooling3dLayer()

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

Definition at line 2148 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2150 {
2151  return m_Graph->AddLayer<Pooling3dLayer>(pooling3dDescriptor, name);
2152 }

◆ AddPrecompiledLayer()

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

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

2884 {
2885  // Method use is for backend users.
2886  PreCompiledLayer* layer;
2887  if (name)
2888  {
2889  layer = m_Graph->AddLayer<PreCompiledLayer>(preCompiledDescriptor, name);
2890  }
2891  else
2892  {
2893  layer = m_Graph->AddLayer<PreCompiledLayer>(preCompiledDescriptor, "pre-compiled");
2894  }
2895 
2896  // Assign the pre-compiled object to layer
2897  // Pass only one compiled network, Arm NN does not handle multiple
2898  // pre-compiled objects in a single pre-compiled layer currently
2899  layer->SetPreCompiledObject(std::move(compiledBlobPtr));
2900 
2901  if (backend.has_value())
2902  {
2903  layer->SetBackendId(backend.value());
2904  }
2905  else if (layer->GetBackendHint().has_value())
2906  {
2907  layer->SetBackendId(layer->GetBackendHint().value());
2908  }
2909 
2910  return layer;
2911 }

◆ AddPreluLayer()

IConnectableLayer * AddPreluLayer ( const char *  name = nullptr)

Definition at line 2501 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2502 {
2503  return m_Graph->AddLayer<PreluLayer>(name);
2504 }

◆ AddQLstmLayer()

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

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

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

◆ AddQuantizedLstmLayer()

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

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

2549 {
2550  const auto layer = m_Graph->AddLayer<QuantizedLstmLayer>(name);
2551 
2552  // InputToX weights
2553  layer->m_QuantizedLstmParameters.m_InputToInputWeights =
2554  std::make_shared<ScopedTensorHandle>(params.GetInputToInputWeights());
2555  layer->m_QuantizedLstmParameters.m_InputToForgetWeights =
2556  std::make_shared<ScopedTensorHandle>(params.GetInputToForgetWeights());
2557  layer->m_QuantizedLstmParameters.m_InputToCellWeights =
2558  std::make_shared<ScopedTensorHandle>(params.GetInputToCellWeights());
2559  layer->m_QuantizedLstmParameters.m_InputToOutputWeights =
2560  std::make_shared<ScopedTensorHandle>(params.GetInputToOutputWeights());
2561 
2562  // RecurrentToX weights
2563  layer->m_QuantizedLstmParameters.m_RecurrentToInputWeights =
2564  std::make_shared<ScopedTensorHandle>(params.GetRecurrentToInputWeights());
2565  layer->m_QuantizedLstmParameters.m_RecurrentToForgetWeights =
2566  std::make_shared<ScopedTensorHandle>(params.GetRecurrentToForgetWeights());
2567  layer->m_QuantizedLstmParameters.m_RecurrentToCellWeights =
2568  std::make_shared<ScopedTensorHandle>(params.GetRecurrentToCellWeights());
2569  layer->m_QuantizedLstmParameters.m_RecurrentToOutputWeights =
2570  std::make_shared<ScopedTensorHandle>(params.GetRecurrentToOutputWeights());
2571 
2572  // Bias
2573  layer->m_QuantizedLstmParameters.m_InputGateBias =
2574  std::make_shared<ScopedTensorHandle>(params.GetInputGateBias());
2575  layer->m_QuantizedLstmParameters.m_ForgetGateBias =
2576  std::make_shared<ScopedTensorHandle>(params.GetForgetGateBias());
2577  layer->m_QuantizedLstmParameters.m_CellBias =
2578  std::make_shared<ScopedTensorHandle>(params.GetCellBias());
2579  layer->m_QuantizedLstmParameters.m_OutputGateBias =
2580  std::make_shared<ScopedTensorHandle>(params.GetOutputGateBias());
2581 
2582  return layer;
2583 }

◆ AddQuantizeLayer()

IConnectableLayer * AddQuantizeLayer ( const char *  name = nullptr)

Definition at line 2464 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2465 {
2466  return m_Graph->AddLayer<QuantizeLayer>(name);
2467 }

◆ AddRankLayer()

IConnectableLayer * AddRankLayer ( const char *  name = nullptr)

Definition at line 2232 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2233 {
2234  return m_Graph->AddLayer<RankLayer>(name);
2235 }

◆ AddReduceLayer()

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

Definition at line 2237 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2239 {
2240  return m_Graph->AddLayer<ReduceLayer>(reduceDescriptor, name);
2241 }

◆ AddReshapeLayer()

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

Definition at line 2280 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2282 {
2283  return m_Graph->AddLayer<ReshapeLayer>(reshapeDescriptor, name);
2284 }

◆ AddResizeLayer()

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

Definition at line 2243 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2244 {
2245  return m_Graph->AddLayer<ResizeLayer>(resizeDescriptor, name);
2246 }

◆ AddShapeLayer()

IConnectableLayer * AddShapeLayer ( const char *  name = nullptr)

Definition at line 2248 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2249 {
2250  return m_Graph->AddLayer<ShapeLayer>(name);
2251 }

◆ AddSliceLayer()

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

Definition at line 2173 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2174 {
2175  return m_Graph->AddLayer<SliceLayer>(sliceDescriptor, name);
2176 }

◆ AddSoftmaxLayer()

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

Definition at line 2178 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2180 {
2181  return m_Graph->AddLayer<SoftmaxLayer>(softmaxDescriptor, name);
2182 }

◆ AddSpaceToBatchNdLayer()

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

Definition at line 2286 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2288 {
2289  return m_Graph->AddLayer<SpaceToBatchNdLayer>(spaceToBatchNdDescriptor, name);
2290 }

◆ AddSpaceToDepthLayer()

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

Definition at line 2292 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2294 {
2295  return m_Graph->AddLayer<SpaceToDepthLayer>(spaceToDepthDescriptor, name);
2296 }

◆ AddSplitterLayer()

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

Definition at line 2184 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2186 {
2187  return m_Graph->AddLayer<SplitterLayer>(splitterDescriptor, name);
2188 }

◆ AddStackLayer()

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

Definition at line 2534 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2536 {
2537  return m_Graph->AddLayer<StackLayer>(stackDescriptor, name);
2538 }

◆ AddStandInLayer()

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

Definition at line 2541 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2543 {
2544  return m_Graph->AddLayer<StandInLayer>(desc, name);
2545 }

◆ AddStridedSliceLayer()

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

Definition at line 2474 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

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

◆ AddSubtractionLayer()

IConnectableLayer * AddSubtractionLayer ( const char *  name = nullptr)

Definition at line 2449 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2450 {
2451  return m_Graph->AddLayer<SubtractionLayer>(name);
2452 }

◆ AddSwitchLayer()

IConnectableLayer * AddSwitchLayer ( const char *  name = nullptr)

Definition at line 2496 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2497 {
2498  return m_Graph->AddLayer<SwitchLayer>(name);
2499 }

◆ AddTransposeConvolution2dLayer()

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

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

2510 {
2511  if (descriptor.m_BiasEnabled && !biases.has_value())
2512  {
2513  throw InvalidArgumentException("AddTransposeConvolution2dLayer: Biases cannot be empty");
2514  }
2515 
2516  const auto layer = m_Graph->AddLayer<TransposeConvolution2dLayer>(descriptor, name);
2517 
2518  layer->m_Weight = std::make_shared<ScopedTensorHandle>(weights);
2519 
2520  if (descriptor.m_BiasEnabled)
2521  {
2522  layer->m_Bias = std::make_shared<ScopedTensorHandle>(biases.value());
2523  }
2524 
2525  return layer;
2526 }

◆ AddTransposeLayer()

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

Definition at line 2528 of file Network.cpp.

Referenced by NetworkImpl::GetGraph().

2530 {
2531  return m_Graph->AddLayer<TransposeLayer>(transposeDescriptor, name);
2532 }

◆ AddUnidirectionalSequenceLstmLayer()

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

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

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

◆ ExecuteStrategy()

void ExecuteStrategy ( IStrategy strategy) const

Definition at line 2913 of file Network.cpp.

References NetworkImpl::GetGraph().

Referenced by NetworkImpl::GetGraph().

2914 {
2915  for (auto layer : GetGraph())
2916  {
2917  layer->ExecuteStrategy(strategy);
2918  };
2919 }
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_DEPRECATED_MSG_REMOVAL_DATE, NetworkImpl::ExecuteStrategy(), and NetworkImpl::PrintGraph().

Referenced by NetworkImpl::ExecuteStrategy().

38  { return *m_Graph; }

◆ PrintGraph()

Status PrintGraph ( )

Definition at line 1900 of file Network.cpp.

References armnn::Success.

Referenced by NetworkImpl::GetGraph().

1901 {
1902  m_Graph->Print();
1903  return Status::Success;
1904 }

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