From 1a84fe3b92aaab61d2f3b865d347459e16eb43d4 Mon Sep 17 00:00:00 2001 From: Sadik Armagan Date: Fri, 27 Mar 2020 15:56:57 +0000 Subject: IVGCVSW-4555 ArmnnConverter (Serializer) does not support per-axis quantization params * TensorInfo can have multiple scales and quantization dimension. Signed-off-by: Sadik Armagan Change-Id: I0ff02e3766996b6a9da6dc4e92d366bc9505c77d --- src/armnnDeserializer/Deserializer.cpp | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'src/armnnDeserializer') diff --git a/src/armnnDeserializer/Deserializer.cpp b/src/armnnDeserializer/Deserializer.cpp index bc6fbf0194..58232a2763 100644 --- a/src/armnnDeserializer/Deserializer.cpp +++ b/src/armnnDeserializer/Deserializer.cpp @@ -508,6 +508,9 @@ armnn::TensorInfo ToTensorInfo(Deserializer::TensorRawPtr tensorPtr) case DataType_QAsymmS8: type = armnn::DataType::QAsymmS8; break; + case DataType_QSymmS8: + type = armnn::DataType::QSymmS8; + break; case DataType_QuantisedAsymm8: case DataType_QAsymmU8: type = armnn::DataType::QAsymmU8; @@ -539,13 +542,30 @@ armnn::TensorInfo ToTensorInfo(Deserializer::TensorRawPtr tensorPtr) location.AsString())); } } - float quantizationScale = tensorPtr->quantizationScale(); - int32_t quantizationOffset = tensorPtr->quantizationOffset(); + auto dimensions = tensorPtr->dimensions(); unsigned int size = dimensions->size(); std::vector outputDims(dimensions->begin(), dimensions->begin() + size); + auto quantizationScales = tensorPtr->quantizationScales(); + + if (quantizationScales) + { + unsigned int quantizationScalesSize = quantizationScales->size(); + std::vector scales(quantizationScales->begin(), quantizationScales->begin() + quantizationScalesSize); + unsigned int quantizationDim = tensorPtr->quantizationDim(); + armnn::TensorInfo result(size, + outputDims.data(), + type, + scales, + quantizationDim); + return result; + } + + float quantizationScale = tensorPtr->quantizationScale(); + int32_t quantizationOffset = tensorPtr->quantizationOffset(); + // two statements (on purpose) for easier debugging: armnn::TensorInfo result(size, outputDims.data(), -- cgit v1.2.1