[Question] Tensor inplace-api 的使用方式与文档展示 (original) (raw)
请提出你的问题 Please ask your question
参照 issue63054,此 issue 展示了中文 api 文档下的 paddle.flatten_ 无法使用的问题。透露出两个问题,一个是 api 文档对于 inplace-api 是如何进行展示的,以及 inplace-api 是否需要暴露在 paddle 下。
中文 api 文档,通过 rst 文件手动撰写 api 文档。其中对于 paddle 下的 api (包括 inplace-api),都是存放在 paddle 目录下。
- paddle
- amp
- ...
- ...
- add_cn.rst
- add__cn.rst
- ...
- Tensor_cn.rst
- ...
- amp
所有 inplace-api 在文档中都是暴露在 paddle 下
而英文 api 文档目前通过不同模块和文件中的 _all_ 属性中的元素进行公开文档展示(添加到 _all_ 才会展示在官网中)
python模块中的__all__,用于模块导入时限制,如:from module import *。paddle 借用此进行公开 api 管理
<Paddle\python\paddle__init__.py> ... all = [ 'iinfo', ... 'cos', 'add', ... ] ...
导入 init.py(以及没有导入) 却没有加入 all 的 api 文档展示在 paddle.Tensor 下
inpalce-api 使用方式
通过 dir(paddle) 以及 dir(paddle.Tensor) 发现些许 inplace-api 并没有暴露到 paddle 下(没有导入在 paddle 的 __init__.py 中).
import paddle a = paddle.to_tensor([1]) paddle.add_(a,20) Traceback (most recent call last): File "", line 1, in AttributeError: module 'paddle' has no attribute 'add_'. Did you mean: 'add'?
如果需要暴露,是不是所有 inpalce-api 都需要暴露到 paddle 下(需要补全未暴露的)
pytorch 的 inplace-api 是不会通过 torch.[inplace-api] 使用的
问题
- inplace-api 的使用方式
- 以及文档展示的 inplace-api 使用方式
api 列表
| tensor inplace api | 英文文档是否展示在paddle下 | paddle.[inplace]是否可以使用 |
|---|---|---|
| acosh_ | ❌ | ✅ |
| add_ | ❌ | ❌ |
| apply_ | ❌ | ❌ |
| asin_ | ❌ | ✅ |
| asinh_ | ❌ | ✅ |
| atanh_ | ❌ | ✅ |
| ceil_ | ❌ | ❌ |
| clip_ | ❌ | ❌ |
| copy_ | ❌ | ❌ |
| cosh_ | ❌ | ✅ |
| detach_ | ❌ | ❌ |
| erfinv_ | ❌ | ❌ |
| exp_ | ❌ | ❌ |
| exponential_ | ❌ | ❌ |
| fill_ | ❌ | ❌ |
| fill_diagonal_ | ❌ | ❌ |
| fill_diagonal_tensor_ | ❌ | ❌ |
| flatten_ | ❌ | ❌ |
| floor_ | ❌ | ❌ |
| grad_ | ❌ | ❌ |
| lerp_ | ❌ | ❌ |
| log1p_ | ❌ | ✅ |
| logical_xor_ | ❌ | ✅ |
| not_equal_ | ❌ | ✅ |
| put_along_axis_ | ❌ | ❌ |
| reciprocal_ | ❌ | ❌ |
| reconstruct_from_ | ❌ | ❌ |
| round_ | ❌ | ❌ |
| rsqrt_ | ❌ | ❌ |
| scale_ | ❌ | ❌ |
| sigmoid_ | ❌ | ❌ |
| sqrt_ | ❌ | ❌ |
| subtract_ | ❌ | ❌ |
| uniform_ | ❌ | ❌ |
| zero_ | ❌ | ❌ |