Skip to content

Commit ee43c76

Browse files
EnigmatismsLittleHeroZZZX
authored andcommitted
[API-Compat] CN docs for compat.Unfold/split/sort/min/max (PaddlePaddle#7396)
* [API-Compat] CN docs for compat.Unfold & compat.split * [Fix] balanced '`' in the doc. * [Fix] Separate CN/EN signs and unified return blocks. * [API-Compat Doc] Add compat.min/max/sort * [API-Compat] Updated overview * [API-Compat] Fixed min/max ad index_cn
1 parent 3b14f9b commit ee43c76

File tree

8 files changed

+351
-0
lines changed

8 files changed

+351
-0
lines changed

docs/api/index_cn.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ API 文档
3131
| paddle.callbacks | 日志回调类,包括 ModelCheckpoint、 |
3232
| | ProgBarLogger 等。 |
3333
+--------------------------+------------------------------------------------------------------------------------+
34+
| paddle.compat | PyTorch 兼容的函数与模块, |
35+
| | 行为与 PyTorch 对应接口一致 |
36+
+--------------------------+------------------------------------------------------------------------------------+
3437
| paddle.device | 设备管理相关 API,包括 set_device、get_device 等。 |
3538
+--------------------------+------------------------------------------------------------------------------------+
3639
| paddle.distributed | 分布式相关基础 API。 |

docs/api/index_en.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ In this version, PaddlePaddle has made many optimizations to the APIs. You can r
3434
| paddle.callbacks | Paddle log callback APIs, including ModelCheckpoint, |
3535
| | ProgBarLogger, etc. |
3636
+--------------------------+---------------------------------------------------------------+
37+
| paddle.compat | PyTorch-compatible APIs, with identical calling methods |
38+
| | and behaviors to their PyTorch counterparts. |
39+
+--------------------------+---------------------------------------------------------------+
3740
| paddle.device | Device management related APIs, such as set_device, |
3841
| | get_device, etc. |
3942
+--------------------------+---------------------------------------------------------------+
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
.. _cn_overview_compat:
2+
3+
paddle.compat
4+
---------------------
5+
6+
paddle.compat 目录下包含飞桨框架支持的 PyTorch 兼容函数与模块接口
7+
8+
.. _about_compat_funcs:
9+
10+
PyTorch 兼容函数
11+
::::::::::::::::::::
12+
13+
.. csv-table::
14+
:header: "API 名称", "API 功能"
15+
:widths: 10, 30
16+
17+
" :ref:`max <cn_api_paddle_compat_max>` ", "包含 `amax`、同时返回 values 及 indices 的轴向最大值、`maximum` 三种功能"
18+
" :ref:`min <cn_api_paddle_compat_min>` ", "包含 `amin`、同时返回 values 及 indices 的轴向最小值、`minimum` 三种功能"
19+
" :ref:`sort <cn_api_paddle_compat_sort>` ", "同时返回 values 及 indices 的排序"
20+
" :ref:`split <cn_api_paddle_compat_split>` ", "允许非整除块大小输入的 Tensor 轴向切分"
21+
22+
23+
.. _about_compat_class:
24+
25+
PyTorch 兼容模块
26+
::::::::::::::::::::
27+
28+
.. csv-table::
29+
:header: "类名称", "类功能"
30+
:widths: 10, 30
31+
32+
" :ref:`Unfold <cn_api_paddle_compat_Unfold>` ", "允许 Tensor 输入的 ``paddle.nn.Unfold`` 兼容版本"

docs/api/paddle/compat/Unfold_cn.rst

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
.. _cn_api_paddle_compat_Unfold:
2+
3+
Unfold
4+
-------------------------------
5+
6+
.. py:class:: paddle.compat.Unfold(kernel_size, dilation=1, padding=0, stride=1)
7+
8+
9+
PyTorch 兼容的 :ref:`cn_api_paddle_nn_Unfold` 版本:
10+
- 关键字参数使用单数形式(例如:``kernel_size`` 而非 kernel_sizes)
11+
- ``padding`` 仅支持输入长度为 1(整数)或 2 的列表,禁止使用 Size4 格式。如需更灵活的输入版本,请使用 :ref:`cn_api_paddle_nn_Unfold`
12+
- 所有输入参数支持 ``Tensor`` 或 ``pir.Value`` 类型(将自动转换为列表)
13+
- 其他特性与 :ref:`cn_api_paddle_nn_Unfold` 完全一致
14+
15+
使用前请详细参考:`【仅参数名不一致】torch.nn.Unfold`_ 以确定是否使用此模块。
16+
17+
.. _【仅参数名不一致】torch.nn.Unfold: https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/guides/model_convert/convert_from_pytorch/api_difference/nn/torch.nn.Unfold.html
18+
19+
**样例**:
20+
21+
::
22+
23+
Given:
24+
x.shape = [5, 10, 25, 25]
25+
kernel_size = [3, 3]
26+
stride = 1
27+
padding = 1
28+
29+
Return:
30+
out.shape = [5, 90, 625]
31+
32+
功能说明
33+
:::::::::::
34+
实现卷积中的 im2col 操作,将卷积核覆盖区域的元素重排列为列向量。输入形状为 [N, C, H, W] 的 ``x`` 将输出形状为 [N, Cout, Lout] 的张量。
35+
36+
37+
参数
38+
:::::::::::
39+
40+
- **kernel_size** (int|list|tuple|Tensor) - 卷积核尺寸。接受 ``[k_h, k_w]`` 或整数 ``k`` (视为 ``[k, k]``)
41+
- **dilation** (int|list|tuple|Tensor, 可选) - 卷积膨胀系数。接受单整数或 ``[dilation_h, dilation_w]``。单整数 ``dilation`` 视为 ``[dilation, dilation]``。默认为 1
42+
- **padding** (int|list|tuple|Tensor, 可选) - 各维度填充大小。接受单整数或 ``[padding_h, padding_w]``。``[padding_h, padding_w]`` 将扩展为 ``[padding_h, padding_w, padding_h, padding_w]``。单整数 ``padding`` 将转为 ``[padding, padding, padding, padding]``。默认为 0
43+
- **stride** (int|list|tuple|Tensor, 可选) - 滑动步长。接受单整数或 ``[stride_h, stride_w]``。单整数 ``stride`` 视为 ``[stride, stride]``。默认为 1
44+
45+
形状
46+
:::::::::
47+
- **输入** : 4-D Tensor,形状为[N, C, H, W],数据类型为 float32 或者 float64
48+
- **输出**:形状如上面所描述的[N, Cout, Lout],Cout 每一个滑动 block 里面覆盖的元素个数,Lout 是滑动 block 的个数,数据类型与 ``x`` 相同
49+
50+
51+
代码示例
52+
::::::::::::
53+
54+
COPY-FROM: paddle.compat.Unfold

docs/api/paddle/compat/max_cn.rst

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
.. _cn_api_paddle_compat_max:
2+
3+
max
4+
-------------------------------
5+
6+
.. note::
7+
8+
PyTorch 兼容的 :ref:`cn_api_paddle_max` 版本,本接口根据输入参数的不同,包含三种不同的功能。
9+
10+
使用前请详细参考:`【返回参数类型不一致】torch.max`_ 以确定是否使用此模块。
11+
12+
.. _【返回参数类型不一致】torch.max: https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.max.html
13+
14+
15+
.. caution::
16+
17+
下面列举的三种功能参数输入方式 **互斥**,混用非公共的参数输入方法将会导致报错,请谨慎使用。
18+
19+
20+
=====
21+
22+
23+
.. py:function:: paddle.compat.max(x, out=None)
24+
25+
26+
对整个 input tensor 求最大值,见 `paddle.amax` :ref:`cn_api_paddle_amax`
27+
28+
.. note::
29+
30+
对输入有多个最大值的情况下,``paddle.compat.max`` 的梯度表现与 ``paddle.amax`` 一致:会将梯度平均传回到最大值对应的位置。``out`` 返回方法与静态图联合使用是被禁止的行为,静态图下将报错。
31+
32+
参数
33+
:::::::::
34+
- **x** (Tensor)- Tensor,支持数据类型为 bfloat16、float16、float32、float64、int32、int64(CUDA GPU),而 uint8, int32, int64, float32, float64 在 CPU 设备上被支持。
35+
- **out** (Tensor,可选) - 用于引用式传入输出值,注意:动态图下 out 可以是任意 Tensor,默认值为 None。
36+
37+
返回
38+
:::::::::
39+
Tensor,最大值运算的 Tensor(0D),数据类型和输入数据类型一致。
40+
41+
42+
=====
43+
44+
45+
.. py:function:: paddle.compat.max(x, dim=None, keepdim=False, out=None)
46+
47+
48+
.. note::
49+
50+
对输入有多个最大值的情况下,`paddle.compat.max` 将只返回梯度值给 ``indices`` 中选择的位置。``out`` 返回方法与静态图联合使用是被禁止的行为,静态图下将报错。
51+
52+
参数
53+
:::::::::
54+
- **x** (Tensor)- Tensor,支持数据类型为 bfloat16、float16、float32、float64、int32、int64(CUDA GPU),而 uint8, int32, int64, float32, float64 在 CPU 设备上被支持。
55+
- **dim** (list|tuple|int,可选)- 求最大值运算的维度。必须在 :math:`[−x.ndim, x.ndim]` 范围内。如果 :math:`dim[i] < 0`,则维度将变为 :math:`x.ndim+dim[i]`,默认值为 None。注意,手动传入 ``dim=None`` 是不允许的,``dim`` 不可显式被指定为 None。如果需要对整个 tensor 求解全局最大值,请使用第一种参数写法。
56+
- **keepdim** (bool,可选) - 是否在输出 Tensor 中保留输入的维度。除非 keepdim 为 True,否则输出 Tensor 的维度将比输入 Tensor 小一维,默认值为 False。注意,不传入 ``dim`` 时传入本参数是不允许的!
57+
- **out** (tuple(Tensor, Tensor),可选) - 用于引用式传入输出值。``values`` 在前,``indices`` 在后。注意:动态图下 out 可以是任意 Tensor,默认值为 None。
58+
59+
返回
60+
:::::::::
61+
MinMaxRetType(Tensor, Tensor),此处的 ``MinMaxRetType`` 是一个具名元组,含有 ``values`` (在前)和 ``indices`` (在后)两个域,用法与 tuple 一致。
62+
63+
64+
=====
65+
66+
67+
.. py:function:: paddle.compat.max(x, other, out=None)
68+
69+
70+
与 ``other`` Tensor 计算逐元素最大值。见 `paddle.maximum` :ref:`cn_api_paddle_maximum`
71+
72+
.. note::
73+
74+
``out`` 返回方法与静态图联合使用是被禁止的行为,静态图下将报错。
75+
76+
参数
77+
:::::::::
78+
- **x** (Tensor)- Tensor,支持数据类型为 bfloat16、float16、float32、float64、int32、int64(CUDA GPU),而 uint8, int32, int64, float32, float64 在 CPU 设备上被支持。
79+
- **other** (Tensor)- Tensor,支持类型见 ``x``。注意,``other`` 的 shape 必须可以被广播到 ``x`` 的 shape。
80+
- **out** (Tensor,可选) - 用于引用式传入输出值,注意:动态图下 out 可以是任意 Tensor,默认值为 None。
81+
82+
返回
83+
:::::::::
84+
Tensor,逐元素最大的结果,形状、数据类型与 place 与 ``x`` 一致。
85+
86+
87+
=====
88+
89+
90+
代码示例
91+
::::::::::
92+
93+
.. note::
94+
95+
以下示例为上述三种不同输入方法对应功能的示例。
96+
97+
COPY-FROM: paddle.compat.max

docs/api/paddle/compat/min_cn.rst

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
.. _cn_api_paddle_compat_min:
2+
3+
min
4+
-------------------------------
5+
6+
.. note::
7+
8+
PyTorch 兼容的 :ref:`cn_api_paddle_min` 版本,本接口根据输入参数的不同,包含三种不同的功能。
9+
10+
使用前请详细参考:`【返回参数类型不一致】torch.min`_ 以确定是否使用此模块。
11+
12+
.. _【返回参数类型不一致】torch.min: https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.min.html
13+
14+
15+
.. caution::
16+
17+
下面列举的三种功能参数输入方式 **互斥**,混用非公共的参数输入方法将会导致报错,请谨慎使用。
18+
19+
20+
=====
21+
22+
23+
.. py:function:: paddle.compat.min(x, out=None)
24+
25+
26+
对整个 input tensor 求最小值,见 `paddle.amin` :ref:`cn_api_paddle_amin`
27+
28+
.. note::
29+
30+
对输入有多个最小值的情况下,``paddle.compat.min`` 的梯度表现与 ``paddle.amin`` 一致:会将梯度平均传回到最小值对应的位置。``out`` 返回方法与静态图联合使用是被禁止的行为,静态图下将报错。
31+
32+
参数
33+
:::::::::
34+
- **x** (Tensor)- Tensor,支持数据类型为 bfloat16、float16、float32、float64、int32、int64(CUDA GPU),而 uint8, int32, int64, float32, float64 在 CPU 设备上被支持。
35+
- **out** (Tensor,可选) - 用于引用式传入输出值,注意:动态图下 out 可以是任意 Tensor,默认值为 None。
36+
37+
返回
38+
:::::::::
39+
Tensor,最小值运算的 Tensor(0D),数据类型和输入数据类型一致。
40+
41+
42+
=====
43+
44+
45+
.. py:function:: paddle.compat.min(x, dim=None, keepdim=False, out=None)
46+
47+
48+
.. note::
49+
50+
对输入有多个最小值的情况下,`paddle.compat.min` 将只返回梯度值给 ``indices`` 中选择的位置。``out`` 返回方法与静态图联合使用是被禁止的行为,静态图下将报错。
51+
52+
参数
53+
:::::::::
54+
- **x** (Tensor)- Tensor,支持数据类型为 bfloat16、float16、float32、float64、int32、int64(CUDA GPU),而 uint8, int32, int64, float32, float64 在 CPU 设备上被支持。
55+
- **dim** (list|tuple|int,可选)- 求最小值运算的维度。必须在 :math:`[−x.ndim, x.ndim]` 范围内。如果 :math:`dim[i] < 0`,则维度将变为 :math:`x.ndim+dim[i]`,默认值为 None。注意,手动传入 ``dim=None`` 是不允许的,``dim`` 不可显式被指定为 None。如果需要对整个 tensor 求解全局最小值,请使用第一种参数写法。
56+
- **keepdim** (bool,可选) - 是否在输出 Tensor 中保留输入的维度。除非 keepdim 为 True,否则输出 Tensor 的维度将比输入 Tensor 小一维,默认值为 False。注意,不传入 ``dim`` 时传入本参数是不允许的!
57+
- **out** (tuple(Tensor, Tensor),可选) - 用于引用式传入输出值。``values`` 在前,``indices`` 在后。注意:动态图下 out 可以是任意 Tensor,默认值为 None。
58+
59+
返回
60+
:::::::::
61+
MinMaxRetType(Tensor, Tensor),此处的 ``MinMaxRetType`` 是一个具名元组,含有 ``values`` (在前)和 ``indices`` (在后)两个域,用法与 tuple 一致。
62+
63+
64+
=====
65+
66+
67+
.. py:function:: paddle.compat.min(x, other, out=None)
68+
69+
70+
与 ``other`` Tensor 计算逐元素最小值。见 `paddle.minimum` :ref:`cn_api_paddle_minimum`
71+
72+
.. note::
73+
74+
``out`` 返回方法与静态图联合使用是被禁止的行为,静态图下将报错。
75+
76+
参数
77+
:::::::::
78+
- **x** (Tensor)- Tensor,支持数据类型为 bfloat16、float16、float32、float64、int32、int64(CUDA GPU),而 uint8, int32, int64, float32, float64 在 CPU 设备上被支持。
79+
- **other** (Tensor)- Tensor,支持类型见 ``x``。注意,``other`` 的 shape 必须可以被广播到 ``x`` 的 shape。
80+
- **out** (Tensor,可选) - 用于引用式传入输出值,注意:动态图下 out 可以是任意 Tensor,默认值为 None。
81+
82+
返回
83+
:::::::::
84+
Tensor,逐元素最小的结果,形状、数据类型与 place 与 ``x`` 一致。
85+
86+
87+
=====
88+
89+
90+
代码示例
91+
::::::::::
92+
93+
.. note::
94+
95+
以下示例为上述三种不同输入方法对应功能的示例。
96+
97+
COPY-FROM: paddle.compat.min

docs/api/paddle/compat/sort_cn.rst

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
.. _cn_api_paddle_compat_sort:
2+
3+
sort
4+
-------------------------------
5+
6+
.. py:function:: paddle.compat.sort(input, dim=-1, descending=False, stable=False, out=None)
7+
8+
PyTorch 兼容的 :ref:`cn_api_paddle_sort` 版本,同时返回排序的值结果以及索引值。对输入变量沿给定轴进行排序,输出排序好的数据,其维度和输入相同。默认升序排列,如果需要降序排列设置 ``descending=True`` 。
9+
10+
使用前请详细参考:`【返回参数类型不一致】torch.sort`_ 以确定是否使用此模块。
11+
12+
.. _【返回参数类型不一致】torch.sort: https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.sort.html
13+
14+
15+
参数
16+
::::::::::::
17+
18+
- **input** (Tensor) - 输入的多维 ``Tensor``,支持的数据类型:float32, float64, int16, int32, int64, uint8, float16, bfloat16。
19+
- **dim** (int,可选) - 指定对输入 Tensor 进行运算的轴,``dim`` 的有效范围是[-R, R),R 是输入 ``x`` 的 Rank, ``dim`` 为负时与 ``dim`` +R 等价。默认值为-1。
20+
- **descending** (bool,可选) - 指定算法排序的方向。如果设置为 True,算法按照降序排序。如果设置为 False 或者不设置,按照升序排序。默认值为 False。
21+
- **stable** (bool,可选) - 是否使用稳定排序算法。若设置为 True,则使用稳定排序算法,即相同元素的顺序在排序结果中将会被保留。默认值为 False,此时的算法不一定是稳定排序算法。
22+
- **out** (tuple(Tensor, Tensor),可选) - 用于引用式传入输出值。``values`` 在前,``indices`` 在后。注意:动态图下 out 可以是任意 Tensor,默认值为 None。``out`` 返回方法与静态图联合使用是被禁止的行为,静态图下将报错。
23+
24+
返回
25+
::::::::::::
26+
SortRetType(Tensor, Tensor),此处的 ``SortRetType`` 是一个具名元组,含有 ``values`` (在前)和 ``indices`` (在后)两个域,用法与 tuple 一致。
27+
28+
29+
代码示例
30+
::::::::::::
31+
32+
COPY-FROM: paddle.compat.sort

docs/api/paddle/compat/split_cn.rst

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
.. _cn_api_paddle_compat_split:
2+
3+
split
4+
-------------------------------
5+
6+
.. py:function:: paddle.compat.split(tensor, split_size_or_sections, dim=0)
7+
8+
9+
PyTorch 兼容的 :ref:`cn_api_paddle_split` 版本,允许了非整除的 ``split_size_or_sections`` 输入
10+
11+
使用前请详细参考:`【输入参数用法不一致】torch.split`_ 以确定是否使用此模块。
12+
13+
.. _【输入参数用法不一致】torch.split: https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.split.html
14+
15+
.. note::
16+
此 API 遵循 ``torch.split`` 的函数签名和行为以实现 PyTorch 兼容。
17+
如需使用 Paddle 原生实现,请参考 :ref:`cn_api_paddle_split`
18+
19+
参数
20+
:::::::::
21+
- **tensor** (Tensor) - 输入 N 维 Tensor,支持 bool、bfloat16、float16、float32、float64、uint8、int8、int32 或 int64 数据类型
22+
- **split_size_or_sections** (int|list|tuple) - 若为整数,则将 Tensor 均匀分割为指定大小的块,与 :ref:`cn_api_paddle_split` 不同,本 API 不要求此参数整除对应维度的通道数:非整除情况下输出元组的最后一个 tensor 对应维度将为余数大小,小于此值。若为列表/元组,则按指定尺寸分割,禁止使用负值(例如对 9 通道的维度,``[2,3,-1]`` 会被拒绝)
23+
- **dim** (int|Tensor, 可选) - 分割维度,可为整数或形状为[]的 0-D Tensor(数据类型需为 ``int32`` 或 ``int64``)。若 ``dim < 0``,则实际维度为 ``rank(x) + dim``。默认值:0
24+
25+
返回
26+
:::::::::
27+
tuple(Tensor),分割后的 Tensor 元组
28+
29+
30+
代码示例
31+
:::::::::
32+
33+
COPY-FROM: paddle.compat.split

0 commit comments

Comments
 (0)