AdaptiveMaxPool2d

class AdaptiveMaxPool2d(oshp, **kwargs)[source]

Applies a 2D max adaptive pooling over an input.

For instance, given an input of the size \((N, C, H, W)\) and an output shape \((OH, OW)\), this layer generates the output of the size \((N, C, OH, OW)\) through a process described as:

\[\begin{aligned} out(N_i, C_j, h, w) ={} & \max_{m=0, \ldots, kH-1} \max_{n=0, \ldots, kW-1} \text{input}(N_i, C_j, \text{stride[0]} \times h + m, \text{stride[1]} \times w + n) \end{aligned}\]

kernel_size and stride can be inferred from input shape and out shape:

  • padding: (0, 0)

  • stride: (floor(IH / OH), floor(IW / OW))

  • kernel_size: (IH - (OH - 1) * stride_h, IW - (OW - 1) * stride_w)

Parameters

oshp (Union[Tuple[int, int], int, Tensor]) – the target output shape of the image of the form Height * Width. Can be tuple (H, W) or a single H for a square image H * H.

Shape:
  • Input: \((N, C, H_{in}, W_{in})\) or \((C, H_{in}, W_{in})\).

  • Output: \((N, C, H_{out}, W_{out})\) or \((C, H_{out}, W_{out})\), where \((H_{out}, W_{out})=\text{output\_shape}\).

Returns

module. The instance of the AdaptiveMaxPool2d module.

Return type

Return type

Examples

>>> import numpy as np
>>> m = M.AdaptiveMaxPool2d((2, 2))
>>> inp = mge.tensor(np.arange(0, 16).astype("float32").reshape(1, 1, 4, 4))
>>> oup = m(inp)
>>> oup.numpy()
array([[[[ 5.,  7.],
         [13., 15.]]]], dtype=float32)