From 227db8db83cd85d8704a8edbd4e8c88af0dd1f84 Mon Sep 17 00:00:00 2001 From: Adnan AlSinan Date: Tue, 14 Feb 2023 14:24:09 +0000 Subject: Add an option to use lowest for max-pooling - Add a parameter in PoolingLayerInfo class to pick which value to use as min for max-pooling. Resolves: [ONCPUML-1166] Signed-off-by: Adnan AlSinan Change-Id: I34e1cccc15176bbf31523c61e99f3188ddca23e1 Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/8989 Comments-Addressed: Arm Jenkins Reviewed-by: SiCong Li Reviewed-by: Pablo Marquez Tello Tested-by: Arm Jenkins Benchmark: Arm Jenkins --- arm_compute/core/Types.h | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'arm_compute/core') diff --git a/arm_compute/core/Types.h b/arm_compute/core/Types.h index 71ec926483..e8eed67c58 100644 --- a/arm_compute/core/Types.h +++ b/arm_compute/core/Types.h @@ -1209,7 +1209,8 @@ struct PoolingLayerInfo pad_stride_info(PadStrideInfo()), exclude_padding(false), is_global_pooling(false), - fp_mixed_precision(false) + fp_mixed_precision(false), + use_inf_as_limit(true) { } /** Constructor @@ -1222,20 +1223,23 @@ struct PoolingLayerInfo * True will exclude padding while false will not (Used in AVG/L2 pooling to determine the pooling area). * Defaults to false; * @param[in] fp_mixed_precision (Optional) Use wider accumulators (32 bit instead of 16 for FP16) to improve accuracy. + * @param[in] use_inf_as_limit (Optional) Use inf to represent the limits of datatypes range, instead of using "lowest" property of the data type. */ explicit PoolingLayerInfo(PoolingType pool_type, unsigned int pool_size, DataLayout data_layout, PadStrideInfo pad_stride_info = PadStrideInfo(), bool exclude_padding = false, - bool fp_mixed_precision = false) + bool fp_mixed_precision = false, + bool use_inf_as_limit = true) : pool_type(pool_type), pool_size(Size2D(pool_size, pool_size)), data_layout(data_layout), pad_stride_info(pad_stride_info), exclude_padding(exclude_padding), is_global_pooling(false), - fp_mixed_precision(fp_mixed_precision) + fp_mixed_precision(fp_mixed_precision), + use_inf_as_limit(use_inf_as_limit) { } @@ -1249,20 +1253,23 @@ struct PoolingLayerInfo * True will exclude padding while false will not (Used in AVG/L2 pooling to determine the pooling area). * Defaults to false; * @param[in] fp_mixed_precision (Optional) Use wider accumulators (32 bit instead of 16 for FP16) to improve accuracy. + * @param[in] use_inf_as_limit (Optional) Use inf to represent the limits of datatypes range, instead of using "lowest" property of the data type. */ explicit PoolingLayerInfo(PoolingType pool_type, Size2D pool_size, DataLayout data_layout, PadStrideInfo pad_stride_info = PadStrideInfo(), bool exclude_padding = false, - bool fp_mixed_precision = false) + bool fp_mixed_precision = false, + bool use_inf_as_limit = true) : pool_type(pool_type), pool_size(pool_size), data_layout(data_layout), pad_stride_info(pad_stride_info), exclude_padding(exclude_padding), is_global_pooling(false), - fp_mixed_precision(fp_mixed_precision) + fp_mixed_precision(fp_mixed_precision), + use_inf_as_limit(use_inf_as_limit) { } @@ -1280,7 +1287,8 @@ struct PoolingLayerInfo pad_stride_info(PadStrideInfo(1, 1, 0, 0)), exclude_padding(false), is_global_pooling(true), - fp_mixed_precision(false) + fp_mixed_precision(false), + use_inf_as_limit(true) { } @@ -1291,6 +1299,7 @@ struct PoolingLayerInfo bool exclude_padding; bool is_global_pooling; bool fp_mixed_precision; + bool use_inf_as_limit; }; /** Pooling Layer Information struct*/ -- cgit v1.2.1