1
- # API 映射关系 - 格式规范
2
-
3
1
> 提交代码前请参考[ 官网] ( https://www.paddlepaddle.org.cn/documentation/docs/zh/dev_guides/code_contributing_path_cn.html ) 安装 ` pre-commit ` ,规范化代码格式。
4
2
5
- 需严格根据此模板的格式规范来新增《API 映射关系》,具体如下:
3
+ 请严格根据此格式规范来新增《API 映射关系》,不符合规范的文档将不予合入,具体如下:
4
+
5
+ # API 映射关系 - 格式规范
6
6
7
7
### [ 分类名称] api 全称
8
8
9
- 为了文档整体的一致性,我们统一了分类名称,分类名称需和下面保持一致。共分为 7 大类:
9
+ 为了文档整体的一致性,我们统一了 API 映射关系的分类名称,共分为 7 大类:
10
+ > 注:第 1~ 3 类均为 API 层面一对一映射,根据参数层面的映射关系将其细分为三类。
10
11
11
- * 其中第1类又分为五种情况:` 无参数 ` 、` 参数完全一致 ` 、` 仅参数名不一致 ` 、` 仅 paddle 参数更多 ` 、` 仅参数默认值不一致 ` 。分类优先级依次递增,即如果同时 ` 参数名不一致 ` + ` paddle 参数更多 ` ,则写成后者 ` 仅 paddle 参数更多 ` 。
12
+ * 第 1 类又分为五种情况:` 无参数 ` 、` 参数完全一致 ` 、` 仅参数名不一致 ` 、` 仅 paddle 参数更多 ` 、` 仅参数默认值不一致 ` 。
13
+ > 注:分类优先级依次递增,即如果同时 ` 参数名不一致 ` + ` paddle 参数更多 ` ,则写成后者 ` 仅 paddle 参数更多 ` 。
12
14
13
- * 第2类为 ` torch 参数更多 ` 。如果 torch 和 paddle 都支持更多参数,统一写成` torch 参数更多 ` 。
15
+ * 第 2 类为 ` torch 参数更多 ` 。如果 torch 和 paddle 都支持更多参数,统一写成` torch 参数更多 ` 。
14
16
15
- * 第3类为 ` 参数不一致 ` 。包括不限于 输入参数支持类型不一致、输入参数用法不一致、返回参数类型不一致 等情况。
17
+ * 第 3 类为 ` 参数不一致 ` 。包括不限于 输入参数支持类型不一致、输入参数用法不一致、返回参数类型不一致 等情况。
16
18
> 注意:这里的一致都是从 torch 的角度来看,如果 paddle 可涵盖 torch,即 torch 是 paddle 的功能子集,即认为是一致。例如:torch 参数仅支持 list,paddle 参数支持 list/tuple,则认为两者一致。反之则不一致。
17
19
18
- * 第4类为 ` 组合替代实现 ` ,表示该 API 没有可直接对应的 API,需要通过多个 API 组合实现。
20
+ * 第 4 类为 ` 组合替代实现 ` ,表示该 API 没有可直接对应的 API,需要通过多个 API 组合实现。
19
21
20
22
* 第 5 类为 ` 用法不同:涉及上下文修改 ` ,表示涉及到上下文分析,需要修改其他位置的代码。
21
23
> 举例:所有的 ` torch.optim.lr_scheduler.* ` 、` torch.nn.init.* ` 、` torch.nn.utils.clip* ` 都为该类。主要由于设计上与 Paddle 具有较大的差异,需要对上文例如 Layer 的` weight_attr ` 进行设置,涉及到上文代码联动修改。
27
29
> 注意:
28
30
> 1 . 分类优先级依次递增,即如果同时 ` 第 2 类:torch 参数更多 ` 与 ` 第 3 类:参数不一致 ` ,则写成后者 ` 第 3 类:参数不一致 ` 。
29
31
> 2 . 所有的 Paddle API 无需关注 ` name ` 参数,直接忽略即可。
32
+ > 3 . 将类成员 API 映射为非类成员 API,则无需对比第一个参数。例如将 ` torch.Tensor.outer(vec2) ` 映射为 ` paddle.outer(x, y) ` ,则忽略 paddle 的第一个参数,从 torch 的 ` vec2 ` 和 paddle 的 ` y ` 开始对比。
30
33
31
34
### [ pytorch api 全称] (pytorch api 链接)
32
35
36
+ ``` python
37
+ Pytorch API 签名
38
+ ```
39
+
33
40
### [ paddle api 全称] (paddle api 链接)
34
41
42
+ ``` python
43
+ Paddle API 签名
44
+ ```
45
+
35
46
** 一句话总结** 。整体概述总结两个 API 的差异。例如 ` 第 3 类:参数不一致 ` ,需要简述下有哪些不一致的地方。在描写参数时,需要用 \` ` 来加深其底色。
36
47
37
48
### 参数映射
38
49
39
50
参数映射表的左边是` PyTorch ` 对应参数,右边是` Paddle ` 对应参数,表格参数顺序按 ` PyTorch ` 参数顺序来。
40
51
41
- * 如果仅参数名不一致,需要在备注栏加一句 ` 仅参数名不一致 ` 。
52
+ * 如果 ` 仅参数名不一致 ` ,需要在备注栏里对该参数加一句 ` 仅参数名不一致 ` 。
53
+
54
+ * 如果 ` 仅 paddle 参数更多 ` ,需要在备注栏加一句 ` PyTorch 无此参数 ` + ` Paddle 应如何设置此参数 ` 。如果默认无影响,则写 ` PyTorch 无此参数, Paddle 保持默认即可 ` 。
42
55
43
- * 如果 paddle 参数更多,需要在备注栏加一句` PyTorch 无此参数 ` + ` Paddle 应如何设置此参数 ` 。如果默认无影响,则写 ` PyTorch 无此参数, Paddle 保持默认即可 ` 。
56
+ * 如果 ` 仅参数默认值不一致 ` ,需要在备注栏里加一句 ` 与 Pytorch 默认值不同 ` + ` Paddle 应如何设置此参数 ` 。
57
+
58
+ * 对于其他类别,均需要写** 转写示例** ,如确实无法支持,需要在备注里加一句 ` Paddle 暂无转写方式 ` 。
44
59
45
60
* 每个备注都需要` 以句号结尾 ` 。
46
61
47
62
### 转写示例
48
63
49
- 仅第 1 类不需要写转写示例,其他类别均必须写转写示例。
64
+ ** 除第 1 类 API 对应关系较为简单,无需写转写示例,其他类 API 都需要写转写示例,否则需注明:Paddle 暂无转写方式。 **
50
65
51
66
转写示例需要写得精简和一目了然。一般情形下只需写两行代码,无需打印各种结果,并且要保证转写前后的输出结果是一致的。另外需要先描述下待写的是该 torch api 的哪个参数及其功能。
52
67
@@ -68,12 +83,29 @@ torch.xxx()
68
83
paddle.xxx()
69
84
```
70
85
86
+ ---
71
87
# API 映射关系 - 模板
72
88
73
89
## 模板 1
74
90
75
91
### [ 仅参数名不一致 ] torch.xxx
76
92
93
+ ### [ torch.dist] ( https://pytorch.org/docs/stable/generated/torch.dist.html?highlight=dist#torch.dist ) (仅作为示例)
94
+
95
+ ``` python
96
+ torch.dist(input ,
97
+ other,
98
+ p = 2 )
99
+ ```
100
+
101
+ ### [ paddle.dist] ( https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/dist_cn.html#dist ) (仅作为示例)
102
+
103
+ ``` python
104
+ paddle.dist(x,
105
+ y,
106
+ p = 2 )
107
+ ```
108
+
77
109
两者功能一致且参数用法一致,仅参数名不一致,具体如下:
78
110
79
111
### 参数映射
@@ -96,6 +128,20 @@ paddle.xxx()
96
128
97
129
### [ 仅 paddle 参数更多 ] torch.xxx
98
130
131
+ ### [ torch.nn.ZeroPad2d] ( https://pytorch.org/docs/stable/generated/torch.nn.ZeroPad2d.html?highlight=zeropad#torch.nn.ZeroPad2d ) (仅作为示例)
132
+
133
+ ``` python
134
+ torch.nn.ZeroPad2d(padding)
135
+ ```
136
+
137
+ ### [ paddle.nn.ZeroPad2D] ( https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/nn/ZeroPad2D_cn.html ) (仅作为示例)
138
+
139
+ ``` python
140
+ paddle.nn.ZeroPad2D(padding,
141
+ data_format = ' NCHW' ,
142
+ name = None )
143
+ ```
144
+
99
145
Paddle 相比 PyTorch 支持更多其他参数,具体如下:
100
146
101
147
### 参数映射
@@ -108,10 +154,26 @@ Paddle 相比 PyTorch 支持更多其他参数,具体如下:
108
154
| - | place | 表示 Tensor 存放位置, PyTorch 无此参数, Paddle 需设置为 paddle.CPUPlace()。 |
109
155
| - | stop_gradient | 表示是否阻断梯度传导, PyTorch 无此参数, Paddle 保持默认即可。 |
110
156
157
+
111
158
## 模板 3
112
159
113
160
### [ torch 参数更多 ] torch.xxx
114
161
162
+ ### [ torch.abs] ( https://pytorch.org/docs/stable/generated/torch.abs.html?highlight=abs#torch.abs ) (仅作为示例)
163
+
164
+ ``` python
165
+ torch.abs(input ,
166
+ * ,
167
+ out = None )
168
+ ```
169
+
170
+ ### [ paddle.abs] ( https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/abs_cn.html#abs ) (仅作为示例)
171
+
172
+ ``` python
173
+ paddle.abs(x,
174
+ name = None )
175
+ ```
176
+
115
177
Pytorch 相比 Paddle 支持更多其他参数,具体如下:
116
178
117
179
### 参数映射
@@ -192,10 +254,27 @@ else:
192
254
reduction = ' none'
193
255
```
194
256
257
+
195
258
## 模板 4
196
259
197
260
### [ 参数不一致 ] torch.xxx
198
261
262
+ ### [ torch.transpose] ( https://pytorch.org/docs/stable/generated/torch.transpose.html?highlight=transpose#torch.transpose ) (仅作为示例)
263
+
264
+ ``` python
265
+ torch.transpose(input ,
266
+ dim0,
267
+ dim1)
268
+ ```
269
+
270
+ ### [ paddle.transpose] ( https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/transpose_cn.html#transpose ) (仅作为示例)
271
+
272
+ ``` python
273
+ paddle.transpose(x,
274
+ perm,
275
+ name = None )
276
+ ```
277
+
199
278
Pytorch 的 ` tensors ` 参数与 Paddle 的 ` inputs ` 参数用法不同,具体如下:
200
279
201
280
### 参数映射
@@ -235,11 +314,12 @@ m = torch.nn.BatchNorm1D(24)
235
314
m = paddle.nn.BatchNorm1D(24 )
236
315
```
237
316
317
+
238
318
## 模板 5
239
319
240
320
### [ 组合替代实现 ] torchvision.transforms.ToPILImage
241
321
242
- ### [ torchvision.transforms.ToPILImage] ( https://pytorch.org/vision/stable/transforms.html?highlight=topilimage#torchvision.transforms.ToPILImage )
322
+ ### [ torchvision.transforms.ToPILImage] ( https://pytorch.org/vision/stable/transforms.html?highlight=topilimage#torchvision.transforms.ToPILImage ) (仅作为示例)
243
323
244
324
``` python
245
325
torchvision.transforms.ToPILImage(mode = None )
@@ -356,10 +436,25 @@ class ToPILImage(BaseTransform):
356
436
return Image.fromarray(npimg, mode = self .mode)
357
437
```
358
438
439
+
359
440
## 模板 6
360
441
361
442
### [ 用法不同:涉及上下文修改 ] torch.xxx
362
443
444
+ ### [ torch.nn.utils.clip_grad_value_ ] ( https://pytorch.org/docs/stable/generated/torch.nn.utils.clip_grad_value_.html?highlight=clip_grad_value_#torch.nn.utils.clip_grad_value_ ) (仅作为示例)
445
+
446
+ ``` python
447
+ torch.nn.utils.clip_grad_value_(parameters,
448
+ clip_value)
449
+ ```
450
+
451
+ ### [ paddle.nn.ClipGradByValue] ( https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/nn/ClipGradByValue_cn.html#clipgradbyvalue ) (仅作为示例)
452
+
453
+ ``` python
454
+ paddle.nn.ClipGradByValue(max ,
455
+ min = None )
456
+ ```
457
+
363
458
其中 Pytorch 与 Paddle 对该 API 的设计思路与⽤法不同,需要分析上下⽂并联动修改:
364
459
365
460
### 参数映射
0 commit comments