From 8217c8e4f488eb32733c481ab3a4d905069479f1 Mon Sep 17 00:00:00 2001 From: Georgios Pinitas Date: Mon, 11 Nov 2019 18:24:22 +0000 Subject: COMPMID-2895: Remove QASYMM8_PER_CHANNEL data type Change-Id: I2d1b77370f8eceeaeae95306b4db5d90ababb76f Signed-off-by: Georgios Pinitas Reviewed-on: https://review.mlplatform.org/c/2266 Reviewed-by: Michele Di Giorgio Comments-Addressed: Arm Jenkins Tested-by: Arm Jenkins --- tests/AssetsLibrary.h | 2 +- tests/Utils.h | 1 - tests/datasets/DatatypeDataset.h | 2 +- tests/validation/Helpers.cpp | 9 --------- tests/validation/Helpers.h | 9 --------- tests/validation/fixtures/DequantizationLayerFixture.h | 12 +++++------- tests/validation/reference/DequantizationLayer.cpp | 6 ++---- 7 files changed, 9 insertions(+), 32 deletions(-) (limited to 'tests') diff --git a/tests/AssetsLibrary.h b/tests/AssetsLibrary.h index 280f6ddbd0..f8635ea576 100644 --- a/tests/AssetsLibrary.h +++ b/tests/AssetsLibrary.h @@ -632,7 +632,6 @@ void AssetsLibrary::fill_tensor_uniform(T &&tensor, std::random_device::result_t { case DataType::U8: case DataType::QASYMM8: - case DataType::QASYMM8_PER_CHANNEL: { std::uniform_int_distribution distribution_u8(std::numeric_limits::lowest(), std::numeric_limits::max()); fill(tensor, distribution_u8, seed_offset); @@ -640,6 +639,7 @@ void AssetsLibrary::fill_tensor_uniform(T &&tensor, std::random_device::result_t } case DataType::S8: case DataType::QSYMM8: + case DataType::QSYMM8_PER_CHANNEL: case DataType::QASYMM8_SIGNED: { std::uniform_int_distribution distribution_s8(std::numeric_limits::lowest(), std::numeric_limits::max()); diff --git a/tests/Utils.h b/tests/Utils.h index 6b3935e526..aff63d3119 100644 --- a/tests/Utils.h +++ b/tests/Utils.h @@ -355,7 +355,6 @@ void store_value_with_data_type(void *ptr, T value, DataType data_type) { case DataType::U8: case DataType::QASYMM8: - case DataType::QASYMM8_PER_CHANNEL: *reinterpret_cast(ptr) = value; break; case DataType::S8: diff --git a/tests/datasets/DatatypeDataset.h b/tests/datasets/DatatypeDataset.h index 9bdb346340..df0ddb3ce5 100644 --- a/tests/datasets/DatatypeDataset.h +++ b/tests/datasets/DatatypeDataset.h @@ -54,7 +54,7 @@ public: QuantizedPerChannelTypes() : ContainerDataset("QuantizedPerChannelTypes", { - DataType::QASYMM8_PER_CHANNEL + DataType::QSYMM8_PER_CHANNEL }) { } diff --git a/tests/validation/Helpers.cpp b/tests/validation/Helpers.cpp index 95a5548628..e362e05b81 100644 --- a/tests/validation/Helpers.cpp +++ b/tests/validation/Helpers.cpp @@ -335,15 +335,6 @@ std::pair get_symm_quantized_per_channel_bounds(const QuantizationInfo return std::pair { min_bound, max_bound }; } -std::pair get_asymm_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"); - - const int min_bound = quantize_qasymm8_per_channel(min, quant_info, channel_id); - const int max_bound = quantize_qasymm8_per_channel(max, quant_info, channel_id); - return std::pair { min_bound, max_bound }; -} - template void get_tile(const SimpleTensor &in, SimpleTensor &roi, const Coordinates &coord); template void get_tile(const SimpleTensor &in, SimpleTensor &roi, const Coordinates &coord); template void get_tile(const SimpleTensor &in, SimpleTensor &roi, const Coordinates &coord); diff --git a/tests/validation/Helpers.h b/tests/validation/Helpers.h index 2c1df39f14..a0169752de 100644 --- a/tests/validation/Helpers.h +++ b/tests/validation/Helpers.h @@ -285,15 +285,6 @@ std::pair get_quantized_bounds(const QuantizationInfo &quant_info, flo * @param[in] channel_id Channel id for per channel quantization info. */ std::pair get_symm_quantized_per_channel_bounds(const QuantizationInfo &quant_info, float min, float max, size_t channel_id = 0); - -/** Helper function to compute asymmetric quantized min and max bounds - * - * @param[in] quant_info Quantization info to be used for conversion - * @param[in] min Floating point minimum value to be quantized - * @param[in] max Floating point maximum value to be quantized - * @param[in] channel_id Channel id for per channel quantization info. - */ -std::pair get_asymm_quantized_per_channel_bounds(const QuantizationInfo &quant_info, float min, float max, size_t channel_id = 0); } // namespace validation } // namespace test } // namespace arm_compute diff --git a/tests/validation/fixtures/DequantizationLayerFixture.h b/tests/validation/fixtures/DequantizationLayerFixture.h index c7a818fcc7..f44f8658c2 100644 --- a/tests/validation/fixtures/DequantizationLayerFixture.h +++ b/tests/validation/fixtures/DequantizationLayerFixture.h @@ -101,12 +101,12 @@ protected: switch(src_data_type) { case DataType::QASYMM8: - case DataType::QASYMM8_PER_CHANNEL: { SimpleTensor src{ shape, src_data_type, 1, _quantization_info }; fill(src); return reference::dequantization_layer(src); } + case DataType::QSYMM8_PER_CHANNEL: case DataType::QSYMM8: { SimpleTensor src{ shape, src_data_type, 1, _quantization_info }; @@ -138,16 +138,14 @@ protected: return QuantizationInfo(1.f / distribution_scale_q16(gen)); case DataType::QSYMM8: return QuantizationInfo(1.f / distribution_scale_q8(gen)); - case DataType::QASYMM8_PER_CHANNEL: + case DataType::QSYMM8_PER_CHANNEL: { - std::vector scale(num_channels); - std::vector offset(num_channels); + std::vector scale(num_channels); for(int32_t i = 0; i < num_channels; ++i) { - scale[i] = 1.f / distribution_scale_q8(gen); - offset[i] = distribution_offset_q8(gen); + scale[i] = 1.f / distribution_offset_q8(gen); } - return QuantizationInfo(scale, offset); + return QuantizationInfo(scale); } case DataType::QASYMM8: return QuantizationInfo(1.f / distribution_scale_q8(gen), distribution_offset_q8(gen)); diff --git a/tests/validation/reference/DequantizationLayer.cpp b/tests/validation/reference/DequantizationLayer.cpp index 69a49a3d6d..16f25c4427 100644 --- a/tests/validation/reference/DequantizationLayer.cpp +++ b/tests/validation/reference/DequantizationLayer.cpp @@ -65,16 +65,14 @@ SimpleTensor dequantization_layer(const SimpleTensor &src) const int C = src.shape().z(); const int N = src.shape().total_size() / (WH * C); - const std::vector qscales = src.quantization_info().scale(); - const std::vector qoffsets = src.quantization_info().offset(); - const bool has_offsets = src_data_type == DataType::QASYMM8_PER_CHANNEL; + const std::vector qscales = src.quantization_info().scale(); for(int n = 0; n < N; ++n) { for(int c = 0; c < C; ++c) { const size_t idx = n * C * WH + c * WH; - const UniformQuantizationInfo channel_qinfo = { qscales[c], has_offsets ? qoffsets[c] : 0 }; + const UniformQuantizationInfo channel_qinfo = { qscales[c], 0 }; // Dequantize slice for(int s = 0; s < WH; ++s) -- cgit v1.2.1