diff options
author | John Mcloughlin <john.mcloughlin@arm.com> | 2023-10-16 10:28:40 +0100 |
---|---|---|
committer | john.mcloughlin <john.mcloughlin@arm.com> | 2023-10-16 16:16:59 +0000 |
commit | b41793a9f9afc43fb04a991ca819818fca8faab8 (patch) | |
tree | 4206314ed348eeeeebc3f7747712b14f1d26e90d /src/backends/reference/workloads/Encoders.hpp | |
parent | 363b572b61f7a32e92cde51478d7556ce43db56f (diff) | |
download | armnn-b41793a9f9afc43fb04a991ca819818fca8faab8.tar.gz |
IVGCVSW-7752 DTS: Fix QuantizePerChannel tests
* Added validation for scale on all Quantized types
* Added Encoder for Per Axis UINT16 Symmetrical Quantized type
* Added error for Per Axis Asymmetrical Quantized type not supported
Signed-off-by: John Mcloughlin <john.mcloughlin@arm.com>
Change-Id: I433519ccacd71219a92bde2b81955d6abf9219c5
Diffstat (limited to 'src/backends/reference/workloads/Encoders.hpp')
-rw-r--r-- | src/backends/reference/workloads/Encoders.hpp | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/src/backends/reference/workloads/Encoders.hpp b/src/backends/reference/workloads/Encoders.hpp index d6d611494d..8a702377b2 100644 --- a/src/backends/reference/workloads/Encoders.hpp +++ b/src/backends/reference/workloads/Encoders.hpp @@ -1,5 +1,5 @@ // -// Copyright © 2017 Arm Ltd. All rights reserved. +// Copyright © 2017-2023 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -56,10 +56,24 @@ inline std::unique_ptr<Encoder<float>> MakeEncoder(const TensorInfo& info, void* } case armnn::DataType::QSymmS16: { - return std::make_unique<QSymm16Encoder>( - static_cast<int16_t*>(data), - info.GetQuantizationScale(), - info.GetQuantizationOffset()); + if (info.HasPerAxisQuantization()) + { + unsigned int axis = info.GetQuantizationDim().value(); + auto axisDimensionality = info.GetShape()[axis]; + std::pair<unsigned int, std::vector<float>> params = armnnUtils::GetPerAxisParams(info); + return std::make_unique<QSymm16PerAxisEncoder>( + static_cast<int16_t*>(data), + params.second, + params.first, + axisDimensionality); + } + else + { + return std::make_unique<QSymm16Encoder>( + static_cast<int16_t *>(data), + info.GetQuantizationScale(), + info.GetQuantizationOffset()); + } } case armnn::DataType::Signed32: { |