diff options
author | Tianle Cheng <tianle.cheng@arm.com> | 2023-06-28 13:20:47 +0100 |
---|---|---|
committer | Tianle Cheng <tianle.cheng@arm.com> | 2023-07-04 10:36:43 +0000 |
commit | 988354de127528bdebb98fd25661fbf2f39f17dd (patch) | |
tree | c06f5250bdd0182055ac9e84e20d6e338518ad08 /src/armnn/layers/ReverseV2Layer.cpp | |
parent | 9414936e62ed8cd18cc33c0390bb605a782556c6 (diff) | |
download | armnn-988354de127528bdebb98fd25661fbf2f39f17dd.tar.gz |
IVGCVSW-7831: Front end and Reference Implementation for REVERSE_V2
* Descriptors added for ReverseV2
* Layer definition added
* Input validation added
* Reference workload implementation for ReverseV2 added
* Reference layer unit tests made for ReverseV2
* CompareTensors method updated to support comparison between empty tensors
* CMake and other build files updated
Signed-off-by: Tianle Cheng <tianle.cheng@arm.com>
Change-Id: I805738454421309fda77c44218a8df171d68dc18
Diffstat (limited to 'src/armnn/layers/ReverseV2Layer.cpp')
-rw-r--r-- | src/armnn/layers/ReverseV2Layer.cpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/armnn/layers/ReverseV2Layer.cpp b/src/armnn/layers/ReverseV2Layer.cpp new file mode 100644 index 0000000000..29f8b1b781 --- /dev/null +++ b/src/armnn/layers/ReverseV2Layer.cpp @@ -0,0 +1,50 @@ +// +// Copyright © 2023 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include "ReverseV2Layer.hpp" + +#include <armnn/backends/WorkloadFactory.hpp> +#include "layers/LayerCloneBase.hpp" + +namespace armnn +{ +ReverseV2Layer::ReverseV2Layer(const armnn::ReverseV2Descriptor ¶m, const char *name) + : LayerWithParameters(1, 1, LayerType::ReverseV2, param, name) +{} + +std::unique_ptr<IWorkload> ReverseV2Layer::CreateWorkload(const armnn::IWorkloadFactory &factory) const +{ + ReverseV2QueueDescriptor descriptor; + SetAdditionalInfo(descriptor); + + return factory.CreateWorkload(LayerType::ReverseV2, descriptor, PrepInfoAndDesc(descriptor)); +} + +ReverseV2Layer* ReverseV2Layer::Clone(armnn::Graph &graph) const +{ + auto layer = CloneBase<ReverseV2Layer>(graph, m_Param, GetName()); + + return std::move(layer); +} + +/// Use the default Layer::InferOutputShape method + +void ReverseV2Layer::ValidateTensorShapesFromInputs() +{ + VerifyLayerConnections(1, CHECK_LOCATION()); + + const TensorShape& outputShape = GetOutputSlot(0).GetTensorInfo().GetShape(); + + VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod); + + auto inferredShapes = InferOutputShapes({ + GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() }); + + ARMNN_ASSERT(inferredShapes.size() == 1); + + ValidateAndCopyShape(outputShape, inferredShapes[0], m_ShapeInferenceMethod, "ReverseV2Layer"); +} + +}
\ No newline at end of file |