blob: e37d6f530054c76af325508aae0397f7e7649942 [file] [log] [blame]
Derek Lambertia9cca6a2019-03-25 15:41:58 +00001//
Finn Williams87d0bda2020-07-03 10:12:03 +01002// Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
Derek Lambertia9cca6a2019-03-25 15:41:58 +00003// SPDX-License-Identifier: MIT
4//
5
6#include "QuantizeLayer.hpp"
7
8#include "LayerCloneBase.hpp"
9
10#include <armnn/ILayerVisitor.hpp>
11
12namespace armnn
13{
14
15QuantizeLayer::QuantizeLayer(const char* name)
16: Layer(1, 1, LayerType::Quantize, name)
17{}
18
Derek Lamberti94a88d22019-12-10 21:12:59 +000019std::unique_ptr<IWorkload> QuantizeLayer::CreateWorkload(const IWorkloadFactory& factory) const
Derek Lambertia9cca6a2019-03-25 15:41:58 +000020{
Derek Lamberti5f400d62019-03-25 15:41:58 +000021 QuantizeQueueDescriptor descriptor;
Keith Davisdf04d232020-10-23 17:20:05 +010022 SetAdditionalInfo(descriptor);
23
Derek Lamberti94a88d22019-12-10 21:12:59 +000024 WorkloadInfo info = PrepInfoAndDesc(descriptor);
Keith Davisdf04d232020-10-23 17:20:05 +010025
Derek Lamberti5f400d62019-03-25 15:41:58 +000026 return factory.CreateQuantize(descriptor, info);
Derek Lambertia9cca6a2019-03-25 15:41:58 +000027}
28
29Layer* QuantizeLayer::Clone(Graph& graph) const
30{
31 QuantizeLayer* clone = CloneBase<QuantizeLayer>(graph, GetName());
32 return clone;
33}
34
Finn Williamsf24effa2020-07-03 10:12:03 +010035void QuantizeLayer::ValidateTensorShapesFromInputs()
Derek Lambertia9cca6a2019-03-25 15:41:58 +000036{
Derek Lambertia9cca6a2019-03-25 15:41:58 +000037 VerifyLayerConnections(1, CHECK_LOCATION());
38
Finn Williams87d0bda2020-07-03 10:12:03 +010039 const TensorShape& outputShape = GetOutputSlot(0).GetTensorInfo().GetShape();
40
Finn Williamsf24effa2020-07-03 10:12:03 +010041 VerifyShapeInferenceType(outputShape, m_ShapeInferenceMethod);
Finn Williams87d0bda2020-07-03 10:12:03 +010042
Derek Lambertia9cca6a2019-03-25 15:41:58 +000043 auto inferredShapes = InferOutputShapes({ GetInputSlot(0).GetConnection()->GetTensorInfo().GetShape() });
44
Finn Williamsf24effa2020-07-03 10:12:03 +010045 ValidateAndCopyShape(outputShape, inferredShapes[0], m_ShapeInferenceMethod, "QuantizeLayer");
Derek Lambertia9cca6a2019-03-25 15:41:58 +000046}
47
Jan Eilers1b2654f2021-09-24 15:45:46 +010048ARMNN_NO_DEPRECATE_WARN_BEGIN
Derek Lambertia9cca6a2019-03-25 15:41:58 +000049void QuantizeLayer::Accept(ILayerVisitor& visitor) const
50{
51 visitor.VisitQuantizeLayer(this, GetName());
52}
Jan Eilers1b2654f2021-09-24 15:45:46 +010053ARMNN_NO_DEPRECATE_WARN_END
Derek Lambertia9cca6a2019-03-25 15:41:58 +000054
55} //namespace armnn