diff options
author | Michele Di Giorgio <michele.digiorgio@arm.com> | 2018-09-26 14:39:39 +0100 |
---|---|---|
committer | Anthony Barbier <anthony.barbier@arm.com> | 2018-11-02 16:55:19 +0000 |
commit | 3f6a57a39ca1d19e737d169fd43766243bde4a92 (patch) | |
tree | d9f55119291e53dc82597952be103594d497ab46 /tests/validation/fixtures | |
parent | 932491f44d51940d82514417a82e43cb11b06bd4 (diff) | |
download | ComputeLibrary-3f6a57a39ca1d19e737d169fd43766243bde4a92.tar.gz |
COMPMID-1599: (Nightly) CL/NormalizePlanarYUVLayer/Quantized/QASYMM8 mismatches
Fixing bounds of random values for Normalize Planar YUV tests when using
QASYMM8.
Furthermore, since 70d252d8b4 a QASYMM8 implementation of Batch Normalization
would have been tested with tensors filled with all 1s. This patch removes that
as QASYMM8 Batch Normalization is not supported.
Change-Id: Ieab83ed36b2d7af760ceb19a07d1eedcc991957f
Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/150492
Reviewed-by: Isabella Gottardi <isabella.gottardi@arm.com>
Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
Tested-by: bsgcomp <bsgcomp@arm.com>
Diffstat (limited to 'tests/validation/fixtures')
-rw-r--r-- | tests/validation/fixtures/BatchNormalizationLayerFixture.h | 73 | ||||
-rw-r--r-- | tests/validation/fixtures/NormalizePlanarYUVLayerFixture.h | 18 |
2 files changed, 31 insertions, 60 deletions
diff --git a/tests/validation/fixtures/BatchNormalizationLayerFixture.h b/tests/validation/fixtures/BatchNormalizationLayerFixture.h index 65e89b92da..359752f14e 100644 --- a/tests/validation/fixtures/BatchNormalizationLayerFixture.h +++ b/tests/validation/fixtures/BatchNormalizationLayerFixture.h @@ -59,63 +59,30 @@ protected: template <typename U> void fill(U &&src_tensor, U &&mean_tensor, U &&var_tensor, U &&beta_tensor, U &&gamma_tensor) { - if(is_data_type_float(_data_type)) + const float min_bound = -1.f; + const float max_bound = 1.f; + std::uniform_real_distribution<> distribution(min_bound, max_bound); + std::uniform_real_distribution<> distribution_var(0, max_bound); + library->fill(src_tensor, distribution, 0); + library->fill(mean_tensor, distribution, 1); + library->fill(var_tensor, distribution_var, 0); + if(_use_beta) { - float min_bound = 0.f; - float max_bound = 0.f; - std::tie(min_bound, max_bound) = get_batchnormalization_layer_test_bounds<T>(); - std::uniform_real_distribution<> distribution(min_bound, max_bound); - std::uniform_real_distribution<> distribution_var(0, max_bound); - library->fill(src_tensor, distribution, 0); - library->fill(mean_tensor, distribution, 1); - library->fill(var_tensor, distribution_var, 0); - if(_use_beta) - { - library->fill(beta_tensor, distribution, 3); - } - else - { - // Fill with default value 0.f - library->fill_tensor_value(beta_tensor, 0.f); - } - if(_use_gamma) - { - library->fill(gamma_tensor, distribution, 4); - } - else - { - // Fill with default value 1.f - library->fill_tensor_value(gamma_tensor, 1.f); - } + library->fill(beta_tensor, distribution, 3); } else { - int min_bound = 0; - int max_bound = 0; - std::tie(min_bound, max_bound) = get_batchnormalization_layer_test_bounds<T>(); - std::uniform_int_distribution<> distribution(min_bound, max_bound); - std::uniform_int_distribution<> distribution_var(0, max_bound); - library->fill(src_tensor, distribution, 0); - library->fill(mean_tensor, distribution, 1); - library->fill(var_tensor, distribution_var, 0); - if(_use_beta) - { - library->fill(beta_tensor, distribution, 3); - } - else - { - // Fill with default value 0 - library->fill_tensor_value(beta_tensor, static_cast<T>(0)); - } - if(_use_gamma) - { - library->fill(gamma_tensor, distribution, 4); - } - else - { - // Fill with default value 1 - library->fill_tensor_value(gamma_tensor, static_cast<T>(1)); - } + // Fill with default value 0.f + library->fill_tensor_value(beta_tensor, 0.f); + } + if(_use_gamma) + { + library->fill(gamma_tensor, distribution, 4); + } + else + { + // Fill with default value 1.f + library->fill_tensor_value(gamma_tensor, 1.f); } } diff --git a/tests/validation/fixtures/NormalizePlanarYUVLayerFixture.h b/tests/validation/fixtures/NormalizePlanarYUVLayerFixture.h index 9d8c8fcbce..3bb935e49f 100644 --- a/tests/validation/fixtures/NormalizePlanarYUVLayerFixture.h +++ b/tests/validation/fixtures/NormalizePlanarYUVLayerFixture.h @@ -58,20 +58,24 @@ protected: { if(is_data_type_float(_data_type)) { - float min_bound = 0.f; - float max_bound = 0.f; - std::tie(min_bound, max_bound) = get_normalize_planar_yuv_layer_test_bounds<T>(); + const float min_bound = -1.f; + const float max_bound = 1.f; std::uniform_real_distribution<> distribution(min_bound, max_bound); std::uniform_real_distribution<> distribution_std(0.1, max_bound); library->fill(src_tensor, distribution, 0); library->fill(mean_tensor, distribution, 1); library->fill(std_tensor, distribution_std, 2); } - else if(is_data_type_quantized_asymmetric(src_tensor.data_type())) + else if(is_data_type_quantized_asymmetric(_data_type)) { - library->fill_tensor_uniform(src_tensor, 0); - library->fill_tensor_uniform(mean_tensor, 1); - library->fill_tensor_uniform(std_tensor, 2); + const QuantizationInfo quant_info = src_tensor.quantization_info(); + const int min_bound = quant_info.quantize(-1.f, RoundingPolicy::TO_NEAREST_UP); + const int max_bound = quant_info.quantize(1.f, RoundingPolicy::TO_NEAREST_UP); + std::uniform_int_distribution<> distribution(min_bound, max_bound); + std::uniform_int_distribution<> distribution_std(quant_info.quantize(0.1f, RoundingPolicy::TO_NEAREST_UP), max_bound); + library->fill(src_tensor, distribution, 0); + library->fill(mean_tensor, distribution, 1); + library->fill(std_tensor, distribution_std, 2); } } |