Open
Description
请提出你的问题 Please ask your question
参照 issue63054,此 issue 展示了中文 api 文档下的 paddle.flatten_
无法使用的问题。透露出两个问题,一个是 api 文档对于 inplace-api 是如何进行展示的,以及 inplace-api 是否需要暴露在 paddle 下。
api 文档现状(对于Tensor 相关)
中文 api 文档,通过 rst 文件手动撰写 api 文档。其中对于 paddle 下的 api (包括 inplace-api),都是存放在 paddle 目录下。
- paddle
- amp
- ...
- ...
- add_cn.rst
- add__cn.rst
- ...
- Tensor_cn.rst
- ...
# 所有 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 "<stdin>", line 1, in <module>
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_ | ❌ | ❌ |