diff options
author | Conor Kennedy <conor.kennedy@arm.com> | 2018-11-14 15:28:28 +0000 |
---|---|---|
committer | Aron Virginas-Tar <Aron.Virginas-Tar@arm.com> | 2018-11-15 11:23:08 +0000 |
commit | 430b5d824a17ddfb31bb29c18407e45e0def958c (patch) | |
tree | 529e92404ae0df12c3f92da803637591f3bba7ee /include/armnn | |
parent | 5caf907efc31e774f8afde54b17a5596477772f6 (diff) | |
download | armnn-430b5d824a17ddfb31bb29c18407e45e0def958c.tar.gz |
IVGCVSW-2086: Add StridedSlice layer & corresponding no-op factory implementations
Change-Id: I906dcb8b4c9b491bf3a661f208c09d0ea1c0fa35
Diffstat (limited to 'include/armnn')
-rw-r--r-- | include/armnn/Descriptors.hpp | 33 | ||||
-rw-r--r-- | include/armnn/DescriptorsFwd.hpp | 1 | ||||
-rw-r--r-- | include/armnn/ILayerSupport.hpp | 5 | ||||
-rw-r--r-- | include/armnn/INetwork.hpp | 7 | ||||
-rw-r--r-- | include/armnn/LayerSupport.hpp | 8 |
5 files changed, 54 insertions, 0 deletions
diff --git a/include/armnn/Descriptors.hpp b/include/armnn/Descriptors.hpp index 396e427ee4..f8dd18ab8a 100644 --- a/include/armnn/Descriptors.hpp +++ b/include/armnn/Descriptors.hpp @@ -421,4 +421,37 @@ struct PadDescriptor std::vector<std::pair<unsigned int, unsigned int>> m_PadList; }; +struct StridedSliceDescriptor +{ + StridedSliceDescriptor() + : m_DataLayout(DataLayout::NCHW) + {} + + StridedSliceDescriptor(const std::vector<int>& begin, + const std::vector<int>& end, + const std::vector<int>& stride) + : m_Begin(begin) + , m_End(end) + , m_Stride(stride) + , m_BeginMask(0) + , m_EndMask(0) + , m_ShrinkAxisMask(0) + , m_EllipsisMask(0) + , m_NewAxisMask(0) + , m_DataLayout(DataLayout::NCHW) + {} + + std::vector<int> m_Begin; + std::vector<int> m_End; + std::vector<int> m_Stride; + + int32_t m_BeginMask; + int32_t m_EndMask; + int32_t m_ShrinkAxisMask; + int32_t m_EllipsisMask; + int32_t m_NewAxisMask; + + DataLayoutIndexed m_DataLayout; +}; + } diff --git a/include/armnn/DescriptorsFwd.hpp b/include/armnn/DescriptorsFwd.hpp index 0e96c360d3..a2acc0717e 100644 --- a/include/armnn/DescriptorsFwd.hpp +++ b/include/armnn/DescriptorsFwd.hpp @@ -26,6 +26,7 @@ struct ResizeBilinearDescriptor; struct SoftmaxDescriptor; struct OriginsDescriptor; struct ViewsDescriptor; +struct StridedSliceDescriptor; using MergerDescriptor = OriginsDescriptor; using SplitterDescriptor = ViewsDescriptor; diff --git a/include/armnn/ILayerSupport.hpp b/include/armnn/ILayerSupport.hpp index 1bf268f409..e679f84109 100644 --- a/include/armnn/ILayerSupport.hpp +++ b/include/armnn/ILayerSupport.hpp @@ -183,6 +183,11 @@ public: const ViewsDescriptor& descriptor, Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const; + virtual bool IsStridedSliceSupported(const TensorInfo& input, + const TensorInfo& output, + const StridedSliceDescriptor& descriptor, + Optional<std::string&> reasonIfUnsupported = EmptyOptional()) const; + virtual bool IsSubtractionSupported(const TensorInfo& input0, const TensorInfo& input1, const TensorInfo& output, diff --git a/include/armnn/INetwork.hpp b/include/armnn/INetwork.hpp index df274d6dc1..ac7faab279 100644 --- a/include/armnn/INetwork.hpp +++ b/include/armnn/INetwork.hpp @@ -311,6 +311,13 @@ public: virtual IConnectableLayer* AddPadLayer(const PadDescriptor& padDescriptor, const char* name = nullptr) = 0; + /// Adds a strided slice layer to the network. + /// @param StridedSliceDescriptor - Parameters for the strided slice operation. + /// @param name - Optional name for the layer. + /// @return - Interface for configuring the layer. + virtual IConnectableLayer* AddStridedSliceLayer(const StridedSliceDescriptor& stridedSliceDescriptor, + const char* name = nullptr) = 0; + protected: ~INetwork() {} }; diff --git a/include/armnn/LayerSupport.hpp b/include/armnn/LayerSupport.hpp index bd20f185da..7bed5779d3 100644 --- a/include/armnn/LayerSupport.hpp +++ b/include/armnn/LayerSupport.hpp @@ -254,4 +254,12 @@ bool IsPadSupported(const BackendId& backend, char* reasonIfUnsupported = nullptr, size_t reasonIfUnsupportedMaxLength = 1024); +/// Deprecated in favor of IBackend and ILayerSupport interfaces +bool IsStridedSliceSupported(const BackendId& backend, + const TensorInfo& input, + const TensorInfo& output, + const StridedSliceDescriptor& descriptor, + char* reasonIfUnsupported = nullptr, + size_t reasonIfUnsupportedMaxLength = 1024); + } |