mindspore.nn.MaxPool3d

class mindspore.nn.MaxPool3d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)[source]

3D max pooling operation.

Applies a 3D max pooling over an input Tensor which can be regarded as a composition of 3D planes.

Typically the input is of shape \((N_{in}, C_{in}, D_{in}, H_{in}, W_{in})\), MaxPool outputs regional maximum in the \((D_{in}, H_{in}, W_{in})\)-dimension. Given kernel size is \(ks = (d_{ker}, h_{ker}, w_{ker})\) and stride is \(s = (s_0, s_1, s_2)\), the operation is as follows.

\[\text{output}(N_i, C_j, d, h, w) = \max_{l=0, \ldots, d_{ker}-1} \max_{m=0, \ldots, h_{ker}-1} \max_{n=0, \ldots, w_{ker}-1} \text{input}(N_i, C_j, s_0 \times d + l, s_1 \times h + m, s_2 \times w + n)\]
Parameters
  • kernel_size (Union[int, tuple[int]]) – The size of kernel used to take the maximum value, is an int number that represents depth, height and width of the kernel, or a tuple of three int numbers that represent depth, height and width respectively. The value must be a positive integer.

  • stride (Union[int, tuple[int]]) – The moving stride of pooling operation, an int number that represents the moving stride of pooling kernel in the directions of depth, height and the width, or a tuple of three int numbers that represent depth, height and width of movement respectively. The value must be a positive integer. If the value is None, the default value kernel_size is used.

  • padding (Union[int, tuple[int]]) – Pooling padding length. An int number that represents the depth, height and width of movement are both stride, or a tuple of three int numbers that represent depth, height and width of movement respectively. The value cannot be negative. Default: 0.

  • dilation (Union[int, tuple[int]]) – Control the spacing of elements in the pooling kernel. Default: 1.

  • return_indices (bool) – If True, output is a Tuple of 2 Tensors, representing the maxpool result and where the max values are generated. Otherwise, only the maxpool result is returned. Default: False.

  • ceil_mode (bool) – Whether to use ceil or floor to calculate output shape. Default: False.

Inputs:
  • x (Tensor) - Tensor of shape \((N_{in}, C_{in}, D_{in}, H_{in}, W_{in})\) or \((C_{in}, D_{in}, H_{in}, W_{in})\) with data type of int8, int16, int32, int64, uint8, uint16, uint32, uint64, float16, float32 or float64.

Outputs:

If return_indices is False, output is a Tensor, with shape \((N, C, D_{out}, H_{out}, W_{out})\), or \((C_{out}, D_{out}, H_{out}, W_{out})\). It has the same data type as x.

If return_indices is True, output is a Tuple of 2 Tensors, representing the maxpool result and where the max values are generated.

  • output (Tensor) - Maxpooling result, with shape \((N_{out}, C_{out}, D_{out}, H_{out}, W_{out})\) or \((C_{out}, D_{out}, H_{out}, W_{out})\). It has the same data type as x.

  • argmax (Tensor) - Index corresponding to the maximum value. Data type is int64.

Raises
  • TypeError – If x is not a Tensor.

  • ValueError – If length of shape of x is not equal to 5.

  • TypeError – If kernel_size , stride , padding or dilation is neither an int nor a tuple.

  • ValueError – If kernel_size or stride is less than 1.

  • ValueError – If padding is less than 0.

Supported Platforms:

GPU

Examples

>>> import mindspore as ms
>>> import mindspore.nn as nn
>>> import numpy as np
>>> pool1 = nn.MaxPool3d(kernel_size=3, stride=1, padding=1)
>>> pool2 = nn.MaxPool3d(kernel_size=3, stride=1, padding=1, return_indices=True)
>>> x = ms.Tensor(np.random.randint(0, 10, [1, 2, 2, 2, 2]), ms.float32)
>>> output1 = pool1(x)
>>> print(output1)
[[[[[8. 8.]
    [8. 8.]]
   [[8. 8.]
    [8. 8.]]]
  [[[9. 9.]
    [9. 9.]]
   [[9. 9.]
    [9. 9.]]]]]
>>> output2 = pool2(x)
>>> print(output2)
(Tensor(shape=[1, 2, 2, 2, 2], dtype=Float32, value=
[[[[[8.00000000e+000, 8.00000000e+000],
    [8.00000000e+000, 8.00000000e+000]],
   [[8.00000000e+000, 8.00000000e+000],
    [8.00000000e+000, 8.00000000e+000]]],
  [[[9.00000000e+000, 9.00000000e+000],
    [9.00000000e+000, 9.00000000e+000]],
   [[9.00000000e+000, 9.00000000e+000],
    [9.00000000e+000, 9.00000000e+000]]]]]), Tensor(shape=[1, 2, 2, 2, 2], dtype=Int64, value=
[[[[[7, 7],
    [7, 7]],
   [[7, 7],
    [7, 7]]],
  [[[2, 2],
    [2, 2]],
   [[2, 2],
    [2, 2]]]]]))