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 operatorReturns – 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]