mindspore.mint.nn.functional.adaptive_avg_pool3d
- mindspore.mint.nn.functional.adaptive_avg_pool3d(input, output_size)[source]
Performs 3D adaptive average pooling on a multi-plane input signal. That is, for any input size, the size of the specified output is \((D, H, W)\). The number of output features is equal to the number of input planes.
Suppose the last 3 dimension size of x is \((D_{in}, H_{in}, W_{in})\), the last 3 dimension size of output is \((D_{out}, H_{out}, W_{out})\).
\[\begin{split}\begin{array}{ll} \\ \forall \quad od \in [0, D_{out}-1], oh \in [0, H_{out}-1], ow \in [0, W_{out}-1] \\ output[od,oh,ow] = \\ \qquad mean(x[D_{istart}:D_{iend}+1,H_{istart}:H_{iend}+1,W_{istart}:W_{iend}+1]) \\ where, \\ \qquad D_{istart}= \left\lceil \frac{od * D_{in}}{D_{out}} \right\rceil \\ \qquad D_{iend}=\left\lfloor \frac{(od+1)* D_{in}}{D_{out}} \right\rfloor \\ \qquad H_{istart}=\left\lceil \frac{oh * H_{in}}{H_{out}} \right\rceil \\ \qquad H_{iend}=\left\lfloor \frac{(oh+1) * H_{in}}{H_{out}} \right\rfloor \\ \qquad W_{istart}=\left\lceil \frac{ow * W_{in}}{W_{out}} \right\rceil \\ \qquad W_{iend}=\left\lfloor \frac{(ow+1) * W_{in}}{W_{out}} \right\rfloor \end{array}\end{split}\]Warning
For Ascend, it is only supported on Atlas A2 Training Series Products.
- Parameters
input (Tensor) – The input of adaptive_avg_pool3d, which is a 4D or 5D Tensor.
output_size (Union[int, tuple]) – The target output size. output_size can be a tuple \((D, H, W)\), or an int D for \((D, D, D)\). \(D\), \(H\) and \(W\) can be int or None which means the output size is the same as that of the input.
- Returns
Tensor, with the same type as the input.
- Raises
TypeError – If input is not a Tensor.
ValueError – If the dimension of input is not 4D or 5D.
ValueError – If output_size value is not positive.
- Supported Platforms:
Ascend
Examples
>>> import mindspore >>> import numpy as np >>> from mindspore import Tensor, mint >>> # case 1: output_size=(3, 3, 4) >>> output_size=(3, 3, 4) >>> input_val = np.random.randn(4, 3, 5, 6, 7) >>> input = Tensor(input_val, mindspore.float32) >>> output = mint.nn.functional.adaptive_avg_pool3d(input, output_size) >>> print(output.shape) (4, 3, 3, 3, 4) >>> # case 2: output_size=4 >>> output_size=5 >>> input_val = np.random.randn(2, 3, 8, 6, 12) >>> input = Tensor(input_val, mindspore.float32) >>> output = mint.nn.functional.adaptive_avg_pool3d(input, output_size) >>> print(output.shape) (2, 3, 5, 5, 5) >>> # case 3: output_size=(None, 4, 5) >>> output_size=(None, 4, 5) >>> input_val = np.random.randn(4, 1, 9, 10, 8) >>> input = Tensor(input_val, mindspore.float32) >>> output = mint.nn.functional.adaptive_avg_pool3d(input, output_size) >>> print(output.shape) (4, 1, 9, 4, 5)