diff options
author | Keith Davis <keith.davis@arm.com> | 2022-04-07 11:32:00 +0100 |
---|---|---|
committer | Ryan OShea <ryan.oshea3@arm.com> | 2022-05-19 11:05:15 +0100 |
commit | 2cddc72f7aa1eab43c69250e608d662909383ba7 (patch) | |
tree | 62c531bb82b96c14469c151c3738e1e0383e5972 /delegate | |
parent | 85edad42b8b76e76c5d969e4bc380b0e8a845c9b (diff) | |
download | armnn-2cddc72f7aa1eab43c69250e608d662909383ba7.tar.gz |
IVGCVSW-6124 ConstTensorsAsInput: Conv2d - FrontEnd
* Update Front-end and Tools.
* Updated Serializer, Deserializer and unit tests to reflect this.
* Updated TfLiteDelegate, TfLiteParser and OnnxParser.
* Updated Ref.
* Fixed resulting Neon / CL tests
* Unified optimizers for conv2d ops
* Optimizer Fix - Fp32ToBf16
* Partial implementation for ACL backends to fix VTS failures
!android-nn-driver:7477
Signed-off-by: Keith Davis <keith.davis@arm.com>
Change-Id: I5fb18877f7ee32643e15a9818945356274bb401b
Diffstat (limited to 'delegate')
-rw-r--r-- | delegate/src/Convolution.hpp | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/delegate/src/Convolution.hpp b/delegate/src/Convolution.hpp index 3b23d6d500..679f4dbe39 100644 --- a/delegate/src/Convolution.hpp +++ b/delegate/src/Convolution.hpp @@ -160,29 +160,29 @@ TfLiteStatus VisitConv2dOperator(DelegateData& delegateData, return isSupported ? kTfLiteOk : kTfLiteError; } - armnn::IConnectableLayer* layer = nullptr; - // Set up filter and biases + armnn::IConnectableLayer* layer = delegateData.m_Network->AddConvolution2dLayer(descriptor); + auto filter = CreateConstTensor(&tfLiteContext->tensors[tfLiteNode->inputs->data[1]], filterTensorInfo, armnn::Optional<armnn::PermutationVector&>()); - if(biasEnabled) - { - auto biases = - CreateConstTensor(&tfLiteContext->tensors[tfLiteNode->inputs->data[2]], - biasTensorInfo, - armnn::Optional<armnn::PermutationVector&>()); - layer = delegateData.m_Network->AddConvolution2dLayer(descriptor, - filter, - armnn::Optional<armnn::ConstTensor>(biases)); - } - else + armnn::IConnectableLayer* weightsLayer = delegateData.m_Network->AddConstantLayer(filter); + weightsLayer->GetOutputSlot(0).Connect(layer->GetInputSlot(1u)); + weightsLayer->GetOutputSlot(0).SetTensorInfo(filterTensorInfo); + + if (biasEnabled) { - layer = delegateData.m_Network->AddConvolution2dLayer(descriptor, - filter, - armnn::EmptyOptional()); + const TfLiteTensor& tfLiteBiasTensor = tfLiteTensors[tfLiteNode->inputs->data[2]]; + if(tflite::IsConstantTensor(&tfLiteBiasTensor)) + { + auto biasTensor = CreateConstTensor(&tfLiteBiasTensor, biasTensorInfo); + armnn::IConnectableLayer* biasLayer = delegateData.m_Network->AddConstantLayer(biasTensor); + ARMNN_ASSERT(biasLayer != nullptr); + biasLayer->GetOutputSlot(0).Connect(layer->GetInputSlot(2u)); + biasLayer->GetOutputSlot(0).SetTensorInfo(biasTensorInfo); + } } ARMNN_ASSERT(layer != nullptr); |