From b4dd5cc86d4eb841de670f0f102ede599e0d9c40 Mon Sep 17 00:00:00 2001 From: Keith Davis Date: Thu, 7 Apr 2022 11:32:00 +0100 Subject: 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 Change-Id: I5fb18877f7ee32643e15a9818945356274bb401b --- include/armnn/Descriptors.hpp | 2 ++ include/armnn/ILayerVisitor.hpp | 10 ++++++++++ include/armnn/INetwork.hpp | 15 +++++++++++---- include/armnn/LayerVisitorBase.hpp | 4 ++++ 4 files changed, 27 insertions(+), 4 deletions(-) (limited to 'include/armnn') diff --git a/include/armnn/Descriptors.hpp b/include/armnn/Descriptors.hpp index 4aa23a4ee0..7f46c6a79d 100644 --- a/include/armnn/Descriptors.hpp +++ b/include/armnn/Descriptors.hpp @@ -524,6 +524,8 @@ struct Convolution2dDescriptor : BaseDescriptor m_BiasEnabled == rhs.m_BiasEnabled && m_DataLayout == rhs.m_DataLayout; } + uint32_t GetNumInputs() const; + /// Padding left value in the width dimension. uint32_t m_PadLeft; diff --git a/include/armnn/ILayerVisitor.hpp b/include/armnn/ILayerVisitor.hpp index d5e3d11fbd..a0c782e66e 100644 --- a/include/armnn/ILayerVisitor.hpp +++ b/include/armnn/ILayerVisitor.hpp @@ -98,6 +98,15 @@ public: const ConstTensor& input, const char* name = nullptr) = 0; + /// Function that a 2D convolution layer should call back to when its Accept(ILayerVisitor&) + /// function is invoked. + /// @param layer - pointer to the layer which is calling back to this visit function. + /// @param convolution2dDescriptor - Description of the 2D convolution layer. + /// @param name - Optional name for the layer. + virtual void VisitConvolution2dLayer(const IConnectableLayer* layer, + const Convolution2dDescriptor& convolution2dDescriptor, + const char* name = nullptr) = 0; + /// Function that a 2D convolution layer should call back to when its Accept(ILayerVisitor&) /// function is invoked. /// @param layer - pointer to the layer which is calling back to this visit function. @@ -105,6 +114,7 @@ public: /// @param weights - Tensor for the weights data. /// @param biases - Optional tensor for the bias data. If specified, must match the output tensor shape. /// @param name - Optional name for the layer. + ARMNN_DEPRECATED_MSG("Use VisitConvolution2dLayer without ConstTensors") virtual void VisitConvolution2dLayer(const IConnectableLayer* layer, const Convolution2dDescriptor& convolution2dDescriptor, const ConstTensor& weights, diff --git a/include/armnn/INetwork.hpp b/include/armnn/INetwork.hpp index 1d6276bfe7..89b4776d39 100644 --- a/include/armnn/INetwork.hpp +++ b/include/armnn/INetwork.hpp @@ -42,7 +42,7 @@ class IOutputSlot public: virtual unsigned int GetNumConnections() const = 0; virtual const IInputSlot* GetConnection(unsigned int index) const = 0; - virtual IInputSlot* GetConnection(unsigned int index) = 0; + virtual IInputSlot* GetConnection(unsigned int outputindex) = 0; virtual void SetTensorInfo(const TensorInfo& tensorInfo) = 0; virtual const TensorInfo& GetTensorInfo() const = 0; @@ -291,12 +291,20 @@ public: IConnectableLayer* AddConcatLayer(const ConcatDescriptor& concatDescriptor, const char* name = nullptr); + /// Adds a 2D convolution layer to the network. + /// @param convolution2dDescriptor - Description of the 2D convolution layer. + /// @param name - Optional name for the layer. + /// @return - Interface for configuring the layer. + IConnectableLayer* AddConvolution2dLayer(const Convolution2dDescriptor& convolution2dDescriptor, + const char* name = nullptr); + /// Adds a 2D convolution layer to the network. /// @param convolution2dDescriptor - Description of the 2D convolution layer. /// @param weights - Tensor for the weights data. /// @param biases - Optional tensor for the bias data. If specified, must match the output tensor shape. /// @param name - Optional name for the layer. /// @return - Interface for configuring the layer. + ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This AddConvolution2dLayer overload is deprecated", "22.08") IConnectableLayer* AddConvolution2dLayer(const Convolution2dDescriptor& convolution2dDescriptor, const ConstTensor& weights, const Optional& biases, @@ -331,9 +339,8 @@ public: /// @param convolution2dDescriptor - Description of the 2D depthwise convolution layer. /// @param name - Optional name for the layer. /// @return - Interface for configuring the layer. - IConnectableLayer* AddDepthwiseConvolution2dLayer( - const DepthwiseConvolution2dDescriptor& convolution2dDescriptor, - const char* name = nullptr); + IConnectableLayer* AddDepthwiseConvolution2dLayer(const DepthwiseConvolution2dDescriptor& convolution2dDescriptor, + const char* name = nullptr); /// Adds a 2D depthwise convolution layer to the network. /// @param convolution2dDescriptor - Description of the 2D depthwise convolution layer. diff --git a/include/armnn/LayerVisitorBase.hpp b/include/armnn/LayerVisitorBase.hpp index acc8aa00b3..025fca7eb0 100644 --- a/include/armnn/LayerVisitorBase.hpp +++ b/include/armnn/LayerVisitorBase.hpp @@ -72,6 +72,10 @@ public: const Optional&, const char*) override { DefaultPolicy::Apply(__func__); } + void VisitConvolution2dLayer(const IConnectableLayer*, + const Convolution2dDescriptor&, + const char*) override { DefaultPolicy::Apply(__func__); } + void VisitDepthToSpaceLayer(const IConnectableLayer*, const DepthToSpaceDescriptor&, const char*) override { DefaultPolicy::Apply(__func__); } -- cgit v1.2.1