From 4ae7f3aa9c42451f4e7fdf5a6e38134486695a6e Mon Sep 17 00:00:00 2001 From: Noam Zerah <noam.zerah@cea.fr> Date: Tue, 1 Apr 2025 12:02:36 +0000 Subject: [PATCH] Fix avgpooling forwardims when kernel size > input dim size --- src/operator/AvgPooling.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/operator/AvgPooling.cpp b/src/operator/AvgPooling.cpp index 7561297ba..966063cd0 100644 --- a/src/operator/AvgPooling.cpp +++ b/src/operator/AvgPooling.cpp @@ -75,11 +75,12 @@ bool Aidge::AvgPooling_Op<DIM>::forwardDims(bool /*allowDataDependency*/) { const auto strideDim = mAttributes->template getAttr<AvgPoolingAttr::StrideDims>()[dim]; const auto dilationDim = mAttributes->template getAttr<AvgPoolingAttr::Dilations>()[dim]; - outputDims[dim+2] = 1 + static_cast<DimSize_t>( - roundingFunction(static_cast<float>(inputDims[dim+2] - - (kernelDim - 1) * dilationDim - 1) / - static_cast<float>(strideDim))); + const float effective_size = static_cast<float>(inputDims[dim+2] - (kernelDim - 1) * dilationDim - 1); + const float rounded_val = roundingFunction(effective_size / static_cast<float>(strideDim)); + + outputDims[dim+2] = 1 + std::max(0, static_cast<int>(rounded_val)); } + outputDims[1] = inputDims[1]; outputDims[0] = inputDims[0]; getOutput(0)->resize(outputDims); -- GitLab