diff options
author | Cathal Corbett <cathal.corbett@arm.com> | 2022-04-14 17:55:11 +0100 |
---|---|---|
committer | Cathal Corbett <cathal.corbett@arm.com> | 2022-05-05 16:10:06 +0000 |
commit | 0690265d83e5aa79bd174544a7b35330781619dd (patch) | |
tree | 2cb825017ee202ebcfa9c8428271a4dccaed72a4 /src/armnn/Layer.cpp | |
parent | 3a3a6bfaedc64fac3644c8fe88dbfc3947e2b3ab (diff) | |
download | armnn-0690265d83e5aa79bd174544a7b35330781619dd.tar.gz |
IVGCVSW-6127 ConstTensorsAsInput: DepthwiseConvolution2d
!android-nn-driver:7418
* Update Front-end and Tools.
* Updated Serializer, Deserializer and unit tests to reflect this.
* Updated TfLiteDelegate, TfLiteParser and OnnxParser.
* Change NNDriver to new API.
* Updated Ref.
* Neon and Cl backend partially completed (Backend.cpp files).
* Added dynamic or constant input EndToEnd tests.
* Added ConstantTensorAsInputMemeberVariableRedirect Optimization.
Signed-off-by: Cathal Corbett <cathal.corbett@arm.com>
Change-Id: Ib18b6c10a093042e165e25237dc04a4c67ba82da
Diffstat (limited to 'src/armnn/Layer.cpp')
-rw-r--r-- | src/armnn/Layer.cpp | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/src/armnn/Layer.cpp b/src/armnn/Layer.cpp index 805612d1cb..a31119b395 100644 --- a/src/armnn/Layer.cpp +++ b/src/armnn/Layer.cpp @@ -23,6 +23,19 @@ namespace armnn // Instantiate the static member variable NullDescriptor Layer::m_NullDescriptor; +template <typename LayerT> +void AssertMultipleInputSlots(Layer& layer) +{ + if(PolymorphicDowncast<const LayerT*>(&(layer.GetParameters()))->m_BiasEnabled) + { + ARMNN_ASSERT(layer.GetNumInputSlots() == 3); + } + else + { + ARMNN_ASSERT(layer.GetNumInputSlots() == 2); + } +} + void InputSlot::Insert(Layer& layer) { ARMNN_ASSERT(layer.GetNumOutputSlots() == 1); @@ -34,8 +47,21 @@ void InputSlot::Insert(Layer& layer) // Disconnects parent from this. prevSlot->Disconnect(*this); + switch (layer.GetType()) + { + case LayerType::DepthwiseConvolution2d: + { + AssertMultipleInputSlots<DepthwiseConvolution2dDescriptor>(layer); + break; + } + default: + { + ARMNN_ASSERT(layer.GetNumInputSlots() == 1); + break; + } + } + // Connects inserted layer to parent. - ARMNN_ASSERT(layer.GetNumInputSlots() == 1); int idx = prevSlot->Connect(layer.GetInputSlot(0)); prevSlot->SetEdgeStrategy(armnn::numeric_cast<unsigned int>(idx), EdgeStrategy::Undefined); |