diff options
Diffstat (limited to 'tests/validation/Helpers.cpp')
-rw-r--r-- | tests/validation/Helpers.cpp | 35 |
1 files changed, 22 insertions, 13 deletions
diff --git a/tests/validation/Helpers.cpp b/tests/validation/Helpers.cpp index fef4510405..afefee77be 100644 --- a/tests/validation/Helpers.cpp +++ b/tests/validation/Helpers.cpp @@ -122,53 +122,53 @@ SimpleTensor<float> convert_from_asymmetric(const SimpleTensor<uint8_t> &src) } template <> -SimpleTensor<float> convert_from_asymmetric(const SimpleTensor<uint16_t> &src) +SimpleTensor<float> convert_from_asymmetric(const SimpleTensor<int8_t> &src) { const UniformQuantizationInfo &quantization_info = src.quantization_info().uniform(); SimpleTensor<float> dst{ src.shape(), DataType::F32, 1, QuantizationInfo(), src.data_layout() }; for(int i = 0; i < src.num_elements(); ++i) { - dst[i] = dequantize_qasymm16(src[i], quantization_info); + dst[i] = dequantize_qasymm8_signed(src[i], quantization_info); } return dst; } template <> -SimpleTensor<uint8_t> convert_to_asymmetric(const SimpleTensor<float> &src, const QuantizationInfo &quantization_info) +SimpleTensor<float> convert_from_asymmetric(const SimpleTensor<uint16_t> &src) { - SimpleTensor<uint8_t> dst{ src.shape(), DataType::QASYMM8, 1, quantization_info }; - const UniformQuantizationInfo &qinfo = quantization_info.uniform(); + const UniformQuantizationInfo &quantization_info = src.quantization_info().uniform(); + SimpleTensor<float> dst{ src.shape(), DataType::F32, 1, QuantizationInfo(), src.data_layout() }; for(int i = 0; i < src.num_elements(); ++i) { - dst[i] = quantize_qasymm8(src[i], qinfo); + dst[i] = dequantize_qasymm16(src[i], quantization_info); } return dst; } template <> -SimpleTensor<int8_t> convert_to_asymmetric(const SimpleTensor<float> &src, const QuantizationInfo &quantization_info) +SimpleTensor<uint8_t> convert_to_asymmetric(const SimpleTensor<float> &src, const QuantizationInfo &quantization_info) { - SimpleTensor<int8_t> dst{ src.shape(), DataType::QASYMM8_SIGNED, 1, quantization_info }; + SimpleTensor<uint8_t> dst{ src.shape(), DataType::QASYMM8, 1, quantization_info }; const UniformQuantizationInfo &qinfo = quantization_info.uniform(); for(int i = 0; i < src.num_elements(); ++i) { - dst[i] = quantize_qasymm8_signed(src[i], qinfo); + dst[i] = quantize_qasymm8(src[i], qinfo); } return dst; } template <> -SimpleTensor<float> convert_from_asymmetric(const SimpleTensor<int8_t> &src) +SimpleTensor<int8_t> convert_to_asymmetric(const SimpleTensor<float> &src, const QuantizationInfo &quantization_info) { - const UniformQuantizationInfo &quantization_info = src.quantization_info().uniform(); - SimpleTensor<float> dst{ src.shape(), DataType::F32, 1, QuantizationInfo(), src.data_layout() }; + SimpleTensor<int8_t> dst{ src.shape(), DataType::QASYMM8_SIGNED, 1, quantization_info }; + const UniformQuantizationInfo &qinfo = quantization_info.uniform(); for(int i = 0; i < src.num_elements(); ++i) { - dst[i] = dequantize_qasymm8_signed(src[i], quantization_info); + dst[i] = quantize_qasymm8_signed(src[i], qinfo); } return dst; } @@ -354,6 +354,15 @@ std::pair<int, int> get_quantized_bounds(const QuantizationInfo &quant_info, flo return std::pair<int, int> { min_bound, max_bound }; } +std::pair<int, int> get_quantized_qasymm8_signed_bounds(const QuantizationInfo &quant_info, float min, float max) +{ + ARM_COMPUTE_ERROR_ON_MSG(min > max, "min must be lower equal than max"); + + const int min_bound = quantize_qasymm8_signed(min, quant_info.uniform()); + const int max_bound = quantize_qasymm8_signed(max, quant_info.uniform()); + return std::pair<int, int> { min_bound, max_bound }; +} + std::pair<int, int> get_symm_quantized_per_channel_bounds(const QuantizationInfo &quant_info, float min, float max, size_t channel_id) { ARM_COMPUTE_ERROR_ON_MSG(min > max, "min must be lower equal than max"); |