Skip to content

Commit

Permalink
Merge pull request #1 from PaddlePaddle/develop
Browse files Browse the repository at this point in the history
updata
  • Loading branch information
Liyulingyue authored May 9, 2022
2 parents ba54a40 + a21215e commit e2f8bb4
Show file tree
Hide file tree
Showing 163 changed files with 12,962 additions and 4,706 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@
.idea
build
.vscode
venv/
136 changes: 71 additions & 65 deletions docs/api/gen_doc.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import multiprocessing
import platform
import extract_api_from_docs
from queue import Queue
"""
generate api_info_dict.json to describe all info about the apis.
"""
Expand Down Expand Up @@ -403,76 +404,81 @@ def set_display_attr_of_apis():
logger.info("set {} display to False".format(id_api))


def check_module_in_black_list(module_name):
black_module_list = [
'paddle.fluid',
]
for i in black_module_list:
if i in module_name:
return True
return False


def get_all_modules():
"""
get all modules from paddle
:return: module list
"""
module_str_queue = Queue()
module_str_queue.put('paddle')

MODULE_CLS = type(paddle)
module_list = []
while not module_str_queue.empty():
module_name = module_str_queue.get()
try:
module = importlib.import_module(module_name)
module_list.append(module)
for sub_module_str in dir(module):
if sub_module_str.startswith('_'):
continue
full_sub_module_path = '.'.join([module_name, sub_module_str])
sub_module = eval(full_sub_module_path)
if isinstance(sub_module, MODULE_CLS):
module_str_queue.put(full_sub_module_path)
except Exception as e:
continue

return module_list


def get_public_modules():
"""
get public modules from paddle
:return: module list
"""
public_module_list = []
all_modules = get_all_modules()
for module in all_modules:
if check_module_in_black_list(module.__name__):
logger.info('module %s in black module list', module.__name__)
continue
if hasattr(module, '__all__'):
api_in_module = module.__all__
if len(api_in_module) == 0:
logger.info('API in module %s is empty', module.__name__)
continue
public_module_list.append(module)
return public_module_list


def get_api_from_module(module):
"""
get api list from module
:param module: module object
:return: api list
"""
if not hasattr(module, '__all__'):
return []
return module.__all__


def set_api_sketch():
"""
set the in_api_sktech attr. may replace the set_display_attr_of_apis.
"""
global api_info_dict
modulelist = [ #noqa
paddle,
paddle.amp,
paddle.nn,
paddle.nn.functional,
paddle.nn.initializer,
paddle.nn.utils,
paddle.nn.quant.quant_layers,
paddle.static,
paddle.static.nn,
paddle.static.sparsity,
paddle.signal,
paddle.io,
paddle.jit,
paddle.metric,
paddle.distribution,
paddle.distribution.transform,
paddle.distribution.kl,
paddle.optimizer,
paddle.optimizer.lr,
paddle.regularizer,
paddle.text,
paddle.utils,
paddle.utils.download,
paddle.utils.profiler,
paddle.utils.cpp_extension,
paddle.utils.unique_name,
paddle.utils.dlpack,
paddle.sysconfig,
paddle.vision,
paddle.vision.datasets,
paddle.vision.models,
paddle.vision.transforms,
paddle.vision.ops,
paddle.distributed,
paddle.distributed.fleet,
paddle.distributed.fleet.utils,
paddle.distributed.fleet.base.topology,
paddle.distributed.parallel,
paddle.distributed.utils,
paddle.distributed.passes,
paddle.distributed.ps.utils,
paddle.distributed.ps.utils.ps_factory,
paddle.distributed.ps.the_one_ps,
paddle.distributed.sharding,
paddle.callbacks,
paddle.hub,
paddle.autograd,
paddle.incubate,
paddle.incubate.autograd,
paddle.incubate.nn,
paddle.incubate.nn.functional,
paddle.incubate.optimizer,
paddle.incubate.optimizer.functional,
paddle.incubate.operators,
paddle.incubate.operators.resnet_unit,
paddle.inference,
paddle.onnx,
paddle.device,
paddle.device.cuda,
paddle.linalg,
paddle.fft,
paddle.version,
paddle.profiler,
]
modulelist = get_public_modules()

alldict = {}
for module in modulelist:
Expand Down
2 changes: 2 additions & 0 deletions docs/api/index_cn.rst
Original file line number Diff line number Diff line change
Expand Up @@ -75,3 +75,5 @@ API 文档
| paddle.vision | 视觉领域API,包括 数据集 Cifar10 、数据处理 |
| | ColorJitter、常用基础网络结构 ResNet 等。 |
+-------------------------------+-------------------------------------------------------+
| paddle.sparse | 稀疏领域的API。 |
+-------------------------------+-------------------------------------------------------+
2 changes: 2 additions & 0 deletions docs/api/index_en.rst
Original file line number Diff line number Diff line change
Expand Up @@ -84,4 +84,6 @@ In this version, PaddlePaddle has made many optimizations to the APIs. You can r
| | data processing ColorJitter, and commonly used models |
| | like resnet |
+-------------------------------+-------------------------------------------------------+
| paddle.sparse | The Sparse domain API. |
+-------------------------------+-------------------------------------------------------+

13 changes: 13 additions & 0 deletions docs/api/paddle/Overview_cn.rst
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ paddle 目录下包含tensor、device、framework相关API以及某些高层API
- :ref:`framework相关 <about_framework>`
- :ref:`device相关 <about_device>`
- :ref:`高层API相关 <about_hapi>`
- :ref:`稀疏API相关 <about_sparse_api>`



Expand Down Expand Up @@ -386,3 +387,15 @@ device相关
" :ref:`paddle.Model <cn_api_paddle_Model>` ", "一个具备训练、测试、推理的神经网络"
" :ref:`paddle.summary <cn_api_paddle_summary>` ", "打印网络的基础结构和参数信息"
" :ref:`paddle.flops <cn_api_paddle_flops>` ", "打印网络的基础结构和参数信息"

.. _about_sparse_api:

稀疏API相关
::::::::::::::::::::

.. csv-table::
:header: "API名称", "API功能"
:widths: 10, 30

" :ref:`paddle.sparse.sparse_coo_tensor<cn_api_paddle_sparse_coo_tensor>` ", "创建一个COO(Coordinate)格式的稀疏Tensor"
" :ref:`paddle.sparse.sparse_csr_tensor<cn_api_paddle_sparse_csr_tensor>` ", "创建一个CSR(Compressed Sparse Row)格式的稀疏Tensor"
113 changes: 113 additions & 0 deletions docs/api/paddle/distribution/AbsTransform_cn.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
.. _cn_api_paddle_distribution_AbsTransform:

AbsTransform
-------------------------------

.. py:class:: paddle.distribution.AbsTransform()
取绝对值变换 :math:`y = |x|` .

``AbsTransform`` 不是双射变换,其逆变换处理逻辑如下:

* 当 :math:`y \in (0, +\infty )` , ``AbsTransform.inverse(y)`` 返回元组 ``(-y, y)`` .
* 当 :math:`y=0` , ``AbsTransform.inverse(y)`` 返回 ``(0, 0)`` .
* 当 :math:`y \in (-\infty, 0)` , 为了避免对 ``Tensor`` 数据进行判断带来性能下降,
``AbsTransform.inverse(y)`` 仍返回 ``(-y, y)`` , 注意这本质上是一个错误结果,仅仅出于
性能考虑。


代码示例
:::::::::

COPY-FROM: paddle.distribution.AbsTransform

方法
:::::::::

forward(x)
'''''''''

计算正变换 :math:`y=f(x)` 的结果。

**参数**

- **x** (Tensor) - 正变换输入参数,通常为 :ref:`cn_api_distribution_Distribution`
的随机采样结果。

**返回**

- **y** (Tensor) - 正变换的计算结果。


inverse(y)
'''''''''

计算逆变换 :math:`x = f^{-1}(y)`

**参数**

- **y** (Tensor) - 逆变换的输入参数。

**返回**

- **x** (Tensor) - 逆变换的计算结果。

forward_log_det_jacobian(x)
'''''''''

计算正变换雅可比行列式绝对值的对数。

如果变换不是一一映射,则雅可比矩阵不存在,返回 ``NotImplementedError`` .

**参数**

- **x** (Tensor) - 输入参数。

**返回**

- Tensor - 正变换雅可比行列式绝对值的对数。


inverse_log_det_jacobian(y)
'''''''''

计算逆变换雅可比行列式绝对值的对数。

与 ``forward_log_det_jacobian`` 互为负数。

**参数**

- **y** (Tensor) - 输入参数。

**返回**

- Tensor - 逆变换雅可比行列式绝对值的对数。


forward_shape(shape)
'''''''''

推断正变换输出形状。

**参数**

- **shape** (Sequence[int]) - 正变换输入的形状。

**返回**

- Sequence[int] - 正变换输出的形状。


inverse_shape(shape)
'''''''''

推断逆变换输出形状。

**参数**

- **shape** (Sequence[int]) - 逆变换输入的形状。

**返回**

- Sequence[int] - 逆变换输出的形状。

Loading

0 comments on commit e2f8bb4

Please sign in to comment.