From 6665f82b38ce904aa588230546d66e65d38f20d6 Mon Sep 17 00:00:00 2001 From: Manuel Bottini Date: Thu, 3 Oct 2019 12:03:19 +0100 Subject: COMPMID-2452: Mismatches FP16 in CL InstanceNormalization Change-Id: I8a28557370be50b2ccc9534feb9fc552c6ee5cf0 Signed-off-by: Manuel Bottini Reviewed-on: https://review.mlplatform.org/c/2037 Tested-by: Arm Jenkins Reviewed-by: Michele Di Giorgio Comments-Addressed: Arm Jenkins --- .../reference/InstanceNormalizationLayer.cpp | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) (limited to 'tests/validation/reference/InstanceNormalizationLayer.cpp') diff --git a/tests/validation/reference/InstanceNormalizationLayer.cpp b/tests/validation/reference/InstanceNormalizationLayer.cpp index 0e5c02aa99..ad0ac1be68 100644 --- a/tests/validation/reference/InstanceNormalizationLayer.cpp +++ b/tests/validation/reference/InstanceNormalizationLayer.cpp @@ -52,26 +52,21 @@ SimpleTensor instance_normalization(const SimpleTensor &src, float gamma, for(size_t c_i = 0; c_i < c_size; ++c_i) { float sum_h_w = 0; - //Compute mean + float sum_sq_h_w = 0; + for(size_t h_i = 0; h_i < h_size; ++h_i) { for(size_t w_i = 0; w_i < w_size; ++w_i) { - sum_h_w += src[coord2index(src.shape(), Coordinates(w_i, h_i, c_i, n_i))]; + float val = src[coord2index(src.shape(), Coordinates(w_i, h_i, c_i, n_i))]; + sum_h_w += val; + sum_sq_h_w += val*val; } } + //Compute mean const float mean_h_w = sum_h_w / (h_size * w_size); - //Compute variance - float partial_var_h_w = 0; - for(size_t h_i = 0; h_i < h_size; ++h_i) - { - for(size_t w_i = 0; w_i < w_size; ++w_i) - { - partial_var_h_w += std::pow(src[coord2index(src.shape(), Coordinates(w_i, h_i, c_i, n_i))] - mean_h_w, 2); - } - } - const float var_h_w = partial_var_h_w / (h_size * w_size); + const float var_h_w = sum_sq_h_w / (h_size * w_size) - mean_h_w * mean_h_w;; //Apply mean for(size_t h_i = 0; h_i < h_size; ++h_i) -- cgit v1.2.1