aboutsummaryrefslogtreecommitdiff
path: root/tests/validation/Helpers.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/validation/Helpers.cpp')
-rw-r--r--tests/validation/Helpers.cpp35
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");