Skip to content

Commit f03f205

Browse files
【Hackathon 5th No.26】为 Paddle 新增 diagonal_scatter API (#6289)
* add diagonal scatter docs * update * fix: name * Update docs/api/paddle/diagonal_scatter_cn.rst Co-authored-by: ooo oo <106524776+ooooo-create@users.noreply.github.com> * fix review suggestions * update * update * add difference compare --------- Co-authored-by: ooo oo <106524776+ooooo-create@users.noreply.github.com>
1 parent ab84306 commit f03f205

File tree

7 files changed

+110
-3
lines changed

7 files changed

+110
-3
lines changed

docs/api/paddle/Overview_cn.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,7 @@ tensor 元素操作相关(如:转置,reshape 等)
387387
" :ref:`paddle.view_as <cn_api_paddle_view_as>` ", "使用 other 的 shape,返回 x 的一个 view Tensor"
388388
" :ref:`paddle.unfold <cn_api_paddle_unfold>` ", "返回 x 的一个 view Tensor。以滑动窗口式提取 x 的值"
389389
" :ref:`paddle.masked_fill <cn_api_paddle_masked_fill>` ", "根据 mask 信息,将 value 中的值填充到 x 中 mask 对应为 True 的位置。"
390+
" :ref:`paddle.diagonal_scatter <cn_api_paddle_diagonal_scatter>` ", "根据给定的轴 axis 和偏移量 offset,将张量 y 的值填充到张量 x 中"
390391
" :ref:`paddle.index_fill <cn_api_paddle_index_fill>` ", "沿着指定轴 axis 将 index 中指定位置的 x 的值填充为 value"
391392

392393
.. _tensor_manipulation_inplace:

docs/api/paddle/Tensor/Overview_en.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,3 +278,4 @@ Methods
278278
vander
279279
hypot
280280
hypot_
281+
diagonal_scatter

docs/api/paddle/Tensor_cn.rst

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3081,3 +3081,13 @@ masked_fill_(x, mask, value, name=None)
30813081
:::::::::
30823082

30833083
Inplace 版本的 :ref:`cn_api_paddle_masked_fill` API,对输入 `x` 采用 Inplace 策略。
3084+
3085+
diagonal_scatter(x, y, offset=0, axis1=0, axis2=1, name=None)
3086+
:::::::::
3087+
根据给定的轴 axis 和偏移量 offset,将张量 y 的值填充到张量 x 中。
3088+
3089+
返回:张量 y 填充到张量 x 中的结果。
3090+
3091+
返回类型:Tensor
3092+
3093+
请参考 :ref:`cn_api_paddle_diagonal_scatter`
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
.. _cn_api_paddle_diagonal_scatter:
2+
3+
diagonal_scatter
4+
-------------------------------
5+
6+
.. py:function:: paddle.diagonal_scatter(x, y, offset=0, axis1=0, axis2=1, name=None)
7+
8+
9+
根据参数 ``offset``、``axis1``、``axis2``,将张量 ``y`` 填充到张量 ``x`` 的对应位置。
10+
11+
这个函数将会返回一个新的 ``Tensor``。
12+
13+
参数 ``offset`` 确定从指定的二维平面中获取对角线的位置:
14+
15+
- 如果 offset = 0,则嵌入主对角线。
16+
- 如果 offset > 0,则嵌入主对角线右上的对角线。
17+
- 如果 offset < 0,则嵌入主对角线左下的对角线。
18+
19+
参数
20+
::::::::::::
21+
22+
- **x** (Tensor) - 输入张量,张量的维度至少为 2 维,支持 float16、float32、float64、bfloat16、uint8、int8、int16、int32、int64、bool、complex64、complex128 数据类型。
23+
- **y** (Tensor) - 嵌入张量,将会被嵌入到输入张量中,支持 float16、float32、float64、bfloat16、uint8、int8、int16、int32、int64、bool、complex64、complex128 数据类型。
24+
- **offset** (int, 可选) - 从指定的二维平面嵌入对角线的位置,默认值为 0,即主对角线。
25+
- **axis1** (int, 可选) - 对角线的第一个维度,默认值为 0。
26+
- **axis2** (int, 可选) - 对角线的第二个维度,默认值为 1。
27+
- **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name`,一般无需设置,默认值为 None。
28+
29+
返回
30+
::::::::::::
31+
``Tensor``,返回一个根据给定的轴 ``axis`` 和偏移量 ``offset``,将张量 ``y`` 填充到张量 ``x`` 对应位置的新 ``Tensor``。
32+
33+
34+
代码示例
35+
::::::::::::
36+
37+
COPY-FROM: paddle.diagonal_scatter
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
## [ 仅参数名不一致 ] torch.Tensor.diagonal_scatter
2+
3+
### [torch.Tensor.diagonal_scatter](https://pytorch.org/docs/stable/generated/torch.Tensor.diagonal_scatter.html?highlight=diagonal_scatter#torch.Tensor.diagonal_scatter)
4+
5+
```python
6+
torch.Tensor.diagonal_scatter(input, src, offset=0, dim1=0, dim2=1)
7+
```
8+
9+
### [paddle.Tensor.diagonal_scatter](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/Tensor_cn.html#diagonal-scatter-x-y-offset-0-axis1-0-axis2-1-name-none)
10+
11+
```python
12+
paddle.Tensor.diagonal_scatter(x, y, offset=0, axis1=0, axis2=1)
13+
```
14+
15+
两者功能一致且参数用法一致,仅参数名不一致,具体如下:
16+
17+
### 参数映射
18+
19+
| PyTorch | PaddlePaddle | 备注 |
20+
|---------|--------------| -------------------------------------------------- |
21+
| input | x | 输入张量,被嵌入的张量,仅参数名不一致。 |
22+
| src | y | 用于嵌入的张量,仅参数名不一致。 |
23+
| offset | offset | 从指定的二维平面嵌入对角线的位置,默认值为 0,即主对角线。 |
24+
| dim1 | axis1 | 对角线的第一个维度,默认值为 0,仅参数名不一致。 |
25+
| dim2 | axis2 | 对角线的第二个维度,默认值为 1,仅参数名不一致。 |
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
## [ 仅参数名不一致 ] torch.diagonal_scatter
2+
3+
### [torch.diagonal_scatter](https://pytorch.org/docs/stable/generated/torch.diagonal_scatter.html?highlight=diagonal_scatter#torch.diagonal_scatter)
4+
5+
```python
6+
torch.diagonal_scatter(input,
7+
src,
8+
offset=0,
9+
dim1=0,
10+
dim2=1)
11+
```
12+
13+
### [paddle.diagonal_scatter](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/diagonal_scatter_cn.html)
14+
15+
```python
16+
paddle.diagonal_scatter(x,
17+
y,
18+
offset=0,
19+
axis1=0,
20+
axis2=1)
21+
```
22+
23+
两者功能一致且参数用法一致,仅参数名不一致,具体如下:
24+
25+
### 参数映射
26+
27+
| PyTorch | PaddlePaddle | 备注 |
28+
|---------|--------------| -------------------------------------------------- |
29+
| <font color='red'> input </font> | <font color='red'> x </font> | 输入张量,被嵌入的张量,仅参数名不一致。 |
30+
| <font color='red'> src </font> | <font color='red'> y </font> | 用于嵌入的张量,仅参数名不一致。 |
31+
| <font color='red'> offset </font> | <font color='red'> offset </font> | 从指定的二维平面嵌入对角线的位置,默认值为 0,即主对角线。 |
32+
| <font color='red'> dim1 </font> | <font color='red'> axis1 </font> | 对角线的第一个维度,默认值为 0,仅参数名不一致。 |
33+
| <font color='red'> dim2 </font> | <font color='red'> axis2 </font> | 对角线的第二个维度,默认值为 1,仅参数名不一致。 |

docs/guides/model_convert/convert_from_pytorch/pytorch_api_mapping_cn.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -290,10 +290,10 @@
290290
| REFERENCE-MAPPING-ITEM(`torch.frexp`, https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference/ops/torch.frexp.md) |
291291
| REFERENCE-MAPPING-ITEM(`torch.nanmean`, https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference/ops/torch.nanmean.md) |
292292
| REFERENCE-MAPPING-ITEM(`torch.take_along_dim`, https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference/ops/torch.take_along_dim.md) |
293+
| REFERENCE-MAPPING-ITEM(`torch.diagonal_scatter`, https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference/ops/torch.diagonal_scatter.md) |
293294
| NOT-IMPLEMENTED-ITEM(`torch.geqrf`, https://pytorch.org/docs/stable/generated/torch.geqrf.html?highlight=geqrf#torch.geqrf) |
294295
| NOT-IMPLEMENTED-ITEM(`torch.bitwise_right_shift`, https://pytorch.org/docs/stable/generated/torch.bitwise_right_shift.html#torch.bitwise_right_shift) |
295296
| NOT-IMPLEMENTED-ITEM(`torch.is_conj`, https://pytorch.org/docs/stable/generated/torch.is_conj.html#torch.is_conj) |
296-
| NOT-IMPLEMENTED-ITEM(`torch.diagonal_scatter`, https://pytorch.org/docs/stable/generated/torch.diagonal_scatter.html#torch.diagonal_scatter) |
297297
| NOT-IMPLEMENTED-ITEM(`torch.select_scatter`, https://pytorch.org/docs/stable/generated/torch.select_scatter.html#torch.select_scatter) |
298298
| NOT-IMPLEMENTED-ITEM(`torch.slice_scatter`, https://pytorch.org/docs/stable/generated/torch.slice_scatter.html#torch.slice_scatter) |
299299
| NOT-IMPLEMENTED-ITEM(`torch.scatter_reduce`, https://pytorch.org/docs/stable/generated/torch.scatter_reduce.html#torch.scatter_reduce) |
@@ -790,7 +790,7 @@
790790
| 167 | [torch.Tensor.any](https://pytorch.org/docs/stable/generated/torch.Tensor.any.html?highlight=torch+tensor+any#torch.Tensor.any) | [paddle.Tensor.any](https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/Tensor_cn.html#any-axis-none-keepdim-false-name-none) | 功能一致, 参数不一致 , [差异对比](https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference/Tensor/torch.Tensor.any.md) |
791791
| 168 | [torch.Tensor.bitwise_right_shift](https://pytorch.org/docs/stable/generated/torch.Tensor.bitwise_right_shift.html#torch.Tensor.bitwise_right_shift) | | 功能缺失 |
792792
| 169 | [torch.Tensor.is_conj](https://pytorch.org/docs/stable/generated/torch.Tensor.is_conj.html#torch.Tensor.is_conj) | | 功能缺失 |
793-
| 170 | [torch.Tensor.diagonal_scatter](https://pytorch.org/docs/stable/generated/torch.Tensor.diagonal_scatter.html#torch.Tensor.diagonal_scatter) | | 功能缺失 |
793+
| 170 | [torch.Tensor.diagonal_scatter](https://pytorch.org/docs/stable/generated/torch.Tensor.diagonal_scatter.html#torch.Tensor.diagonal_scatter) | [paddle.Tensor.diagonal_scatter](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/Tensor_cn.html#diagonal-scatter-x-y-offset-0-axis1-0-axis2-1-name-none) | 功能完全一致,仅参数名不一致 [差异对比](https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference/Tensor/torch.Tensor.diagonal_scatter.md) |
794794
| 171 | [torch.Tensor.scatter_reduce](https://pytorch.org/docs/stable/generated/torch.Tensor.scatter_reduce.html#torch.Tensor.scatter_reduce) | | 功能缺失 |
795795
| 172 | [torch.Tensor.select_scatter](https://pytorch.org/docs/stable/generated/torch.Tensor.select_scatter.html#torch.Tensor.select_scatter) | | 功能缺失 |
796796
| 173 | [torch.Tensor.slice_scatter](https://pytorch.org/docs/stable/generated/torch.Tensor.slice_scatter.html#torch.Tensor.slice_scatter) | | 功能缺失 |
@@ -1097,9 +1097,9 @@
10971097
| REFERENCE-MAPPING-ITEM(`torch.Tensor.less`, https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference/Tensor/torch.Tensor.less.md) |
10981098
| REFERENCE-MAPPING-ITEM(`torch.Tensor.all`, https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference/Tensor/torch.Tensor.all.md) |
10991099
| REFERENCE-MAPPING-ITEM(`torch.Tensor.any`, https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference/Tensor/torch.Tensor.any.md) |
1100+
| REFERENCE-MAPPING-ITEM(`torch.Tensor.diagonal_scatter`, https://github.com/PaddlePaddle/docs/tree/develop/docs/guides/model_convert/convert_from_pytorch/api_difference/Tensor/torch.Tensor.diagonal_scatter.md) |
11001101
| NOT-IMPLEMENTED-ITEM(`torch.Tensor.bitwise_right_shift`, https://pytorch.org/docs/stable/generated/torch.Tensor.bitwise_right_shift.html#torch.Tensor.bitwise_right_shift) |
11011102
| NOT-IMPLEMENTED-ITEM(`torch.Tensor.is_conj`, https://pytorch.org/docs/stable/generated/torch.Tensor.is_conj.html#torch.Tensor.is_conj) |
1102-
| NOT-IMPLEMENTED-ITEM(`torch.Tensor.diagonal_scatter`, https://pytorch.org/docs/stable/generated/torch.Tensor.diagonal_scatter.html#torch.Tensor.diagonal_scatter) |
11031103
| NOT-IMPLEMENTED-ITEM(`torch.Tensor.scatter_reduce`, https://pytorch.org/docs/stable/generated/torch.Tensor.scatter_reduce.html#torch.Tensor.scatter_reduce) |
11041104
| NOT-IMPLEMENTED-ITEM(`torch.Tensor.select_scatter`, https://pytorch.org/docs/stable/generated/torch.Tensor.select_scatter.html#torch.Tensor.select_scatter) |
11051105
| NOT-IMPLEMENTED-ITEM(`torch.Tensor.slice_scatter`, https://pytorch.org/docs/stable/generated/torch.Tensor.slice_scatter.html#torch.Tensor.slice_scatter) |

0 commit comments

Comments
 (0)