paddle.nn.functional. adaptive_avg_pool2d ( x, output_size, data_format='NCHW', name=None ) [source]

This API implements adaptive average pooling 2d operation. See more details in api_nn_pooling_AdaptiveAvgPool2d .

  • x (Tensor) – The input tensor of adaptive avg pool2d operator, which is a 4-D tensor. The data type can be float32 or float64.

  • output_size (int|list|tuple) – The pool kernel size. If pool kernel size is a tuple or list, it must contain two element, (H, W). H and W can be either a int, or None which means the size will be the same as that of the input.

  • data_format (str) – The data format of the input and output data. An optional string from: “NCHW”, “NHWC”. The default is “NCHW”. When it is “NCHW”, the data is stored in the order of: [batch_size, input_channels, input_height, input_width].

  • name (str, optional) – For detailed information, please refer to Name. Usually name is no need to set and None by default.


The output tensor of avg adaptive pool2d result. The data type is same as input tensor.

Return type



ValueError – If data_format is not “NCHW” or “NHWC”.


# adaptive avg pool2d
# suppose input data in shape of [N, C, H, W], `output_size` is [m, n],
# output shape is [N, C, m, n], adaptive pool divide H and W dimensions
# of input data into m * n grids averagely and performs poolings in each
# grid to get output.
# adaptive avg pool performs calculations as follow:
#     for i in range(m):
#         for j in range(n):
#             hstart = floor(i * H / m)
#             hend = ceil((i + 1) * H / m)
#             wstart = floor(i * W / n)
#             wend = ceil((i + 1) * W / n)
#             output[:, :, i, j] = avg(input[:, :, hstart: hend, wstart: wend])
import paddle
import numpy as np

input_data = np.random.rand(2, 3, 32, 32)
x = paddle.to_tensor(input_data)
# x.shape is [2, 3, 32, 32]
out = paddle.nn.functional.adaptive_avg_pool2d(
                x = x,
                output_size=[3, 3])
# out.shape is [2, 3, 3, 3]