diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/torch_more_args/torch.Tensor.bernoulli.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/args_name_diff/torch.Tensor.bernoulli.md
similarity index 50%
rename from docs/guides/model_convert/convert_from_pytorch/api_difference/torch_more_args/torch.Tensor.bernoulli.md
rename to docs/guides/model_convert/convert_from_pytorch/api_difference/args_name_diff/torch.Tensor.bernoulli.md
index 75547c5ed61..f9f3f118fbc 100644
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/torch_more_args/torch.Tensor.bernoulli.md
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/args_name_diff/torch.Tensor.bernoulli.md
@@ -1,16 +1,18 @@
-## [ torch 参数更多 ]torch.Tensor.bernoulli
-### [torch.Tensor.bernoulli](https://pytorch.org/docs/stable/generated/torch.Tensor.bernoulli.html#torch.Tensor.bernoulli)
+## [ 仅参数名不一致 ]torch.Tensor.bernoulli
+
+### [torch.Tensor.bernoulli](https://pytorch.org/docs/stable/tensors.html#torch.Tensor.bernoulli)
+
```python
-torch.Tensor.bernoulli(p=None, *, generator=None)
+torch.Tensor.bernoulli(*, generator=None)
```
-### [paddle.bernoulli](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/bernoulli_cn.html#bernoulli)
+### [paddle.bernoulli](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/bernoulli_cn.html#paddle/bernoulli_cn#cn-api-paddle-bernoulli)
+
```python
-paddle.bernoulli(x, p=None, name=None)
+paddle.bernoulli(x, name=None)
```
-Pytorch 为 Tensor 类方法,Paddle 为普通函数,另外 PyTorch 相比 Paddle 支持更多其他参数。具体如下:
-
+两者功能一致且参数用法一致,仅参数名不一致,具体如下:
### 参数映射
@@ -19,14 +21,3 @@ Pytorch 为 Tensor 类方法,Paddle 为普通函数,另外 PyTorch 相比 Pa
| self | x | 伯努利参数 Tensor,将调用 torch.Tensor 类方法的 self Tensor 传入。 |
| p | p | 可选,伯努利参数 p。 |
| generator | - | 用于采样的伪随机数生成器, Paddle 无此参数,一般对网络训练结果影响不大,可直接删除。 |
-
-
-### 转写示例
-#### self:调用类方法的 Tensor
-```python
-# PyTorch 写法
-x.bernoulli()
-
-# Paddle 写法
-paddle.bernoulli(x)
-```
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/args_name_diff/torch.Tensor.hardshrink.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/args_name_diff/torch.Tensor.hardshrink.md
index 1ade21729ae..c232c047eeb 100644
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/args_name_diff/torch.Tensor.hardshrink.md
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/args_name_diff/torch.Tensor.hardshrink.md
@@ -1,18 +1,21 @@
## [ 仅参数名不一致 ]torch.Tensor.hardshrink
-### [torch.Tensor.hardshrink](https://pytorch.org/docs/stable/generated/torch.Tensor.hardshrink.html?highlight=torch+tensor+hardshrink#torch.Tensor.hardshrink)
+
+### [torch.Tensor.hardshrink](https://pytorch.org/docs/stable/tensors.html#torch.Tensor.hardshrink)
+
```python
torch.Tensor.hardshrink(lambd=0.5)
```
-### [paddle.nn.functional.hardshrink](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/nn/functional/hardshrink_cn.html#hardshrink)
+### [paddle.nn.functional.hardshrink](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/nn/functional/hardshrink_cn.html#paddle/nn/functional/hardshrink_cn#cn-api-paddle-nn-functional-hardshrink)
+
```python
paddle.nn.functional.hardshrink(x, threshold=0.5, name=None)
```
-仅参数名不一致,具体如下。
+两者功能一致,仅参数名不一致,具体如下:
### 参数映射
-| PyTorch | PaddlePaddle | 备注 |
-|-----------------------------------|------------------------------| ------------------------------------------------------ |
-| lambd | threshold | Hardshrink 阈值,仅参数名不一致。 |
+| PyTorch | PaddlePaddle | 备注 |
+| ------- | ------------ | ----------------------------- |
+| lambd | threshold | 阈值,仅参数名不一致,功能一致 |
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/args_name_diff/torch.Tensor.ormqr.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/args_name_diff/torch.Tensor.ormqr.md
deleted file mode 100644
index 4f95e7df0f9..00000000000
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/args_name_diff/torch.Tensor.ormqr.md
+++ /dev/null
@@ -1,21 +0,0 @@
-## [ 仅参数名不一致 ]torch.Tensor.ormqr
-### [torch.Tensor.ormqr](https://pytorch.org/docs/stable/generated/torch.Tensor.orgqr.html#torch.Tensor.orgqr)
-```python
-torch.Tensor.ormqr(input2, input3, left=True, transpose=False)
-```
-
-### [paddle.linalg.ormqr](https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/linalg/ormqr_cn.html#ormqr)
-```python
-paddle.linalg.ormqr(x, tau, y, left=True, transpose=False)
-```
-
-两者功能一致且参数用法一致,仅参数名不一致,具体如下:
-
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| --------- | ------------ | ---------------------------------- |
-| input2 | tau | Householder 反射系数,仅参数名不同 |
-| input3 | y | 用于矩阵乘积,仅参数名不同 |
-| left | left | 决定了矩阵乘积运算的顺序 |
-| transpose | transpose | 决定矩阵 Q 是否共轭转置变换 |
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/input_args_type_diff/torchvision.transforms.RandomAffine.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/input_args_type_diff/torchvision.transforms.RandomAffine.md
deleted file mode 100644
index ae88388597e..00000000000
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/input_args_type_diff/torchvision.transforms.RandomAffine.md
+++ /dev/null
@@ -1,55 +0,0 @@
-## [ 输入参数类型不一致 ]torchvision.transforms.RandomAffine
-### [torchvision.transforms.RandomAffine](https://pytorch.org/vision/main/generated/torchvision.transforms.RandomAffine.html)
-```python
-torchvision.transforms.RandomAffine(
- degrees: Union[List[float], Tuple[float, ...], float],
- translate: Optional[Tuple[float, float]] = None,
- scale: Optional[Tuple[float, float]] = None,
- shear: Union[List[float], Tuple[float, ...], float] = None,
- interpolation: InterpolationMode = InterpolationMode.NEAREST,
- fill: Union[int, float, List[float], Tuple[float, ...]] = 0,
- center: Optional[Union[List[int], Tuple[int, ...]]] = None
-)
-```
-
-### [paddle.vision.transforms.RandomAffine](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/vision/transforms/RandomAffine_cn.html)
-```python
-paddle.vision.transforms.RandomAffine(
- degrees: Union[Tuple[float, float], float, int],
- translate: Optional[Union[Sequence[float], float, int]] = None,
- scale: Optional[Tuple[float, float]] = None,
- shear: Optional[Union[Sequence[float], float, int]] = None,
- interpolation: Union[str, int] = 'nearest',
- fill: Union[int, List[int], Tuple[int, ...]] = 0,
- center: Optional[Tuple[int, int]] = None,
- keys: Optional[Union[List[str], Tuple[str, ...]]] = None
-)
-```
-
-两者功能一致但参数类型不一致,具体如下:
-
-### 参数映射
-
-| torchvision | PaddlePaddle | 备注 |
-| ------------------ | ---------------- | ------------------------ |
-| degrees | degrees | 随机旋转变换的角度大小。 |
-| translate | translate | 随机水平平移和垂直平移变化的位移大小。 |
-| scale | scale | 随机伸缩变换的比例大小。 |
-| shear | shear | 随机剪切角度的大小范围。 |
-| interpolation | interpolation | 插值的方法,PyTorch 参数为 InterpolationMode 枚举类, Paddle 参数为 int 或 string,需要转写。 |
-| fill | fill | 对图像扩展时填充的像素值。 |
-| center | center | 仿射变换的中心点坐标。 |
-| - | keys | 输入的类型,PyTorch 无此参数,Paddle 保持默认即可。 |
-
-
-### 转写示例
-#### interpolation:插值的方法
-```python
-# PyTorch 写法
-transform = torchvision.transforms.RandomAffine(degrees=30, translate=(0.1, 0.2), scale=(0.8, 1.2), shear=10, interpolation=torchvision.transforms.InterpolationMode.BILINEAR, fill=0, center=(100, 100))
-transformed_img = transform(img)
-
-# Paddle 写法
-transform = paddle.vision.transforms.RandomAffine(degrees=30, translate=(0.1, 0.2), scale=(0.8, 1.2), shear=10, interpolation='bilinear', fill=0, center=(100, 100))
-transformed_img = transform(img)
-```
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/input_args_type_diff/torchvision.transforms.RandomRotation.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/input_args_type_diff/torchvision.transforms.RandomRotation.md
deleted file mode 100644
index 2e0e568f556..00000000000
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/input_args_type_diff/torchvision.transforms.RandomRotation.md
+++ /dev/null
@@ -1,48 +0,0 @@
-## [ 输入参数类型不一致 ]torchvision.transforms.RandomRotation
-### [torchvision.transforms.RandomRotation](https://pytorch.org/vision/main/generated/torchvision.transforms.RandomRotation.html)
-```python
-torchvision.transforms.RandomRotation(
- degrees: Union[int, List[float], Tuple[float, ...]],
- interpolation: InterpolationMode = InterpolationMode.NEAREST,
- expand: bool = False,
- center: Optional[Union[List[float], Tuple[float, ...]]] = None,
- fill: Union[int, float, Tuple[int, ...]] = 0
-)
-```
-
-### [paddle.vision.transforms.RandomRotation](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/vision/transforms/RandomRotation_cn.html)
-```python
-paddle.vision.transforms.RandomRotation(
- degrees: Union[int, List[float], Tuple[float, ...]],
- interpolation: Union[str, int] = 'nearest',
- expand: bool = False,
- center: Optional[Tuple[int, int]] = None,
- fill: int = 0,
- keys: Optional[Union[List[str], Tuple[str, ...]]] = None
-)
-```
-
-两者功能一致,但输入参数类型不一致。
-
-### 参数映射
-
-| torchvision | PaddlePaddle | 备注 |
-| ------------------- | ------------------ | ----------------------------------------------- |
-| degrees | degrees | 旋转角度范围。 |
-| interpolation | interpolation | 插值的方法,两者类型不一致,PyTorch 为 InterpolationMode 枚举类, Paddle 为 int 或 string,需要转写。 |
-| expand | expand | 是否扩展图像尺寸。 |
-| center | center | 旋转的中心点坐标。 |
-| fill | fill | 对图像扩展时填充的值。 |
-| - | keys | 输入的类型,PyTorch 无此参数,Paddle 保持默认即可。 |
-
-### 转写示例
-#### interpolation:插值的方法
-```python
-# PyTorch 写法
-transform = torchvision.transforms.RandomRotation(degrees=45, interpolation=torchvision.transforms.InterpolationMode.BILINEAR, expand=True, center=(100, 100), fill=(255, 0, 0))
-rotated_img = transform(img)
-
-# Paddle 写法
-transform = paddle.vision.transforms.RandomRotation(degrees=45, interpolation='bilinear', expand=True, center=(100, 100), fill=(255, 0, 0))
-rotated_img = transform(img)
-```
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/input_args_type_diff/torchvision.transforms.functional.affine.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/input_args_type_diff/torchvision.transforms.functional.affine.md
deleted file mode 100644
index 54764e9ab5a..00000000000
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/input_args_type_diff/torchvision.transforms.functional.affine.md
+++ /dev/null
@@ -1,51 +0,0 @@
-## [ 输入参数类型不一致 ]torchvision.transforms.functional.affine
-### [torchvision.transforms.functional.affine](https://pytorch.org/vision/main/generated/torchvision.transforms.functional.affine.html)
-```python
-torchvision.transforms.functional.affine(img: Tensor,
- angle: float,
- translate: List[int],
- scale: float,
- shear: List[float],
- interpolation: InterpolationMode = InterpolationMode.NEAREST,
- fill: Optional[List[float]] = None,
- center: Optional[List[int]] = None)
-```
-
-### [paddle.vision.transforms.affine](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/vision/transforms/affine_cn.html)
-```python
-paddle.vision.transforms.affine(
- img: Union[PIL.Image.Image, np.ndarray, paddle.Tensor],
- angle: Union[float, int],
- translate: List[float],
- scale: float,
- shear: Union[List[float], Tuple[float, ...]],
- interpolation: Union[str, int] = 'nearest',
- fill: Union[int, List[int], Tuple[int, ...]] = 0,
- center: Optional[Tuple[int, int]] = None
-)
-```
-
-两者功能一致,但输入参数类型不一致,具体如下:
-
-### 参数映射
-
-| torchvision | PaddlePaddle | 备注 |
-| ----------- | ------------ | ------------------------------------------------------------ |
-| img | img | 输入图片。 |
-| angle | angle | 旋转角度。 |
-| translate | translate | 随机水平平移和垂直平移变化的位移大小。 |
-| scale | scale | 控制缩放比例。 |
-| shear | shear | 剪切角度值。 |
-| interpolation | interpolation | 插值的方法,两者类型不一致,PyTorch 为 InterpolationMode 枚举类, Paddle 为 int 或 string,需要转写。 |
-| fill | fill | 对图像扩展时填充的像素值。 |
-| center | center | 仿射变换的中心点坐标 。 |
-
-### 转写示例
-#### interpolation:插值的方法
-```python
-# PyTorch 写法
-rotated_img = torchvision.transforms.functional.affine(img, angle=30.0, translate=[10, 20], scale=1.2, shear=[10.0, 5.0], interpolation=torchvision.transforms.InterpolationMode.BILINEAR, fill=[0, 0, 0], center=[100, 100])
-
-# Paddle 写法
-rotated_img = paddle.vision.transforms.affine(img=img, angle=30.0, translate=[10, 20], scale=1.2, shear=[10.0, 5.0], interpolation='bilinear', fill=[0, 0, 0], center=[100, 100])
-```
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/input_args_type_diff/torchvision.transforms.functional.perspective.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/input_args_type_diff/torchvision.transforms.functional.perspective.md
deleted file mode 100644
index 086695af1b1..00000000000
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/input_args_type_diff/torchvision.transforms.functional.perspective.md
+++ /dev/null
@@ -1,45 +0,0 @@
-## [ 输入参数类型不一致 ]torchvision.transforms.functional.perspective
-### [torchvision.transforms.functional.perspective](https://pytorch.org/vision/main/generated/torchvision.transforms.functional.perspective.html#perspective)
-```python
-torchvision.transforms.functional.perspective(
- img: Tensor,
- startpoints: List[List[int]],
- endpoints: List[List[int]],
- interpolation: InterpolationMode = InterpolationMode.BILINEAR,
- fill: Optional[List[float]] = None
-)
-```
-
-### [paddle.vision.transforms.perspective](https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/vision/transforms/perspective_cn.html#cn-api-paddle-vision-transforms-perspective)
-```python
-paddle.vision.transforms.perspective(
- img: Union[PIL.Image.Image, np.ndarray, paddle.Tensor],
- startpoints: List[List[float]],
- endpoints: List[List[float]],
- interpolation: Union[str, int] = 'nearest',
- fill: Union[int, List[int], Tuple[int, ...]] = 0
-)
-```
-
-两者功能一致,但参数类型不一致。
-
-### 参数映射
-
-| torchvision | PaddlePaddle | 备注 |
-| ----------------- | ----------------- | ------------ |
-| img | img | 输入图片。 |
-| startpoints | startpoints | 在原图上的四个角(左上、右上、右下、左下)的坐标。 |
-| endpoints | endpoints | 在原图上的四个角(左上、右上、右下、左下)的坐标。 |
-| interpolation | interpolation | 插值的方法,两者类型不一致,PyTorch 为 InterpolationMode 枚举类, Paddle 为 int 或 string,需要转写。 |
-| fill | fill | 对图像扩展时填充的像素值。 |
-
-
-### 转写示例
-#### interpolation:插值的方法
-```python
-# PyTorch 写法
-processed_img = torchvision.transforms.functional.perspective(img, startpoints, endpoints, interpolation=torchvision.transforms.InterpolationMode.BILINEAR, fill=[0, 0, 0])
-
-# Paddle 写法
-processed_img = paddle.vision.transforms.perspective(img=img, startpoints=startpoints, endpoints=endpoints, interpolation='bilinear', fill=[0, 0, 0])
-```
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/input_args_type_diff/torchvision.transforms.functional.rotate.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/input_args_type_diff/torchvision.transforms.functional.rotate.md
deleted file mode 100644
index 63af0e66d10..00000000000
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/input_args_type_diff/torchvision.transforms.functional.rotate.md
+++ /dev/null
@@ -1,34 +0,0 @@
-## [ 输入参数类型不一致 ]torchvision.transforms.functional.rotate
-### [torchvision.transforms.functional.rotate](https://pytorch.org/vision/stable/generated/torchvision.transforms.functional.rotate.html)
-```python
-torchvision.transforms.functional.rotate(img: Tensor, angle: float, interpolation: InterpolationMode = InterpolationMode.NEAREST, expand: bool = False, center: Optional[List[int]] = None, fill: Optional[List[float]] = None)
-```
-
-### [paddle.vision.transforms.rotate](https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/vision/transforms/rotate_cn.html#cn-api-paddle-vision-transforms-rotate)
-```python
-paddle.vision.transforms.rotate(img, angle, interpolation='nearest', expand=False, center=None, fill=0)
-```
-
-两者功能一致,但输入参数类型不一致。
-
-### 参数映射
-
-| torchvision | PaddlePaddle | 备注 |
-| ------------------------------------- | ------------------ | -------- |
-| img | img | 输入图片。|
-| angle | angle | 旋转角度。|
-| interpolation | interpolation | 插值的方法,两者类型不一致,PyTorch 为 InterpolationMode 枚举类, Paddle 为 int 或 string,需要转写。 |
-| expand | expand | 是否要对旋转后的图片进行大小扩展。|
-| center | center | 旋转中心。|
-| fill | fill | 旋转图像外部区域的 RGB 像素填充值。|
-
-
-### 转写示例
-#### interpolation:插值的方法
-```python
-# PyTorch 写法
-torchvision.transforms.functional.rotate(img, angle=90, interpolation=torchvision.transforms.InterpolationMode.BILINEAR)
-
-# Paddle 写法
-paddle.vision.transforms.rotate(img=img, angle=90, interpolation='bilinear')
-```
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/input_args_usage_diff/torch.rand.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/input_args_usage_diff/torch.rand.md
deleted file mode 100644
index f5a85a60955..00000000000
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/input_args_usage_diff/torch.rand.md
+++ /dev/null
@@ -1,83 +0,0 @@
-## [ 输入参数用法不一致 ]torch.rand
-### [torch.rand](https://pytorch.org/docs/stable/generated/torch.rand.html?highlight=rand#torch.rand)
-```python
-torch.rand(*size,
- *,
- generator=None,
- out=None,
- dtype=None,
- layout=torch.strided,
- device=None,
- requires_grad=False,
- pin_memory=False)
-```
-
-### [paddle.rand](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/rand_cn.html#rand)
-```python
-paddle.rand(shape,
- dtype=None,
- name=None)
-```
-
-其中 torch 的 `size` 和 paddle 的 `shape` 用法不一致,torch 还支持更多其他参数,具体如下:
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| ------------- | ------------ | ------------------------------------------------------ |
-| *size | shape | 表示输出形状大小,PyTorch 以可变参数方式传入,Paddle 以 list 或 tuple 的方式传入。 |
-| generator | - | 用于采样的伪随机数生成器, Paddle 无此参数,一般对网络训练结果影响不大,可直接删除。 |
-| out | - | 表示输出的 Tensor,Paddle 无此参数。 |
-| dtype | dtype | 表示数据类型。 |
-| layout | - | 表示布局方式,Paddle 无此参数,一般对网络训练结果影响不大,可直接删除。 |
-| device | - | 表示 Tensor 存放位置,Paddle 无此参数,需要转写。 |
-| requires_grad | - | 表示是否不阻断梯度传导,Paddle 无此参数,需要转写。 |
-| pin_memory | - | 表示是否使用锁页内存, Paddle 无此参数,需要转写。 |
-
-
-### 转写示例
-#### *size:输出形状大小
-```python
-# PyTorch 写法
-torch.rand(3, 5)
-
-# Paddle 写法
-paddle.rand([3, 5])
-```
-
-#### out:指定输出
-```python
-# PyTorch 写法
-torch.rand([3, 5], out=y)
-
-# Paddle 写法
-paddle.assign(paddle.rand([3, 5]), y)
-```
-
-#### device: Tensor 的设备
-```python
-# PyTorch 写法
-torch.rand(3, 5, device=torch.device('cpu'))
-
-# Paddle 写法
-y = paddle.rand([3, 5])
-y.cpu()
-```
-
-#### requires_grad:是否需要求反向梯度,需要修改该 Tensor 的 stop_gradient 属性
-```python
-# PyTorch 写法
-x = torch.rand([3, 5], requires_grad=True)
-
-# Paddle 写法
-x = paddle.rand([3, 5])
-x.stop_gradient = False
-```
-
-#### pin_memory:是否分配到固定内存上
-```python
-# PyTorch 写法
-torch.rand(3, 5, pin_memory=True)
-
-# Paddle 写法
-paddle.rand([3, 5]).pin_memory()
-```
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/input_args_usage_diff/torch.split.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/input_args_usage_diff/torch.split.md
deleted file mode 100644
index a757f119d4c..00000000000
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/input_args_usage_diff/torch.split.md
+++ /dev/null
@@ -1,38 +0,0 @@
-## [ 输入参数用法不一致 ]torch.split
-### [torch.split](https://pytorch.org/docs/stable/generated/torch.split.html?highlight=torch%20split#torch.split)
-```python
-torch.split(tensor,
- split_size_or_sections,
- dim=0)
-```
-
-### [paddle.split](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/split_cn.html#split)
-```python
-paddle.split(x,
- num_or_sections,
- axis=0,
- name=None)
-```
-
-其中 PyTorch 的 `split_size_or_sections` 与 Paddle 的 `num_or_sections` 用法不一致,具体如下:
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| ------------- | ------------ | ------------------------------------------------------ |
-| tensor | x | 表示输入 Tensor ,仅参数名不一致。 |
-| split_size_or_sections | num_or_sections | 当类型为 int 时,torch 表示单个块大小,paddle 表示结果有多少个块,需要转写。 |
-| dim | axis | 表示需要分割的维度,仅参数名不一致。 |
-
-
-### 转写示例
-#### split_size_or_sections:单个块大小
-```python
-split_size = 2
-dim = 1
-# PyTorch 写法
-torch.split(a, split_size, dim)
-# 在输入 dim 时,返回 (values, indices)
-
-# Paddle 写法
-paddle.split(a, a.shape[dims]/split_size, dim)
-```
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.Tensor.argwhere.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.Tensor.argwhere.md
similarity index 50%
rename from docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.Tensor.argwhere.md
rename to docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.Tensor.argwhere.md
index 19c478d1a0e..197f35a9745 100644
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.Tensor.argwhere.md
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.Tensor.argwhere.md
@@ -1,4 +1,4 @@
-## [ paddle 参数更多 ]torch.Tensor.argwhere
+## [ 仅 API 调用方式不一致 ]torch.Tensor.argwhere
### [torch.Tensor.argwhere](https://pytorch.org/docs/stable/generated/torch.Tensor.argwhere.html#torch.Tensor.argwhere)
```python
torch.Tensor.argwhere()
@@ -10,9 +10,3 @@ paddle.Tensor.nonzero(as_tuple=False)
```
其中 Paddle 相比 PyTorch 支持更多其他参数,具体如下:
-
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| ------------- | ------------ | ------------------------------------------------------ |
-| - | as_tuple | 返回格式。是否以 1-D Tensor 构成的元组格式返回。 PyTorch 无此参数, Paddle 保持默认即可。 |
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.Tensor.pinverse.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.Tensor.pinverse.md
new file mode 100644
index 00000000000..40be585f195
--- /dev/null
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.Tensor.pinverse.md
@@ -0,0 +1,15 @@
+## [ 仅 API 调用方式不一致 ]torch.Tensor.pinverse
+
+### [torch.Tensor.pinverse](https://pytorch.org/docs/stable/generated/torch.Tensor.pinverse.html#torch.Tensor.pinverse)
+```python
+torch.Tensor.pinverse()
+```
+
+### [paddle.Tensor.pinv]()
+```python
+paddle.Tensor.pinv(rcond=1e-15,
+ hermitian=False,
+ name=None)
+```
+
+其中 Paddle 相比 PyTorch 支持更多参数,具体如下:
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/args_name_diff/torch.autograd.function.FunctionCtx.mark_non_differentiable.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.autograd.function.FunctionCtx.mark_non_differentiable.md
similarity index 62%
rename from docs/guides/model_convert/convert_from_pytorch/api_difference/args_name_diff/torch.autograd.function.FunctionCtx.mark_non_differentiable.md
rename to docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.autograd.function.FunctionCtx.mark_non_differentiable.md
index 4b534c6392b..74f6fec3ba8 100644
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/args_name_diff/torch.autograd.function.FunctionCtx.mark_non_differentiable.md
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.autograd.function.FunctionCtx.mark_non_differentiable.md
@@ -1,4 +1,4 @@
-## [ 仅参数名不一致 ]torch.autograd.function.FunctionCtx.mark_non_differentiable
+## [ 仅 API 调用方式不一致 ]torch.autograd.function.FunctionCtx.mark_non_differentiable
### [torch.autograd.function.FunctionCtx.mark_non_differentiable](https://pytorch.org/docs/stable/generated/torch.autograd.function.FunctionCtx.mark_non_differentiable.html#torch.autograd.function.FunctionCtx.mark_non_differentiable)
```python
torch.autograd.function.FunctionCtx.mark_non_differentiable(*args)
@@ -9,10 +9,4 @@ torch.autograd.function.FunctionCtx.mark_non_differentiable(*args)
paddle.autograd.PyLayerContext.mark_non_differentiable(*tensors)
```
-两者功能一致,仅参数名不一致,具体如下:
-
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| ------- | ------------ | ----------------------------- |
-| args | tensors | 需要标记不需要反向的 Tensor。 |
+两者功能一致,仅调用方式不一致。
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.cuda.get_rng_state_all.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.cuda.get_rng_state_all.md
new file mode 100644
index 00000000000..6ee887d3937
--- /dev/null
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.cuda.get_rng_state_all.md
@@ -0,0 +1,22 @@
+## [ 仅 API 调用方式不一致 ]torch.cuda.get_rng_state_all
+### [torch.cuda.get_rng_state_all](https://pytorch.org/docs/stable/generated/torch.cuda.get_rng_state_all.html#torch.cuda.get_rng_state_all)
+```python
+torch.cuda.get_rng_state_all()
+```
+
+### [paddle.get_rng_state]()
+```python
+paddle.get_rng_state(device='gpu')
+```
+
+paddle 参数更多,并且 torch 与 paddle 的返回参数类型不一致,具体如下:
+
+### 转写示例
+#### 返回参数类型不同
+```python
+# PyTorch 写法,返回 torch.ByteTensor
+x = torch.cuda.get_rng_state_all()
+
+# Paddle 写法,返回 GeneratorState 对象
+x = paddle.get_rng_state(device='gpu')
+```
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.cuda.manual_seed.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.cuda.manual_seed.md
new file mode 100644
index 00000000000..5bde777d7f0
--- /dev/null
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.cuda.manual_seed.md
@@ -0,0 +1,12 @@
+## [ 仅 API 调用方式不一致 ]torch.cuda.manual_seed
+### [torch.cuda.manual_seed](https://pytorch.org/docs/stable/generated/torch.cuda.manual_seed.html#torch.cuda.manual_seed)
+```python
+torch.cuda.manual_seed(seed)
+```
+
+### [paddle.seed](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/seed_cn.html)
+```python
+paddle.seed(seed)
+```
+
+功能一致,返回类型不一致,具体如下:
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/torch_more_args/torch.distributed.ReduceOp.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.distributed.ReduceOp.md
similarity index 55%
rename from docs/guides/model_convert/convert_from_pytorch/api_difference/torch_more_args/torch.distributed.ReduceOp.md
rename to docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.distributed.ReduceOp.md
index 2d7a675e375..0bea0dc3bbc 100644
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/torch_more_args/torch.distributed.ReduceOp.md
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.distributed.ReduceOp.md
@@ -1,4 +1,4 @@
-## [ torch 参数更多 ]torch.distributed.ReduceOp
+## [ 仅 API 调用方式不一致 ]torch.distributed.ReduceOp
### [torch.distributed.ReduceOp](https://pytorch.org/docs/stable/distributed.html?highlight=torch+distributed+reduceop#torch.distributed.ReduceOp)
```python
torch.distributed.ReduceOp
@@ -10,18 +10,3 @@ paddle.distributed.ReduceOp
```
两者功能一致。
-
-其中,规约操作对应如下:
-
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| ---- | ---- | --- |
-| SUM | SUM | |
-| PRODUCT | PROD | |
-| MIN | MIN | |
-| MAX | MAX | |
-| BAND | - | |
-| BOR | - | |
-| BXOR | - | |
-| PREMUL_SUM | - | |
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.max.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.max.md
new file mode 100644
index 00000000000..3893c2e48ad
--- /dev/null
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.max.md
@@ -0,0 +1,23 @@
+## [ 仅 API 调用方式不一致 ]torch.max
+输入一个 Tensor 对应 paddle.max,输入两个 Tensor 对应 paddle.maximum,因此有两组差异分析,分别如下:
+
+-------------------------------------------------------------------------------------------------
+
+### [torch.max](https://pytorch.org/docs/stable/generated/torch.max.html?highlight=max#torch.max)
+```python
+torch.max(input,
+ dim=None,
+ keepdim=False,
+ *,
+ out=None)
+```
+
+### [paddle.max](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/max_cn.html#max)
+```python
+paddle.max(x,
+ axis=None,
+ keepdim=False,
+ name=None)
+```
+
+其中 PyTorch 与 Paddle 指定 `dim` 后返回值不一致,具体如下:
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.median.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.median.md
new file mode 100644
index 00000000000..5a1d9d58f4a
--- /dev/null
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.median.md
@@ -0,0 +1,26 @@
+## [ 仅 API 调用方式不一致 ]torch.median
+### [torch.median](https://pytorch.org/docs/stable/generated/torch.median.html?highlight=median#torch.median)
+```python
+torch.median(input,
+ dim=-1,
+ keepdim=False,
+ *,
+ out=None)
+```
+
+### [paddle.median](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/median_cn.html#median)
+```python
+paddle.median(x, axis=None, keepdim=False, mode='avg', name=None)
+```
+
+PyTorch 相比 Paddle 支持更多其他参数,具体如下:
+
+### 转写示例
+#### out:指定输出
+```python
+# PyTorch 写法
+torch.median([3, 5], out=y)
+
+# Paddle 写法
+paddle.assign(paddle.median([3, 5], mode='min'), y)
+```
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/output_args_type_diff/torch.min.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.min.md
similarity index 50%
rename from docs/guides/model_convert/convert_from_pytorch/api_difference/output_args_type_diff/torch.min.md
rename to docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.min.md
index ee100fb0838..6abca13a1f5 100644
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/output_args_type_diff/torch.min.md
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.min.md
@@ -1,4 +1,4 @@
-## [ 返回参数类型不一致 ]torch.min
+## [ 仅 API 调用方式不一致 ]torch.min
输入一个 Tensor 对应 paddle.min,输入两个 Tensor 对应 paddle.minimum,因此有两组差异分析,分别如下:
--------------------------------------------------------------------------------------------------
@@ -20,15 +20,6 @@ paddle.min(x,
```
其中 PyTorch 与 Paddle 指定 `dim` 后返回值不一致,具体如下:
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| ------------- | ------------ | ------------------------------------------------------ |
-| input | x | 输入的 Tensor ,仅参数名不一致。 |
-| dim | axis | 求最小值运算的维度, 仅参数名不一致。 |
-| keepdim | keepdim | 是否在输出 Tensor 中保留减小的维度。 |
-| out | - | 表示输出的 Tensor , Paddle 无此参数,需要转写。 |
-| 返回值 | 返回值 | 表示返回结果,当指定 dim 后,PyTorch 会返回比较结果和元素索引, Paddle 不会返回元素索引,需要转写。 |
### 转写示例
#### out:指定输出
@@ -69,24 +60,3 @@ paddle.minimum(x,
```
PyTorch 相比 Paddle 支持更多其他参数,具体如下:
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| ------------- | ------------ | ------------------------------------------------------ |
-| input | x | 输入的 Tensor。 |
-| other | y | 输入的 Tensor。 |
-| out | - | 表示输出的 Tensor , Paddle 无此参数,需要转写。 |
-
-
-### 转写示例
-#### out:指定输出
-```python
-# 逐元素对比输入的两个 Tensor
-
-# PyTorch 写法
-torch.min(a, b, out=y)
-# 在输入 other 时,比较 input 和 other 返回较大值
-
-# Paddle 写法
-paddle.assign(paddle.minimum(a, b), y)
-```
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nanmedian.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nanmedian.md
new file mode 100644
index 00000000000..5ff35c66280
--- /dev/null
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nanmedian.md
@@ -0,0 +1,26 @@
+## [ 仅 API 调用方式不一致 ]torch.nanmedian
+### [torch.nanmedian](https://pytorch.org/docs/stable/generated/torch.nanmedian.html?highlight=nanmedian#torch.nanmedian)
+```python
+torch.nanmedian(input,
+ dim=-1,
+ keepdim=False,
+ *,
+ out=None)
+```
+
+### [paddle.nanmedian](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/nanmedian_cn.html#nanmedian)
+```python
+paddle.nanmedian(x, axis=None, keepdim=False, mode='avg', name=None)
+```
+
+PyTorch 相比 Paddle 支持更多其他参数,具体如下:
+
+### 转写示例
+#### out:指定输出
+```python
+# PyTorch 写法
+torch.nanmedian(a, -1, out=y)
+
+# Paddle 写法
+paddle.assign(paddle.nanmedian(a, -1, mode='min'), y)
+```
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.AdaptiveAvgPool1d.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.AdaptiveAvgPool1d.md
index c5e144950c6..84e1585d9d8 100644
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.AdaptiveAvgPool1d.md
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.AdaptiveAvgPool1d.md
@@ -1,12 +1,25 @@
## [ 仅 API 调用方式不一致 ]torch.nn.AdaptiveAvgPool1d
-### [torch.nn.AdaptiveAvgPool1d](https://pytorch.org/docs/stable/generated/torch.nn.AdaptiveAvgPool1d.html)
+
+### [torch.nn.AdaptiveAvgPool1d](https://pytorch.org/docs/stable/generated/torch.nn.AdaptiveAvgPool1d.html#torch.nn.AdaptiveAvgPool1d)
+
```python
torch.nn.AdaptiveAvgPool1d(output_size)
```
-### [paddle.nn.AdaptiveAvgPool1D](https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/nn/AdaptiveAvgPool1D_cn.html#adaptiveavgpool1d)
+### [paddle.nn.AdaptiveAvgPool1D](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/nn/AdaptiveAvgPool1D_cn.html#paddle/nn/AdaptiveAvgPool1D_cn#cn-api-paddle-nn-AdaptiveAvgPool1D)
+
```python
-paddle.nn.AdaptiveAvgPool1D(output_size, name=None)
+paddle.nn.AdaptiveAvgPool1D(output_size, name)
```
-两者功能一致,参数完全一致。
+两者功能一致,但调用方式不一致,具体如下:
+
+### 转写示例
+
+```python
+# PyTorch 写法
+model = torch.nn.AdaptiveAvgPool1d(5)
+
+# Paddle 写法
+model = paddle.nn.AdaptiveAvgPool1D(5)
+```
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.AdaptiveAvgPool2d.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.AdaptiveAvgPool2d.md
new file mode 100644
index 00000000000..5c29fa5bf2d
--- /dev/null
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.AdaptiveAvgPool2d.md
@@ -0,0 +1,25 @@
+## [ 仅 API 调用方式不一致 ]torch.nn.AdaptiveAvgPool2d
+
+### [torch.nn.AdaptiveAvgPool2d](https://pytorch.org/docs/stable/generated/torch.nn.AdaptiveAvgPool2d.html#torch.nn.AdaptiveAvgPool2d)
+
+```python
+torch.nn.AdaptiveAvgPool2d(output_size)
+```
+
+### [paddle.nn.AdaptiveAvgPool2D](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/nn/AdaptiveAvgPool2D_cn.html#paddle/nn/AdaptiveAvgPool2D_cn#cn-api-paddle-nn-AdaptiveAvgPool2D)
+
+```python
+paddle.nn.AdaptiveAvgPool2D(output_size, data_format, name)
+```
+
+两者功能一致,但调用方式不一致,具体如下:
+
+### 转写示例
+
+```python
+# PyTorch 写法
+model = torch.nn.AdaptiveAvgPool2d(5)
+
+# Paddle 写法
+model = paddle.nn.AdaptiveAvgPool2D(5)
+```
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.AdaptiveAvgPool3d.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.AdaptiveAvgPool3d.md
new file mode 100644
index 00000000000..35eba56538f
--- /dev/null
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.AdaptiveAvgPool3d.md
@@ -0,0 +1,25 @@
+## [ 仅 API 调用方式不一致 ]torch.nn.AdaptiveAvgPool3d
+
+### [torch.nn.AdaptiveAvgPool3d](https://pytorch.org/docs/stable/generated/torch.nn.AdaptiveAvgPool3d.html#torch.nn.AdaptiveAvgPool3d)
+
+```python
+torch.nn.AdaptiveAvgPool3d(output_size)
+```
+
+### [paddle.nn.AdaptiveAvgPool3D](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/nn/AdaptiveAvgPool3D_cn.html#paddle/nn/AdaptiveAvgPool3D_cn#cn-api-paddle-nn-AdaptiveAvgPool3D)
+
+```python
+paddle.nn.AdaptiveAvgPool3D(output_size, data_format, name)
+```
+
+两者功能一致,但调用方式不一致,具体如下:
+
+### 转写示例
+
+```python
+# PyTorch 写法
+model = torch.nn.AdaptiveAvgPool3d(1)
+
+# Paddle 写法
+model = paddle.nn.AdaptiveAvgPool3D(1)
+```
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.MaxUnpool1d.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.MaxUnpool1d.md
new file mode 100644
index 00000000000..b4eac7ec74e
--- /dev/null
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.MaxUnpool1d.md
@@ -0,0 +1,25 @@
+## [ 仅 API 调用方式不一致 ]torch.nn.MaxUnpool1d
+
+### [torch.nn.MaxUnpool1d](https://pytorch.org/docs/stable/generated/torch.nn.MaxUnpool1d.html#torch.nn.MaxUnpool1d)
+
+```python
+torch.nn.MaxUnpool1d(kernel_size, stride, padding)
+```
+
+### [paddle.nn.MaxUnPool1D](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/nn/MaxUnPool1D_cn.html#paddle/nn/MaxUnPool1D_cn#cn-api-paddle-nn-MaxUnPool1D)
+
+```python
+paddle.nn.MaxUnPool1D(kernel_size, stride, padding, data_format, output_size, name)
+```
+
+两者功能一致,但调用方式不一致,具体如下:
+
+### 转写示例
+
+```python
+# PyTorch 写法
+unpool = torch.nn.MaxUnpool1d(2, 2)
+
+# Paddle 写法
+unpool = paddle.nn.MaxUnPool1D(2, 2)
+```
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.MaxUnpool2d.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.MaxUnpool2d.md
new file mode 100644
index 00000000000..dccae85a08d
--- /dev/null
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.MaxUnpool2d.md
@@ -0,0 +1,25 @@
+## [ 仅 API 调用方式不一致 ]torch.nn.MaxUnpool2d
+
+### [torch.nn.MaxUnpool2d](https://pytorch.org/docs/stable/generated/torch.nn.MaxUnpool2d.html#torch.nn.MaxUnpool2d)
+
+```python
+torch.nn.MaxUnpool2d(kernel_size, stride, padding)
+```
+
+### [paddle.nn.MaxUnPool2D](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/nn/MaxUnPool2D_cn.html#paddle/nn/MaxUnPool2D_cn#cn-api-paddle-nn-MaxUnPool2D)
+
+```python
+paddle.nn.MaxUnPool2D(kernel_size, stride, padding, data_format, output_size, name)
+```
+
+两者功能一致,但调用方式不一致,具体如下:
+
+### 转写示例
+
+```python
+# PyTorch 写法
+unpool = torch.nn.MaxUnpool2d(2, stride=2)
+
+# Paddle 写法
+unpool = paddle.nn.MaxUnPool2D(2, stride=2)
+```
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.MaxUnpool3d.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.MaxUnpool3d.md
new file mode 100644
index 00000000000..eaa5f14fcaa
--- /dev/null
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.MaxUnpool3d.md
@@ -0,0 +1,25 @@
+## [ 仅 API 调用方式不一致 ]torch.nn.MaxUnpool3d
+
+### [torch.nn.MaxUnpool3d](https://pytorch.org/docs/stable/generated/torch.nn.MaxUnpool3d.html#torch.nn.MaxUnpool3d)
+
+```python
+torch.nn.MaxUnpool3d(kernel_size, stride, padding)
+```
+
+### [paddle.nn.MaxUnPool3D](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/nn/MaxUnPool3D_cn.html#paddle/nn/MaxUnPool3D_cn#cn-api-paddle-nn-MaxUnPool3D)
+
+```python
+paddle.nn.MaxUnPool3D(kernel_size, stride, padding, data_format, output_size, name)
+```
+
+两者功能一致,但调用方式不一致,具体如下:
+
+### 转写示例
+
+```python
+# PyTorch 写法
+unpool = torch.nn.MaxUnpool3d(3, stride=2)
+
+# Paddle 写法
+unpool = paddle.nn.MaxUnPool3D(3, stride=2)
+```
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.Module.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.Module.md
similarity index 54%
rename from docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.Module.md
rename to docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.Module.md
index a24fc14503e..232aa977696 100644
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.Module.md
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.Module.md
@@ -1,4 +1,4 @@
-## [ paddle 参数更多 ]torch.nn.Module
+## [ 仅 API 调用方式不一致 ]torch.nn.Module
### [torch.nn.Module](https://pytorch.org/docs/stable/generated/torch.nn.Module.html?highlight=torch+nn+module#torch.nn.Module)
```python
@@ -11,10 +11,3 @@ paddle.nn.Layer(name_scope=None, dtype='float32')
```
其中 Paddle 相比 PyTorch 支持更多其他参数,具体如下:
-
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| ----- | ---------- | ------------------------------------ |
-| - | name_scope | PyTorch 无此参数,Paddle 保持默认即可。 |
-| - | dtype | PyTorch 无此参数,Paddle 保持默认即可。 |
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.Module.modules.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.Module.modules.md
similarity index 64%
rename from docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.Module.modules.md
rename to docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.Module.modules.md
index 8054091e7ca..93059504d3c 100644
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.Module.modules.md
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.Module.modules.md
@@ -1,4 +1,4 @@
-## [ paddle 参数更多 ]torch.nn.Module.modules
+## [ 仅 API 调用方式不一致 ]torch.nn.Module.modules
### [torch.nn.Module.modules](https://pytorch.org/docs/stable/generated/torch.nn.Module.html#torch.nn.Module.modules)
```python
torch.nn.Module.modules()
@@ -10,9 +10,3 @@ paddle.nn.Layer.sublayers(include_self=False)
```
其中 Paddle 相比 PyTorch 支持更多其他参数,具体如下:
-
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| ------- | ------------ | -- |
-| - | include_self | 是否包含本层。PyTorch 无此参数,Paddle 保持默认即可。 |
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/args_name_diff/torch.nn.Unfold.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.Unfold.md
similarity index 51%
rename from docs/guides/model_convert/convert_from_pytorch/api_difference/args_name_diff/torch.nn.Unfold.md
rename to docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.Unfold.md
index 899dec470f1..4c86cd43fd1 100644
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/args_name_diff/torch.nn.Unfold.md
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.Unfold.md
@@ -1,4 +1,4 @@
-## [ 仅参数名不一致 ]torch.nn.Unfold
+## [ 仅 API 调用方式不一致 ]torch.nn.Unfold
### [torch.nn.Unfold](https://pytorch.org/docs/stable/generated/torch.nn.Unfold.html?highlight=nn+unfold#torch.nn.Unfold)
```python
torch.nn.Unfold(kernel_size,
@@ -17,12 +17,3 @@ paddle.nn.Unfold(kernel_sizes=[3, 3],
```
其中功能一致, 仅参数名不一致,具体如下:
-
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| ------------- | ------------ | ------------------------------------------------------ |
-| kernel_size | kernel_sizes | 卷积核的尺寸。 |
-| dilation | dilations | 卷积膨胀。 |
-| padding | paddings | 每个维度的扩展,仅参数名不一致。 |
-| stride | strides | 卷积步长,仅参数名不一致。 |
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.UpsamplingBilinear2d.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.UpsamplingBilinear2d.md
new file mode 100644
index 00000000000..3703d44e354
--- /dev/null
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.UpsamplingBilinear2d.md
@@ -0,0 +1,12 @@
+## [ 仅 API 调用方式不一致 ]torch.nn.UpsamplingBilinear2d
+### [torch.nn.UpsamplingBilinear2d](https://pytorch.org/docs/stable/generated/torch.nn.UpsamplingBilinear2d.html?highlight=upsamplingbilinear2d#torch.nn.UpsamplingBilinear2d)
+```python
+torch.nn.UpsamplingBilinear2d(size=None, scale_factor=None)
+```
+
+### [paddle.nn.UpsamplingBilinear2D](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/nn/UpsamplingBilinear2D_cn.html)
+```python
+paddle.nn.UpsamplingBilinear2D(size=None,scale_factor=None, data_format='NCHW',name=None)
+```
+
+其中 Paddle 相比 PyTorch 支持更多其他参数,具体如下:
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.UpsamplingNearest2d.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.UpsamplingNearest2d.md
new file mode 100644
index 00000000000..f09d5bd3729
--- /dev/null
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.UpsamplingNearest2d.md
@@ -0,0 +1,12 @@
+## [ 仅 API 调用方式不一致 ]torch.nn.UpsamplingNearest2d
+### [torch.nn.UpsamplingNearest2d](https://pytorch.org/docs/stable/generated/torch.nn.UpsamplingNearest2d.html?highlight=upsampl#torch.nn.UpsamplingNearest2d)
+```python
+torch.nn.UpsamplingNearest2d(size=None, scale_factor=None)
+```
+
+### [paddle.nn.UpsamplingNearest2D](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/nn/UpsamplingNearest2D_cn.html)
+```python
+paddle.nn.UpsamplingNearest2D(size=None, scale_factor=None, data_format='NCHW',name=None)
+```
+
+其中 Paddle 相比 PyTorch 支持更多其他参数,具体如下:
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.ZeroPad2d.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.ZeroPad2d.md
similarity index 52%
rename from docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.ZeroPad2d.md
rename to docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.ZeroPad2d.md
index 8367e4f43b0..6b659bef151 100644
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.ZeroPad2d.md
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.ZeroPad2d.md
@@ -1,4 +1,4 @@
-## [ paddle 参数更多 ]torch.nn.ZeroPad2d
+## [ 仅 API 调用方式不一致 ]torch.nn.ZeroPad2d
### [torch.nn.ZeroPad2d](https://pytorch.org/docs/stable/generated/torch.nn.ZeroPad2d.html?highlight=zeropad#torch.nn.ZeroPad2d)
```python
@@ -13,9 +13,3 @@ paddle.nn.ZeroPad2D(padding,
```
其中 Paddle 相比 PyTorch 支持更多其他参数,具体如下:
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| ------------- | ------------ | ------------------------------------------------------ |
-| padding | padding | 表示填充大小。 |
-| - | data_format | 指定输入的 format, PyTorch 无此参数, Paddle 保持默认即可。 |
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.functional.pad.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.functional.pad.md
new file mode 100644
index 00000000000..f65acf1297c
--- /dev/null
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.functional.pad.md
@@ -0,0 +1,21 @@
+## [ 仅 API 调用方式不一致 ]torch.nn.functional.pad
+### [torch.nn.functional.pad](https://pytorch.org/docs/stable/generated/torch.nn.functional.pad.html)
+```python
+torch.nn.functional.pad(input,
+ pad,
+ mode='constant',
+ value=None)
+```
+
+### [paddle.nn.functional.pad](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/nn/functional/pad_cn.html#pad)
+```python
+paddle.nn.functional.pad(x,
+ pad,
+ mode='constant',
+ value=0.0,
+ data_format=None,
+ pad_from_left_axis=True,
+ name=None)
+```
+
+两者功能一致,仅调用方式不一致。
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.functional.softmax.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.functional.softmax.md
new file mode 100644
index 00000000000..62bd4931b4c
--- /dev/null
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.nn.functional.softmax.md
@@ -0,0 +1,12 @@
+## [ 仅 API 调用方式不一致 ]torch.nn.functional.softmax
+### [torch.nn.functional.softmax](https://pytorch.org/docs/stable/generated/torch.nn.functional.softmax.html#torch.nn.functional.softmax)
+```python
+torch.nn.functional.softmax(input, dim=None, _stacklevel=3, dtype=None)
+```
+
+### [paddle.nn.functional.softmax](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/nn/functional/softmax_cn.html#softmax)
+```python
+paddle.nn.functional.softmax(x, axis=-1, dtype=None, name=None)
+```
+
+两者功能一致,仅 API 调用方式不同。
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/torch_more_args/torch.optim.Optimizer.step.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.optim.Optimizer.step.md
similarity index 61%
rename from docs/guides/model_convert/convert_from_pytorch/api_difference/torch_more_args/torch.optim.Optimizer.step.md
rename to docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.optim.Optimizer.step.md
index d56ee5207fa..50eda605dd5 100644
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/torch_more_args/torch.optim.Optimizer.step.md
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.optim.Optimizer.step.md
@@ -1,4 +1,4 @@
-## [ torch 参数更多 ]torch.optim.Optimizer.step
+## [ 仅 API 调用方式不一致 ]torch.optim.Optimizer.step
### [torch.optim.Optimizer.step](https://pytorch.org/docs/stable/generated/torch.optim.Optimizer.step.html#torch-optim-optimizer-step)
```python
torch.optim.Optimizer.step(closure)
@@ -10,9 +10,3 @@ paddle.optimizer.Optimizer.step()
```
PyTorch 相比 Paddle 支持更多其他参数,具体如下:
-
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| -------- | ---------- | ---------------- |
-| closure | - | 重新评估模型并返回损失的闭包, Paddle 无此参数,暂无转写方式。 |
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.sort.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.sort.md
new file mode 100644
index 00000000000..25671308f63
--- /dev/null
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.sort.md
@@ -0,0 +1,21 @@
+## [ 仅 API 调用方式不一致 ]torch.sort
+### [torch.sort](https://pytorch.org/docs/stable/generated/torch.sort.html?highlight=sort#torch.sort)
+```python
+torch.sort(input,
+ dim=-1,
+ descending=False,
+ stable=False,
+ *,
+ out=None)
+```
+
+### [paddle.sort](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/sort_cn.html#paddle.sort)
+```python
+paddle.sort(x,
+ axis=-1,
+ descending=False,
+ stable=False,
+ name=None)
+```
+
+PyTorch 相比 Paddle 支持更多其他参数,同时两个 api 的返回参数类型不同,具体如下:
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.split.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.split.md
new file mode 100644
index 00000000000..b3011c12efe
--- /dev/null
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.split.md
@@ -0,0 +1,17 @@
+## [ 仅 API 调用方式不一致 ]torch.split
+### [torch.split](https://pytorch.org/docs/stable/generated/torch.split.html?highlight=torch%20split#torch.split)
+```python
+torch.split(tensor,
+ split_size_or_sections,
+ dim=0)
+```
+
+### [paddle.split](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/split_cn.html#split)
+```python
+paddle.split(x,
+ num_or_sections,
+ axis=0,
+ name=None)
+```
+
+其中 PyTorch 的 `split_size_or_sections` 与 Paddle 的 `num_or_sections` 用法不一致,具体如下:
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.utils.data.default_collate.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.utils.data.default_collate.md
new file mode 100644
index 00000000000..ebfe87d7fa6
--- /dev/null
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torch.utils.data.default_collate.md
@@ -0,0 +1,12 @@
+## [ 仅 API 调用方式不一致 ]torch.utils.data.default_collate
+### [torch.utils.data.default_collate](https://pytorch.org/docs/stable/data.html?highlight=default_collate#torch.utils.data.default_collate)
+```python
+torch.utils.data.default_collate(batch)
+```
+
+### [paddle.io.dataloader.collate.default_collate_fn]()
+```python
+paddle.io.dataloader.collate.default_collate_fn(batch)
+```
+
+返回参数类型不一致,需要转写。具体如下:
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torchvision.transforms.CenterCrop.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.CenterCrop.md
similarity index 62%
rename from docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torchvision.transforms.CenterCrop.md
rename to docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.CenterCrop.md
index 9a2d06182e3..86c2967df7b 100644
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torchvision.transforms.CenterCrop.md
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.CenterCrop.md
@@ -1,4 +1,4 @@
-## [ paddle 参数更多 ]torchvision.transforms.CenterCrop
+## [ 仅 API 调用方式不一致 ]torchvision.transforms.CenterCrop
### [torchvision.transforms.CenterCrop](https://pytorch.org/vision/main/generated/torchvision.transforms.CenterCrop.html)
```python
torchvision.transforms.CenterCrop(
@@ -15,10 +15,3 @@ paddle.vision.transforms.CenterCrop(
```
两者功能一致,但 Paddle 相比 torchvision 支持更多参数,具体如下:
-
-### 参数映射
-
-| torchvision | PaddlePaddle | 备注 |
-| ------------ | ------------ | ---------------------- |
-| size | size | 输出图像的形状大小。 |
-| - | keys | 输入的类型,PyTorch 无此参数,Paddle 保持默认即可。 |
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torchvision.transforms.ColorJitter.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.ColorJitter.md
similarity index 53%
rename from docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torchvision.transforms.ColorJitter.md
rename to docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.ColorJitter.md
index e8b48417e18..8ba7d26a3a3 100644
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torchvision.transforms.ColorJitter.md
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.ColorJitter.md
@@ -1,4 +1,4 @@
-## [ paddle 参数更多 ]torchvision.transforms.ColorJitter
+## [ 仅 API 调用方式不一致 ]torchvision.transforms.ColorJitter
### [torchvision.transforms.ColorJitter](https://pytorch.org/vision/main/generated/torchvision.transforms.ColorJitter.html)
```python
torchvision.transforms.ColorJitter(brightness: Union[float, Tuple[float, float]] = 0, contrast: Union[float, Tuple[float, float]] = 0, saturation: Union[float, Tuple[float, float]] = 0, hue: Union[float, Tuple[float, float]] = 0)
@@ -10,13 +10,3 @@ paddle.vision.transforms.ColorJitter(brightness=0, contrast=0, saturation=0, hue
```
其中 Paddle 相比 PyTorch 支持更多其他参数,具体如下:
-
-### 参数映射
-
-| torchvision | PaddlePaddle | 备注 |
-| --------------------------- | ------------------------------ | --------------------- |
-| brightness | brightness | 亮度调整范围大小。 |
-| contrast | contrast | 对比度调整范围大小。 |
-| saturation | saturation | 饱和度调整范围大小。 |
-| hue | hue | 色调调整范围大小。 |
-| - | keys | 输入的类型,PyTorch 无此参数,Paddle 保持默认即可。 |
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torchvision.transforms.Grayscale.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.Grayscale.md
similarity index 55%
rename from docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torchvision.transforms.Grayscale.md
rename to docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.Grayscale.md
index 75cda0d305a..cb81f93f8f7 100644
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torchvision.transforms.Grayscale.md
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.Grayscale.md
@@ -1,4 +1,4 @@
-## [ paddle 参数更多 ]torchvision.transforms.Grayscale
+## [ 仅 API 调用方式不一致 ]torchvision.transforms.Grayscale
### [torchvision.transforms.Grayscale](https://pytorch.org/vision/main/generated/torchvision.transforms.Grayscale.html)
```python
@@ -14,10 +14,3 @@ paddle.vision.transforms.Grayscale(
```
其中 Paddle 相比 PyTorch 支持更多其他参数,具体如下:
-
-### 参数映射
-
-| torchvision | PaddlePaddle | 备注 |
-| --------------------------- | ------------------------------ | --------------------- |
-| num_output_channels | num_output_channels | 输出图像的通道数。 |
-| - | keys | 输入的类型,PyTorch 无此参数,Paddle 保持默认即可。 |
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torchvision.transforms.Pad.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.Pad.md
similarity index 59%
rename from docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torchvision.transforms.Pad.md
rename to docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.Pad.md
index b3a484fa6a7..815e82f4371 100644
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torchvision.transforms.Pad.md
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.Pad.md
@@ -1,4 +1,4 @@
-## [ paddle 参数更多 ]torchvision.transforms.Pad
+## [ 仅 API 调用方式不一致 ]torchvision.transforms.Pad
### [torchvision.transforms.Pad](https://pytorch.org/vision/main/generated/torchvision.transforms.Pad.html)
@@ -21,12 +21,3 @@ paddle.vision.transforms.Pad(
```
两者功能一致,但 Paddle 相比 torchvision 支持更多参数,具体如下:
-
-### 参数映射
-
-| torchvision | PaddlePaddle | 备注 |
-| ------------- | ------------- | ----------------------------- |
-| padding | padding | 在图像边界上进行填充的范围。 |
-| fill | fill | 多通道图像填充。 |
-| padding_mode | padding_mode | 填充模式。|
-| - | keys | 输入的类型,PyTorch 无此参数,Paddle 保持默认即可。 |
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.RandomAffine.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.RandomAffine.md
new file mode 100644
index 00000000000..885373db76d
--- /dev/null
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.RandomAffine.md
@@ -0,0 +1,29 @@
+## [ 仅 API 调用方式不一致 ]torchvision.transforms.RandomAffine
+### [torchvision.transforms.RandomAffine](https://pytorch.org/vision/main/generated/torchvision.transforms.RandomAffine.html)
+```python
+torchvision.transforms.RandomAffine(
+ degrees: Union[List[float], Tuple[float, ...], float],
+ translate: Optional[Tuple[float, float]] = None,
+ scale: Optional[Tuple[float, float]] = None,
+ shear: Union[List[float], Tuple[float, ...], float] = None,
+ interpolation: InterpolationMode = InterpolationMode.NEAREST,
+ fill: Union[int, float, List[float], Tuple[float, ...]] = 0,
+ center: Optional[Union[List[int], Tuple[int, ...]]] = None
+)
+```
+
+### [paddle.vision.transforms.RandomAffine](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/vision/transforms/RandomAffine_cn.html)
+```python
+paddle.vision.transforms.RandomAffine(
+ degrees: Union[Tuple[float, float], float, int],
+ translate: Optional[Union[Sequence[float], float, int]] = None,
+ scale: Optional[Tuple[float, float]] = None,
+ shear: Optional[Union[Sequence[float], float, int]] = None,
+ interpolation: Union[str, int] = 'nearest',
+ fill: Union[int, List[int], Tuple[int, ...]] = 0,
+ center: Optional[Tuple[int, int]] = None,
+ keys: Optional[Union[List[str], Tuple[str, ...]]] = None
+)
+```
+
+两者功能一致但参数类型不一致,具体如下:
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torchvision.transforms.RandomCrop.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.RandomCrop.md
similarity index 53%
rename from docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torchvision.transforms.RandomCrop.md
rename to docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.RandomCrop.md
index fea93a59d71..d1fcb0bd2db 100644
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torchvision.transforms.RandomCrop.md
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.RandomCrop.md
@@ -1,4 +1,4 @@
-## [ paddle 参数更多 ]torchvision.transforms.RandomCrop
+## [ 仅 API 调用方式不一致 ]torchvision.transforms.RandomCrop
### [torchvision.transforms.RandomCrop](https://pytorch.org/vision/main/generated/torchvision.transforms.RandomCrop.html)
```python
torchvision.transforms.RandomCrop(
@@ -23,14 +23,3 @@ paddle.vision.transforms.RandomCrop(
```
两者功能一致,但 Paddle 相比 torchvision 支持更多参数,具体如下:
-
-### 参数映射
-
-| torchvision | PaddlePaddle | 备注 |
-| ------------- | -------------- | -------------------------------------------------------- |
-| size | size | 裁剪后的图片大小。 |
-| padding | padding | 对图像四周外边进行填充。 |
-| pad_if_needed | pad_if_needed | 是否在裁剪前进行填充以满足大小要求。 |
-| fill | fill | 用于填充的像素值。 |
-| padding_mode | padding_mode | 填充模式。 |
-| - | keys | 输入的类型,PyTorch 无此参数,Paddle 保持默认即可。 |
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.RandomRotation.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.RandomRotation.md
new file mode 100644
index 00000000000..20879798090
--- /dev/null
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.RandomRotation.md
@@ -0,0 +1,25 @@
+## [ 仅 API 调用方式不一致 ]torchvision.transforms.RandomRotation
+### [torchvision.transforms.RandomRotation](https://pytorch.org/vision/main/generated/torchvision.transforms.RandomRotation.html)
+```python
+torchvision.transforms.RandomRotation(
+ degrees: Union[int, List[float], Tuple[float, ...]],
+ interpolation: InterpolationMode = InterpolationMode.NEAREST,
+ expand: bool = False,
+ center: Optional[Union[List[float], Tuple[float, ...]]] = None,
+ fill: Union[int, float, Tuple[int, ...]] = 0
+)
+```
+
+### [paddle.vision.transforms.RandomRotation](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/vision/transforms/RandomRotation_cn.html)
+```python
+paddle.vision.transforms.RandomRotation(
+ degrees: Union[int, List[float], Tuple[float, ...]],
+ interpolation: Union[str, int] = 'nearest',
+ expand: bool = False,
+ center: Optional[Tuple[int, int]] = None,
+ fill: int = 0,
+ keys: Optional[Union[List[str], Tuple[str, ...]]] = None
+)
+```
+
+两者功能一致,但输入参数类型不一致。
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torchvision.transforms.ToTensor.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.ToTensor.md
similarity index 55%
rename from docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torchvision.transforms.ToTensor.md
rename to docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.ToTensor.md
index e4486c9d788..4512c7570fa 100644
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torchvision.transforms.ToTensor.md
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.ToTensor.md
@@ -1,4 +1,4 @@
-## [ paddle 参数更多 ]torchvision.transforms.ToTensor
+## [ 仅 API 调用方式不一致 ]torchvision.transforms.ToTensor
### [torchvision.transforms.ToTensor](https://pytorch.org/vision/main/generated/torchvision.transforms.ToTensor.html?highlight=totensor#torchvision.transforms.ToTensor)
```python
torchvision.transforms.ToTensor()
@@ -10,10 +10,3 @@ paddle.vision.transforms.ToTensor(data_format: str = 'CHW', keys: List[str] | Tu
```
两者功能基本一致,但 Paddle 相比 torchvision 支持更多参数,具体如下:
-
-### 参数映射
-
-| torchvision | PaddlePaddle | 备注 |
-|-------------- |-------------------- |----------------------------------- |
-| - | data_format | 返回 Tensor 的格式,PyTorch 无此参数,Paddle 保持默认即可。 |
-| - | keys | 输入的类型,PyTorch 无此参数,Paddle 保持默认即可。 |
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.functional.affine.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.functional.affine.md
new file mode 100644
index 00000000000..cec123f8ce6
--- /dev/null
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.functional.affine.md
@@ -0,0 +1,28 @@
+## [ 仅 API 调用方式不一致 ]torchvision.transforms.functional.affine
+### [torchvision.transforms.functional.affine](https://pytorch.org/vision/main/generated/torchvision.transforms.functional.affine.html)
+```python
+torchvision.transforms.functional.affine(img: Tensor,
+ angle: float,
+ translate: List[int],
+ scale: float,
+ shear: List[float],
+ interpolation: InterpolationMode = InterpolationMode.NEAREST,
+ fill: Optional[List[float]] = None,
+ center: Optional[List[int]] = None)
+```
+
+### [paddle.vision.transforms.affine](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/vision/transforms/affine_cn.html)
+```python
+paddle.vision.transforms.affine(
+ img: Union[PIL.Image.Image, np.ndarray, paddle.Tensor],
+ angle: Union[float, int],
+ translate: List[float],
+ scale: float,
+ shear: Union[List[float], Tuple[float, ...]],
+ interpolation: Union[str, int] = 'nearest',
+ fill: Union[int, List[int], Tuple[int, ...]] = 0,
+ center: Optional[Tuple[int, int]] = None
+)
+```
+
+两者功能一致,但输入参数类型不一致,具体如下:
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.functional.perspective.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.functional.perspective.md
new file mode 100644
index 00000000000..29e83f1e5f8
--- /dev/null
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.functional.perspective.md
@@ -0,0 +1,24 @@
+## [ 仅 API 调用方式不一致 ]torchvision.transforms.functional.perspective
+### [torchvision.transforms.functional.perspective](https://pytorch.org/vision/main/generated/torchvision.transforms.functional.perspective.html#perspective)
+```python
+torchvision.transforms.functional.perspective(
+ img: Tensor,
+ startpoints: List[List[int]],
+ endpoints: List[List[int]],
+ interpolation: InterpolationMode = InterpolationMode.BILINEAR,
+ fill: Optional[List[float]] = None
+)
+```
+
+### [paddle.vision.transforms.perspective](https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/vision/transforms/perspective_cn.html#cn-api-paddle-vision-transforms-perspective)
+```python
+paddle.vision.transforms.perspective(
+ img: Union[PIL.Image.Image, np.ndarray, paddle.Tensor],
+ startpoints: List[List[float]],
+ endpoints: List[List[float]],
+ interpolation: Union[str, int] = 'nearest',
+ fill: Union[int, List[int], Tuple[int, ...]] = 0
+)
+```
+
+两者功能一致,但参数类型不一致。
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.functional.rotate.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.functional.rotate.md
new file mode 100644
index 00000000000..1e7ff2ebf4f
--- /dev/null
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.functional.rotate.md
@@ -0,0 +1,12 @@
+## [ 仅 API 调用方式不一致 ]torchvision.transforms.functional.rotate
+### [torchvision.transforms.functional.rotate](https://pytorch.org/vision/stable/generated/torchvision.transforms.functional.rotate.html)
+```python
+torchvision.transforms.functional.rotate(img: Tensor, angle: float, interpolation: InterpolationMode = InterpolationMode.NEAREST, expand: bool = False, center: Optional[List[int]] = None, fill: Optional[List[float]] = None)
+```
+
+### [paddle.vision.transforms.rotate](https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/vision/transforms/rotate_cn.html#cn-api-paddle-vision-transforms-rotate)
+```python
+paddle.vision.transforms.rotate(img, angle, interpolation='nearest', expand=False, center=None, fill=0)
+```
+
+两者功能一致,但输入参数类型不一致。
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torchvision.transforms.functional.to_tensor.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.functional.to_tensor.md
similarity index 59%
rename from docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torchvision.transforms.functional.to_tensor.md
rename to docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.functional.to_tensor.md
index 03c0eeeeae6..bf7f15e4d82 100644
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torchvision.transforms.functional.to_tensor.md
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/torchvision.transforms.functional.to_tensor.md
@@ -1,4 +1,4 @@
-## [ paddle 参数更多 ]torchvision.transforms.functional.to_tensor
+## [ 仅 API 调用方式不一致 ]torchvision.transforms.functional.to_tensor
### [torchvision.transforms.functional.to_tensor](https://pytorch.org/vision/main/generated/torchvision.transforms.functional.to_tensor.html)
```python
torchvision.transforms.functional.to_tensor(pic: Union[PIL.Image.Image, numpy.ndarray])
@@ -13,10 +13,3 @@ paddle.vision.transforms.to_tensor(
```
其中 Paddle 相比 PyTorch 支持更多其他参数,具体如下:
-
-### 参数映射
-
-| torchvision | PaddlePaddle | 备注 |
-| --------- | ------------- | ------------------------------ |
-| pic | pic | 输入图像。 |
-| - | data_format | 返回的 Tensor 的格式,PyTorch 无此参数,Paddle 保持默认即可。 |
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/args_name_diff/transformers.StoppingCriteriaList.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/transformers.StoppingCriteriaList.md
similarity index 60%
rename from docs/guides/model_convert/convert_from_pytorch/api_difference/args_name_diff/transformers.StoppingCriteriaList.md
rename to docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/transformers.StoppingCriteriaList.md
index 330c2787468..dfa2a146a22 100644
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/args_name_diff/transformers.StoppingCriteriaList.md
+++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/invok_diff_only/transformers.StoppingCriteriaList.md
@@ -1,4 +1,4 @@
-## [ 仅参数名不一致 ]transformers.StoppingCriteriaList
+## [ 仅 API 调用方式不一致 ]transformers.StoppingCriteriaList
### [transformers.StoppingCriteriaList](https://github.com/huggingface/transformers/blob/d625294d79341662784495551abdf45e6cb9372f/src/transformers/generation/stopping_criteria.py#L503)
```python
transformers.StoppingCriteriaList(input_ids: torch.LongTensor, scores: torch.FloatTensor, **kwargs)
@@ -10,10 +10,3 @@ paddlenlp.generation.StoppingCriteriaList(input_ids: paddle.Tensor, scores: padd
```
两者功能一致,仅参数名不一致,具体如下:
-
-### 参数映射
-
-| transformers | PaddlePaddle | 备注 |
-| ----------------- | ----------------- | --------------------------------------- |
-| input_ids | input_ids | 输入(tokens) 的 id 组成的 Tensor。 |
-| scores | scores | 得分组成的 Tensor,仅参数名不一致。 |
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/output_args_type_diff/torch.cuda.get_rng_state_all.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/output_args_type_diff/torch.cuda.get_rng_state_all.md
deleted file mode 100644
index c92088d86b5..00000000000
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/output_args_type_diff/torch.cuda.get_rng_state_all.md
+++ /dev/null
@@ -1,29 +0,0 @@
-## [ 返回参数类型不一致 ]torch.cuda.get_rng_state_all
-### [torch.cuda.get_rng_state_all](https://pytorch.org/docs/stable/generated/torch.cuda.get_rng_state_all.html#torch.cuda.get_rng_state_all)
-```python
-torch.cuda.get_rng_state_all()
-```
-
-### [paddle.get_rng_state]()
-```python
-paddle.get_rng_state(device='gpu')
-```
-
-paddle 参数更多,并且 torch 与 paddle 的返回参数类型不一致,具体如下:
-
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| ------- | ------------ | -------------------------------------------------------------------------------------------------- |
-| - | device | 返回随机数生成器状态的设备,PyTorch 无此参数,Paddle 需设置为'gpu' 。 |
-| 返回值 | 返回值 | 返回参数类型不一致, PyTorch 返回 torch.ByteTensor,Paddle 返回 GeneratorState 对象。 |
-
-### 转写示例
-#### 返回参数类型不同
-```python
-# PyTorch 写法,返回 torch.ByteTensor
-x = torch.cuda.get_rng_state_all()
-
-# Paddle 写法,返回 GeneratorState 对象
-x = paddle.get_rng_state(device='gpu')
-```
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/output_args_type_diff/torch.cuda.manual_seed.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/output_args_type_diff/torch.cuda.manual_seed.md
deleted file mode 100644
index 896d5c484a2..00000000000
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/output_args_type_diff/torch.cuda.manual_seed.md
+++ /dev/null
@@ -1,29 +0,0 @@
-## [ 返回参数类型不一致 ]torch.cuda.manual_seed
-### [torch.cuda.manual_seed](https://pytorch.org/docs/stable/generated/torch.cuda.manual_seed.html#torch.cuda.manual_seed)
-```python
-torch.cuda.manual_seed(seed)
-```
-
-### [paddle.seed](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/seed_cn.html)
-```python
-paddle.seed(seed)
-```
-
-功能一致,返回类型不一致,具体如下:
-
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-|---------|--------------|----------------------------------------------------|
-| seed | seed | 表示设置的的随机种子(int)。 |
-| - | 返回值 | PyTorch 无返回值,Paddle 返回 Generator(全局默认 generator 对象)。 |
-
-### 转写示例
-#### 返回值
-```python
-# torch 写法
-torch.cuda.manual_seed(100)
-
-# paddle 写法
-gen = paddle.seed(100)
-```
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/output_args_type_diff/torch.max.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/output_args_type_diff/torch.max.md
deleted file mode 100644
index ec41a35a49b..00000000000
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/output_args_type_diff/torch.max.md
+++ /dev/null
@@ -1,94 +0,0 @@
-## [ 返回参数类型不一致 ]torch.max
-输入一个 Tensor 对应 paddle.max,输入两个 Tensor 对应 paddle.maximum,因此有两组差异分析,分别如下:
-
--------------------------------------------------------------------------------------------------
-
-### [torch.max](https://pytorch.org/docs/stable/generated/torch.max.html?highlight=max#torch.max)
-```python
-torch.max(input,
- dim=None,
- keepdim=False,
- *,
- out=None)
-```
-
-### [paddle.max](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/max_cn.html#max)
-```python
-paddle.max(x,
- axis=None,
- keepdim=False,
- name=None)
-```
-
-其中 PyTorch 与 Paddle 指定 `dim` 后返回值不一致,具体如下:
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| ------------- | ------------ | ------------------------------------------------------ |
-| input | x | 输入的 Tensor ,仅参数名不一致。 |
-| dim | axis | 求最大值运算的维度, 仅参数名不一致。 |
-| keepdim | keepdim | 是否在输出 Tensor 中保留减小的维度。 |
-| out | - | 表示输出的 Tensor , Paddle 无此参数,需要转写。 |
-| 返回值 | 返回值 | 表示返回结果,当指定 dim 后,PyTorch 会返回比较结果和元素索引, Paddle 不会返回元素索引,需要转写。 |
-
-
-### 转写示例
-#### out:指定输出
-```python
-# 对指定维度上的 Tensor 元素求最大值运算
-
-# PyTorch 写法
-torch.max(a, out=y)
-# torch 在输入 dim 时,返回 (values, indices),返回参数类型不一致
-
-# Paddle 写法
-paddle.assign(paddle.max(a), y)
-```
-#### 指定 dim 后的返回值
-```python
-# PyTorch 写法
-result = torch.max(a, dim=1)
-
-# Paddle 写法
-result = paddle.max(a, axis=1), paddle.argmax(a, axis=1)
-```
-
---------------------------------------------------------------------------------------------------
-
-### [torch.max](https://pytorch.org/docs/stable/generated/torch.max.html?highlight=max#torch.max)
-```python
-torch.max(input,
- other,
- *,
- out=None)
-```
-
-### [paddle.maximum](https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/minimum_cn.html#minimum)
-```python
-paddle.maximum(x,
- y,
- name=None)
-```
-
-PyTorch 相比 Paddle 支持更多其他参数,具体如下:
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| ------------- | ------------ | ------------------------------------------------------ |
-| input | x | 输入的 Tensor ,仅参数名不一致。 |
-| other | y | 输入的 Tensor , 仅参数名不一致。 |
-| out | - | 表示输出的 Tensor , Paddle 无此参数,需要转写。 |
-
-
-### 转写示例
-#### out:指定输出
-```python
-# 逐元素对比输入的两个 Tensor
-
-# PyTorch 写法
-torch.max(a, b, out=y)
-# 在输入 other 时,比较 input 和 other 返回较大值
-
-# Paddle 写法
-paddle.assign(paddle.maximum(a, b), y)
-```
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/output_args_type_diff/torch.sort.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/output_args_type_diff/torch.sort.md
deleted file mode 100644
index 31e14ce6669..00000000000
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/output_args_type_diff/torch.sort.md
+++ /dev/null
@@ -1,45 +0,0 @@
-## [ 返回参数类型不一致 ]torch.sort
-### [torch.sort](https://pytorch.org/docs/stable/generated/torch.sort.html?highlight=sort#torch.sort)
-```python
-torch.sort(input,
- dim=-1,
- descending=False,
- stable=False,
- *,
- out=None)
-```
-
-### [paddle.sort](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/sort_cn.html#paddle.sort)
-```python
-paddle.sort(x,
- axis=-1,
- descending=False,
- stable=False,
- name=None)
-```
-
-PyTorch 相比 Paddle 支持更多其他参数,同时两个 api 的返回参数类型不同,具体如下:
-
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| ------------- | ------------ | ------------------------------------------------------ |
-| input | x | 输入的 Tensor ,仅参数名不一致。 |
-| dim | axis | 指定对输入 Tensor 进行运算的轴。默认值为-1, 仅参数名不一致。 |
-| descending |descending | 指定算法排序的方向。如果设置为 True,算法按照降序排序。如果设置为 False 或者不设置,按照升序排序。默认值为 False,参数名相同。 |
-| stable | stable | 使排序程序更稳定,保证等价元素的顺序得以保留。 |
-| out | - | 表示以(Tensor, LongTensor)输出的元组,含义是排序后的返回值和对应元素索引。Paddle 无此参数,若返回排序后的元素,需要转写;若需要返回元素和元素索引,需要结合 argsort 进行转写。 |
-
-注:PyTorch 返回 (Tensor, LongTensor),Paddle 返回 Tensor 。
-
-### 转写示例
-#### out:指定输出
-```python
-# 若要返回排序后的元素和元素索引,需要结合 argsort 进行转写
-# PyTorch 写法
-torch.sort(input, -1, True, out = (y, indices))
-
-# Paddle 写法
-paddle.assign(paddle.sort(input, -1, True), y)
-paddle.assign(paddle.argsort(input, -1, True), indices)
-```
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/output_args_type_diff/torch.utils.data.default_collate.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/output_args_type_diff/torch.utils.data.default_collate.md
deleted file mode 100644
index 37964d72f29..00000000000
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/output_args_type_diff/torch.utils.data.default_collate.md
+++ /dev/null
@@ -1,40 +0,0 @@
-## [ 返回参数类型不一致 ]torch.utils.data.default_collate
-### [torch.utils.data.default_collate](https://pytorch.org/docs/stable/data.html?highlight=default_collate#torch.utils.data.default_collate)
-```python
-torch.utils.data.default_collate(batch)
-```
-
-### [paddle.io.dataloader.collate.default_collate_fn]()
-```python
-paddle.io.dataloader.collate.default_collate_fn(batch)
-```
-
-返回参数类型不一致,需要转写。具体如下:
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| ------------- | ------------ | ------------------------------------------------------ |
-| batch | batch | 输入的用于组 batch 的数据。 |
-| 返回值 | 返回值 | 返回参数类型不一致,当 batch 的元素为 numpy.ndarray 或 number 时, PyTorch 默认返回 torch.tensor, Paddle 默认返回 numpy.ndarray。 |
-
-
-### 转写示例
-#### 当 batch 的元素为 numpy.ndarray 或 number 时
-```python
-# PyTorch 写法
-y = torch.utils.data.default_collate(batch)
-
-# Paddle 写法
-y = paddle.to_tensor(paddle.io.dataloader.collate.default_collate_fn(batch))
-```
-
-#### 当 batch 的元素为字典且字典的 value 为 numpy.ndarray 或 number 时
-```python
-# PyTorch 写法
-y = torch.utils.data.default_collate(batch)
-
-# Paddle 写法
-y = paddle.io.dataloader.collate.default_collate_fn(batch)
-for k, v in y.items():
- y[k] = paddle.to_tensor(v)
-```
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.Tensor.lu_solve.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.Tensor.lu_solve.md
deleted file mode 100644
index 60ac6c0c513..00000000000
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.Tensor.lu_solve.md
+++ /dev/null
@@ -1,21 +0,0 @@
-## [ paddle 参数更多 ]torch.Tensor.lu_solve
-### [torch.Tensor.lu_solve](https://pytorch.org/docs/stable/generated/torch.Tensor.lu_solve.html#torch-tensor-lu-solve)
-```python
-torch.Tensor.lu_solve(LU_data, LU_pivots)
-```
-
-### [paddle.linalg.lu_solve](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/linalg/lu_solve_cn.html)
-```python
-paddle.linalg.lu_solve(b, lu, pivots, trans="N", name=None)
-```
-
-Pytorch 为 Tensor 类方法,Paddle 为普通函数,另外 Paddle 相比 PyTorch 支持更多其他参数,具体如下:
-
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| ------------- | ------------ | ------------------------------------------------------ |
-| self | b | 表示欲进行线性方程组求解的右值 Tensor ,调用 torch.Tensor 类方法的 self Tensor 传入。 |
-| LU_data | lu | 表示 LU 分解结果矩阵,由 L、U 拼接组成,仅参数名不一致。 |
-| LU_pivots | pivots | 表示 LU 分解结果的主元信息 Tensor ,仅参数名不一致。 |
-| - | trans | 是否对 A 进行转置 ,PyTorch 无此参数,Paddle 保持默认即可。 |
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.Tensor.pinverse.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.Tensor.pinverse.md
deleted file mode 100644
index 5bd373210cf..00000000000
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.Tensor.pinverse.md
+++ /dev/null
@@ -1,22 +0,0 @@
-## [ paddle 参数更多 ]torch.Tensor.pinverse
-
-### [torch.Tensor.pinverse](https://pytorch.org/docs/stable/generated/torch.Tensor.pinverse.html#torch.Tensor.pinverse)
-```python
-torch.Tensor.pinverse()
-```
-
-### [paddle.Tensor.pinv]()
-```python
-paddle.Tensor.pinv(rcond=1e-15,
- hermitian=False,
- name=None)
-```
-
-其中 Paddle 相比 PyTorch 支持更多参数,具体如下:
-
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| ------------- | ------------ | ------------------------------------------------------ |
-| - | rcond | 奇异值(特征值)被截断的阈值,PyTorch 无此参数,Paddle 保持默认即可。 |
-| - | hermitian | 是否为 hermitian 矩阵或者实对称矩阵,PyTorch 无此参数,Paddle 保持默认即可。|
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.AdaptiveAvgPool2d.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.AdaptiveAvgPool2d.md
deleted file mode 100644
index 40cd9cca297..00000000000
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.AdaptiveAvgPool2d.md
+++ /dev/null
@@ -1,18 +0,0 @@
-## [ paddle 参数更多 ]torch.nn.AdaptiveAvgPool2d
-### [torch.nn.AdaptiveAvgPool2d](https://pytorch.org/docs/stable/generated/torch.nn.AdaptiveAvgPool2d.html)
-```python
-torch.nn.AdaptiveAvgPool2d(output_size)
-```
-
-### [paddle.nn.AdaptiveAvgPool2D](https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/nn/AdaptiveAvgPool2D_cn.html#adaptiveavgpool2d)
-```python
-paddle.nn.AdaptiveAvgPool2D(output_size, data_format='NCHW', name=None)
-```
-
-其中 Paddle 相比 PyTorch 支持更多其他参数,具体如下:
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| ------------- | ------------ | ------------------------------------------------------ |
-| output_size | output_size | 表示输出 Tensor 的 size 。 |
-| - | data_format | 表示输入 Tensor 的数据格式, PyTorch 无此参数, Paddle 保持默认即可。 |
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.AdaptiveAvgPool3d.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.AdaptiveAvgPool3d.md
deleted file mode 100644
index 6a9f4e31acf..00000000000
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.AdaptiveAvgPool3d.md
+++ /dev/null
@@ -1,18 +0,0 @@
-## [ paddle 参数更多 ]torch.nn.AdaptiveAvgPool3d
-### [torch.nn.AdaptiveAvgPool3d](https://pytorch.org/docs/stable/generated/torch.nn.AdaptiveAvgPool3d.html)
-```python
-torch.nn.AdaptiveAvgPool3d(output_size)
-```
-
-### [paddle.nn.AdaptiveAvgPool3D](https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/nn/AdaptiveAvgPool3D_cn.html#adaptiveavgpool3d)
-```python
-paddle.nn.AdaptiveAvgPool3D(output_size, data_format='NCDHW', name=None)
-```
-
-其中 Paddle 相比 PyTorch 支持更多其他参数,具体如下:
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| ------------- | ------------ | ------------------------------------------------------ |
-| output_size | output_size | 表示输出 Tensor 的 size 。 |
-| - | data_format | 表示输入 Tensor 的数据格式, PyTorch 无此参数, Paddle 保持默认即可。 |
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.MaxUnpool1d.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.MaxUnpool1d.md
deleted file mode 100644
index af8892885d9..00000000000
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.MaxUnpool1d.md
+++ /dev/null
@@ -1,28 +0,0 @@
-## [ paddle 参数更多 ]torch.nn.MaxUnpool1d
-### [torch.nn.MaxUnpool1d](https://pytorch.org/docs/stable/generated/torch.nn.MaxUnpool1d.html?highlight=maxunpool1d#torch.nn.MaxUnpool1d)
-```python
-torch.nn.MaxUnpool1d(kernel_size,
- stride=None,
- padding=0)
-```
-
-### [paddle.nn.MaxUnPool1D](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/nn/MaxUnPool1D_cn.html)
-```python
-paddle.nn.MaxUnPool1D(kernel_size,
- stride=None,
- padding=0,
- data_format='NCL',
- output_size=None,
- name=None)
-```
-
-其中 Paddle 相比 PyTorch 支持更多其他参数,具体如下:
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| ------------- | ------------ | ------------------------------------------------------ |
-| kernel_size | kernel_size | 表示反池化核大小。 |
-| stride | stride | 表示反池化核步长。 |
-| padding | padding | 表示填充大小。 |
-| - | data_format | 输入和输出的数据格式,PyTorch 无此参数,Paddle 保持默认即可。 |
-| - | output_size | 目标输出尺寸,PyTorch 无此参数,Paddle 保持默认即可。 |
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.MaxUnpool2d.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.MaxUnpool2d.md
deleted file mode 100644
index b01d53b1cca..00000000000
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.MaxUnpool2d.md
+++ /dev/null
@@ -1,28 +0,0 @@
-## [ paddle 参数更多 ]torch.nn.MaxUnpool2d
-### [torch.nn.MaxUnpool2d](https://pytorch.org/docs/stable/generated/torch.nn.MaxUnpool2d.html?highlight=maxunpool2d#torch.nn.MaxUnpool2d)
-```python
-torch.nn.MaxUnpool2d(kernel_size,
- stride=None,
- padding=0)
-```
-
-### [paddle.nn.MaxUnPool2D](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/nn/MaxUnPool2D_cn.html)
-```python
-paddle.nn.MaxUnPool2D(kernel_size,
- stride=None,
- padding=0,
- data_format='NCHW',
- output_size=None,
- name=None)
-```
-
-其中 Paddle 相比 PyTorch 支持更多其他参数,具体如下:
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| ------------- | ------------ | ------------------------------------------------------ |
-| kernel_size | kernel_size | 表示反池化核大小。 |
-| stride | stride | 表示反池化核步长。 |
-| padding | padding | 表示填充大小。 |
-| - | data_format | 输入和输出的数据格式,PyTorch 无此参数,Paddle 保持默认即可。 |
-| - | output_size | 目标输出尺寸,PyTorch 无此参数,Paddle 保持默认即可。 |
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.MaxUnpool3d.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.MaxUnpool3d.md
deleted file mode 100644
index 1ec4ca953e5..00000000000
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.MaxUnpool3d.md
+++ /dev/null
@@ -1,28 +0,0 @@
-## [ paddle 参数更多 ]torch.nn.MaxUnpool3d
-### [torch.nn.MaxUnpool3d](https://pytorch.org/docs/stable/generated/torch.nn.MaxUnpool3d.html?highlight=maxunpool3d#torch.nn.MaxUnpool3d)
-```python
-torch.nn.MaxUnpool3d(kernel_size,
- stride=None,
- padding=0)
-```
-
-### [paddle.nn.MaxUnPool3D](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/nn/MaxUnPool3D_cn.html)
-```python
-paddle.nn.MaxUnPool3D(kernel_size,
- stride=None,
- padding=0,
- data_format='NCDHW',
- output_size=None,
- name=None)
-```
-
-其中 Paddle 相比 PyTorch 支持更多其他参数,具体如下:
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| ------------- | ------------ | ------------------------------------------------------ |
-| kernel_size | kernel_size | 表示反池化核大小。 |
-| stride | stride | 表示反池化核步长。 |
-| padding | padding | 表示填充大小。 |
-| - | data_format | 输入和输出的数据格式,PyTorch 无此参数,Paddle 保持默认即可。 |
-| - | output_size | 目标输出尺寸,PyTorch 无此参数,Paddle 保持默认即可。 |
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.UpsamplingBilinear2d.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.UpsamplingBilinear2d.md
deleted file mode 100644
index fcdf6ba071b..00000000000
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.UpsamplingBilinear2d.md
+++ /dev/null
@@ -1,19 +0,0 @@
-## [ paddle 参数更多 ]torch.nn.UpsamplingBilinear2d
-### [torch.nn.UpsamplingBilinear2d](https://pytorch.org/docs/stable/generated/torch.nn.UpsamplingBilinear2d.html?highlight=upsamplingbilinear2d#torch.nn.UpsamplingBilinear2d)
-```python
-torch.nn.UpsamplingBilinear2d(size=None, scale_factor=None)
-```
-
-### [paddle.nn.UpsamplingBilinear2D](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/nn/UpsamplingBilinear2D_cn.html)
-```python
-paddle.nn.UpsamplingBilinear2D(size=None,scale_factor=None, data_format='NCHW',name=None)
-```
-
-其中 Paddle 相比 PyTorch 支持更多其他参数,具体如下:
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| ------------- | ------------ | ------------------------------------------------------ |
-| size | size | 表示输出 Tensor 的 size 。 |
-| scale_factor | scale_factor | 表示输入 Tensor 的高度或宽度的乘数因子。 |
-| - | data_format | 表示输入 Tensor 的数据格式, PyTorch 无此参数, Paddle 保持默认即可。 |
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.UpsamplingNearest2d.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.UpsamplingNearest2d.md
deleted file mode 100644
index f262c3f9c77..00000000000
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.UpsamplingNearest2d.md
+++ /dev/null
@@ -1,19 +0,0 @@
-## [ paddle 参数更多 ]torch.nn.UpsamplingNearest2d
-### [torch.nn.UpsamplingNearest2d](https://pytorch.org/docs/stable/generated/torch.nn.UpsamplingNearest2d.html?highlight=upsampl#torch.nn.UpsamplingNearest2d)
-```python
-torch.nn.UpsamplingNearest2d(size=None, scale_factor=None)
-```
-
-### [paddle.nn.UpsamplingNearest2D](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/nn/UpsamplingNearest2D_cn.html)
-```python
-paddle.nn.UpsamplingNearest2D(size=None, scale_factor=None, data_format='NCHW',name=None)
-```
-
-其中 Paddle 相比 PyTorch 支持更多其他参数,具体如下:
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| ------------- | ------------ | ------------------------------------------------------ |
-| size | size | 表示输出 Tensor 的 size 。 |
-| scale_factor | scale_factor | 表示输入 Tensor 的高度或宽度的乘数因子。 |
-| - | data_format | 表示输入 Tensor 的数据格式, PyTorch 无此参数, Paddle 保持默认即可。 |
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.functional.pad.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.functional.pad.md
deleted file mode 100644
index 79c7ff869e9..00000000000
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/paddle_more_args/torch.nn.functional.pad.md
+++ /dev/null
@@ -1,34 +0,0 @@
-## [ paddle 参数更多 ]torch.nn.functional.pad
-### [torch.nn.functional.pad](https://pytorch.org/docs/stable/generated/torch.nn.functional.pad.html)
-```python
-torch.nn.functional.pad(input,
- pad,
- mode='constant',
- value=None)
-```
-
-### [paddle.nn.functional.pad](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/nn/functional/pad_cn.html#pad)
-```python
-paddle.nn.functional.pad(x,
- pad,
- mode='constant',
- value=0.0,
- data_format=None,
- pad_from_left_axis=True,
- name=None)
-```
-
-两者功能一致,其中 Paddle 相比 PyTorch 支持更多其他参数,具体如下:
-
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| ------------- | ------------ | ------------------------------------------------------ |
-| input | x | 表示输入的 Tensor,仅参数名不一致。 |
-| pad | pad | 表示一个 one-hot 向量的长度 。 |
-| mode | mode | 表示填充的模式。 |
-| value | value | 表示填充的值,mode 为'constant'时有效 。 |
-| - | data_format | 指定输入的数据格式, PyTorch 无此参数, Paddle 保持默认即可。 |
-| - | pad_from_left_axis | 只有当 mode 为 'constant' ,且 pad 是长度为 2N 的列表时有效,设置 pad 与 x 的轴左对齐或右对齐, PyTorch 无此参数, Paddle 需设置为 False 结果才与 PyTorch 一致。 |
-
-在实际使用过程中,`data_format` 参数需要根据输入参数进行指定
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/torch_more_args/torch.median.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/torch_more_args/torch.median.md
deleted file mode 100644
index 35e6f3ed736..00000000000
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/torch_more_args/torch.median.md
+++ /dev/null
@@ -1,37 +0,0 @@
-## [ torch 参数更多 ]torch.median
-### [torch.median](https://pytorch.org/docs/stable/generated/torch.median.html?highlight=median#torch.median)
-```python
-torch.median(input,
- dim=-1,
- keepdim=False,
- *,
- out=None)
-```
-
-### [paddle.median](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/median_cn.html#median)
-```python
-paddle.median(x, axis=None, keepdim=False, mode='avg', name=None)
-```
-
-PyTorch 相比 Paddle 支持更多其他参数,具体如下:
-
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| ------------- | ------------ | ------------------------------------------------------ |
-| input | x | 表示输入的 Tensor ,仅参数名不一致。 |
-| dim | axis | 表示进行运算的轴,仅参数名不一致。 |
-| keepdim | keepdim | 是否在输出 Tensor 中保留减小的维度。 |
-| - | mode | 当 x 在所需要计算的轴上有偶数个非 NaN 元素时,选择使用平均值或最小值确定非 NaN 中位数的值, PyTorch 无此参数,Paddle 需设置为 'min'。 |
-| out | - | 表示输出的 Tensor , Paddle 无此参数,需要转写。 |
-
-
-### 转写示例
-#### out:指定输出
-```python
-# PyTorch 写法
-torch.median([3, 5], out=y)
-
-# Paddle 写法
-paddle.assign(paddle.median([3, 5], mode='min'), y)
-```
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/torch_more_args/torch.nanmedian.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/torch_more_args/torch.nanmedian.md
deleted file mode 100644
index 28203bf6177..00000000000
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/torch_more_args/torch.nanmedian.md
+++ /dev/null
@@ -1,37 +0,0 @@
-## [ torch 参数更多 ]torch.nanmedian
-### [torch.nanmedian](https://pytorch.org/docs/stable/generated/torch.nanmedian.html?highlight=nanmedian#torch.nanmedian)
-```python
-torch.nanmedian(input,
- dim=-1,
- keepdim=False,
- *,
- out=None)
-```
-
-### [paddle.nanmedian](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/nanmedian_cn.html#nanmedian)
-```python
-paddle.nanmedian(x, axis=None, keepdim=False, mode='avg', name=None)
-```
-
-PyTorch 相比 Paddle 支持更多其他参数,具体如下:
-
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| ------------- | ------------ | ------------------------------------------------------ |
-| input | x | 表示输入的 Tensor ,仅参数名不一致。 |
-| dim | axis | 表示进行运算的轴,仅参数名不一致。 |
-| keepdim | keepdim | 表示是否在输出 Tensor 中保留减小的维度。 |
-| - | mode | 当 x 在所需要计算的轴上有偶数个非 NaN 元素时,选择使用平均值或最小值确定非 NaN 中位数的值, PyTorch 无此参数,Paddle 需设置为 'min'。 |
-| out | - | 表示输出的 Tensor , Paddle 无此参数,需要转写。 |
-
-
-### 转写示例
-#### out:指定输出
-```python
-# PyTorch 写法
-torch.nanmedian(a, -1, out=y)
-
-# Paddle 写法
-paddle.assign(paddle.nanmedian(a, -1, mode='min'), y)
-```
diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/torch_more_args/torch.nn.functional.softmax.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/torch_more_args/torch.nn.functional.softmax.md
deleted file mode 100644
index 0287897cb35..00000000000
--- a/docs/guides/model_convert/convert_from_pytorch/api_difference/torch_more_args/torch.nn.functional.softmax.md
+++ /dev/null
@@ -1,21 +0,0 @@
-## [ torch 参数更多 ]torch.nn.functional.softmax
-### [torch.nn.functional.softmax](https://pytorch.org/docs/stable/generated/torch.nn.functional.softmax.html#torch.nn.functional.softmax)
-```python
-torch.nn.functional.softmax(input, dim=None, _stacklevel=3, dtype=None)
-```
-
-### [paddle.nn.functional.softmax](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/nn/functional/softmax_cn.html#softmax)
-```python
-paddle.nn.functional.softmax(x, axis=-1, dtype=None, name=None)
-```
-
-PyTorch 相比 Paddle 支持更多其他参数,具体如下:
-
-### 参数映射
-
-| PyTorch | PaddlePaddle | 备注 |
-| --------- | -------------- | ----------------------------------------------------- |
-| input | x | 表示输入张量,仅参数名不一致。 |
-| dim | axis | 表示对输入 Tensor 进行运算的轴,仅参数名不一致。 |
-| dtype | dtype | 表示返回张量所需的数据类型。 |
-| _stacklevel | - | Paddle 无此参数,一般对网络训练结果影响不大,可直接删除。 |
diff --git a/docs/guides/model_convert/convert_from_pytorch/tools/.gitignore b/docs/guides/model_convert/convert_from_pytorch/tools/.gitignore
index 4204846c164..2f364e7e673 100644
--- a/docs/guides/model_convert/convert_from_pytorch/tools/.gitignore
+++ b/docs/guides/model_convert/convert_from_pytorch/tools/.gitignore
@@ -6,6 +6,8 @@ no_implement.md
download_files_from_paconvert.sh
test
tmp_*
+generate_api_mapping.err
+generate_api_mapping.log
# files will be used in PaConvert
docs_mappings.json
diff --git a/docs/guides/model_convert/convert_from_pytorch/tools/generate_api_difference.py b/docs/guides/model_convert/convert_from_pytorch/tools/generate_api_difference.py
index bc2897d96c2..7ae34217bf7 100644
--- a/docs/guides/model_convert/convert_from_pytorch/tools/generate_api_difference.py
+++ b/docs/guides/model_convert/convert_from_pytorch/tools/generate_api_difference.py
@@ -68,7 +68,7 @@ def get_function_signature(api_name: str, framework: str) -> str:
module = flash_attn
else:
- raise ValueError("Invalid framework.")
+ raise ValueError(f"Invalid framework: {framework}")
# 解析API路径
parts = api_name.split(".")[1:]
@@ -87,19 +87,19 @@ def get_function_signature(api_name: str, framework: str) -> str:
sig = inspect.signature(api_obj.__init__)
# 移除self参数
params = []
- first_param = True
for name, param in sig.parameters.items():
- if first_param and name == "self":
- first_param = False
+ if name == "self" or param.name == "self":
continue
- first_param = False
params.append(format_param(param))
-
return f"{api_name}({', '.join(params)})"
# 处理普通函数和方法
sig = inspect.signature(api_obj)
- params = [format_param(param) for param in sig.parameters.values()]
+ params = []
+ for name, param in sig.parameters.values():
+ if name == "self" or param.name == "self":
+ continue
+ params.append(format_param(param))
return f"{api_name}({', '.join(params)})"
except (ValueError, TypeError):
@@ -119,18 +119,19 @@ def format_param(param: inspect.Parameter) -> str:
def parse_signature_from_help(api_obj, api_name: str) -> str:
"""从help信息中解析函数签名"""
-
- # 捕获help输出
help_output = get_help_output(api_obj, api_name)
if not help_output:
- return f"{api_name}(...)"
+ raise APIConversionError(f"Failed to get help output for {api_name}")
- # 解析函数签名行
+ # 尝试从help输出中提取签名行
signature_line = extract_signature_line(help_output, api_name)
- if signature_line:
- return normalize_signature(signature_line, api_name)
-
- return f"{api_name}(...)"
+ if not signature_line:
+ raise APIConversionError(
+ f"Failed to extract signature line for {api_name}"
+ )
+ signature = normalize_signature(signature_line, api_name)
+ print("LOGGING:", api_name, help_output[:5], signature)
+ return signature
def get_help_output(api_obj, api_name: str) -> str | None:
@@ -140,18 +141,21 @@ def get_help_output(api_obj, api_name: str) -> str | None:
with contextlib.redirect_stdout(buffer):
help(api_obj)
return buffer.getvalue()
- except:
- raise APIConversionError(f"Failed to get help output for {api_name}")
+ except Exception as e:
+ raise APIConversionError(
+ f"Failed to get help output for {api_name}: {e!s}"
+ )
def extract_signature_line(help_text: str, api_name: str) -> str | None:
"""从help文本中提取签名行"""
lines = help_text.split("\n")
base_name = api_name.split(".")[-1]
+ signature_line = None
# 匹配模式:函数名后跟括号
patterns = [
- # 匹配: numel(...) 或 forward(*args: Any, **kwargs: Any) -> Any
+ # 匹配: numel(input: Tensor) -> int
rf"^{re.escape(base_name)}\s*\([^)]*\)",
# 匹配: | ZeroPad2d(padding: Union[int, tuple[int, int, int, int]]) -> None
rf"^\s*[\| ]*\w+\s+{re.escape(base_name)}\s*\([^)]*\)",
@@ -162,7 +166,20 @@ def extract_signature_line(help_text: str, api_name: str) -> str | None:
for i, line in enumerate(lines):
for pattern in patterns:
if re.search(pattern, line.strip()):
- # 对于多行签名,合并后续行直到遇到空行或缩进减少
+ # 提取括号内的内容
+ match = re.search(r"\(([^)]*)\)", line.strip())
+ if not match:
+ continue
+ params_str = match.group(1)
+
+ # 跳过无效的签名(如numel(...))
+ if (
+ params_str.strip() == "..."
+ or params_str.strip() == "..." * 2
+ ):
+ continue
+
+ # 处理多行签名
signature = line.strip()
j = i + 1
while (
@@ -174,104 +191,108 @@ def extract_signature_line(help_text: str, api_name: str) -> str | None:
j += 1
return signature
- raise APIConversionError(f"Failed to extract signature line for {api_name}")
+ # 如果未找到有效签名,尝试匹配包含"->"的行
+ for i, line in enumerate(lines):
+ if " -> " in line and base_name in line:
+ # 提取完整签名行
+ signature = line.strip()
+ j = i + 1
+ while (
+ j < len(lines)
+ and lines[j].strip()
+ and not lines[j].strip().startswith(("def ", "class "))
+ ):
+ signature += " " + lines[j].strip()
+ j += 1
+ return signature
+
+ raise APIConversionError(
+ f"Failed to extract signature line for {api_name} from help"
+ )
def normalize_signature(signature_line: str, api_name: str) -> str:
- """规范化签名格式"""
+ """规范化签名格式,正确处理嵌套括号"""
# 提取括号内的内容
match = re.search(r"\(([^)]*)\)", signature_line)
if not match:
return f"{api_name}()"
params_str = match.group(1)
-
- # 处理不同的参数格式
- if params_str == "...": # 如: numel(...)
- return f"{api_name}()"
-
- # 解析参数,移除类型注解和默认值
params = []
- current_param = []
- depth = 0 # 处理嵌套括号
- for char in params_str + ",": # 添加逗号确保处理最后一个参数
- if char == "," and depth == 0:
+ # 处理参数列表(支持逗号分隔,正确处理嵌套括号)
+ current_param = []
+ stack = [] # 用于跟踪括号嵌套
+
+ # 添加逗号确保处理最后一个参数
+ for char in params_str + ",":
+ # 处理左括号:圆括号、方括号、尖括号
+ if char in "([{<":
+ stack.append(char)
+ # 处理右括号:匹配对应的左括号
+ elif char in ")]}>":
+ if stack:
+ # 检查是否匹配(简化处理,不检查具体类型)
+ stack.pop()
+
+ # 当栈为空时,遇到逗号才分割参数
+ if char == "," and not stack:
param = "".join(current_param).strip()
if param:
- # 提取参数名(移除类型注解)
- param_name = extract_param_name(param)
- if param_name:
- params.append(param_name)
+ params.append(extract_param_name(param))
current_param = []
else:
- if char == "(":
- depth += 1
- elif char == ")":
- depth -= 1
current_param.append(char)
- # 处理特殊参数格式
- final_params = []
- for param in params:
- if param.startswith("*") and param.endswith(": Any"):
- # 处理 *args: Any, **kwargs: Any
- param = param.replace(": Any", "")
- elif "=" in param and not param.startswith("*"):
- # 移除默认值,保留参数名
- param = param.split("=")[0].strip()
+ # 移除无效参数
+ params = [p for p in params if p]
- final_params.append(param)
-
- return f"{api_name}({', '.join(final_params)})"
+ return f"{api_name}({', '.join(params)})"
def extract_param_name(param_str: str) -> str | None:
- """从参数字符串中提取参数名"""
+ """从参数字符串中提取参数名(移除类型注解和默认值)"""
param_str = param_str.strip()
if not param_str:
return None
-
+ if "self" == param_str:
+ return None
# 处理可变参数 *args, **kwargs
- if param_str.startswith("*") and param_str.endswith(": Any"):
- return param_str.replace(": Any", "")
+ if param_str.startswith("*") or param_str.startswith("**"):
+ # 移除类型注解(如 *args: Any)
+ if ": " in param_str:
+ param_name = param_str.split(":")[0].strip()
+ if "self" == param_name:
+ return None
+ return param_name
+ return param_str
- # 移除类型注解
+ # 移除类型注解(如 input: Tensor)
if ":" in param_str:
- # 找到第一个冒号(类型注解开始)
- colon_pos = param_str.find(":")
- param_name = param_str[:colon_pos].strip()
-
- # 检查是否是可变参数
- if param_name.startswith("*"):
- return param_name
- else:
- return param_name
- else:
- # 没有类型注解,直接返回
- return (
- param_str.split("=")[0].strip() if "=" in param_str else param_str
- )
+ param_name = param_str.split(":")[0].strip()
+ # # 移除默认值(如 input=None)
+ # if "=" in param_name:
+ # param_name = param_name.split("=")[0].strip()
+ # if "self" == param_name:
+ # return None
+ # return param_name
+ if "self" == param_name.split("=")[0].strip():
+ return None
+ return param_name
+ # 移除默认值(如 input=None)
+ # if "=" in param_str:
+ # return param_str.split("=")[0].strip()
-def find_test_file(torch_api: str, paconvert_dir: str) -> str:
- """
- 在paconvert的tests目录中递归查找测试文件
+ return param_str
- Args:
- torch_api: Torch API名称
- paconvert_dir: paconvert目录路径
- Returns:
- 测试文件路径
- """
+def find_test_file(torch_api: str, paconvert_dir: str) -> str:
+ """在paconvert的tests目录中递归查找测试文件"""
# 生成测试文件名(如:test_nn_functional_elu.py)
- head = torch_api.split(".")[0]
- if head == "flash_attn":
- parts = torch_api.split(".")
- else:
- parts = torch_api.split(".")[1:]
+ parts = torch_api.split(".")[1:]
file_name = "test_" + "_".join(parts) + ".py"
# 在tests目录中递归查找
@@ -284,15 +305,7 @@ def find_test_file(torch_api: str, paconvert_dir: str) -> str:
def extract_test_case_code(test_file: str) -> str:
- """
- 从测试文件中提取第一个测试用例的pytorch代码
-
- Args:
- test_file: 测试文件路径
-
- Returns:
- 提取的pytorch代码字符串
- """
+ """从测试文件中提取第一个测试用例的pytorch代码"""
with open(test_file, "r", encoding="utf-8") as f:
content = f.read()
@@ -309,25 +322,19 @@ def extract_test_case_code(test_file: str) -> str:
isinstance(target, ast.Name)
and target.id == "pytorch_code"
):
- # 检查赋值语句的值是否是函数调用
+ # 处理textwrap.dedent调用
if isinstance(item.value, ast.Call):
- call_func = item.value.func
- # 检查是否是textwrap.dedent调用
if (
- isinstance(call_func, ast.Attribute)
- and isinstance(call_func.value, ast.Name)
- and call_func.value.id == "textwrap"
- and call_func.attr == "dedent"
+ isinstance(item.value.func, ast.Attribute)
+ and item.value.func.value.id == "textwrap"
+ and item.value.func.attr == "dedent"
):
- # 获取dedent的第一个参数(应该是字符串)
if item.value.args and isinstance(
item.value.args[0], ast.Str
):
- # 返回字符串内容,去除首尾的三引号
- code_str = item.value.args[0].s
- return textwrap.dedent(code_str)
-
- # 处理Python 3.8+的ast.Constant节点
+ return textwrap.dedent(
+ item.value.args[0].s
+ )
elif (
item.value.args
and isinstance(
@@ -337,23 +344,15 @@ def extract_test_case_code(test_file: str) -> str:
item.value.args[0].value, str
)
):
- code_str = item.value.args[0].value
- return textwrap.dedent(code_str)
+ return textwrap.dedent(
+ item.value.args[0].value
+ )
raise APIConversionError(f"Test case not found in {test_file}", test_file)
def get_torch_example(torch_api: str, paconvert_dir: str) -> str:
- """
- 获取Torch API的示例代码
-
- Args:
- torch_api: Torch API名称
- paconvert_dir: paconvert目录路径
-
- Returns:
- Torch API调用代码
- """
+ """获取Torch API的示例代码"""
# 1. 查找测试文件
test_file = find_test_file(torch_api, paconvert_dir)
@@ -361,19 +360,20 @@ def get_torch_example(torch_api: str, paconvert_dir: str) -> str:
test_code = extract_test_case_code(test_file)
# 3. 写入临时文件
- torch_temp_file = f"temp_generate_api_difference_{torch_api.replace('.', '_')}_torch_code.py"
- with open(torch_temp_file, "w") as f:
+ base_name = torch_api.replace(".", "_")
+ temp_file = f"temp_{base_name}_torch_code.py"
+ with open(temp_file, "w") as f:
f.write(test_code)
# 4. 使用paconvert补全代码
- complete_file = f"temp_generate_api_difference_{torch_api.replace('.', '_')}_torch_code_complete.py"
+ complete_file = f"temp_{base_name}_torch_code_complete.py"
try:
subprocess.run(
[
"python3.10",
os.path.join(paconvert_dir, "paconvert", "main.py"),
"-i",
- torch_temp_file,
+ temp_file,
"-o",
complete_file,
"--only_complete",
@@ -386,17 +386,20 @@ def get_torch_example(torch_api: str, paconvert_dir: str) -> str:
with open(complete_file, "r") as f:
lines = f.readlines()
- if lines and "import paddle" in lines[0]:
- lines[0] = "import torch\n"
+ for i, line in enumerate(lines):
+ if "import paddle" in line:
+ lines[i] = "import torch\n"
with open(complete_file, "w") as f:
f.writelines(lines)
- # 6. 查找包含API调用的行
+ # 6. 使用AST提取包含API调用的代码块
with open(complete_file, "r") as f:
- for line in f:
- if torch_api.split(".")[-1] in line:
- return line.strip()
+ complete_code = f.read()
+
+ example_code = extract_api_code_block(complete_code, torch_api)
+ if example_code:
+ return example_code.strip()
except subprocess.CalledProcessError as e:
raise APIConversionError(
@@ -412,32 +415,18 @@ def get_torch_example(torch_api: str, paconvert_dir: str) -> str:
def get_conversion_example(
torch_code: str, torch_api: str, paddle_api: str, paconvert_dir: str
) -> str:
- """
- 使用paconvert转换Torch代码为Paddle代码
-
- Args:
- torch_code: Torch代码
- torch_api: Torch API名称(用于临时文件命名)
- paddle_api: Paddle API名称
- paconvert_dir: paconvert目录路径
-
- Returns:
- Paddle API调用代码
- """
- # 1. 创建临时文件
- temp_file = f"temp_generate_api_difference_{torch_api.replace('.', '_')}_torch_code_complete.py"
- # with open(temp_file, "w") as f:
- # f.write(torch_code)
-
+ """使用paconvert转换Torch代码为Paddle代码"""
+ # 1. 创建临时文件(已由调用方创建,这里直接使用)
# 2. 运行paconvert转换
- paddle_file = f"temp_generate_api_difference_{torch_api.replace('.', '_')}_paddle_code.py"
+ base_name = torch_api.replace(".", "_")
+ paddle_file = f"temp_{base_name}_paddle_code.py"
try:
subprocess.run(
[
"python3.10",
os.path.join(paconvert_dir, "paconvert", "main.py"),
"-i",
- temp_file,
+ "temp_" + base_name + "_torch_code_complete.py",
"-o",
paddle_file,
],
@@ -445,11 +434,13 @@ def get_conversion_example(
capture_output=True,
)
- # 3. 查找包含API调用的行
+ # 3. 使用AST提取包含API调用的代码块
with open(paddle_file, "r") as f:
- for line in f:
- if paddle_api.split(".")[-1] in line:
- return line.strip()
+ paddle_code = f.read()
+
+ example_code = extract_api_code_block(paddle_code, paddle_api)
+ if example_code:
+ return example_code.strip()
except subprocess.CalledProcessError as e:
raise APIConversionError(
@@ -464,17 +455,452 @@ def get_conversion_example(
)
-def generate_invok_diff_only_docs(
- output_dir: str, paconvert_dir: str, overwrite: bool = False
-):
+def extract_api_code_block(code: str, api: str) -> str | None:
"""
- 生成"仅 API 调用方式不一致"类别的API差异文档
+ 使用AST提取包含API调用的完整代码块
Args:
- output_dir: 输出目录
- paconvert_dir: PaConvert目录路径
- overwrite: 是否覆盖已有文件
+ code: 完整的Python代码字符串
+ api: 要查找的API名称(如"torch.nn.AdaptiveAvgPool2d")
+
+ Returns:
+ 包含API调用的完整代码块,如果没有找到则返回None
"""
+ try:
+ tree = ast.parse(code)
+ add_parent_links(tree) # 添加父节点链接
+ except SyntaxError:
+ # 如果代码有语法错误,回退到简单匹配
+ return find_api_line_fallback(code, api)
+
+ api_base_name = api.split(".")[-1]
+
+ # 首先检查完整API是否出现在一个完整的语句中
+ full_api_statement = find_full_api_statement(tree, code, api)
+ if full_api_statement:
+ return full_api_statement
+
+ # 如果完整API不在完整语句内,查找包含基础名称的代码块
+ api_nodes = find_api_nodes(tree, api, api_base_name)
+
+ if not api_nodes:
+ return None
+
+ # 选择最合适的节点
+ target_node = select_best_node(api_nodes, api)
+
+ # 提取包含该节点的代码块
+ code_block = extract_node_code_block(code, target_node, api)
+
+ return code_block
+
+
+def find_full_api_statement(tree: ast.AST, code: str, api: str) -> str | None:
+ """
+ 检查完整API是否出现在一个完整的语句中
+
+ Args:
+ tree: AST树
+ code: 完整的代码字符串
+ api: 要查找的API
+
+ Returns:
+ 如果完整API出现在一个完整语句中,返回该语句;否则返回None
+ """
+ # 查找包含完整API的节点
+ api_nodes = []
+
+ class FullApiVisitor(ast.NodeVisitor):
+ def visit_Call(self, node: ast.Call) -> None:
+ # 检查函数调用
+ if is_full_api_in_call(node, api):
+ api_nodes.append(node)
+ self.generic_visit(node)
+
+ def visit_Attribute(self, node: ast.Attribute) -> None:
+ # 检查属性访问
+ if is_full_api_in_attribute(node, api):
+ api_nodes.append(node)
+ self.generic_visit(node)
+
+ def visit_ClassDef(self, node: ast.ClassDef) -> None:
+ # 检查类定义
+ if any(api in base for base in get_base_classes(node)):
+ api_nodes.append(node)
+ self.generic_visit(node)
+
+ visitor = FullApiVisitor()
+ visitor.visit(tree)
+
+ if not api_nodes:
+ return None
+
+ # 选择最合适的节点
+ target_node = select_best_node(api_nodes, api)
+
+ # 提取包含该节点的完整语句
+ statement_node = find_complete_statement(target_node)
+ if statement_node:
+ return extract_source_segment(code, statement_node)
+
+ return None
+
+
+def is_full_api_in_call(node: ast.Call, full_api: str) -> bool:
+ """检查函数调用节点是否包含完整的目标API"""
+ if isinstance(node.func, ast.Attribute):
+ # 构建完整的调用路径
+ call_path = get_attribute_path(node.func)
+ return call_path == full_api
+ return False
+
+
+def is_full_api_in_attribute(node: ast.Attribute, full_api: str) -> bool:
+ """检查属性访问节点是否包含完整的目标API"""
+ attr_path = get_attribute_path(node)
+ return attr_path == full_api
+
+
+def find_complete_statement(node: ast.AST) -> ast.AST | None:
+ """查找包含当前节点的完整语句"""
+ # 向上遍历,直到找到语句级别的节点
+ current = node
+ while current and not is_statement_node(current):
+ if hasattr(current, "parent"):
+ current = current.parent
+ else:
+ break
+
+ return current if is_statement_node(current) else None
+
+
+def is_statement_node(node: ast.AST) -> bool:
+ """检查节点是否是语句级别的节点"""
+ return isinstance(
+ node,
+ (
+ ast.Assign,
+ ast.Expr,
+ ast.Return,
+ ast.AugAssign,
+ ast.Call,
+ ast.ClassDef,
+ ast.FunctionDef,
+ ast.Import,
+ ast.ImportFrom,
+ ),
+ )
+
+
+def find_api_nodes(
+ tree: ast.AST, full_api: str, base_name: str
+) -> list[ast.AST]:
+ """
+ 在AST中查找包含API的所有相关节点
+
+ Returns:
+ 包含API的节点列表,按相关性排序
+ """
+ nodes = []
+
+ class ApiVisitor(ast.NodeVisitor):
+ def visit_Call(self, node: ast.Call) -> None:
+ # 检查函数调用
+ if is_api_in_call(node, full_api, base_name):
+ nodes.append(node)
+ self.generic_visit(node)
+
+ def visit_Attribute(self, node: ast.Attribute) -> None:
+ # 检查属性访问(如torch.nn.AdaptiveAvgPool2d)
+ if is_api_in_attribute(node, full_api, base_name):
+ nodes.append(node)
+ self.generic_visit(node)
+
+ def visit_ClassDef(self, node: ast.ClassDef) -> None:
+ # 检查类定义
+ if base_name in node.name or any(
+ full_api in base for base in get_base_classes(node)
+ ):
+ nodes.append(node)
+ self.generic_visit(node)
+
+ def visit_FunctionDef(self, node: ast.FunctionDef) -> None:
+ # 检查函数定义
+ if base_name in node.name:
+ nodes.append(node)
+ self.generic_visit(node)
+
+ def visit_ImportFrom(self, node: ast.ImportFrom) -> None:
+ # 检查import语句
+ for alias in node.names:
+ if base_name in alias.name or full_api.endswith(alias.name):
+ nodes.append(node)
+ self.generic_visit(node)
+
+ visitor = ApiVisitor()
+ visitor.visit(tree)
+ return nodes
+
+
+def is_api_in_call(node: ast.Call, full_api: str, base_name: str) -> bool:
+ """检查函数调用节点是否包含目标API"""
+ if isinstance(node.func, ast.Name):
+ return node.func.id == base_name
+ elif isinstance(node.func, ast.Attribute):
+ # 构建完整的调用路径
+ call_path = get_attribute_path(node.func)
+ return full_api in call_path or base_name in call_path
+ return False
+
+
+def is_api_in_attribute(
+ node: ast.Attribute, full_api: str, base_name: str
+) -> bool:
+ """检查属性访问节点是否包含目标API"""
+ attr_path = get_attribute_path(node)
+ return full_api in attr_path or base_name in attr_path
+
+
+def get_attribute_path(node: ast.AST) -> str:
+ """获取属性访问的完整路径"""
+ if isinstance(node, ast.Name):
+ return node.id
+ elif isinstance(node, ast.Attribute):
+ return f"{get_attribute_path(node.value)}.{node.attr}"
+ return ""
+
+
+def get_base_classes(node: ast.ClassDef) -> list[str]:
+ """获取类的基类列表"""
+ bases = []
+ for base in node.bases:
+ if isinstance(base, ast.Name):
+ bases.append(base.id)
+ elif isinstance(base, ast.Attribute):
+ bases.append(get_attribute_path(base))
+ return bases
+
+
+def select_best_node(nodes: list[ast.AST], api: str) -> ast.AST:
+ """从多个节点中选择最合适的一个"""
+ if len(nodes) == 1:
+ return nodes[0]
+
+ # 优先选择包含完整API的节点
+ for node in nodes:
+ if hasattr(node, "func") and isinstance(node.func, ast.Attribute):
+ if api in get_attribute_path(node.func):
+ return node
+
+ # 否则返回第一个节点
+ return nodes[0]
+
+
+def extract_node_code_block(code: str, node: ast.AST, api: str) -> str:
+ """
+ 提取包含节点的完整代码块
+
+ 根据节点类型提取不同范围的代码:
+ - 类定义:提取整个类
+ - 函数定义:提取整个函数
+ - 调用/赋值:提取所在语句块
+ """
+ # 如果节点是类或函数定义,直接提取整个定义
+ if isinstance(node, (ast.ClassDef, ast.FunctionDef)):
+ return extract_source_segment(code, node)
+
+ # 对于其他节点,找到包含API路径的最近容器
+ container = find_api_container_node(node, api)
+ if container:
+ return extract_source_segment(code, container)
+ else:
+ # 如果没有找到特定容器,提取单个语句
+ statement = find_complete_statement(node)
+ return (
+ extract_source_segment(code, statement)
+ if statement
+ else extract_source_segment(code, node)
+ )
+
+
+def find_api_container_node(node: ast.AST, api: str) -> ast.AST | None:
+ """
+ 查找包含API路径的最近容器节点
+
+ 例如,对于api="torch.autograd.Function",查找包含该路径的类定义
+ """
+ # 获取API的父路径(去掉最后一部分)
+ api_parts = api.split(".")
+ if len(api_parts) > 1:
+ parent_api = ".".join(api_parts[:-1])
+ else:
+ parent_api = None
+
+ # 向上遍历父节点,查找包含父API的容器
+ current = node
+ while hasattr(current, "parent") and current.parent:
+ if isinstance(current.parent, (ast.ClassDef, ast.FunctionDef)):
+ # 检查类或函数名是否包含父API
+ if parent_api and (
+ parent_api in current.parent.name
+ or any(
+ parent_api in base
+ for base in get_base_classes(current.parent)
+ if isinstance(current.parent, ast.ClassDef)
+ )
+ ):
+ return current.parent
+ # 如果没有匹配的父API,返回最近的类或函数
+ return current.parent
+ current = current.parent
+
+ return None
+
+
+def extract_source_segment(code: str, node: ast.AST) -> str:
+ """提取节点的源代码段"""
+ if not hasattr(node, "lineno") or not hasattr(node, "end_lineno"):
+ # 如果没有行号信息,尝试获取单行
+ if hasattr(node, "lineno"):
+ lines = code.split("\n")
+ return lines[node.lineno - 1]
+ return ""
+
+ lines = code.split("\n")
+ start_line = node.lineno - 1
+ end_line = node.end_lineno
+ return "\n".join(lines[start_line:end_line])
+
+
+def find_api_line_fallback(code: str, api: str) -> str | None:
+ """
+ 回退方法:当AST解析失败时使用简单的行匹配
+ """
+ api_base_name = api.split(".")[-1]
+ lines = code.split("\n")
+
+ # 首先尝试完整API匹配
+ for i, line in enumerate(lines):
+ if api in line and is_valid_api_occurrence(line, api):
+ # 尝试获取完整的语句(可能跨越多行)
+ statement_lines = get_complete_statement_lines(lines, i)
+ return "\n".join(statement_lines)
+
+ # 然后尝试基础名称匹配
+ for i, line in enumerate(lines):
+ if api_base_name in line:
+ # 尝试获取完整的语句(可能跨越多行)
+ statement_lines = get_complete_statement_lines(lines, i)
+ return "\n".join(statement_lines)
+
+ return None
+
+
+def is_valid_api_occurrence(line: str, api: str) -> bool:
+ """
+ 检查API在行中的出现是否是有效的(不是注释或字符串的一部分)
+
+ Args:
+ line: 代码行
+ api: API名称
+
+ Returns:
+ 如果是有效的API出现返回True,否则返回False
+ """
+ # 简单的检查:确保API前后不是字母数字或下划线(避免部分匹配)
+ index = line.find(api)
+ if index == -1:
+ return False
+
+ # 检查前一个字符
+ if index > 0 and line[index - 1].isalnum():
+ return False
+
+ # 检查后一个字符
+ end_index = index + len(api)
+ if end_index < len(line) and line[end_index].isalnum():
+ return False
+
+ # 检查是否在注释中
+ comment_index = line.find("#")
+ if comment_index != -1 and index > comment_index:
+ return False
+
+ return True
+
+
+def get_complete_statement_lines(
+ lines: list[str], start_line: int
+) -> list[str]:
+ """
+ 尝试获取完整的语句(可能跨越多行)
+
+ Args:
+ lines: 所有代码行的列表
+ start_line: 起始行索引
+
+ Returns:
+ 完整语句的行列表
+ """
+ # 简单的括号匹配算法来找到语句的结束
+ open_brackets = 0
+ open_parens = 0
+ open_braces = 0
+
+ result_lines = []
+
+ for i in range(start_line, len(lines)):
+ line = lines[i]
+ result_lines.append(line)
+
+ # 统计括号数量
+ for char in line:
+ if char == "[":
+ open_brackets += 1
+ elif char == "]":
+ open_brackets -= 1
+ elif char == "(":
+ open_parens += 1
+ elif char == ")":
+ open_parens -= 1
+ elif char == "{":
+ open_braces += 1
+ elif char == "}":
+ open_braces -= 1
+
+ # 检查是否所有括号都已关闭,并且行以语句结束符结尾
+ if (
+ open_brackets == 0
+ and open_parens == 0
+ and open_braces == 0
+ and (
+ line.endswith(":")
+ or any(
+ line.rstrip().endswith(end)
+ for end in [",", "\\", "(", "[", "{"]
+ )
+ is False
+ )
+ ):
+ break
+
+ return result_lines
+
+
+def add_parent_links(tree: ast.AST) -> None:
+ """为AST节点添加父节点链接"""
+ for node in ast.walk(tree):
+ for child in ast.iter_child_nodes(node):
+ child.parent = node
+
+
+def generate_invok_diff_only_docs(
+ output_dir: str,
+ paconvert_dir: str,
+ delete_temp_file: bool = False,
+ overwrite: bool = False,
+):
+ """生成"仅 API 调用方式不一致"类别的API差异文档"""
script_dir = os.path.dirname(os.path.abspath(__file__))
api_mapping_path = os.path.join(script_dir, "api_mapping.json")
@@ -493,7 +919,7 @@ def generate_invok_diff_only_docs(
# 读取API映射
api_mapping = load_mapping_json(api_mapping_path)
attribute_mapping = load_mapping_json(attribute_mapping_path)
- api_mapping = api_mapping | attribute_mapping
+ api_mapping = {**api_mapping, **attribute_mapping}
# 定义属于invok_diff_only类别的Matcher
invok_diff_matchers = [
@@ -512,66 +938,130 @@ def generate_invok_diff_only_docs(
)
os.makedirs(test_output_dir, exist_ok=True)
- # 生成文档
+ # 记录所有临时文件路径
+ temp_files = []
+
+ # 定义三类需要特殊处理的 Matcher
+ special_matchers = {
+ "TensorFunc2PaddleFunc",
+ "Func2Attribute",
+ "Attribute2Func",
+ }
+
for torch_api, mapping in api_mapping.items():
- if (
- mapping.get("Matcher") in invok_diff_matchers
- and torch_api not in whitelist_api
- and torch_api not in no_need_list
- ):
- paddle_api = mapping["paddle_api"]
- print(f"Processing: {torch_api} -> {paddle_api}")
- # 生成文件名
- file_name = f"{torch_api}.md"
- file_path = os.path.join(test_output_dir, file_name)
- if overwrite:
- file_path = os.path.join(actually_output_dir, file_name)
-
- try:
- # 获取URL
- torch_url = get_pytorch_url(torch_api)
- paddle_url = get_paddle_url(paddle_api)
-
- # 获取函数签名
- module = torch_api.split(".")[0]
- torch_signature = get_function_signature(torch_api, module)
- paddle_signature = get_function_signature(paddle_api, "paddle")
-
- # 生成转写示例
- torch_example = get_torch_example(torch_api, paconvert_dir)
- paddle_example = get_conversion_example(
- torch_example, torch_api, paddle_api, paconvert_dir
+ matcher = mapping.get("Matcher")
+
+ # 判断是否属于目标 Matcher 集合
+ if matcher not in invok_diff_matchers:
+ continue
+ if torch_api in whitelist_api or torch_api in no_need_list:
+ continue
+
+ # 如果是特殊三类 Matcher,需要进一步分类
+ if matcher in special_matchers:
+ has_unsupport_args = "unsupport_args" in mapping
+ has_kwargs_change = "kwargs_change" in mapping
+ has_paddle_default_kwargs = "paddle_default_kwargs" in mapping
+
+ if has_unsupport_args:
+ print(
+ f"type error: [torch_more_args] {torch_api} -> {mapping.get('paddle_api', 'N/A')}"
)
-
- # 生成文档内容
- content = f"## [ 仅 API 调用方式不一致 ]{torch_api}\n\n"
- content += f"### [{torch_api}]({torch_url})\n\n"
- content += "```python\n"
- content += f"{torch_signature}\n"
- content += "```\n\n"
- content += f"### [{paddle_api}]({paddle_url})\n\n"
- content += "```python\n"
- content += f"{paddle_signature}\n"
- content += "```\n\n"
- content += "两者功能一致,但调用方式不一致,具体如下:\n\n"
- content += "### 转写示例\n\n"
- content += "```python\n"
- content += f"# PyTorch 写法\n{torch_example}\n\n"
- content += f"# Paddle 写法\n{paddle_example}\n"
- content += "```\n"
-
- # 保存文件
- with open(file_path, "w", encoding="utf-8") as f:
- f.write(content)
-
- print(f"Generated: {file_path}")
-
- except APIConversionError as e:
- print(f"ERROR: {e}", file=sys.stderr)
continue
- except Exception as e:
- print(f"UNEXPECTED ERROR: {e} for {torch_api}", file=sys.stderr)
+ elif has_kwargs_change:
+ print(
+ f"type error: [args_name_diff] {torch_api} -> {mapping.get('paddle_api', 'N/A')}"
+ )
continue
+ elif has_paddle_default_kwargs:
+ print(
+ f"type error: [paddle_more_args_or_default_diff] {torch_api} -> {mapping.get('paddle_api', 'N/A')}"
+ )
+ continue
+ else:
+ # 属于 invok_diff_only,继续后续处理
+ pass # 继续执行下面的文档生成逻辑
+ else:
+ # 非特殊三类 Matcher(如 NumelMatcher、Is_InferenceMatcher 等),按原逻辑处理
+ pass
+
+ # === 以下为原逻辑:仅处理 invok_diff_only 情况 ===
+ paddle_api = mapping["paddle_api"]
+ print(f"Processing: {torch_api} -> {paddle_api}")
+
+ # 生成文件名
+ base_name = torch_api.replace(".", "_")
+ file_name = f"{torch_api}.md"
+ file_path = os.path.join(test_output_dir, file_name)
+ if overwrite:
+ file_path = os.path.join(actually_output_dir, file_name)
+ try:
+ # 获取URL
+ torch_url = get_pytorch_url(torch_api)
+ paddle_url = get_paddle_url(paddle_api)
+
+ # 获取函数签名
+ torch_signature = get_function_signature(
+ torch_api, torch_api.split(".")[0]
+ )
+ paddle_signature = get_function_signature(paddle_api, "paddle")
+
+ # 生成转写示例
+ torch_example = get_torch_example(torch_api, paconvert_dir)
+ paddle_example = get_conversion_example(
+ torch_example, torch_api, paddle_api, paconvert_dir
+ )
+
+ # 生成文档内容
+ content = f"## [ 仅 API 调用方式不一致 ]{torch_api}\n\n"
+ content += f"### [{torch_api}]({torch_url})\n\n"
+ content += "```python\n"
+ content += f"{torch_signature}\n"
+ content += "```\n\n"
+ content += f"### [{paddle_api}]({paddle_url})\n\n"
+ content += "```python\n"
+ content += f"{paddle_signature}\n"
+ content += "```\n\n"
+ content += "两者功能一致,但调用方式不一致,具体如下:\n\n"
+ content += "### 转写示例\n\n"
+ content += "```python\n"
+ content += f"# PyTorch 写法\n{torch_example}\n\n"
+ content += f"# Paddle 写法\n{paddle_example}\n"
+ content += "```\n"
+
+ # 保存文件
+ with open(file_path, "w", encoding="utf-8") as f:
+ f.write(content)
+
+ print(f"Generated: {file_path}")
+
+ # 记录临时文件
+ temp_files.append(f"temp_{base_name}_torch_code.py")
+ temp_files.append(f"temp_{base_name}_torch_code_complete.py")
+ temp_files.append(f"temp_{base_name}_paddle_code.py")
+
+ except APIConversionError as e:
+ print(f"ERROR: {e}", file=sys.stderr)
+ temp_files.append(f"temp_{base_name}_torch_code.py")
+ temp_files.append(f"temp_{base_name}_torch_code_complete.py")
+ temp_files.append(f"temp_{base_name}_paddle_code.py")
+ continue
+ except Exception as e:
+ print(f"UNEXPECTED ERROR: {e} for {torch_api}", file=sys.stderr)
+ temp_files.append(f"temp_{base_name}_torch_code.py")
+ temp_files.append(f"temp_{base_name}_torch_code_complete.py")
+ temp_files.append(f"temp_{base_name}_paddle_code.py")
+ continue
+
+ # 删除临时文件(如果需要)
+ if delete_temp_file:
+ for file in temp_files:
+ if os.path.exists(file):
+ try:
+ os.remove(file)
+ print(f"Deleted temporary file: {file}")
+ except Exception as e:
+ print(f"Failed to delete {file}: {e}", file=sys.stderr)
def main():
@@ -593,13 +1083,21 @@ def main():
parser.add_argument(
"--overwrite", action="store_true", help="Overwrite existing files"
)
+ parser.add_argument(
+ "--delete_temp_file",
+ action="store_true",
+ help="Delete temporary files after generation",
+ )
args = parser.parse_args()
+ print(args.delete_temp_file)
+
# 生成文档
generate_invok_diff_only_docs(
output_dir=args.output_dir,
paconvert_dir=args.paconvert_dir,
+ delete_temp_file=args.delete_temp_file,
overwrite=args.overwrite,
)
diff --git a/docs/guides/model_convert/convert_from_pytorch/tools/generate_pytorch_api_mapping.py b/docs/guides/model_convert/convert_from_pytorch/tools/generate_pytorch_api_mapping.py
index c4af7f44da1..34d47a52718 100644
--- a/docs/guides/model_convert/convert_from_pytorch/tools/generate_pytorch_api_mapping.py
+++ b/docs/guides/model_convert/convert_from_pytorch/tools/generate_pytorch_api_mapping.py
@@ -181,6 +181,40 @@ def generate_category2_table(
"NumelMatcher",
"Is_InferenceMatcher",
]:
+ special_matchers = {
+ "TensorFunc2PaddleFunc",
+ "Func2Attribute",
+ "Attribute2Func",
+ }
+ if matcher in special_matchers:
+ has_unsupport_args = "unsupport_args" in mapping_info
+ has_kwargs_change = "kwargs_change" in mapping_info
+ has_paddle_default_kwargs = (
+ "paddle_default_kwargs" in mapping_info
+ )
+
+ if has_unsupport_args:
+ print(
+ f"[torch_more_args] {src_api} -> {mapping_info.get('paddle_api', 'N/A')}"
+ )
+ continue
+ elif has_kwargs_change:
+ print(
+ f"[args_name_diff] {src_api} -> {mapping_info.get('paddle_api', 'N/A')}"
+ )
+ continue
+ elif has_paddle_default_kwargs:
+ print(
+ f"[paddle_more_args_or_default_diff] {src_api} -> {mapping_info.get('paddle_api', 'N/A')}"
+ )
+ continue
+ else:
+ # 属于 invok_diff_only,继续后续处理
+ pass # 继续执行下面的文档生成逻辑
+ else:
+ # 非特殊三类 Matcher(如 NumelMatcher、Is_InferenceMatcher 等),按原逻辑处理
+ pass
+
# 在docs_mapping中查找当前src_api对应的信息
docs_mapping_info = docs_mapping.get(src_api, {})
src_url = docs_mapping_info.get("src_api_url")
diff --git a/docs/guides/model_convert/convert_from_pytorch/tools/utils.py b/docs/guides/model_convert/convert_from_pytorch/tools/utils.py
index a54de7bcc04..f346514fab5 100644
--- a/docs/guides/model_convert/convert_from_pytorch/tools/utils.py
+++ b/docs/guides/model_convert/convert_from_pytorch/tools/utils.py
@@ -299,7 +299,6 @@ def get_paddle_url(paddle_api: str) -> str:
对应API的官方文档URL字符串
"""
# 将API名称转换为URL格式
- # 例如: paddle.distributed.reduce_scatter -> paddle/distributed/reduce_scatter
url_path = paddle_api.replace(".", "/") + "_cn.html"
# 构建URL
@@ -309,15 +308,12 @@ def get_paddle_url(paddle_api: str) -> str:
url = base_url + url_path
# 检查RST文件是否存在
- root_dir = "." # 默认根目录
- rst_path = os.path.join(
- root_dir, "api", url_path.replace("_cn.html", ".rst")
- )
+ root_dir = "./docs/" # 默认根目录
+ rst_path = os.path.join(root_dir, "api", url_path.replace(".html", ".rst"))
+ # 如果RST文件不存在,尝试查找同名文件并移动
if not os.path.exists(rst_path):
- print(
- f"Warning: RST file for {paddle_api} does not exist at {rst_path}"
- )
+ print(f"Warning: RST file '{url_path}' not found.")
# 添加锚点
anchor = url_path.replace(