diff --git a/aidge_export_cpp/kernels/pooling.hpp b/aidge_export_cpp/kernels/pooling.hpp index 667e1a98cc3542cf598d223d59a767dccad6c651..a86fd4196a9f6e19f45dbdc4f1035c1e94e7d285 100644 --- a/aidge_export_cpp/kernels/pooling.hpp +++ b/aidge_export_cpp/kernels/pooling.hpp @@ -86,7 +86,7 @@ void pooling_forward( outputs[oOffset + output] = maxVal; } else if (POOLING_TYPE == Average) { - int32_t sum = 0; + Output_T sum = 0; for (int sy = 0; sy < POOL_HEIGHT; ++sy) { if ((PADDING_Y != 0 diff --git a/aidge_export_cpp/operators.py b/aidge_export_cpp/operators.py index c89236bf7b452c370d6dc6577b61a9e0b7aa9cdc..5abb137d9431e2b21b83ecacd5329ebc496c61f4 100644 --- a/aidge_export_cpp/operators.py +++ b/aidge_export_cpp/operators.py @@ -248,6 +248,20 @@ class MaxPoolCPP(ExportNodeCpp): _setup_pooling(self) +@ExportLibCpp.register("AvgPooling2D", aidge_core.ImplSpec(aidge_core.IOSpec(aidge_core.dtype.float32))) +class AvgPoolCPP(ExportNodeCpp): + def __init__(self, node, mem_info): + super().__init__(node, mem_info) + + # No padding with MaxPooling + # Use PaddedMaxPooling to add padding attribute + self.attributes["padding"] = [0, 0] + self.attributes["pool_type"] = "Average" + self.attributes["activation"] = "Linear" + self.attributes["rescaling"] = "NoScaling" + + _setup_pooling(self) + @ExportLibCpp.register_metaop("PaddedMaxPooling2D", aidge_core.ImplSpec(aidge_core.IOSpec(aidge_core.dtype.float32))) class PaddedMaxPoolCPP(ExportNodeCpp): def __init__(self, node, mem_info):