Skip to content

Commit 8d2c7d9

Browse files
【Hackathon 6th No.24】paddle.quantile/nanquantile 功能增强 -part (#6353)
1 parent 8ab1cbd commit 8d2c7d9

7 files changed

Lines changed: 43 additions & 24 deletions

File tree

docs/api/paddle/Tensor_cn.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1916,7 +1916,7 @@ prod(axis=None, keepdim=False, dtype=None, name=None)
19161916

19171917
请参考 :ref:`cn_api_paddle_prod`
19181918

1919-
quantile(q, axis=None, keepdim=False, name=None)
1919+
quantile(q, axis=None, keepdim=False, interpolation='linear', name=None)
19201920
:::::::::
19211921

19221922
返回:计算后的 Tensor

docs/api/paddle/nanquantile_cn.rst

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
.. _cn_api_paddle_nanquantile:
2+
3+
nanquantile
4+
-------------------------------
5+
6+
.. py:function:: paddle.nanquantile(x, q, axis=None, keepdim=False, interpolation='linear', name=None)
7+
8+
沿给定的轴 ``axis`` 计算 ``x`` 中元素的分位数, 忽略元素中的 ``NaN`` 。
9+
10+
参数
11+
::::::::::
12+
- **x** (Tensor) - 输入的 Tensor,数据类型为:float32、float64。
13+
- **q** (int|float|list|Tensor) - 待计算的分位数,需要在符合取值范围[0, 1]。如果 ``q`` 是 List 或者 1-D Tensor,其中的每一个 q 分位数都会被计算,并且输出的首维大小与列表或 Tensor 中元素的数量相同。如果 ``q`` 是 0-D Tensor ,则会被当作 float 和 int 对待。
14+
- **axis** (int|list,可选) - 指定对 ``x`` 进行计算的轴。``axis`` 可以是 int 或内部元素为 int 类型的 list。``axis`` 值应该在范围[-D, D)内,D 是 ``x`` 的维度。如果 ``axis`` 或者其中的元素值小于 0,则等价于 :math:`axis + D`。如果 ``axis`` 是 list,对给定的轴上的所有元素计算分位数。如果 ``axis`` 是 None,则对 ``x`` 的全部元素计算分位数。默认值为 None。
15+
- **keepdim** (bool,可选) - 是否在输出 Tensor 中保留减小的维度。如果 ``keepdim`` 为 True,则输出 Tensor 和 ``x`` 具有相同的维度(减少的维度除外,减少的维度的大小为 1)。否则,输出 Tensor 的形状会在 ``axis`` 上进行 squeeze 操作。默认值为 False。
16+
- **interpolation** (str,可选) - 计算分位数的插值方法,可以是 ``linear`` , ``lower`` , ``higher`` , ``nearest`` 或者 ``midpoint`` 。 默认值为 ``linear`` 。
17+
- **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name`,一般无需设置,默认值为 None。
18+
19+
返回
20+
::::::::::
21+
``Tensor``,沿着 ``axis`` 进行分位数计算的结果。与输入数据类型一致。
22+
23+
代码示例
24+
::::::::::
25+
26+
COPY-FROM: paddle.nanquantile

docs/api/paddle/quantile_cn.rst

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,22 @@
33
quantile
44
-------------------------------
55

6-
.. py:function:: paddle.quantile(x, q, axis=None, keepdim=False, name=None)
6+
.. py:function:: paddle.quantile(x, q, axis=None, keepdim=False, interpolation='linear', name=None)
77
88
沿给定的轴 ``axis`` 计算 ``x`` 中元素的分位数。
99

1010
参数
1111
::::::::::
1212
- **x** (Tensor) - 输入的 Tensor,数据类型为:float32、float64。
13-
- **q** (int|float|list) - 待计算的分位数,需要在符合取值范围[0, 1]。如果 ``q`` 是 List,其中的每一个 q 分位数都会被计算,并且输出的首维大小与列表中元素的数量相同
13+
- **q** (int|float|list|Tensor) - 待计算的分位数,需要在符合取值范围[0, 1]。如果 ``q`` 是 List 或者 1-D Tensor,其中的每一个 q 分位数都会被计算,并且输出的首维大小与列表或 Tensor 中元素的数量相同。如果 ``q`` 是 0-D Tensor ,则会被当作 float 和 int 对待
1414
- **axis** (int|list,可选) - 指定对 ``x`` 进行计算的轴。``axis`` 可以是 int 或内部元素为 int 类型的 list。``axis`` 值应该在范围[-D, D)内,D 是 ``x`` 的维度。如果 ``axis`` 或者其中的元素值小于 0,则等价于 :math:`axis + D`。如果 ``axis`` 是 list,对给定的轴上的所有元素计算分位数。如果 ``axis`` 是 None,则对 ``x`` 的全部元素计算分位数。默认值为 None。
1515
- **keepdim** (bool,可选) - 是否在输出 Tensor 中保留减小的维度。如果 ``keepdim`` 为 True,则输出 Tensor 和 ``x`` 具有相同的维度(减少的维度除外,减少的维度的大小为 1)。否则,输出 Tensor 的形状会在 ``axis`` 上进行 squeeze 操作。默认值为 False。
16+
- **interpolation** (str,可选) - 计算分位数的插值方法,可以是 ``linear`` , ``lower`` , ``higher`` , ``nearest`` 或者 ``midpoint`` 。 默认值为 ``linear`` 。
1617
- **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name`,一般无需设置,默认值为 None。
1718

1819
返回
1920
::::::::::
20-
``Tensor``,沿着 ``axis`` 进行分位数计算的结果。如果 ``x`` 的数据类型为 float64,则返回值的数据类型为 float64,反之返回值数据类型为 float32
21+
``Tensor``,沿着 ``axis`` 进行分位数计算的结果。与输入数据类型一致
2122

2223
代码示例
2324
::::::::::

docs/guides/model_convert/convert_from_pytorch/api_difference/Tensor/torch.Tensor.nanquantile.md

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,7 @@ PyTorch 相比 Paddle 支持更多其他参数,具体如下:
1818

1919
| PyTorch | PaddlePaddle | 备注 |
2020
| ------------- | ------------ |-----------------------------------------------------------------------------------------------------------------------------------|
21-
| q | q | 一个 [0, 1] 范围内的分位数值的标量。当 q 为标量时,参数完全一致。当 q 为一维向量时,PyTorch 支持 q 为 1D Tensor,PaddlePaddle 支持 q 为一维列表。当 torch 的 q 为 1D Tensor 时,需要转写。 |
21+
| q | q | 待计算的分位数。|
2222
| dim | axis | 求乘积运算的维度,仅参数名不一致。 |
2323
| keepdim | keepdim | 是否在输出 Tensor 中保留输入的维度。 |
24-
| interpolation | - | 指定当所需分位数位于两个数据点之间时使用的插值方法,Paddle 无此参数,暂无转写方式。 |
25-
26-
### 转写示例
27-
```python
28-
# 当 q 为向量时
29-
# PyTorch 写法
30-
x.nanquantile(q=torch.tensor([0.5, 0.1], dtype=torch.float64))
31-
32-
# Paddle
33-
x.nanquantile(q=[0.5, 0.1])
34-
```
24+
| interpolation | interpolation | 指定当所需分位数位于两个数据点之间时使用的插值方法。|

docs/guides/model_convert/convert_from_pytorch/api_difference/Tensor/torch.Tensor.quantile.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ torch.Tensor.quantile(q, dim=None, keepdim=False, *, interpolation='linear')
99
### [paddle.Tensor.quantile](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/Tensor_cn.html#quantile-q-axis-none-keepdim-false-name-none)
1010

1111
```python
12-
paddle.Tensor.quantile(q, axis=None, keepdim=False, name=None)
12+
paddle.Tensor.quantile(q, axis=None, keepdim=False, interpolation='linear', name=None)
1313
```
1414

1515
PyTorch 相比 Paddle 支持更多其他参数,具体如下:
@@ -20,4 +20,4 @@ PyTorch 相比 Paddle 支持更多其他参数,具体如下:
2020
| q | q |待计算的分位数。 |
2121
| dim | axis |指定对 x 进行计算的轴,仅参数名不一致。|
2222
| keepdim | keepdim |是否在输出 Tensor 中保留减小的维度。|
23-
| interpolation | - |两个数据点的插补取值方法,Paddle 无此参数,暂无转写方式。|
23+
| interpolation | interpolation |两个数据点的插补取值方法|

docs/guides/model_convert/convert_from_pytorch/api_difference/ops/torch.nanquantile.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ paddle.nanquantile(x,
1919
q,
2020
axis=None,
2121
keepdim=False,
22+
interpolation='linear',
2223
name=None)
2324
```
2425

@@ -30,16 +31,16 @@ PyTorch 相比 Paddle 支持更多其他参数,具体如下:
3031
| q | q | 待计算的分位数。 |
3132
| dim | axis| 指定对 x 进行计算的轴,仅参数名不一致。 |
3233
|keepdim|keepdim| 是否在输出 Tensor 中保留减小的维度。|
33-
|interpolation| - | 当所需分位数位于两个数据点之间时使用的插值方法,Paddle 无此参数,Paddle 暂无转写方式。|
34+
|interpolation| interpolation | 当所需分位数位于两个数据点之间时使用的插值方法|
3435
| out | - | 表示输出的 Tensor,Paddle 无此参数,需要转写。 |
3536

3637

3738
### 转写示例
3839
#### out:指定输出
3940
```python
40-
# PyTorch 写法
41-
torch.nanquantile(torch.tensor([float('nan'), 1., 2., 3.]), 0.6, out=y)
41+
# Pytorch 写法
42+
torch.nanquantile(torch.tensor([float('nan'), 1., 2., 3.]), 0.6, interpolation='linear', out=y)
4243

4344
# Paddle 写法
44-
paddle.assign(paddle.nanquantile(paddle.to_tensor([float('nan'), 1., 2., 3.]), 0.6), y)
45+
paddle.assign(paddle.nanquantile(paddle.to_tensor([float('nan'), 1., 2., 3.]), 0.6, interpolation='linear'), y)
4546
```

docs/guides/model_convert/convert_from_pytorch/api_difference/ops/torch.quantile.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ paddle.quantile(x,
1919
q,
2020
axis=None,
2121
keepdim=False,
22+
interpolation='linear',
2223
name=None)
2324
```
2425

@@ -30,7 +31,7 @@ PyTorch 相比 Paddle 支持更多其他参数,具体如下:
3031
| q | q | 待计算的分位数。 |
3132
| dim | axis| 指定对 x 进行计算的轴,仅参数名不一致。 |
3233
|keepdim|keepdim| 是否在输出 Tensor 中保留减小的维度。|
33-
|interpolation| - | 当所需分位数位于两个数据点之间时使用的插值方法,Paddle 无此参数,需要转写,Paddle 暂无转写方式|
34+
|interpolation| interpolation | 当所需分位数位于两个数据点之间时使用的插值方|
3435
| out | - | 表示输出的 Tensor,Paddle 无此参数,需要转写。 |
3536

3637

@@ -41,5 +42,5 @@ PyTorch 相比 Paddle 支持更多其他参数,具体如下:
4142
torch.quantile(torch.tensor([0., 1., 2., 3.]), 0.6, interpolation='linear', out=y)
4243

4344
# Paddle 写法
44-
paddle.assign(paddle.quantile(paddle.to_tensor([0., 1., 2., 3.]), 0.6), y)
45+
paddle.assign(paddle.quantile(paddle.to_tensor([0., 1., 2., 3.]), 0.6, interpolation='linear'), y)
4546
```

0 commit comments

Comments
 (0)