diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/Tensor/torch.Tensor.float_power.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/Tensor/torch.Tensor.float_power.md index 1c8ad5b3f4c..e43a2f76b25 100644 --- a/docs/guides/model_convert/convert_from_pytorch/api_difference/Tensor/torch.Tensor.float_power.md +++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/Tensor/torch.Tensor.float_power.md @@ -12,8 +12,8 @@ Paddle 无此 API,需要组合实现。 ```python # PyTorch 写法 -y = x.float_power(2) +y = x.float_power(y) # Paddle 写法 -y = x.cast(paddle.float64).pow(2) +y = x.cast(paddle.float64).pow(y) ``` diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/Tensor/torch.Tensor.isneginf.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/Tensor/torch.Tensor.isneginf.md new file mode 100644 index 00000000000..0f3efe8bd0e --- /dev/null +++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/Tensor/torch.Tensor.isneginf.md @@ -0,0 +1,15 @@ +## [无参数]torch.Tensor.isneginf + +### [torch.Tensor.isneginf ](https://pytorch.org/docs/stable/generated/torch.Tensor.isneginf.html#torch.Tensor.isneginf) + +```python +torch.Tensor.isneginf() +``` + +### [paddle.Tensor.isneginf](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/Tensor_cn.html#isneginf-name-none) + +```python +paddle.Tensor.isneginf(name=None) +``` + +两者功能一致,无参数。 diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/Tensor/torch.Tensor.isposinf.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/Tensor/torch.Tensor.isposinf.md new file mode 100644 index 00000000000..793396aa479 --- /dev/null +++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/Tensor/torch.Tensor.isposinf.md @@ -0,0 +1,15 @@ +## [无参数]torch.Tensor.isposinf + +### [torch.Tensor.isposinf](https://pytorch.org/docs/stable/generated/torch.Tensor.isposinf.html#torch.Tensor.isposinf) + +```python +torch.Tensor.isposinf() +``` + +### [paddle.Tensor.isposinf](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/Tensor_cn.html#isposinf-name-none) + +```python +paddle.Tensor.isposinf(name=None) +``` + +两者功能一致,无参数。 diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/Tensor/torch.Tensor.isreal.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/Tensor/torch.Tensor.isreal.md new file mode 100644 index 00000000000..0929436879a --- /dev/null +++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/Tensor/torch.Tensor.isreal.md @@ -0,0 +1,15 @@ +## [无参数]torch.Tensor.isreal + +### [torch.Tensor.isreal](https://pytorch.org/docs/stable/generated/torch.Tensor.isreal.html#torch.Tensor.isreal) + +```python +Tensor.isreal() +``` + +### [paddle.Tensor.isreal](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/Tensor_cn.html#isreal-name-none) + +```python +paddle.Tensor.isreal(name=None) +``` + +两者功能一致,无参数。 diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/Tensor/torch.Tensor.positive.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/Tensor/torch.Tensor.positive.md new file mode 100644 index 00000000000..e81c06727c3 --- /dev/null +++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/Tensor/torch.Tensor.positive.md @@ -0,0 +1,27 @@ +## [组合替代实现]torch.Tensor.positive + +[torch.Tensor.positive](https://pytorch.org/docs/stable/generated/torch.Tensor.positive.html#torch.Tensor.positive) + +```python +torch.Tensor.positive() +``` + +判断 `input` 是否是 bool 类型的 Tensor,如果是则抛出 RuntimeError 异常,否则返回 `input` 。 + +Paddle 无此 API,需要组合实现。 + +### 转写示例 + +```python +# PyTorch 写法 +x.positive() + +# Paddle 写法 +def positive(x): + if x.dtype != paddle.bool: + return x + else: + raise RuntimeError("boolean tensors is not supported.") + +positive(x) +``` diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/Tensor/torch.Tensor.scatter_reduce.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/Tensor/torch.Tensor.scatter_reduce.md new file mode 100644 index 00000000000..90f7ce9e26e --- /dev/null +++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/Tensor/torch.Tensor.scatter_reduce.md @@ -0,0 +1,26 @@ +## [paddle 参数更多]torch.Tensor.scatter_reduce + +### [torch.Tensor.scatter_reduce](https://pytorch.org/docs/stable/generated/torch.Tensor.scatter_reduce.html#torch-tensor-scatter-reduce) + +```python +torch.Tensor.scatter_reduce(dim, index, src, reduce, *, include_self=True) +``` + +### [paddle.Tensor.put_along_axis](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/Tensor_cn.html#put-along-axis-indices-value-axis-reduce-assign-include-self-true-broadcast-true) + +```python +paddle.Tensor.put_along_axis(indices, values, axis, reduce="assign", include_self=True, broadcast=True) +``` + +其中 Paddle 相比 PyTorch 支持更多其他参数,具体如下: + +### 参数映射 + +| PyTorch | PaddlePaddle | 备注 | +| ------------ | ------------ | ------------------------------------------------------------ | +| dim | axis | 表示 scatter 的维度,仅参数名不一致。 | +| index | indices | 表示输入的索引张量,仅参数名不一致。 | +| src | values | 表示需要插入的值,仅参数名不一致。 | +| reduce | reduce | 表示插入 values 时的计算方式,参数默认值不一致。PyTorch 中该参数无默认值,需要输入,Paddle 中默认值为 `assign`,应设置为与 PyTorch 一致。其中 PyTorch 的 `sum` 对应 Paddle 中的 `add`,PyTorch 的 `prod` 对应 Paddle 中 `multiply`。 | +| include_self | include_self | 表示插入 values 时是否包含输入元素中的值。 | +| - | broadcast | 表示是否需要广播索引张量矩阵,PyTorch 无此参数,Paddle 应设置为 `False` 才与 PyTorch 一致 | diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.block_diag.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.block_diag.md new file mode 100644 index 00000000000..e9b4c66468f --- /dev/null +++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.block_diag.md @@ -0,0 +1,33 @@ +## [输入参数类型不一致]torch.block_diag + +### [torch.block_diag](https://pytorch.org/docs/stable/generated/torch.block_diag.html#torch-block-diag) + +```python +torch.block_diag(*tensors) +``` + +### [paddle.block_diag](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/block_diag_cn.html) + +```python +paddle.block_diag(inputs, name=None) +``` + +二者功能一致但参数类型不一致,具体如下: + +### 参数映射 + +| PyTorch | PaddlePaddle | 备注 | +| -------- | ------------ | ------------------------------------------------------------ | +| *tensors | inputs | 一组输入 Tensor,PyTorch 参数 tensors 为可变参数,Paddle 参数 inputs 为 list(Tensor) 或 tuple(Tensor) 的形式。 | + +### 转写示例 + +#### *tensors:一组输入 Tensor + +```python +# PyTorch 写法 +torch.block_diag(x, y, z) + +# Paddle 写法 +paddle.block_diag([x, y, z]) +``` diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.can_cast.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.can_cast.md new file mode 100644 index 00000000000..f386b54d197 --- /dev/null +++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.can_cast.md @@ -0,0 +1,194 @@ +## [组合替代实现]torch.can_cast + +### [torch.can_cast](https://pytorch.org/docs/stable/generated/torch.can_cast.html#torch-can-cast) + +```python +torch.can_cast(from_, to) +``` + +判断类型的转换在 PyTorch 的[casting 规则](https://pytorch.org/docs/stable/tensor_attributes.html#type-promotion-doc)中是否被允许。 + +Paddle 无此 API,需要组合实现。 + +### 转写示例 + +```python +# PyTorch 写法 +torch.can_cast(x, y) + +# Paddle 写法 +def can_cast(from_, to): + can_cast_dict = { + paddle.bfloat16: { + paddle.bfloat16: True, + paddle.float16: True, + paddle.float32: True, + paddle.float64: True, + paddle.complex64: True, + paddle.complex128: True, + paddle.uint8: False, + paddle.int8: False, + paddle.int16: False, + paddle.int32: False, + paddle.int64: False, + paddle.bool: False + }, + paddle.float16: { + paddle.bfloat16: True, + paddle.float16: True, + paddle.float32: True, + paddle.float64: True, + paddle.complex64: True, + paddle.complex128: True, + paddle.uint8: False, + paddle.int8: False, + paddle.int16: False, + paddle.int32: False, + paddle.int64: False, + paddle.bool: False, + }, + paddle.float32: { + paddle.bfloat16: True, + paddle.float16: True, + paddle.float32: True, + paddle.float64: True, + paddle.complex64: True, + paddle.complex128: True, + paddle.uint8: False, + paddle.int8: False, + paddle.int16: False, + paddle.int32: False, + paddle.int64: False, + paddle.bool: False, + }, + paddle.float64: { + paddle.bfloat16: True, + paddle.float16: True, + paddle.float32: True, + paddle.float64: True, + paddle.complex64: True, + paddle.complex128: True, + paddle.uint8: False, + paddle.int8: False, + paddle.int16: False, + paddle.int32: False, + paddle.int64: False, + paddle.bool: False, + }, + paddle.complex64: { + paddle.bfloat16: False, + paddle.float16: False, + paddle.float32: False, + paddle.float64: False, + paddle.complex64: True, + paddle.complex128: True, + paddle.uint8: False, + paddle.int8: False, + paddle.int16: False, + paddle.int32: False, + paddle.int64: False, + paddle.bool: False, + }, + paddle.complex128: { + paddle.bfloat16: False, + paddle.float16: False, + paddle.float32: False, + paddle.float64: False, + paddle.complex64: True, + paddle.complex128: True, + paddle.uint8: False, + paddle.int8: False, + paddle.int16: False, + paddle.int32: False, + paddle.int64: False, + paddle.bool: False, + }, + paddle.uint8: { + paddle.bfloat16: True, + paddle.float16: True, + paddle.float32: True, + paddle.float64: True, + paddle.complex64: True, + paddle.complex128: True, + paddle.uint8: True, + paddle.int8: True, + paddle.int16: True, + paddle.int32: True, + paddle.int64: True, + paddle.bool: False, + }, + paddle.int8: { + paddle.bfloat16: True, + paddle.float16: True, + paddle.float32: True, + paddle.float64: True, + paddle.complex64: True, + paddle.complex128: True, + paddle.uint8: True, + paddle.int8: True, + paddle.int16: True, + paddle.int32: True, + paddle.int64: True, + paddle.bool: False, + }, + paddle.int16: { + paddle.bfloat16: True, + paddle.float16: True, + paddle.float32: True, + paddle.float64: True, + paddle.complex64: True, + paddle.complex128: True, + paddle.uint8: True, + paddle.int8: True, + paddle.int16: True, + paddle.int32: True, + paddle.int64: True, + paddle.bool: False, + }, + paddle.int32: { + paddle.bfloat16: True, + paddle.float16: True, + paddle.float32: True, + paddle.float64: True, + paddle.complex64: True, + paddle.complex128: True, + paddle.uint8: True, + paddle.int8: True, + paddle.int16: True, + paddle.int32: True, + paddle.int64: True, + paddle.bool: False, + }, + paddle.int64: { + paddle.bfloat16: True, + paddle.float16: True, + paddle.float32: True, + paddle.float64: True, + paddle.complex64: True, + paddle.complex128: True, + paddle.uint8: True, + paddle.int8: True, + paddle.int16: True, + paddle.int32: True, + paddle.int64: True, + paddle.bool: False, + }, + paddle.bool: { + paddle.bfloat16: True, + paddle.float16: True, + paddle.float32: True, + paddle.float64: True, + paddle.complex64: True, + paddle.complex128: True, + paddle.uint8: True, + paddle.int8: True, + paddle.int16: True, + paddle.int32: True, + paddle.int64: True, + paddle.bool: True, + } + } + return can_cast_dict[from_][to] + +can_cast(x, y) +``` diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.cartesian_prod.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.cartesian_prod.md new file mode 100644 index 00000000000..dbcae71d453 --- /dev/null +++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.cartesian_prod.md @@ -0,0 +1,33 @@ +## [输入参数类型不一致]torch.cartesian_prod + +### [torch.cartesian_prod](https://pytorch.org/docs/stable/generated/torch.cartesian_prod.html#torch-cartesian-prod) + +```python +torch.cartesian_prod(*tensors) +``` + +### [paddle.cartesian_prod](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/cartesian_prod_cn.html) + +```python +paddle.cartesian_prod(x, name=None) +``` + +两者功能一致但参数类型不一致,具体如下: + +### 参数映射 + +| PyTorch | PaddlePaddle | 备注 | +| -------- | ------------ | ------------------------------------------------------------ | +| *tensors | x | 一组输入 Tensor , PyTorch 参数 tensors 为可变参, Paddle 参数 x 为 list(Tensor) 或 tuple(Tensor) 的形式。 | + +### 转写示例 + +#### *tensors:一组输入 Tensor + +```python +# PyTorch 写法 +torch.cartesian_prod(a, b) + +# Paddle 写法 +paddle.cartesian_prod([a, b]) +``` diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.float_power.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.float_power.md new file mode 100644 index 00000000000..cd8193ead20 --- /dev/null +++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.float_power.md @@ -0,0 +1,29 @@ +## [组合替代实现]torch.float_power + +### [torch.float_power](https://pytorch.org/docs/stable/generated/torch.float_power.html#torch-float-power) + +```python +torch.float_power(input, exponent, *, out=None) +``` + +Paddle 无此 API,需要组合实现。 + +### 转写示例 + +```python +# PyTorch 写法 +torch.float_power(x, y) + +# Paddle 写法 +paddle.pow(x.cast(paddle.float64), y) +``` + +#### out:指定输出 + +```python +# PyTorch 写法 +torch.float_power(x, y, out=out) + +# Paddle 写法 +paddle.assign(paddle.pow(x.cast(paddle.float64), y), out) +``` diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.isin.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.isin.md new file mode 100644 index 00000000000..5aab061510a --- /dev/null +++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.isin.md @@ -0,0 +1,24 @@ +## [ 仅参数名不一致 ]torch.isin + +### [torch.isin](https://pytorch.org/docs/stable/generated/torch.isin.html#torch.isin) + +```python +torch.isin(elements, test_elements, *, assume_unique=False, invert=False) +``` + +### [paddle.isin](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/isin_cn.html) + +```python +paddle.isin(x, test_x, assume_unique=False, invert=False, name=None) +``` + +两者功能一致且参数用法一致,仅参数名不一致,具体如下: + +### 参数映射: + +| PyTorch | PaddlePaddle | 备注 | +| ------------- | ------------- | ------------------------------------------------ | +| elements | x | 输入的 tensor,仅参数名不一致。 | +| test_elements | test_x | 用于检测的 tensor,仅参数名不一致。 | +| assume_unique | assume_unique | 表示输入的 tensor 和用于检测的 tensor 元素是否唯一。 | +| invert | invert | 表示是否输出反转的结果。 | diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.isneginf.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.isneginf.md new file mode 100644 index 00000000000..f7d301f9aa2 --- /dev/null +++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.isneginf.md @@ -0,0 +1,34 @@ +## [torch 参数更多]torch.isneginf + +### [torch.isneginf](https://pytorch.org/docs/stable/generated/torch.isneginf.html#torch-isneginf) + +```python +torch.isneginf(input, *, out=None) +``` + +### [paddle.isneginf](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/isneginf_cn.html) + +```python +paddle.isneginf(x, name=None) +``` + +Pytorch 相比 Paddle 支持更多其他参数,具体如下: + +### 参数映射 + +| PyTorch | PaddlePaddle | 备注 | +| ------ | ----------- | ------------------------------------------------ | +| input | x | 输入的 Tensor,仅参数名不一致。 | +| out | - | 表示输出的 Tensor , Paddle 无此参数,需要转写。 | + +### 转写示例 + +#### out:指定输出 + +```python +# Pytorch 写法 +torch.isneginf(x, out=y) + +# Paddle 写法 +paddle.assign(paddle.isneginf(x), y) +``` diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.isposinf.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.isposinf.md new file mode 100644 index 00000000000..2ba94702296 --- /dev/null +++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.isposinf.md @@ -0,0 +1,34 @@ +## [torch 参数更多]torch.isposinf + +### [torch.isposinf](https://pytorch.org/docs/stable/generated/torch.isposinf.html#torch-isposinf) + +```python +torch.isposinf(input, *, out=None) +``` + +### [paddle.isposinf](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/isposinf_cn.html) + +```python +paddle.isposinf(x, name=None) +``` + +Pytorch 相比 Paddle 支持更多其他参数,具体如下: + +### 参数映射 + +| PyTorch | PaddlePaddle | 备注 | +| ------ | ----------- | ------------------------------------------------ | +| input | x | 输入的 Tensor,仅参数名不一致。 | +| out | - | 表示输出的 Tensor , Paddle 无此参数,需要转写。 | + +### 转写实例 + +#### out 参数:指定输出 + +```python +# Pytorch 写法 +torch.isposinf(x, out=y) + +# Paddle 写法 +paddle.assign(paddle.isposinf(x), y) +``` diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.isreal.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.isreal.md new file mode 100644 index 00000000000..57cd94bbf68 --- /dev/null +++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.isreal.md @@ -0,0 +1,21 @@ +## [仅参数名不一致]torch.isreal + +### [torch.isreal](https://pytorch.org/docs/stable/generated/torch.isreal.html#torch-isreal) + +```python +torch.isreal(input) +``` + +### [paddle.isreal](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/isreal_cn.html) + +```python +paddle.isreal(x, name=None) +``` + +两者功能一致且参数用法一致,仅参数名不一致,具体如下: + +### 参数映射 + +| PyTorch | PaddlePaddle | 备注 | +| ------- | ------------ | ---------------------------------- | +| input | x | 表示输入的 Tensor,仅参数名不一致。 | diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.positive.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.positive.md new file mode 100644 index 00000000000..7b05f332390 --- /dev/null +++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.positive.md @@ -0,0 +1,27 @@ +## [组合替代实现]torch.positive + +### [torch.positive](https://pytorch.org/docs/stable/generated/torch.positive.html#torch-positive) + +```python +torch.positive(input) +``` + +判断 `input` 是否是 bool 类型的 Tensor,如果是则抛出 RuntimeError 异常,否则返回 `input` 。 + +Paddle 无此 API,需要组合实现。 + +### 转写示例 + +```python +# PyTorch 写法 +torch.positive(x) + +# Paddle 写法 +def positive(x): + if x.dtype != paddle.bool: + return x + else: + raise RuntimeError("boolean tensors is not supported.") + +positive(x) +``` diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.scatter_reduce.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.scatter_reduce.md new file mode 100644 index 00000000000..a06a2401f9a --- /dev/null +++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/torch/torch.scatter_reduce.md @@ -0,0 +1,27 @@ +## [paddle 参数更多]torch.scatter_reduce + +### [torch.scatter_reduce](https://pytorch.org/docs/stable/generated/torch.scatter_reduce.html#torch-scatter-reduce) + +```python +torch.scatter_reduce(input, dim, index, src, reduce, *, include_self=True) +``` + +### [paddle.put_along_axis](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/put_along_axis_cn.html) + +```python +paddle.put_along_axis(arr, indices, values, axis, reduce='assign', include_self=True, broadcast=True) +``` + +其中 Paddle 相比 PyTorch 支持更多其他参数,具体如下: + +### 参数映射 + +| PyTorch | PaddlePaddle | 备注 | +| ------------ | ------------ | ------------------------------------------------------------ | +| input | arr | 表示输入 Tensor,仅参数名不一致。 | +| dim | axis | 表示沿着哪个维度 scatter,仅参数名不一致。 | +| index | indices | 表示输入的索引张量,仅参数名不一致。 | +| src | values | 表示要插入的值,仅参数名不一致。 | +| reduce | reduce | 表示插入 values 时的计算方式,参数默认值不一致。PyTorch 中该参数无默认值,需要输入,Paddle 中默认值为 `assign`,应设置为与 PyTorch 一致。其中 PyTorch 的 `sum` 对应 Paddle 中的 `add`,PyTorch 的 `prod` 对应 Paddle 中 `multiply`。 | +| include_self | include_self | 表示插入 values 时是否包含输入 Tensor 中的元素。 | +| - | broadcast | 表示是否需要广播输入的索引张量,PyTorch 无此参数,Paddle 应设置为 `False` 结果才与 pytorch 一致。 |