add AdaptiveAvgPool2d && AdaptiveMaxPool3d docs

This commit is contained in:
fan-jibin 2022-07-13 17:03:50 +08:00
parent 221c009c44
commit 8d57d3e83c
7 changed files with 77 additions and 5 deletions

View File

@ -181,8 +181,10 @@ Dropout层
:template: classtemplate.rst
mindspore.nn.AdaptiveAvgPool1d
mindspore.nn.AdaptiveAvgPool2d
mindspore.nn.AdaptiveMaxPool1d
mindspore.nn.AdaptiveMaxPool2d
mindspore.nn.AdaptiveMaxPool3d
mindspore.nn.AvgPool1d
mindspore.nn.AvgPool2d
mindspore.nn.MaxPool1d

View File

@ -0,0 +1,39 @@
mindspore.nn.AdaptiveAvgPool2d
==============================
.. py:class:: mindspore.nn.AdaptiveAvgPool2d(output_size)
2维自适应平均池化。
对输入Tensor提供2维的自适应平均池化操作也就是说对于输入任何尺寸指定输出的尺寸都为H * W。但是输入和输出特征的数目不会变化。
输入和输出数据格式可以是"NCHW"和"CHW"。N是批处理大小C是通道数H是特征高度W是特征宽度。运算如下
.. math::
\begin{align}
h_{start} &= floor(i * H_{in} / H_{out})\\
h_{end} &= ceil((i + 1) * H_{in} / H_{out})\\
w_{start} &= floor(j * W_{in} / W_{out})\\
w_{end} &= ceil((j + 1) * W_{in} / W_{out})\\
Output(i,j) &= \frac{\sum Input[h_{start}:h_{end}, w_{start}:w_{end}]}{(h_{end}- h_{start})
* (w_{end}- w_{start})}
\end{align}
**参数:**
- **output_size** (Union[int, tuple]) - 输出特征图的尺寸为H * W。可以是int类型的H和W组成的tuple也可以为一个int值代表相同H和W或None如果是None则意味着输出大小与输入相同。
**输入:**
- **input_x** (Tensor) - AdaptiveAvgPool2d的输入为三维或四维的Tensor数据类型为float16、float32或者float64。
**输出:**
Tensor输出shape为 :math:`(N, C_{out}, H_{out}, W_{out})`
**异常:**
- **ValueError** - 如果 `output_size` 是tuple并且 `output_size` 的长度不是2。
- **TypeError** - 如果 `input_x` 不是Tensor。
- **TypeError** - 如果 `input_x` 的数据类型不是float16、float32或者float64。
- **ValueError** - 如果 `input_x` 的维度小于或等于 `output_size` 的维度。

View File

@ -0,0 +1,29 @@
mindspore.nn.AdaptiveMaxPool3d
==============================
.. py:class:: mindspore.nn.AdaptiveMaxPool3d(output_size, return_indices=False)
3维自适应最大值池化。
对于任何输入尺寸,输出的大小为 :math:`(D, H, W)` ,其中输出特征的数量与输入特征的数量相同。
**参数:**
- **output_size** (Union[int, tuple]) - 表示输出特征图的尺寸输入可以是tuple :math:`(D, H, W)`也可以是一个int值D来表示输出尺寸为 :math:`(D, D, D)`:math:`D` :math:`H`:math:`W` 可以是int型整数或者None其中None表示输出大小与对应的输入的大小相同。
- **return_indices** (bool) - 如果 `return_indices` 为True将会输出最大值对应的索引否则不输出索引。默认为False。
**输入:**
- **x** (Tensor) - shape为 :math:`(C, D, H, W)`:math:`(NC, D, H, W)` 的Tensor支持的数据类型包括int8、int16、int32、int64、uint8、uint16、uint32、uint64、float16、float32、float64。
**输出:**
- **y** (Tensor) - Tensor与输入 `x` 的数据类型和维度相同。
- **argmax** (Tensor) - Tensor最大值对应的索引数据类型为int32并与 `y` 的shape相同。仅当 `return_indices` 为True的时候才返回该值。
**异常:**
- **TypeError** - `x` 不是Tensor。
- **ValueError** - `x` 的维度不是4D或者5D。
- **TypeError** - `x` 的数据类型不是int8、int16、int32、int64、uint8、uint16、uint32、uint64、float16、float32、float64其中之一。
- **ValueError** - `output_size` 不是一个int整数或者shape为(3,)的tuple。

View File

@ -181,8 +181,10 @@ Pooling Layer
:template: classtemplate.rst
mindspore.nn.AdaptiveAvgPool1d
mindspore.nn.AdaptiveAvgPool2d
mindspore.nn.AdaptiveMaxPool1d
mindspore.nn.AdaptiveMaxPool2d
mindspore.nn.AdaptiveMaxPool3d
mindspore.nn.AvgPool1d
mindspore.nn.AvgPool2d
mindspore.nn.MaxPool1d

View File

@ -770,7 +770,7 @@ class AdaptiveMaxPool3d(Cell):
ValueError: If the dimensions number of `x` is not 4 or 5.
TypeError: If dtype of `x` is not int8, int16, int32, int64, uint8, uint16, uint32, uint64,
float16, float32 or float64.
ValueError: If the shape of `output_size` is not (3,).
ValueError: If `output_size` is neither an int nor a tuple with shape (3,).
Supported Platforms:
``GPU``

View File

@ -1644,9 +1644,9 @@ def max_pool3d(x, kernel_size, stride=None, padding=0, dilation=1, ceil_mode=Fal
>>> x = Tensor(np.arange(2 * 1 * 2 * 2 * 2).reshape((2, 1, 2, 2, 2)), mindspore.float32)
>>> output_tensor, argmax = F.max_pool3d(x, kernel_size=2, stride=1, padding=1, return_indices=True)
>>> print(output_tensor.shape)
[2, 1, 3, 3, 3]
(2, 1, 3, 3, 3)
>>> print(argmax.shape)
[2, 1, 3, 3, 3]
(2, 1, 3, 3, 3)
"""
strides = stride if (stride is not None) else kernel_size
max_pool3d_with_argmax_ = _get_cache_prim(NN_OPS.MaxPool3DWithArgmax)(

View File

@ -2523,9 +2523,9 @@ class MaxPool3DWithArgmax(Primitive):
>>> max_pool3d_with_arg_op = ops.MaxPool3DWithArgmax(ksize=2, strides=1, pads=1)
>>> output_tensor, argmax = max_pool3d_with_arg_op(x)
>>> print(output_tensor.shape)
[2, 1, 3, 3, 3]
(2, 1, 3, 3, 3)
>>> print(argmax.shape)
[2, 1, 3, 3, 3]
(2, 1, 3, 3, 3)
"""
@prim_attr_register