max_unpool2d

paddle.nn.functional. max_unpool2d ( x, indices, kernel_size, stride=None, padding=0, data_format='NCHW', output_size=None, name=None ) [source]

This API implements max unpooling 2d operation. See more details in MaxUnPool2D .

Parameters
  • x (Tensor) – The input tensor of unpooling operator which is a 4-D tensor with shape [N, C, H, W]. The format of input tensor is “NCHW”, where N is batch size, C is the number of channels, H is the height of the feature, and W is the width of the feature. The data type is float32, float64 or int64.

  • indices (Tensor) – The indices given out by maxpooling2d which is a 4-D tensor with shape [N, C, H, W]. The format of input tensor is “NCHW” , where N is batch size, C is the number of channels, H is the height of the feature, and W is the width of the feature. The data type is float32 or float64.

  • kernel_size (int|list|tuple) – The unpool kernel size. If unpool kernel size is a tuple or list, it must contain an integer.

  • stride (int|list|tuple) – The unpool stride size. If unpool stride size is a tuple or list, it must contain an integer.

  • padding (int | tuple) – Padding that was added to the input.

  • output_size (list|tuple, optional) – The target output size. If output_size is not specified, the actual output shape will be automatically calculated by (input_shape, kernel_size, padding).

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

  • Input (-) – \((N, C, H_{in}, W_{in})\)

  • Output (-) –

    \((N, C, H_{out}, W_{out})\), where

    \[H_{out} = (H_{in} - 1) \times \text{stride[0]} - 2 \times \text{padding[0]} + \text{kernel\_size[0]}\]
    \[W_{out} = (W_{in} - 1) \times \text{stride[1]} - 2 \times \text{padding[1]} + \text{kernel\_size[1]}\]

    or as given by output_size in the call operator

  • Returns – Tensor: The output tensor of unpooling result.

  • Raises – ValueError: If the input is not a 4-D tensor. ValueError: If indices shape is not equal input shape.

  • Examples

    >>> import paddle
    >>> import paddle.nn.functional as F
    
    >>> data = paddle.rand(shape=[1, 1, 6, 6])
    >>> pool_out, indices = F.max_pool2d(data, kernel_size=2, stride=2, padding=0, return_mask=True)
    >>> print(pool_out.shape)
    [1, 1, 3, 3]
    >>> print(indices.shape)
    [1, 1, 3, 3]
    >>> unpool_out = F.max_unpool2d(pool_out, indices, kernel_size=2, padding=0)
    >>> print(unpool_out.shape)
    [1, 1, 6, 6]
    
    >>> # specify a different output size than input size
    >>> unpool_out = F.max_unpool2d(pool_out, indices, kernel_size=2, padding=0, output_size=[7, 7])
    >>> print(unpool_out.shape)
    [1, 1, 7, 7]