提交 0caddd07 编写于 作者: C chentianyu03

Merge remote-tracking branch 'upstream/develop' into develop

...@@ -7,3 +7,4 @@ paddle/optimizer/Dpsgd_cn.rst ...@@ -7,3 +7,4 @@ paddle/optimizer/Dpsgd_cn.rst
paddle/reader/ComposeNotAligned_cn.rst paddle/reader/ComposeNotAligned_cn.rst
paddle/fluid/layers/scatter_cn.rst paddle/fluid/layers/scatter_cn.rst
paddle/tensor/manipulation/scatter_cn.rst paddle/tensor/manipulation/scatter_cn.rst
paddle/distributed/fleet/Fleet_cn.rst
# 调试方法 # 调试方法
本节内容将介绍动态图转静态图(下文简称动转静)推荐的几种调试方法。 本节内容将介绍动态图转静态图(下文简称:动转静)推荐的几种调试方法。
> **注解:**
>
> 请确保转换前的动态图代码能够成功运行,建议使用 [paddle.jit.ProgramTranslator().enable(False)](../../api_cn/dygraph_cn/ProgramTranslator_cn.html#enable)关闭动转静功能,直接运行动态图,如下:
注意:请确保转换前的动态图代码能够成功运行,建议使用[paddle.jit.ProgramTranslator().enable(False)](../../api_cn/dygraph_cn/ProgramTranslator_cn.html#enable)关闭动转静功能,直接运行动态图,如下:
```python ```python
import paddle import paddle
import numpy as np import numpy as np
...@@ -22,7 +25,7 @@ func(np.ones([3, 2])) ...@@ -22,7 +25,7 @@ func(np.ones([3, 2]))
## 断点调试 ## 断点调试
使用动转静功能时,您可以使用断点调试代码。 使用动转静功能时,您可以使用断点调试代码。
例如,在代码中,调用`pdb.set_trace()` 例如,在代码中,调用 `pdb.set_trace()`
```Python ```Python
import pdb import pdb
...@@ -49,7 +52,7 @@ func(np.ones([3, 2])) ...@@ -49,7 +52,7 @@ func(np.ones([3, 2]))
... ...
``` ```
如果您想在原始的动态图代码中使用调试器,请先调用[`paddle.jit.ProgramTranslator().enable(False)`](../../api_cn/dygraph_cn/ProgramTranslator_cn.html#enable),如下: 如果您想在原始的动态图代码中使用调试器,请先调用 [`paddle.jit.ProgramTranslator().enable(False)`](../../api_cn/dygraph_cn/ProgramTranslator_cn.html#enable),如下:
```python ```python
paddle.jit.ProgramTranslator().enable(False) paddle.jit.ProgramTranslator().enable(False)
func(np.ones([3, 2])) func(np.ones([3, 2]))
...@@ -65,7 +68,8 @@ func(np.ones([3, 2])) ...@@ -65,7 +68,8 @@ func(np.ones([3, 2]))
## 打印转换后的代码 ## 打印转换后的代码
您可以打印转换后的静态图代码,有2种方法: 您可以打印转换后的静态图代码,有2种方法:
1. 使用被装饰函数的`code` 属性 1. 使用被装饰后的函数的 `code` 属性
如下代码中,装饰器 `paddle.jit.to_static` 会将函数 `func` 转化为一个类对象 `StaticLayer`,可以使用 StaticLayer 的 `code` 属性来获得转化后的代码。
```Python ```Python
@paddle.jit.to_static @paddle.jit.to_static
def func(x): def func(x):
...@@ -94,54 +98,59 @@ func(np.ones([3, 2])) ...@@ -94,54 +98,59 @@ func(np.ones([3, 2]))
return x return x
``` ```
2. 使用`set_code_level(level)`或环境变量`TRANSLATOR_CODE_LEVEL=level` 2. 使用 `set_code_level(level)` 或环境变量 `TRANSLATOR_CODE_LEVEL=level`
通过调用`set_code_level`或设置环境变量`TRANSLATOR_CODE_LEVEL`,可以在log中查看转换后的代码 通过调用 `set_code_level` 或设置环境变量 `TRANSLATOR_CODE_LEVEL`,可以在日志中查看转换后的代码:
```python
@paddle.jit.to_static
def func(x):
x = paddle.to_tensor(x)
if x > 3:
x = x - 1
return x
paddle.jit.set_code_level() # 也可设置 os.environ["TRANSLATOR_CODE_LEVEL"] = '100',效果相同 ```python
func(np.ones([1])) @paddle.jit.to_static
``` def func(x):
运行结果: x = paddle.to_tensor(x)
if x > 3:
x = x - 1
return x
paddle.jit.set_code_level() # 也可设置 os.environ["TRANSLATOR_CODE_LEVEL"] = '100',效果相同
func(np.ones([1]))
```
运行结果:
```bash ```bash
2020-XX-XX 00:00:00,980-INFO: After the level 100 ast transformer: 'All Transformers', the transformed code: 2020-XX-XX 00:00:00,980-INFO: After the level 100 ast transformer: 'All Transformers', the transformed code:
def func(x): def func(x):
x = fluid.layers.assign(x) x = fluid.layers.assign(x)
def true_fn_0(x): def true_fn_0(x):
x = x - 1 x = x - 1
return x return x
def false_fn_0(x): def false_fn_0(x):
return x
x = fluid.dygraph.dygraph_to_static.convert_operators.convert_ifelse(x >
3, true_fn_0, false_fn_0, (x,), (x,), (x,))
return x return x
x = fluid.dygraph.dygraph_to_static.convert_operators.convert_ifelse(x > ```
3, true_fn_0, false_fn_0, (x,), (x,), (x,)) `set_code_level` 函数可以设置查看不同的AST Transformer转化后的代码,详情请见 [set_code_level](../../../paddle/api/paddle/fluid/dygraph/jit/set_code_level_cn.html)。
return x
```
`set_code_level` 函数可以设置查看不同的AST Transformer转化后的代码,详情请见[set_code_level]()<!--TODO:补充set_code_level文档链接-->。
## 使用 `print` ## 使用 `print`
`print` 函数可以用来查看变量,该函数在动转静中会被转化。当仅打印Paddle Tensor时,实际运行时会被转换为Paddle算子[Print](../../api_cn/layers_cn/Print_cn.html),否则仍然运行`print` `print` 函数可以用来查看变量,该函数在动转静中会被转化。当仅打印 Paddle Tensor 时,实际运行时会被转换为 Paddle 算子 [Print](../../api_cn/layers_cn/Print_cn.html),否则仍然运行 `print`
```python ```python
@paddle.jit.to_static @paddle.jit.to_static
def func(x): def func(x):
x = paddle.to_tensor(x) x = paddle.to_tensor(x)
# 打印x,x是Paddle Tensor,实际运行时会运行Paddle Print(x) # 打印x,x是Paddle Tensor,实际运行时会运行Paddle Print(x)
print(x) print(x)
# 打印注释,非Paddle Tensor,实际运行时仍运行print # 打印注释,非Paddle Tensor,实际运行时仍运行print
print("Here call print function.") print("Here call print function.")
if len(x) > 3: if len(x) > 3:
x = x - 1 x = x - 1
else: else:
x = paddle.ones(shape=[1]) x = paddle.ones(shape=[1])
return x return x
func(np.ones([1])) func(np.ones([1]))
``` ```
...@@ -159,18 +168,21 @@ Here call print function. ...@@ -159,18 +168,21 @@ Here call print function.
## 日志打印 ## 日志打印
ProgramTranslator在日志中记录了额外的调试信息,以帮助您了解动转静过程中函数是否被成功转换。 ProgramTranslator在日志中记录了额外的调试信息,以帮助您了解动转静过程中函数是否被成功转换。
您可以调用`paddle.jit.set_verbosity(level)` 或设置环境变量`TRANSLATOR_VERBOSITY=level`来设置日志详细等级,并查看不同等级的日志信息。目前,`level`可以取值0-3: 您可以调用 [`paddle.jit.set_verbosity(level)`]((../../../paddle/api/paddle/fluid/dygraph/jit/set_verbosity_cn.html)) 或设置环境变量 `TRANSLATOR_VERBOSITY=level` 来设置日志详细等级,并查看不同等级的日志信息。目前,`level` 可以取值0-3:
- 0: 无日志 - 0: 无日志
- 1: 包括了动转静转化流程的信息,如转换前的源码、转换的可调用对象 - 1: 包括了动转静转化流程的信息,如转换前的源码、转换的可调用对象
- 2: 包括以上信息,还包括更详细函数转化日志 - 2: 包括以上信息,还包括更详细函数转化日志
- 3: 包括以上信息,以及更详细的动转静日志 - 3: 包括以上信息,以及更详细的动转静日志
> **注意:**
>
> 日志中包括了源代码等信息,请在共享日志前确保它不包含敏感信息。
可以在代码运行前调用`paddle.jit.set_verbosity()` 可以在代码运行前调用 `paddle.jit.set_verbosity` 控制日志详细程度
```python ```python
paddle.jit.set_verbosity(3) paddle.jit.set_verbosity(3)
``` ```
或者设置环境变量`TRANSLATOR_VERBOSITY` 或者设置环境变量 `TRANSLATOR_VERBOSITY`
```python ```python
import os import os
os.environ["TRANSLATOR_VERBOSITY"] = '3' os.environ["TRANSLATOR_VERBOSITY"] = '3'
......
# Debugging Methods
This section will introduce several debugging methods recommended by Dynamic Graph to Static Graph (hereafter called Dynamic-to-Staic).
> **NOTE:**
>
> Please ensure that the dynamic graph code before transformation can run successfully. It is recommended to call [paddle.jit.ProgramTranslator().enable(False)](../../api/dygraph/ProgramTranslator_en.html#enable) to disable Dynamic-to-Static, and run dynamic graph code as follows:
```python
import paddle
import numpy as np
paddle.disable_static()
# Disable Dynamic-to-Static
paddle.jit.ProgramTranslator().enable(False)
@paddle.jit.to_static
def func(x):
x = paddle.to_tensor(x)
if x > 3:
x = x - 1
return x
func(np.ones([3, 2]))
```
## Breakpoint Debugging
When using Dynamic-to-Static, you can use breakpoints to debug.
For example, call `pdb.set_trace()` in your code:
```Python
import pdb
@paddle.jit.to_static
def func(x):
x = paddle.to_tensor(x)
pdb.set_trace()
if x > 3:
x = x - 1
return x
```
Executing the following code will land the debugger in the transformed static graph code:
```Python
func(np.ones([3, 2]))
```
```bash
> /tmp/tmpR809hf.py(6)func()
-> def true_fn_0(x):
(Pdb) n
> /tmp/tmpR809hf.py(6)func()
-> def false_fn_0(x):
...
```
Calling [`paddle.jit.ProgramTranslator().enable(False)`](../../api/dygraph/ProgramTranslator_en.html#enable) before executing the code will land the debugger in the original dynamic graph code:
```python
paddle.jit.ProgramTranslator().enable(False)
func(np.ones([3, 2]))
```
```bash
> <ipython-input-22-0bd4eab35cd5>(10)func()
-> if x > 3:
...
```
## Print Transformed Code
There are two ways to print the transformed static graph code:
1. Use the attribute `code` of the decorated function
In the following code, the decorator `paddle.jit.to_static` transforms `func` into a class object `StaticLayer`. You can use the `code` attribute of `StaticLayer` to get the transformed code.
```Python
@paddle.jit.to_static
def func(x):
x = paddle.to_tensor(x)
if x > 3:
x = x - 1
return x
print(func.code)
```
```bash
def func(x):
x = fluid.layers.assign(x)
def true_fn_0(x):
x = x - 1
return x
def false_fn_0(x):
return x
x = fluid.dygraph.dygraph_to_static.convert_operators.convert_ifelse(x >
3, true_fn_0, false_fn_0, (x,), (x,), (x,))
return x
```
2. Call `set_code_level(level)` or set environment variable `TRANSLATOR_CODE_LEVEL=level`
You can view the transformed code in the log by calling `set_code_level` or set environment variable `TRANSLATOR_CODE_LEVEL`.
```python
@paddle.jit.to_static
def func(x):
x = paddle.to_tensor(x)
if x > 3:
x = x - 1
return x
paddle.jit.set_code_level() # the same effect to set os.environ["TRANSLATOR_CODE_LEVEL"] = '100'
func(np.ones([1]))
```
```bash
2020-XX-XX 00:00:00,980-INFO: After the level 100 ast transformer: 'All Transformers', the transformed code:
def func(x):
x = fluid.layers.assign(x)
def true_fn_0(x):
x = x - 1
return x
def false_fn_0(x):
return x
x = fluid.dygraph.dygraph_to_static.convert_operators.convert_ifelse(x >
3, true_fn_0, false_fn_0, (x,), (x,), (x,))
return x
```
`set_code_level` can set different levels to view the code transformed by different ast transformers. For details, please refer to [set_code_level](../../../paddle/api/paddle/fluid/dygraph/jit/set_code_level_en.html)。
## `print`
You can call `print` to view variables. `print` will be transformed when using Dynamic-to-Static. When only Paddle Tensor is printed, `print` will be transformed and call Paddle operator [Print](../../api/layers/Print.html) in runtime. Otherwise, call python `print`.
```python
@paddle.jit.to_static
def func(x):
x = paddle.to_tensor(x)
# x is a Paddle Tensor, so it will run Paddle Print(x) actually.
print(x)
# The string is not a Paddle Tensor, so it will run print as-is.
print("Here call print function.")
if len(x) > 3:
x = x - 1
else:
x = paddle.ones(shape=[1])
return x
func(np.ones([1]))
```
```bash
Variable: assign_0.tmp_0
- lod: {}
- place: CPUPlace
- shape: [1]
- layout: NCHW
- dtype: double
- data: [1]
Here call print function.
```
## Log Printing
ProgramTranslator can log additional debugging information to help you know whether the function was successfully transformed or not.
You can call [`paddle.jit.set_verbosity(level)`](../../../paddle/api/paddle/fluid/dygraph/jit/set_verbosity_en.html) or set environment variable `TRANSLATOR_VERBOSITY=level` to enable logging and view logs of different levels. The argument `level` varies from 0 to 3:
- 0: no logging
- 1: includes the information in Dynamic-to-Static tranformation process, such as the source code not transformed, the callable object to transform and so on
- 2: includes above and more detailed function transformation logs
- 3: includes above and extremely verbose logging
> **WARNING:**
>
> The logs includes information such as source code. Please make sure logs don't contain any sensitive information before sharing them.
You can call `paddle.jit.set_verbosity` to control the verbosity level of logs:
```python
paddle.jit.set_verbosity(3)
```
or use the environment variable `TRANSLATOR_VERBOSITY`
```python
import os
os.environ["TRANSLATOR_VERBOSITY"] = '3'
```
```bash
2020-XX-XX 00:00:00,123-Level 1: Source code:
@paddle.jit.to_static
def func(x):
x = paddle.to_tensor(x)
if len(x) > 3:
x = x - 1
else:
x = paddle.ones(shape=[1])
return x
2020-XX-XX 00:00:00,152-Level 1: Convert callable object: convert <built-in function len>.
# 报错信息处理 # 报错信息处理
本节内容将介绍使用动态图转静态图(下文简称动转静)功能发生异常时,[ProgramTranslator](./program_translator_cn.html)对报错信息做的处理,以帮助您更好地理解动转静报错信息。使用动转静功能运行动态图代码时,内部可以分为2个步骤:动态图代码转换成静态图代码,运行静态图代码。接下来将分别介绍这2个步骤中的异常报错情况。 本节内容将介绍使用动态图转静态图(下文简称动转静)功能发生异常时,[ProgramTranslator](./program_translator_cn.html)对报错信息做的处理,以帮助您更好地理解动转静报错信息。使用动转静功能运行动态图代码时,内部可以分为2个步骤:动态图代码转换成静态图代码,运行静态图代码。接下来将分别介绍这2个步骤中的异常报错情况。
## 动转静过程中的异常 ## 动转静过程中的异常
在动态图代码转换成静态图代码的过程中,如果ProgramTranslator无法转换一个函数时,将会显示警告信息,并尝试直接运行该函数。 在动态图代码转换成静态图代码的过程中,如果ProgramTranslator无法转换一个函数时,将会显示警告信息,并尝试直接运行该函数。
如下代码中,函数`inner_func` 在调用前被转换成静态图代码,当`x = inner_func(data)`调用该函数时,不能重复转换,会给出警告信息: 如下代码中,函数 `inner_func` 在调用前被转换成静态图代码,当 `x = inner_func(data)` 调用该函数时,不能重复转换,会给出警告信息:
```python ```python
import paddle import paddle
import numpy as np import numpy as np
...@@ -21,12 +22,16 @@ def func(): ...@@ -21,12 +22,16 @@ def func():
return x return x
func() func()
``` ```
ProgramTranslator打印的警告信息如下: ProgramTranslator打印的警告信息如下:
```bash ```bash
WARNING: <function inner_func at 0x7fa9bcaacf50> doesn't have to be transformed to static function because it has been transformed before, it will be run as-is. WARNING: <function inner_func at 0x7fa9bcaacf50> doesn't have to be transformed to static function because it has been transformed before, it will be run as-is.
``` ```
## 运行转换后的代码报错 ## 运行转换后的代码报错
如果在动转静后的静态图代码中发生异常,ProgramTranslator会捕获该异常,增强异常报错信息,将静态图代码报错行映射到转换前的动态图代码,并重新抛出该异常。
如果在动转静后的静态图代码中发生异常,ProgramTranslator 会捕获该异常,增强异常报错信息,将静态图代码报错行映射到转换前的动态图代码,并重新抛出该异常。
重新抛出的异常具有以下特点: 重新抛出的异常具有以下特点:
- 隐藏了部分对用户无用的动转静过程调用栈; - 隐藏了部分对用户无用的动转静过程调用栈;
...@@ -34,6 +39,7 @@ WARNING: <function inner_func at 0x7fa9bcaacf50> doesn't have to be transformed ...@@ -34,6 +39,7 @@ WARNING: <function inner_func at 0x7fa9bcaacf50> doesn't have to be transformed
- 报错信息中包含了转换前的原始动态图代码; - 报错信息中包含了转换前的原始动态图代码;
例如,运行以下代码,在静态图构建时,即编译期会抛出异常: 例如,运行以下代码,在静态图构建时,即编译期会抛出异常:
```python ```python
import paddle import paddle
import numpy as np import numpy as np
...@@ -48,6 +54,7 @@ def func(x): ...@@ -48,6 +54,7 @@ def func(x):
func(np.ones([3, 2])) func(np.ones([3, 2]))
``` ```
运行结果: 运行结果:
```bash ```bash
Traceback (most recent call last): Traceback (most recent call last):
...@@ -68,7 +75,8 @@ AssertionError: In user code: ...@@ -68,7 +75,8 @@ AssertionError: In user code:
上述报错信息可以分为3点: 上述报错信息可以分为3点:
1. 报错栈中,涉及代码转换过程的信息栈默认会被隐藏,不对用户展示,以避免给用户带来困扰。 1. 报错栈中,涉及代码转换过程的信息栈默认会被隐藏,不进行展示,以减少干扰信息。
2. ProgramTranslator处理后的报错信息中,会包含提示"In user code:",表示之后的报错栈中,包含动转静前的动态图代码,即用户写的代码: 2. ProgramTranslator处理后的报错信息中,会包含提示"In user code:",表示之后的报错栈中,包含动转静前的动态图代码,即用户写的代码:
```bash ```bash
AssertionError: In user code: AssertionError: In user code:
...@@ -81,12 +89,14 @@ AssertionError: In user code: ...@@ -81,12 +89,14 @@ AssertionError: In user code:
"be -1. But received shape[%d] is also -1." % dim_idx) "be -1. But received shape[%d] is also -1." % dim_idx)
``` ```
其中,`File "<ipython-input-13-f9c3ea702e3a>", line 7, in func` 是转换前的代码位置信息,`x = fluid.layers.reshape(x, shape=[-1, -1])` 是转换前的代码。 其中,`File "<ipython-input-13-f9c3ea702e3a>", line 7, in func` 是转换前的代码位置信息,`x = fluid.layers.reshape(x, shape=[-1, -1])` 是转换前的代码。
3. 新的异常中,包含原始报错中的的报错信息,如下: 3. 新的异常中,包含原始报错中的的报错信息,如下:
```bash ```bash
AssertionError: Only one dimension value of 'shape' in reshape can be -1. But received shape[1] is also -1. AssertionError: Only one dimension value of 'shape' in reshape can be -1. But received shape[1] is also -1.
``` ```
运行以下代码,在静态图运行时,即运行期会抛出异常: 运行以下代码,在静态图运行时,即运行期会抛出异常:
```Python ```Python
@paddle.jit.to_static @paddle.jit.to_static
def func(x): def func(x):
...@@ -97,7 +107,9 @@ def func(x): ...@@ -97,7 +107,9 @@ def func(x):
func(np.ones([3]).astype("int32")) func(np.ones([3]).astype("int32"))
``` ```
运行结果: 运行结果:
```bash ```bash
Traceback (most recent call last): Traceback (most recent call last):
File "<ipython-input-57-c63d6a351262>", line 10, in <module>() File "<ipython-input-57-c63d6a351262>", line 10, in <module>()
...@@ -144,4 +156,5 @@ InvalidArgumentError: The 'shape' in ReshapeOp is invalid. The input tensor X'si ...@@ -144,4 +156,5 @@ InvalidArgumentError: The 'shape' in ReshapeOp is invalid. The input tensor X'si
[Hint: Expected capacity == in_size, but received capacity:2 != in_size:3.] (at /paddle/paddle/fluid/operators/reshape_op.cc:206) [Hint: Expected capacity == in_size, but received capacity:2 != in_size:3.] (at /paddle/paddle/fluid/operators/reshape_op.cc:206)
[operator < reshape2 > error] [operator < run_program > error] [operator < reshape2 > error] [operator < run_program > error]
``` ```
上述异常中,除了隐藏部分报错栈、报错定位到转换前的动态图代码外,报错信息中包含了C++报错栈`C++ Traceback``Error Message Summary`,这是Paddle的C++端异常信息,经处理后在Python的异常信息中显示。
上述异常中,除了隐藏部分报错栈、报错定位到转换前的动态图代码外,报错信息中包含了C++报错栈 `C++ Traceback``Error Message Summary`,这是 Paddle 的 C++ 端异常信息,经处理后在 Python 的异常信息中显示。
# Error Handling
This section will introduce the error information when an exception occurs, so as to help you better understand the Dynamic-to-Static error information.
When running the transformed static graph code, the internal procedure can be divided into two steps: the dynamic graph code is transformed into the static graph code, and the static graph code is run. We will introduce the error reporting in these two steps.
## Exceptions in Dynamic-to-Static Transformation
If ProgramTranslator cannot transform a function, it will display a warning message and try to run the function as-is.
In the following code, the function `inner_func` is transformed before calling. When calling `inner_func` in `x = inner_func(data)`, it is not allowed to transform repeatedly, and a warning message will be given:
```python
import paddle
import numpy as np
paddle.disable_static()
@paddle.jit.to_static
def func():
def inner_func(x):
x_tensor = paddle.to_tensor(x)
return x_tensor
data = np.ones([3]).astype("int32")
x = inner_func(data)
return x
func()
```
The warning message is as follows:
```bash
WARNING: <function inner_func at 0x7fa9bcaacf50> doesn't have to be transformed to static function because it has been transformed before, it will be run as-is.
```
## Exceptions in Running Transformed Code
When an exception occurs in the transformed code by ProgramTranslator, the exception is caught and the error message is augmented. It maps the error line of the static graph code to the un-transformed dynamic graph code, and then re-raises the exception.
Among the features of the re-raised exception:
- Some useless call stacks of Dynamic-to-Static are hidden;
- A prompt will be given before the un-transformed code: "In User Code:";
- The error message includes references to the original dynamic graph code before transformation;
For example, if executing the following code, an exception is raised when the static graph is built, that is, at compile time:
```python
import paddle
import numpy as np
paddle.disable_static()
@paddle.jit.to_static
def func(x):
x = paddle.to_tensor(x)
x = paddle.reshape(x, shape=[-1, -1])
return x
func(np.ones([3, 2]))
```
```bash
Traceback (most recent call last):
<ipython-input-13-f9c3ea702e3a> in <module>()
func(np.ones([3, 2]))
File "paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 332, in __call__
raise new_exception
AssertionError: In user code:
File "<ipython-input-13-f9c3ea702e3a>", line 7, in func
x = fluid.layers.reshape(x, shape=[-1, -1])
File "paddle/fluid/layers/nn.py", line 6193, in reshape
attrs["shape"] = get_attr_shape(shape)
File "paddle/fluid/layers/nn.py", line 6169, in get_attr_shape
"be -1. But received shape[%d] is also -1." % dim_idx)
AssertionError: Only one dimension value of 'shape' in reshape can be -1. But received shape[1] is also -1.
```
The above error information can be divided into three points:
1. In the error stack, the call stacks related to the code transformation process are hidden by default and not displayed, so as to avoid confusion.
2. In the error message processed by ProgramTranslator, a prompt "In user code:" will be included, which means that the following error stacks contains the original dynamic graph code, that is, the code written by the user:
```bash
AssertionError: In user code:
File "<ipython-input-13-f9c3ea702e3a>", line 7, in func
x = fluid.layers.reshape(x, shape=[-1, -1])
File "paddle/fluid/layers/nn.py", line 6193, in reshape
attrs["shape"] = get_attr_shape(shape)
File "paddle/fluid/layers/nn.py", line 6169, in get_attr_shape
"be -1. But received shape[%d] is also -1." % dim_idx)
```
`File "<ipython-input-13-f9c3ea702e3a>", line 7, in func` is the location information of un-transformed code, `x = fluid.layers.reshape(x, shape=[-1, -1])` is the un-transformed code.
3. The new exception contains the message that the exception originally reported, as follows:
```bash
AssertionError: Only one dimension value of 'shape' in reshape can be -1. But received shape[1] is also -1.
```
If execute the following code, an exception is raised when the static graph is executed at runtime:
```Python
@paddle.jit.to_static
def func(x):
x = paddle.to_tensor(x)
two = paddle.fill_constant(shape=[1], value=2, dtype="int32")
x = paddle.reshape(x, shape=[1, two])
return x
func(np.ones([3]).astype("int32"))
```
```bash
Traceback (most recent call last):
File "<ipython-input-57-c63d6a351262>", line 10, in <module>()
func(np.ones([3]).astype("int32"))
File "paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 332, in __call__
raise new_exception
EnforceNotMet: In user code:
File "<ipython-input-57-c63d6a351262>", line 7, in func
x = paddle.reshape(x, shape=[1, two])
File "paddle/tensor/manipulation.py", line 1347, in reshape
return paddle.fluid.layers.reshape(x=x, shape=shape, name=name)
File "paddle/fluid/layers/nn.py", line 6209, in reshape
"XShape": x_shape})
File "paddle/fluid/layer_helper.py", line 43, in append_op
return self.main_program.current_block().append_op(*args, **kwargs)
File "paddle/fluid/framework.py", line 2880, in append_op
attrs=kwargs.get("attrs", None))
File "paddle/fluid/framework.py", line 1977, in __init__
for frame in traceback.extract_stack():
--------------------------------------
C++ Traceback (most recent call last):
--------------------------------------
0 paddle::imperative::Tracer::TraceOp(std::string const&, paddle::imperative::NameVarBaseMap const&, paddle::imperative::NameVarBaseMap const&, paddle::framework::AttributeMap, paddle::platform::Place const&, bool)
1 paddle::imperative::OpBase::Run(paddle::framework::OperatorBase const&, paddle::imperative::NameVarBaseMap const&, paddle::imperative::NameVarBaseMap const&, paddle::framework::AttributeMap const&, paddle::platform::Place const&)
2 paddle::imperative::PreparedOp::Run(paddle::imperative::NameVarBaseMap const&, paddle::imperative::NameVarBaseMap const&, paddle::framework::AttributeMap const&)
3 std::_Function_handler<void (paddle::framework::ExecutionContext const&), paddle::framework::OpKernelRegistrarFunctor<paddle::platform::CPUPlace, false, 0ul, paddle::operators::RunProgramOpKernel<paddle::platform::CPUDeviceContext, float> >::operator()(char const*, char const*, int) const::{lambda(paddle::framework::ExecutionContext const&)#1}>::_M_invoke(std::_Any_data const&, paddle::framework::ExecutionContext const&)
4 paddle::operators::RunProgramOpKernel<paddle::platform::CPUDeviceContext, float>::Compute(paddle::framework::ExecutionContext const&) const
5 paddle::framework::Executor::RunPartialPreparedContext(paddle::framework::ExecutorPrepareContext*, paddle::framework::Scope*, long, long, bool, bool, bool)
6 paddle::framework::OperatorBase::Run(paddle::framework::Scope const&, paddle::platform::Place const&)
7 paddle::framework::OperatorWithKernel::RunImpl(paddle::framework::Scope const&, paddle::platform::Place const&) const
8 paddle::framework::OperatorWithKernel::RunImpl(paddle::framework::Scope const&, paddle::platform::Place const&, paddle::framework::RuntimeContext*) const
9 paddle::operators::ReshapeKernel::operator()(paddle::framework::ExecutionContext const&) const
10 paddle::operators::ReshapeOp::ValidateShape(std::vector<int, std::allocator<int> >, paddle::framework::DDim const&)
11 paddle::platform::EnforceNotMet::EnforceNotMet(std::string const&, char const*, int)
12 paddle::platform::GetCurrentTraceBackString()
----------------------
Error Message Summary:
----------------------
InvalidArgumentError: The 'shape' in ReshapeOp is invalid. The input tensor X'size must be equal to the capacity of 'shape'. But received X's shape = [3], X's size = 3, 'shape' is [1, 2], the capacity of 'shape' is 2.
[Hint: Expected capacity == in_size, but received capacity:2 != in_size:3.] (at /paddle/paddle/fluid/operators/reshape_op.cc:206)
[operator < reshape2 > error] [operator < run_program > error]
```
In the above exception, in addition to hiding part of the error stack and locating the error to the un-transformed dynamic graph code, the error information includes the c++ error stack `C++ Traceback` and `Error Message Summary`, which are the exception from C++ and are displayed in Python exception after processing.
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
- `支持语法列表 <grammar_list_cn.html>`_ :介绍了动态图转静态图支持的语法以及罗列不支持的语法写法 - `支持语法列表 <grammar_list_cn.html>`_ :介绍了动态图转静态图支持的语法以及罗列不支持的语法写法
- `报错信息处理 <error_handling_cn.html>`_ :介绍了动态图转静态图支持的报错信息处理方法 - `报错信息处理 <error_handling_cn.html>`_ :介绍了动态图转静态图的报错信息处理方法
- `调试方法 <debugging_cn.html>`_ :介绍了动态图转静态图支持的调试方法 - `调试方法 <debugging_cn.html>`_ :介绍了动态图转静态图支持的调试方法
......
...@@ -6,9 +6,15 @@ Dygraph to Static Graph ...@@ -6,9 +6,15 @@ Dygraph to Static Graph
- `Supported Grammars <grammar_list_en.html>`_ :Introduce the grammars supported by ProgramTranslator and list unsupport grammars. - `Supported Grammars <grammar_list_en.html>`_ :Introduce the grammars supported by ProgramTranslator and list unsupport grammars.
- `Error Handling <error_handling_en.html>`_ :Introduce the error handling by ProgramTranslator.
- `Debugging Methods <debugging_en.html>`_ :Introduce the debugging methods when using ProgramTranslator.
.. toctree:: .. toctree::
:hidden: :hidden:
grammar_list_en.rst grammar_list_en.rst
program_translator_en.rst program_translator_en.rst
error_handling_en.md
debugging_en.md
...@@ -88,8 +88,8 @@ paddle.nn ...@@ -88,8 +88,8 @@ paddle.nn
nn/Linear.rst nn/Linear.rst
nn/linear_lr_warmup.rst nn/linear_lr_warmup.rst
nn/log_loss.rst nn/log_loss.rst
nn/log_sigmoid.rst
nn/log_softmax.rst nn/log_softmax.rst
nn/logsigmoid.rst
nn/loss.rst nn/loss.rst
nn/lrn.rst nn/lrn.rst
nn/margin_rank_loss.rst nn/margin_rank_loss.rst
......
.. _api_nn_logsigmoid: .. _api_nn_log_sigmoid:
logsigmoid log_sigmoid
------------------------------- -------------------------------
.. autofunction:: paddle.nn.functional.logsigmoid .. autofunction:: paddle.nn.functional.log_sigmoid
:noindex: :noindex:
...@@ -6,5 +6,7 @@ jit ...@@ -6,5 +6,7 @@ jit
:maxdepth: 1 :maxdepth: 1
jit_cn/save_cn.rst jit_cn/save_cn.rst
jit_cn/set_code_level_cn.rst
jit_cn/set_verbosity_cn.rst
jit_cn/load_cn.rst jit_cn/load_cn.rst
jit_cn/SaveLoadConfig_cn.rst jit_cn/SaveLoadConfig_cn.rst
.. _cn_api_fluid_dygraph_jit_set_code_level:
set_code_level
-----------------
.. py:function:: paddle.fluid.dygraph.jit.set_code_level(level=100)
设置代码级别,打印该级别 AST Transformer 转化后的代码。
有两种方法设置代码级别:
1. 调用函数 ``set_code_level``
2. 设置环境变量 ``TRANSLATOR_CODE_LEVEL``
.. note::
函数 ``set_code_level`` 的优先级高于环境变量 ``TRANSLATOR_CODE_LEVEL``。
参数:
- **level** (int) - 打印的代码级别。默认值为100,这意味着打印的是所有 AST Transformer 转化后的代码。
**示例代码**
.. code-block:: python
import os
import paddle
paddle.jit.set_code_level(2)
# It will print the transformed code at level 2, which means to print the code after second transformer,
# as the date of August 28, 2020, it is CastTransformer.
os.environ['TRANSLATOR_CODE_LEVEL'] = '3'
# The code level is now 3, but it has no effect because it has a lower priority than `set_code_level`
.. _cn_api_fluid_dygraph_jit_set_verbosity:
set_verbosity
-----------------
.. py:function:: paddle.fluid.dygraph.jit.set_verbosity(level=0)
设置动态图转静态图的日志详细级别。
有两种方法设置日志详细级别:
1. 调用函数 ``set_verbosity``
2. 设置环境变量 ``TRANSLATOR_VERBOSITY``
.. note::
函数 ``set_verbosity`` 的优先级高于环境变量 ``TRANSLATOR_VERBOSITY``。
参数:
- **level** (int) - 日志详细级别。值越大,表示越详细。默认值为0,表示不显示日志。
**示例代码**
.. code-block:: python
import os
import paddle
paddle.jit.set_verbosity(1)
# The verbosity level is now 1
os.environ['TRANSLATOR_VERBOSITY'] = '3'
# The verbosity level is now 3, but it has no effect because it has a lower priority than `set_verbosity`
...@@ -6,5 +6,7 @@ jit ...@@ -6,5 +6,7 @@ jit
:maxdepth: 1 :maxdepth: 1
jit_cn/save_cn.rst jit_cn/save_cn.rst
jit_cn/set_code_level_cn.rst
jit_cn/set_verbosity.rst
jit_cn/load_cn.rst jit_cn/load_cn.rst
jit_cn/SaveLoadConfig_cn.rst jit_cn/SaveLoadConfig_cn.rst
\ No newline at end of file
.. _cn_api_imperative_jit_set_code_level:
set_code_level
-------------------------------
:doc_source: paddle.fluid.dygraph.jit.set_code_level
\ No newline at end of file
.. _cn_api_imperative_jit_set_verbosity:
set_verbosity
-------------------------------
:doc_source: paddle.fluid.dygraph.jit.set_verbosity
\ No newline at end of file
...@@ -29,11 +29,9 @@ abs ...@@ -29,11 +29,9 @@ abs
.. code-block:: python .. code-block:: python
import paddle import paddle
import numpy as np
paddle.disable_static() paddle.disable_static()
x_data = np.array([-1, -2, -3, -4]).astype(np.float32)
x = paddle.to_variable(x_data) x = paddle.to_tensor([-0.4, -0.2, 0.1, 0.3])
res = paddle.abs(x) out = paddle.abs(x)
print(res.numpy()) print(out.numpy())
# [1, 2, 3, 4] # [0.4 0.2 0.1 0.3]
...@@ -30,11 +30,9 @@ arccosine函数。 ...@@ -30,11 +30,9 @@ arccosine函数。
.. code-block:: python .. code-block:: python
import paddle import paddle
import numpy as np
paddle.disable_static() paddle.disable_static()
x_data = np.array([-0.8183, 0.4912, -0.6444, 0.0371]).astype(np.float32)
x = paddle.to_variable(x_data) x = paddle.to_tensor([-0.4, -0.2, 0.1, 0.3])
res = paddle.acos(x) out = paddle.acos(x)
print(res.numpy()) print(out.numpy())
# [2.5293, 1.0573, 2.2711, 1.5336] # [1.98231317 1.77215425 1.47062891 1.26610367]
...@@ -29,11 +29,9 @@ arcsine函数。 ...@@ -29,11 +29,9 @@ arcsine函数。
.. code-block:: python .. code-block:: python
import paddle import paddle
import numpy as np
paddle.disable_static() paddle.disable_static()
x_data = np.array([-0.8183, 0.4912, -0.6444, 0.0371]).astype(np.float32)
x = paddle.to_variable(x_data) x = paddle.to_tensor([-0.4, -0.2, 0.1, 0.3])
res = paddle.asin(x) out = paddle.asin(x)
print(res.numpy()) print(out.numpy())
# [-0.9585, 0.5135, -0.7003, 0.0372] # [-0.41151685 -0.20135792 0.10016742 0.30469265]
...@@ -29,11 +29,9 @@ arctangent函数。 ...@@ -29,11 +29,9 @@ arctangent函数。
.. code-block:: python .. code-block:: python
import paddle import paddle
import numpy as np
paddle.disable_static() paddle.disable_static()
x_data = np.array([-0.8183, 0.4912, -0.6444, 0.0371]).astype(np.float32)
x = paddle.to_variable(x_data) x = paddle.to_tensor([-0.4, -0.2, 0.1, 0.3])
res = paddle.atan(x) out = paddle.atan(x)
print(res.numpy()) print(out.numpy())
# [-0.6858, 0.4566, -0.5724, 0.0371] # [-0.38050638 -0.19739556 0.09966865 0.29145679]
...@@ -31,12 +31,9 @@ ceil ...@@ -31,12 +31,9 @@ ceil
.. code-block:: python .. code-block:: python
import paddle import paddle
import numpy as np
paddle.disable_static() paddle.disable_static()
x_data = np.array([[-1.5,6],[1,15.6]]).astype(np.float32)
x = paddle.to_variable(x_data) x = paddle.to_tensor([-0.4, -0.2, 0.1, 0.3])
res = paddle.ceil(x) out = paddle.ceil(x)
print(res.numpy()) print(out.numpy())
# [[-1. 6.] # [-0. -0. 1. 1.]
# [ 1. 16.]]
...@@ -32,12 +32,9 @@ cos ...@@ -32,12 +32,9 @@ cos
.. code-block:: python .. code-block:: python
import paddle import paddle
import numpy as np
paddle.disable_static() paddle.disable_static()
x_data = np.array([[-1,np.pi],[1,15.6]]).astype(np.float32)
x = paddle.to_variable(x_data) x = paddle.to_tensor([-0.4, -0.2, 0.1, 0.3])
res = paddle.cos(x) out = paddle.cos(x)
print(res.numpy()) print(out.numpy())
# [[ 0.54030231 -1. ] # [0.92106099 0.98006658 0.99500417 0.95533649]
# [ 0.54030231 -0.99417763]]
...@@ -5,12 +5,6 @@ logsigmoid ...@@ -5,12 +5,6 @@ logsigmoid
.. py:function:: paddle.fluid.layers.logsigmoid(x, name=None) .. py:function:: paddle.fluid.layers.logsigmoid(x, name=None)
:alias_main: paddle.nn.functional.logsigmoid
:alias: paddle.nn.functional.logsigmoid,paddle.nn.functional.activation.logsigmoid
:old_api: paddle.fluid.layers.logsigmoid
Logsigmoid激活函数 Logsigmoid激活函数
......
...@@ -109,8 +109,8 @@ paddle.nn ...@@ -109,8 +109,8 @@ paddle.nn
nn_cn/leaky_relu_cn.rst nn_cn/leaky_relu_cn.rst
nn_cn/Linear_cn.rst nn_cn/Linear_cn.rst
nn_cn/linear_lr_warmup_cn.rst nn_cn/linear_lr_warmup_cn.rst
nn_cn/logsigmoid_cn.rst
nn_cn/log_loss_cn.rst nn_cn/log_loss_cn.rst
nn_cn/log_sigmoid_cn.rst
nn_cn/log_softmax_cn.rst nn_cn/log_softmax_cn.rst
nn_cn/lrn_cn.rst nn_cn/lrn_cn.rst
nn_cn/margin_ranking_loss_cn.rst nn_cn/margin_ranking_loss_cn.rst
......
.. _cn_api_nn_Dropout:
Dropout
-------------------------------
.. py:function:: paddle.nn.Dropout(p=0.5, axis=None, mode="upscale_in_train”, name=None)
Dropout是一种正则化手段,该算子根据给定的丢弃概率 `p` ,在训练过程中随机将一些神经元输出设置为0,通过阻止神经元节点间的相关性来减少过拟合。论文请参考: `Improving neural networks by preventing co-adaptation of feature detectors <https://arxiv.org/abs/1207.0580>`_
在动态图模式下,请使用模型的 `eval()` 方法切换至测试阶段。
.. note::
对应的 `functional方法` 请参考: :ref:`cn_api_nn_functional_dropout` 。
参数
:::::::::
- **p** (float): 将输入节点置为0的概率, 即丢弃概率。默认: 0.5。
- **axis** (int|list): 指定对输入 `Tensor` 进行Dropout操作的轴。默认: None。
- **mode** (str): 丢弃单元的方式,有两种'upscale_in_train'和'downscale_in_infer',默认: 'upscale_in_train'。计算方法如下:
1. upscale_in_train, 在训练时增大输出结果。
- train: out = input * mask / ( 1.0 - p )
- inference: out = input
2. downscale_in_infer, 在预测时减小输出结果
- train: out = input * mask
- inference: out = input * (1.0 - p)
- **name** (str,可选): 操作的名称(可选,默认值为None)。更多信息请参见 :ref:`api_guide_Name` 。
形状
:::::::::
- **输入** : N-D `Tensor` 。
- **输出** : N-D `Tensor` ,形状与输入相同。
代码示例
:::::::::
.. code-block:: python
import paddle
import numpy as np
paddle.disable_static()
x = np.array([[1,2,3], [4,5,6]]).astype('float32')
x = paddle.to_tensor(x)
m = paddle.nn.Dropout(p=0.5)
y_train = m(x)
m.eval() # switch the model to test phase
y_test = m(x)
print(x.numpy())
print(y_train.numpy())
print(y_test.numpy())
...@@ -52,7 +52,7 @@ MaxPool1d ...@@ -52,7 +52,7 @@ MaxPool1d
import numpy as np import numpy as np
paddle.disable_static() paddle.disable_static()
data = paddle.to_variable(np.random.uniform(-1, 1, [1, 3, 32]).astype(np.float32)) data = paddle.to_tensor(np.random.uniform(-1, 1, [1, 3, 32]).astype(np.float32))
MaxPool1d = nn.layer.MaxPool1d(kernel_size=2, stride=2, padding=0) MaxPool1d = nn.layer.MaxPool1d(kernel_size=2, stride=2, padding=0)
pool_out = MaxPool1d(data) pool_out = MaxPool1d(data)
# pool_out shape: [1, 3, 16] # pool_out shape: [1, 3, 16]
......
...@@ -30,12 +30,9 @@ PairwiseDistance ...@@ -30,12 +30,9 @@ PairwiseDistance
.. code-block:: python .. code-block:: python
import paddle import paddle
import numpy as np
paddle.disable_static() paddle.disable_static()
x_np = np.array([[1., 3.], [3., 5.]]).astype(np.float64) x = paddle.to_tensor([[1., 3.], [3., 5.]], dtype='float64')
y_np = np.array([[5., 6.], [7., 8.]]).astype(np.float64) y = paddle.to_tensor([[5., 6.], [7., 8.]], dtype='float64')
x = paddle.to_variable(x_np)
y = paddle.to_variable(y_np)
dist = paddle.nn.PairwiseDistance() dist = paddle.nn.PairwiseDistance()
distance = dist(x, y) distance = dist(x, y)
print(distance.numpy()) # [5. 5.] print(distance.numpy()) # [5. 5.]
......
...@@ -62,3 +62,27 @@ SyncBatchNorm ...@@ -62,3 +62,27 @@ SyncBatchNorm
print(hidden1.numpy()) print(hidden1.numpy())
# [[[[0.26824948, 1.0936325],[0.26824948, -1.6301316]],[[ 0.8095662, -0.665287],[-1.2744656, 1.1301866 ]]]] # [[[[0.26824948, 1.0936325],[0.26824948, -1.6301316]],[[ 0.8095662, -0.665287],[-1.2744656, 1.1301866 ]]]]
方法
:::::::::
convert_sync_batchnorm(layer)
'''''''''''''''''''''''''''''
该接口用于把 ``BatchNorm*d`` 层转换为 ``SyncBatchNorm`` 层。
参数:
- **layer** (paddle.nn.Layer) - 包含一个或多个 ``BatchNorm*d`` 层的模型。
返回:
如果原始模型中有 ``BatchNorm*d`` 层, 则把 ``BatchNorm*d`` 层转换为 ``SyncBatchNorm`` 层的原始模型。
**代码示例**
.. code-block:: python
import paddle
import paddle.nn as nn
paddle.disable_static()
model = nn.Sequential(nn.Conv2d(3, 5, 3), nn.BatchNorm2d(5))
sync_model = nn.SyncBatchNorm.convert_sync_batchnorm(model)
...@@ -38,6 +38,6 @@ Hardshrink激活层 ...@@ -38,6 +38,6 @@ Hardshrink激活层
paddle.disable_static() paddle.disable_static()
x = paddle.to_variable(np.array([-1, 0.3, 2.5])) x = paddle.to_tensor([-1, 0.3, 2.5])
m = paddle.nn.Hardshrink() m = paddle.nn.Hardshrink()
out = m(x) # [-1., 0., 2.5] out = m(x) # [-1., 0., 2.5]
.. _cn_api_nn_cn_dropout:
dropout
-------------------------------
:doc_source: paddle.fluid.layers.dropout
...@@ -40,14 +40,11 @@ l1_loss ...@@ -40,14 +40,11 @@ l1_loss
.. code-block:: python .. code-block:: python
import numpy as np import paddle
import paddle
paddle.disable_static() paddle.disable_static()
input_data = np.array([[1.5, 0.8], [0.2, 1.3]]).astype("float32")
label_data = np.array([[1.7, 1], [0.4, 0.5]]).astype("float32") input = paddle.to_tensor([[1.5, 0.8], [0.2, 1.3]])
input = paddle.to_variable(input_data) label = paddle.to_tensor([[1.7, 1], [0.4, 0.5]])
label = paddle.to_variable(label_data)
l1_loss = paddle.nn.functional.l1_loss(input, label) l1_loss = paddle.nn.functional.l1_loss(input, label)
print(l1_loss.numpy()) print(l1_loss.numpy())
......
...@@ -40,13 +40,11 @@ Tensor, 如果 :attr:`reduction` 为 ``'sum'`` 或者是 ``'mean'`` ,则形状 ...@@ -40,13 +40,11 @@ Tensor, 如果 :attr:`reduction` 为 ``'sum'`` 或者是 ``'mean'`` ,则形状
.. code-block:: python .. code-block:: python
import numpy as np import paddle
import paddle
paddle.disable_static() paddle.disable_static()
input = paddle.to_variable(np.array([[1, 2], [3, 4]]).astype('float32')) input = paddle.to_tensor([[1, 2], [3, 4]], dtype='float32')
other = paddle.to_variable(np.array([[2, 1], [2, 4]]).astype('float32')) other = paddle.to_tensor([[2, 1], [2, 4]], dtype='float32')
label = paddle.to_variable(np.array([[1, -1], [-1, -1]]).astype('float32')) label = paddle.to_tensor([[1, -1], [-1, -1]], dtype='float32')
loss = paddle.nn.functional.margin_ranking_loss(input, other, label) loss = paddle.nn.functional.margin_ranking_loss(input, other, label)
print(loss.numpy()) # [0.75] print(loss.numpy()) # [0.75]
...@@ -58,8 +58,8 @@ mse_loss ...@@ -58,8 +58,8 @@ mse_loss
# [array([0.04000002], dtype=float32)] # [array([0.04000002], dtype=float32)]
# dynamic graph mode # dynamic graph mode
paddle.disable_static() paddle.disable_static()
input = paddle.to_variable(input_data) input = paddle.to_tensor(input_data)
label = paddle.to_variable(label_data) label = paddle.to_tensor(label_data)
output = mse_loss(input, label) output = mse_loss(input, label)
print(output.numpy()) print(output.numpy())
# [0.04000002] # [0.04000002]
......
...@@ -38,8 +38,8 @@ nll_loss ...@@ -38,8 +38,8 @@ nll_loss
place = paddle.CPUPlace() place = paddle.CPUPlace()
paddle.disable_static(place) paddle.disable_static(place)
input = paddle.to_variable(input_np) input = paddle.to_tensor(input_np)
log_out = log_softmax(input) log_out = log_softmax(input)
label = paddle.to_variable(label_np) label = paddle.to_tensor(label_np)
result = nll_loss(log_out, label) result = nll_loss(log_out, label)
print(result.numpy()) # [1.0720209] print(result.numpy()) # [1.0720209]
...@@ -42,7 +42,7 @@ normalize ...@@ -42,7 +42,7 @@ normalize
paddle.disable_static() paddle.disable_static()
x = np.arange(6, dtype=np.float32).reshape(2,3) x = np.arange(6, dtype=np.float32).reshape(2,3)
x = paddle.to_variable(x) x = paddle.to_tensor(x)
y = F.normalize(x) y = F.normalize(x)
print(y.numpy()) print(y.numpy())
# [[0. 0.4472136 0.8944272 ] # [[0. 0.4472136 0.8944272 ]
......
...@@ -24,12 +24,10 @@ sigmoid 激活函数。 ...@@ -24,12 +24,10 @@ sigmoid 激活函数。
::::::::: :::::::::
.. code-block:: python .. code-block:: python
import numpy as np
import paddle import paddle
import paddle.nn.functional as F import paddle.nn.functional as F
paddle.disable_static() paddle.disable_static()
input_data = np.array([1.0, 2.0, 3.0, 4.0]).astype('float32') x = paddle.to_tensor([1.0, 2.0, 3.0, 4.0])
x = paddle.to_variable(input_data)
output = F.sigmoid(x) output = F.sigmoid(x)
print(output.numpy()) # [0.7310586, 0.880797, 0.95257413, 0.98201376] print(output.numpy()) # [0.7310586, 0.880797, 0.95257413, 0.98201376]
...@@ -34,9 +34,7 @@ hardshrink激活层。计算公式如下: ...@@ -34,9 +34,7 @@ hardshrink激活层。计算公式如下:
import paddle import paddle
import paddle.nn.functional as F import paddle.nn.functional as F
import numpy as np
paddle.disable_static() paddle.disable_static()
x = paddle.to_tensor([-1, 0.3, 2.5])
x = paddle.to_variable(np.array([-1, 0.3, 2.5]))
out = F.hardshrink(x) # [-1., 0., 2.5] out = F.hardshrink(x) # [-1., 0., 2.5]
...@@ -29,12 +29,10 @@ Sigmoid ...@@ -29,12 +29,10 @@ Sigmoid
.. code-block:: python .. code-block:: python
import numpy as np
import paddle import paddle
paddle.disable_static() paddle.disable_static()
input_data = np.array([1.0, 2.0, 3.0, 4.0]).astype('float32')
m = paddle.nn.Sigmoid() m = paddle.nn.Sigmoid()
x = paddle.to_variable(input_data) x = paddle.to_tensor([1.0, 2.0, 3.0, 4.0])
output = m(x) output = m(x)
print(output.numpy()) # [0.7310586, 0.880797, 0.95257413, 0.98201376 print(output.numpy()) # [0.7310586, 0.880797, 0.95257413, 0.98201376
.. _cn_api_nn_cn_logsigmoid: .. _cn_api_nn_cn_log_sigmoid:
logsigmoid log_sigmoid
------------------------------- -------------------------------
.. py:function:: paddle.nn.functional.logsigmoid(x, name=None) .. py:function:: paddle.nn.functional.log_sigmoid(x, name=None)
logsigmoid激活层。计算公式如下: log_sigmoid激活层。计算公式如下:
.. math:: .. math::
logsigmoid(x) = \log \frac{1}{1 + e^{-x}} log\_sigmoid(x) = \log \frac{1}{1 + e^{-x}}
其中,:math:`x` 为输入的 Tensor 其中,:math:`x` 为输入的 Tensor
...@@ -29,9 +29,8 @@ logsigmoid激活层。计算公式如下: ...@@ -29,9 +29,8 @@ logsigmoid激活层。计算公式如下:
import paddle import paddle
import paddle.nn.functional as F import paddle.nn.functional as F
import numpy as np
paddle.disable_static() paddle.disable_static()
x = paddle.to_tensor(np.array([1.0, 2.0, 3.0, 4.0])) x = paddle.to_tensor([1.0, 2.0, 3.0, 4.0])
out = F.logsigmoid(x) # [-0.313262 -0.126928 -0.0485874 -0.0181499] out = F.log_sigmoid(x) # [-0.313262 -0.126928 -0.0485874 -0.0181499]
...@@ -39,14 +39,11 @@ L1Loss ...@@ -39,14 +39,11 @@ L1Loss
.. code-block:: python .. code-block:: python
import numpy as np
import paddle import paddle
paddle.disable_static() paddle.disable_static()
input_data = np.array([[1.5, 0.8], [0.2, 1.3]]).astype("float32") input = paddle.to_tensor([[1.5, 0.8], [0.2, 1.3]])
label_data = np.array([[1.7, 1], [0.4, 0.5]]).astype("float32") label = paddle.to_tensor([[1.7, 1], [0.4, 0.5]])
input = paddle.to_variable(input_data)
label = paddle.to_variable(label_data)
l1_loss = paddle.nn.loss.L1Loss() l1_loss = paddle.nn.loss.L1Loss()
output = l1_loss(input, label) output = l1_loss(input, label)
......
...@@ -63,8 +63,8 @@ MSELoss ...@@ -63,8 +63,8 @@ MSELoss
# dynamic graph mode # dynamic graph mode
paddle.disable_static() paddle.disable_static()
input = paddle.to_variable(input_data) input = paddle.to_tensor(input_data)
label = paddle.to_variable(label_data) label = paddle.to_tensor(label_data)
output = mse_loss(input, label) output = mse_loss(input, label)
print(output.numpy()) print(output.numpy())
# [0.04000002] # [0.04000002]
...@@ -46,15 +46,12 @@ MarginRankingLoss ...@@ -46,15 +46,12 @@ MarginRankingLoss
.. code-block:: python .. code-block:: python
import numpy as np
import paddle import paddle
paddle.disable_static() paddle.disable_static()
input = paddle.to_variable(np.array([[1, 2], [3, 4]]).astype("float32")) input = paddle.to_tensor([[1, 2], [3, 4]], dtype='float32')
other = paddle.to_variable(np.array([[2, 1], [2, 4]]).astype("float32")) other = paddle.to_tensor([[2, 1], [2, 4]], dtype='float32')
label = paddle.to_variable(np.array([[1, -1], [-1, -1]]).astype("float32")) label = paddle.to_tensor([[1, -1], [-1, -1]], dtype='float32')
margin_rank_loss = paddle.nn.MarginRankingLoss() margin_rank_loss = paddle.nn.MarginRankingLoss()
loss = margin_rank_loss(input, other, label) loss = margin_rank_loss(input, other, label)
print(loss.numpy()) # [0.75] print(loss.numpy()) # [0.75]
...@@ -63,8 +63,8 @@ NLLLoss ...@@ -63,8 +63,8 @@ NLLLoss
place = paddle.CPUPlace() place = paddle.CPUPlace()
paddle.disable_static(place) paddle.disable_static(place)
input = paddle.to_variable(input_np) input = paddle.to_tensor(input_np)
log_out = log_softmax(input) log_out = log_softmax(input)
label = paddle.to_variable(label_np) label = paddle.to_tensor(label_np)
result = nll_loss(log_out, label) result = nll_loss(log_out, label)
print(result.numpy()) # [1.0720209] print(result.numpy()) # [1.0720209]
...@@ -31,7 +31,7 @@ dot ...@@ -31,7 +31,7 @@ dot
paddle.disable_static() paddle.disable_static()
x_data = np.random.uniform(0.1, 1, [10]).astype(np.float32) x_data = np.random.uniform(0.1, 1, [10]).astype(np.float32)
y_data = np.random.uniform(1, 3, [10]).astype(np.float32) y_data = np.random.uniform(1, 3, [10]).astype(np.float32)
x = paddle.to_variable(x_data) x = paddle.to_tensor(x_data)
y = paddle.to_variable(y_data) y = paddle.to_tensor(y_data)
z = paddle.dot(x, y) z = paddle.dot(x, y)
print(z.numpy()) print(z.numpy())
.. _cn_api_paddle_tensor_gather .. _cn_api_paddle_tensor_gather
gather gather
------------------------------- -------------------------------
......
...@@ -34,9 +34,8 @@ max ...@@ -34,9 +34,8 @@ max
# data_x is a variable with shape [2, 4] # data_x is a variable with shape [2, 4]
# the axis is a int element # the axis is a int element
data_x = np.array([[0.2, 0.3, 0.5, 0.9], x = paddle.to_tensor([[0.2, 0.3, 0.5, 0.9],
[0.1, 0.2, 0.6, 0.7]]) [0.1, 0.2, 0.6, 0.7]])
x = paddle.to_variable(data_x)
result1 = paddle.max(x) result1 = paddle.max(x)
print(result1.numpy()) print(result1.numpy())
#[0.9] #[0.9]
...@@ -53,9 +52,8 @@ max ...@@ -53,9 +52,8 @@ max
# data_y is a variable with shape [2, 2, 2] # data_y is a variable with shape [2, 2, 2]
# the axis is list # the axis is list
data_y = np.array([[[1.0, 2.0], [3.0, 4.0]], y = paddle.to_tensor([[[1.0, 2.0], [3.0, 4.0]],
[[5.0, 6.0], [7.0, 8.0]]]) [[5.0, 6.0], [7.0, 8.0]]])
y = paddle.to_variable(data_y)
result5 = paddle.max(y, axis=[1, 2]) result5 = paddle.max(y, axis=[1, 2])
print(result5.numpy()) print(result5.numpy())
#[4. 8.] #[4. 8.]
......
...@@ -58,39 +58,30 @@ maximum ...@@ -58,39 +58,30 @@ maximum
import paddle import paddle
import numpy as np import numpy as np
paddle.disable_static() paddle.disable_static()
x_data = np.array([[1, 2], [3, 4]], dtype=np.float32) x = paddle.to_tensor([[1, 2], [3, 4]])
y_data = np.array([[5, 6], [7, 8]], dtype=np.float32) y = paddle.to_tensor([[5, 6], [7, 8]])
x = paddle.to_variable(x_data)
y = paddle.to_variable(y_data)
res = paddle.maximum(x, y) res = paddle.maximum(x, y)
print(res.numpy()) print(res.numpy())
#[[5. 6.] #[[5. 6.]
# [7. 8.]] # [7. 8.]]
x_data = np.array([[[1, 2, 3], [1, 2, 3]]], dtype=np.float32) x = paddle.to_tensor([[[1, 2, 3], [1, 2, 3]]])
y_data = np.array([1, 2], dtype=np.float32) y = paddle.to_tensor([1, 2])
x = paddle.to_variable(x_data)
y = paddle.to_variable(y_data)
res = paddle.maximum(x, y, axis=1) res = paddle.maximum(x, y, axis=1)
print(res.numpy()) print(res.numpy())
#[[[1. 2. 3.] #[[[1. 2. 3.]
# [2. 2. 3.]]] # [2. 2. 3.]]]
x_data = np.array([2, 3, 5], dtype=np.float32) x = paddle.to_tensor([2, 3, 5], dtype='float32')
y_data = np.array([1, 4, np.nan], dtype=np.float32) y = paddle.to_tensor([1, 4, np.nan], dtype='float32')
x = paddle.to_variable(x_data)
y = paddle.to_variable(y_data)
res = paddle.maximum(x, y) res = paddle.maximum(x, y)
print(res.numpy()) print(res.numpy())
#[ 2. 4. nan] #[ 2. 4. nan]
x_data = np.array([5, 3, np.inf], dtype=np.float32) x = paddle.to_tensor([5, 3, np.inf], dtype='float32')
y_data = np.array([1, 4, 5], dtype=np.float32) y = paddle.to_tensor([1, 4, 5], dtype='float32')
x = paddle.to_variable(x_data)
y = paddle.to_variable(y_data)
res = paddle.maximum(x, y) res = paddle.maximum(x, y)
print(res.numpy()) print(res.numpy())
#[ 5. 4. inf] #[ 5. 4. inf]
...@@ -26,16 +26,12 @@ min ...@@ -26,16 +26,12 @@ min
:::::::::: ::::::::::
.. code-block:: python .. code-block:: python
import numpy as np
import paddle import paddle
paddle.disable_static() paddle.disable_static()
# data_x is a variable with shape [2, 4]
# the axis is a int element # the axis is a int element
data_x = np.array([[0.2, 0.3, 0.5, 0.9], x = paddle.to_tensor([[0.2, 0.3, 0.5, 0.9],
[0.1, 0.2, 0.6, 0.7]]) [0.1, 0.2, 0.6, 0.7]])
x = paddle.to_variable(data_x)
result1 = paddle.min(x) result1 = paddle.min(x)
print(result1.numpy()) print(result1.numpy())
#[0.1] #[0.1]
...@@ -50,11 +46,9 @@ min ...@@ -50,11 +46,9 @@ min
#[[0.2] #[[0.2]
# [0.1]] # [0.1]]
# data_y is a variable with shape [2, 2, 2]
# the axis is list # the axis is list
data_y = np.array([[[1.0, 2.0], [3.0, 4.0]], y = paddle.to_tensor([[[1.0, 2.0], [3.0, 4.0]],
[[5.0, 6.0], [7.0, 8.0]]]) [[5.0, 6.0], [7.0, 8.0]]])
y = paddle.to_variable(data_y)
result5 = paddle.min(y, axis=[1, 2]) result5 = paddle.min(y, axis=[1, 2])
print(result5.numpy()) print(result5.numpy())
#[1. 5.] #[1. 5.]
......
...@@ -61,36 +61,28 @@ minimum ...@@ -61,36 +61,28 @@ minimum
import numpy as np import numpy as np
paddle.disable_static() paddle.disable_static()
x_data = np.array([[1, 2], [3, 4]], dtype=np.float32) x = paddle.to_tensor([[1, 2], [3, 4]], dtype='float32')
y_data = np.array([[5, 6], [7, 8]], dtype=np.float32) y = paddle.to_tensor([[5, 6], [7, 8]], dtype='float32')
x = paddle.to_variable(x_data)
y = paddle.to_variable(y_data)
res = paddle.minimum(x, y) res = paddle.minimum(x, y)
print(res.numpy()) print(res.numpy())
#[[1. 2.] #[[1. 2.]
# [3. 4.]] # [3. 4.]]
x_data = np.array([[[1, 2, 3], [1, 2, 3]]], dtype=np.float32) x = paddle.to_tensor([[[1, 2, 3], [1, 2, 3]]], dtype='float32')
y_data = np.array([1, 2], dtype=np.float32) y = paddle.to_tensor([1, 2], dtype='float32')
x = paddle.to_variable(x_data)
y = paddle.to_variable(y_data)
res = paddle.minimum(x, y, axis=1) res = paddle.minimum(x, y, axis=1)
print(res.numpy()) print(res.numpy())
#[[[1. 1. 1.] #[[[1. 1. 1.]
# [2. 2. 2.]]] # [2. 2. 2.]]]
x_data = np.array([2, 3, 5], dtype=np.float32) x = paddle.to_tensor([2, 3, 5], dtype='float32')
y_data = np.array([1, 4, np.nan], dtype=np.float32) y = paddle.to_tensor([1, 4, np.nan], dtype='float32')
x = paddle.to_variable(x_data)
y = paddle.to_variable(y_data)
res = paddle.minimum(x, y) res = paddle.minimum(x, y)
print(res.numpy()) print(res.numpy())
#[ 1. 3. nan] #[ 1. 3. nan]
x_data = np.array([5, 3, np.inf], dtype=np.float32) x = paddle.to_tensor([5, 3, np.inf], dtype='float32')
y_data = np.array([1, 4, 5], dtype=np.float32) y = paddle.to_tensor([1, 4, 5], dtype='float32')
x = paddle.to_variable(x_data)
y = paddle.to_variable(y_data)
res = paddle.minimum(x, y) res = paddle.minimum(x, y)
print(res.numpy()) print(res.numpy())
#[1. 3. 5.] #[1. 3. 5.]
...@@ -30,11 +30,9 @@ sqrt ...@@ -30,11 +30,9 @@ sqrt
.. code-block:: python .. code-block:: python
import numpy as np
import paddle import paddle
paddle.disable_static() paddle.disable_static()
x_data = np.array([0.1, 0.2, 0.3, 0.4]) x = paddle.to_tensor([0.1, 0.2, 0.3, 0.4])
x = paddle.to_variable(x_data)
out = paddle.sqrt(x) out = paddle.sqrt(x)
print(out.numpy()) print(out.numpy())
# [0.31622777 0.4472136 0.54772256 0.63245553] # [0.31622777 0.4472136 0.54772256 0.63245553]
...@@ -67,16 +67,10 @@ stack ...@@ -67,16 +67,10 @@ stack
.. code-block:: python .. code-block:: python
import paddle import paddle
import numpy as np
data1 = np.array([[1.0, 2.0]])
data2 = np.array([[3.0, 4.0]])
data3 = np.array([[5.0, 6.0]])
paddle.disable_static() paddle.disable_static()
x1 = paddle.to_variable(data1) x1 = paddle.to_tensor([[1.0, 2.0]])
x2 = paddle.to_variable(data2) x2 = paddle.to_tensor([[3.0, 4.0]])
x3 = paddle.to_variable(data3) x3 = paddle.to_tensor([[5.0, 6.0]])
out = paddle.stack([x1, x2, x3], axis=0) out = paddle.stack([x1, x2, x3], axis=0)
print(out.shape) # [3, 1, 2] print(out.shape) # [3, 1, 2]
......
...@@ -3,10 +3,9 @@ paddle.fluid.layers.sigmoid_focal_loss paddle.nn.functional.sigmoid_focal_loss,p ...@@ -3,10 +3,9 @@ paddle.fluid.layers.sigmoid_focal_loss paddle.nn.functional.sigmoid_focal_loss,p
paddle.fluid.layers.smooth_l1 paddle.nn.functional.smooth_l1,paddle.nn.functional.loss.smooth_l1 paddle.fluid.layers.smooth_l1 paddle.nn.functional.smooth_l1,paddle.nn.functional.loss.smooth_l1
paddle.nn.functional.loss.l1_loss paddle.nn.functional.l1_loss paddle.nn.functional.loss.l1_loss paddle.nn.functional.l1_loss
paddle.nn.functional.loss.margin_ranking_loss paddle.nn.functional.margin_ranking_loss paddle.nn.functional.loss.margin_ranking_loss paddle.nn.functional.margin_ranking_loss
paddle.nn.layer.conv paddle.nn.conv
paddle.nn.layer.pooling.AdaptiveAvgPool3d paddle.nn.AdaptiveAvgPool3d,paddle.nn.layer.AdaptiveAvgPool3d paddle.nn.layer.pooling.AdaptiveAvgPool3d paddle.nn.AdaptiveAvgPool3d,paddle.nn.layer.AdaptiveAvgPool3d
paddle.nn.functional.common.alpha_dropout paddle.nn.functional.alpha_dropout paddle.nn.functional.common.alpha_dropout paddle.nn.functional.alpha_dropout
paddle.nn.functional.activation.logsigmoid paddle.nn.functional.logsigmoid paddle.nn.functional.activation.log_sigmoid paddle.nn.functional.log_sigmoid
paddle.fluid.executor.Executor paddle.static.Executor paddle.fluid.executor.Executor paddle.static.Executor
paddle.nn.functional.pooling.avg_pool2d paddle.nn.functional.avg_pool2d paddle.nn.functional.pooling.avg_pool2d paddle.nn.functional.avg_pool2d
paddle.fluid.dygraph.checkpoint.load_dygraph paddle.load,paddle.framework.load paddle.fluid.dygraph.checkpoint.load_dygraph paddle.load,paddle.framework.load
...@@ -44,7 +43,7 @@ paddle.tensor.manipulation.reshape paddle.reshape,paddle.tensor.reshape ...@@ -44,7 +43,7 @@ paddle.tensor.manipulation.reshape paddle.reshape,paddle.tensor.reshape
paddle.fluid.layers.increment paddle.increment,paddle.tensor.increment,paddle.tensor.math.increment paddle.fluid.layers.increment paddle.increment,paddle.tensor.increment,paddle.tensor.math.increment
paddle.fluid.compiler.CompiledProgram paddle.static.CompiledProgram paddle.fluid.compiler.CompiledProgram paddle.static.CompiledProgram
paddle.tensor.manipulation.flip paddle.flip,paddle.reverse,paddle.tensor.flip,paddle.tensor.reverse paddle.tensor.manipulation.flip paddle.flip,paddle.reverse,paddle.tensor.flip,paddle.tensor.reverse
paddle.distributed.__init__.paddle.fluid.dygraph.parallel.ParallelEnv paddle.distributed.ParallelEnv paddle.fluid.dygraph.parallel.ParallelEnv paddle.distributed.ParallelEnv
paddle.fluid.layers.hash paddle.nn.functional.hash,paddle.nn.functional.lod.hash paddle.fluid.layers.hash paddle.nn.functional.hash,paddle.nn.functional.lod.hash
paddle.nn.functional.activation.selu paddle.nn.functional.selu paddle.nn.functional.activation.selu paddle.nn.functional.selu
paddle.nn.functional.input.embedding paddle.nn.functional.embedding paddle.nn.functional.input.embedding paddle.nn.functional.embedding
...@@ -151,6 +150,7 @@ paddle.fluid.layers.bilinear_tensor_product paddle.static.nn.bilinear_tensor_pro ...@@ -151,6 +150,7 @@ paddle.fluid.layers.bilinear_tensor_product paddle.static.nn.bilinear_tensor_pro
paddle.fluid.framework.name_scope paddle.static.name_scope paddle.fluid.framework.name_scope paddle.static.name_scope
paddle.fluid.layers.is_empty paddle.is_empty,paddle.tensor.is_empty,paddle.tensor.logic.is_empty paddle.fluid.layers.is_empty paddle.is_empty,paddle.tensor.is_empty,paddle.tensor.logic.is_empty
paddle.tensor.math.multiply paddle.multiply,paddle.tensor.multiply paddle.tensor.math.multiply paddle.multiply,paddle.tensor.multiply
paddle.tensor.creation.Tensor paddle.Tensor
paddle.tensor.creation.to_tensor paddle.to_tensor,paddle.tensor.to_tensor paddle.tensor.creation.to_tensor paddle.to_tensor,paddle.tensor.to_tensor
paddle.fluid.initializer.Normal paddle.nn.initializer.Normal paddle.fluid.initializer.Normal paddle.nn.initializer.Normal
paddle.nn.layer.common.AlphaDropout paddle.nn.AlphaDropout,paddle.nn.layer.AlphaDropout paddle.nn.layer.common.AlphaDropout paddle.nn.AlphaDropout,paddle.nn.layer.AlphaDropout
...@@ -159,7 +159,6 @@ paddle.nn.layer.conv.ConvTranspose2d paddle.nn.ConvTranspose2d,paddle.nn.layer.C ...@@ -159,7 +159,6 @@ paddle.nn.layer.conv.ConvTranspose2d paddle.nn.ConvTranspose2d,paddle.nn.layer.C
paddle.fluid.dygraph.container.LayerList paddle.nn.LayerList paddle.fluid.dygraph.container.LayerList paddle.nn.LayerList
paddle.fluid.compiler.ExecutionStrategy paddle.static.ExecutionStrategy paddle.fluid.compiler.ExecutionStrategy paddle.static.ExecutionStrategy
paddle.fluid.layers.ceil paddle.ceil,paddle.tensor.ceil,paddle.tensor.math.ceil paddle.fluid.layers.ceil paddle.ceil,paddle.tensor.ceil,paddle.tensor.math.ceil
paddle.nn.layer.loss paddle.nn.loss
paddle.nn.layer.activation.ReLU paddle.nn.layer.ReLU paddle.nn.layer.activation.ReLU paddle.nn.layer.ReLU
paddle.tensor.logic.greater_equal paddle.greater_equal,paddle.tensor.greater_equal paddle.tensor.logic.greater_equal paddle.greater_equal,paddle.tensor.greater_equal
paddle.nn.layer.pooling.AvgPool2d paddle.nn.AvgPool2d,paddle.nn.layer.AvgPool2d paddle.nn.layer.pooling.AvgPool2d paddle.nn.AvgPool2d,paddle.nn.layer.AvgPool2d
...@@ -193,7 +192,7 @@ paddle.nn.layer.conv.Conv1d paddle.nn.Conv1d,paddle.nn.layer.Conv1d ...@@ -193,7 +192,7 @@ paddle.nn.layer.conv.Conv1d paddle.nn.Conv1d,paddle.nn.layer.Conv1d
paddle.fluid.param_attr.ParamAttr paddle.ParamAttr,paddle.framework.ParamAttr paddle.fluid.param_attr.ParamAttr paddle.ParamAttr,paddle.framework.ParamAttr
paddle.fluid.layers.retinanet_target_assign paddle.nn.functional.retinanet_target_assign,paddle.nn.functional.vision.retinanet_target_assign paddle.fluid.layers.retinanet_target_assign paddle.nn.functional.retinanet_target_assign,paddle.nn.functional.vision.retinanet_target_assign
paddle.fluid.initializer.Xavier paddle.nn.initializer.Xavier paddle.fluid.initializer.Xavier paddle.nn.initializer.Xavier
paddle.distributed.__init__.paddle.fluid.dygraph.parallel.prepare_context paddle.distributed.prepare_context paddle.fluid.dygraph.parallel.prepare_context paddle.distributed.prepare_context
paddle.tensor.math.pow paddle.pow,paddle.tensor.pow paddle.tensor.math.pow paddle.pow,paddle.tensor.pow
paddle.fluid.layers.bipartite_match paddle.nn.functional.bipartite_match,paddle.nn.functional.vision.bipartite_match paddle.fluid.layers.bipartite_match paddle.nn.functional.bipartite_match,paddle.nn.functional.vision.bipartite_match
paddle.fluid.input.embedding paddle.static.nn.embedding paddle.fluid.input.embedding paddle.static.nn.embedding
...@@ -253,7 +252,7 @@ paddle.tensor.linalg.matmul paddle.matmul,paddle.tensor.matmul ...@@ -253,7 +252,7 @@ paddle.tensor.linalg.matmul paddle.matmul,paddle.tensor.matmul
paddle.fluid.layers.generate_proposals paddle.nn.functional.generate_proposals,paddle.nn.functional.vision.generate_proposals paddle.fluid.layers.generate_proposals paddle.nn.functional.generate_proposals,paddle.nn.functional.vision.generate_proposals
paddle.nn.layer.loss.SmoothL1Loss paddle.nn.SmoothL1Loss,paddle.nn.layer.SmoothL1Loss paddle.nn.layer.loss.SmoothL1Loss paddle.nn.SmoothL1Loss,paddle.nn.layer.SmoothL1Loss
paddle.fluid.dygraph.checkpoint.save_dygraph paddle.save,paddle.framework.save paddle.fluid.dygraph.checkpoint.save_dygraph paddle.save,paddle.framework.save
paddle.framework.__init__.paddle.fluid.core paddle.framework.core paddle.fluid.core paddle.framework.core
paddle.nn.functional.vision.grid_sample paddle.nn.functional.grid_sample paddle.nn.functional.vision.grid_sample paddle.nn.functional.grid_sample
paddle.tensor.random.rand paddle.rand,paddle.tensor.rand paddle.tensor.random.rand paddle.rand,paddle.tensor.rand
paddle.fluid.layers.cond paddle.nn.cond,paddle.nn.control_flow.cond paddle.fluid.layers.cond paddle.nn.cond,paddle.nn.control_flow.cond
...@@ -266,11 +265,11 @@ paddle.fluid.layers.conv2d paddle.static.nn.conv2d ...@@ -266,11 +265,11 @@ paddle.fluid.layers.conv2d paddle.static.nn.conv2d
paddle.fluid.layers.create_parameter paddle.static.nn.create_parameter paddle.fluid.layers.create_parameter paddle.static.nn.create_parameter
paddle.tensor.creation.ones_like paddle.ones_like,paddle.tensor.ones_like paddle.tensor.creation.ones_like paddle.ones_like,paddle.tensor.ones_like
paddle.fluid.layers.sums paddle.sums,paddle.tensor.sums,paddle.tensor.math.sums paddle.fluid.layers.sums paddle.sums,paddle.tensor.sums,paddle.tensor.math.sums
paddle.nn.functional.rnn.birnn paddle.nn.functional.birnn paddle.fluid.layers.rnn.birnn paddle.nn.functional.birnn,paddle.nn.functional.rnn.birnn
paddle.fluid.dygraph.base.no_grad paddle.framework.no_grad paddle.fluid.dygraph.base.no_grad paddle.framework.no_grad
paddle.nn.functional.common.dropout3d paddle.nn.functional.dropout3d paddle.nn.functional.common.dropout3d paddle.nn.functional.dropout3d
paddle.fluid.layers.polygon_box_transform paddle.nn.functional.polygon_box_transform,paddle.nn.functional.extension.polygon_box_transform paddle.fluid.layers.polygon_box_transform paddle.nn.functional.polygon_box_transform,paddle.nn.functional.extension.polygon_box_transform
paddle.nn.functional.rnn.rnn paddle.nn.functional.rnn paddle.fluid.layers.rnn.rnn paddle.nn.functional.rnn,paddle.nn.functional.rnn.rnn
paddle.tensor.search.sort paddle.sort,paddle.tensor.sort paddle.tensor.search.sort paddle.sort,paddle.tensor.sort
paddle.tensor.logic.equal paddle.equal,paddle.tensor.equal paddle.tensor.logic.equal paddle.equal,paddle.tensor.equal
paddle.fluid.layers.swish paddle.nn.functional.swish,paddle.nn.functional.activation.swish paddle.fluid.layers.swish paddle.nn.functional.swish,paddle.nn.functional.activation.swish
...@@ -309,7 +308,6 @@ paddle.fluid.clip.GradientClipByNorm paddle.nn.GradientClipByNorm,paddle.nn.clip ...@@ -309,7 +308,6 @@ paddle.fluid.clip.GradientClipByNorm paddle.nn.GradientClipByNorm,paddle.nn.clip
paddle.tensor.creation.triu paddle.triu,paddle.tensor.triu paddle.tensor.creation.triu paddle.triu,paddle.tensor.triu
paddle.fluid.layers.reduce_all paddle.reduce_all,paddle.tensor.reduce_all,paddle.tensor.logic.reduce_all paddle.fluid.layers.reduce_all paddle.reduce_all,paddle.tensor.reduce_all,paddle.tensor.logic.reduce_all
paddle.fluid.layers.rpn_target_assign paddle.nn.functional.rpn_target_assign,paddle.nn.functional.extension.rpn_target_assign paddle.fluid.layers.rpn_target_assign paddle.nn.functional.rpn_target_assign,paddle.nn.functional.extension.rpn_target_assign
paddle.nn.layer.vision paddle.nn.vision
paddle.fluid.layers.reduce_max paddle.reduce_max,paddle.tensor.reduce_max,paddle.tensor.math.reduce_max paddle.fluid.layers.reduce_max paddle.reduce_max,paddle.tensor.reduce_max,paddle.tensor.math.reduce_max
paddle.tensor.random.randperm paddle.randperm,paddle.tensor.randperm paddle.tensor.random.randperm paddle.randperm,paddle.tensor.randperm
paddle.fluid.layers.deformable_conv paddle.static.nn.deformable_conv paddle.fluid.layers.deformable_conv paddle.static.nn.deformable_conv
...@@ -381,7 +379,6 @@ paddle.tensor.manipulation.concat paddle.concat,paddle.tensor.concat ...@@ -381,7 +379,6 @@ paddle.tensor.manipulation.concat paddle.concat,paddle.tensor.concat
paddle.tensor.stat.std paddle.std,paddle.tensor.std paddle.tensor.stat.std paddle.std,paddle.tensor.std
paddle.fluid.layers.dice_loss paddle.nn.functional.dice_loss,paddle.nn.functional.loss.dice_loss paddle.fluid.layers.dice_loss paddle.nn.functional.dice_loss,paddle.nn.functional.loss.dice_loss
paddle.nn.functional.loss.binary_cross_entropy paddle.nn.functional.binary_cross_entropy paddle.nn.functional.loss.binary_cross_entropy paddle.nn.functional.binary_cross_entropy
paddle.fluid.dygraph.base.to_variable paddle.to_variable,paddle.framework.to_variable
paddle.fluid.dygraph.Linear paddle.nn.Linear,paddle.nn.layer.Linear,paddle.nn.layer.common.Linear paddle.fluid.dygraph.Linear paddle.nn.Linear,paddle.nn.layer.Linear,paddle.nn.layer.common.Linear
paddle.fluid.layers.box_clip paddle.nn.functional.box_clip,paddle.nn.functional.vision.box_clip paddle.fluid.layers.box_clip paddle.nn.functional.box_clip,paddle.nn.functional.vision.box_clip
paddle.nn.layer.activation.ReLU6 paddle.nn.ReLU6 paddle.nn.layer.activation.ReLU6 paddle.nn.ReLU6
...@@ -506,29 +503,70 @@ paddle.fluid.layers.center_loss paddle.nn.functional.center_loss,paddle.nn.funct ...@@ -506,29 +503,70 @@ paddle.fluid.layers.center_loss paddle.nn.functional.center_loss,paddle.nn.funct
paddle.nn.functional.input.one_hot paddle.nn.functional.one_hot paddle.nn.functional.input.one_hot paddle.nn.functional.one_hot
paddle.tensor.creation.full paddle.full,paddle.tensor.full paddle.tensor.creation.full paddle.full,paddle.tensor.full
paddle.fluid.layers.soft_relu paddle.nn.functional.soft_relu,paddle.nn.functional.activation.soft_relu paddle.fluid.layers.soft_relu paddle.nn.functional.soft_relu,paddle.nn.functional.activation.soft_relu
paddle.vision.transforms.transforms.Compose paddle.vision.transforms.Compose paddle.hapi.model.Model paddle.Model
paddle.vision.transforms.transforms.BatchCompose paddle.vision.transforms.BatchCompose paddle.hapi.callbacks.Callback paddle.callbacks.Callback
paddle.vision.transforms.transforms.Resize paddle.vision.transforms.Resize paddle.hapi.callbacks.ProgBarLogger paddle.callbacks.ProgBarLogger
paddle.vision.transforms.transforms.RandomResizedCrop paddle.vision.transforms.RandomResizedCrop paddle.hapi.callbacks.ModelCheckpoint paddle.callbacks.ModelCheckpoint
paddle.vision.transforms.transforms.CenterCropResize paddle.vision.transforms.CenterCropResize paddle.hapi.model_summary.summary paddle.summary
paddle.vision.transforms.transforms.CenterCrop paddle.vision.transforms.CenterCrop paddle.vision.models.resnet.ResNet paddle.vision.models.ResNet,paddle.vision.ResNet
paddle.vision.transforms.transforms.RandomHorizontalFlip paddle.vision.transforms.RandomHorizontalFlip paddle.vision.models.resnet.resnet18 paddle.vision.models.resnet18,paddle.vision.resnet18
paddle.vision.transforms.transforms.RandomVerticalFlip paddle.vision.transforms.RandomVerticalFlip paddle.vision.models.resnet.resnet34 paddle.vision.models.resnet34,paddle.vision.resnet34
paddle.vision.transforms.transforms.Permute paddle.vision.transforms.Permute paddle.vision.models.resnet.resnet50 paddle.vision.models.resnet50,paddle.vision.resnet50
paddle.vision.transforms.transforms.Normalize paddle.vision.transforms.Normalize paddle.vision.models.resnet.resnet101 paddle.vision.models.resnet101,paddle.vision.resnet101
paddle.vision.transforms.transforms.GaussianNoise paddle.vision.transforms.GaussianNoise paddle.vision.models.resnet.resnet152 paddle.vision.models.resnet152,paddle.vision.resnet152
paddle.vision.transforms.transforms.BrightnessTransform paddle.vision.transforms.BrightnessTransform paddle.vision.models.vgg.VGG paddle.vision.models.VGG,paddle.vision.VGG
paddle.vision.transforms.transforms.SaturationTransform paddle.vision.transforms.SaturationTransform paddle.vision.models.vgg.vgg11 paddle.vision.models.vgg11,paddle.vision.vgg11
paddle.vision.transforms.transforms.ContrastTransform paddle.vision.transforms.ContrastTransform paddle.vision.models.vgg.vgg13 paddle.vision.models.vgg13,paddle.vision.vgg13
paddle.vision.transforms.transforms.HueTransform paddle.vision.transforms.HueTransform paddle.vision.models.vgg.vgg16 paddle.vision.models.vgg16,paddle.vision.vgg16
paddle.vision.transforms.transforms.ColorJitter paddle.vision.transforms.ColorJitter paddle.vision.models.vgg.vgg19 paddle.vision.models.vgg19,paddle.vision.vgg19
paddle.vision.transforms.transforms.RandomCrop paddle.vision.transforms.RandomCrop paddle.vision.models.mobilenetv1.MobileNetV1 paddle.vision.models.MobileNetV1,paddle.vision.MobileNetV1
paddle.vision.transforms.transforms.RandomErasing paddle.vision.transforms.RandomErasing paddle.vision.models.mobilenetv1.mobilenet_v1 paddle.vision.models.mobilenet_v1,paddle.vision.mobilenet_v1
paddle.vision.transforms.transforms.Pad paddle.vision.transforms.Pad paddle.vision.models.mobilenetv2.MobileNetV2 paddle.vision.models.MobileNetV2,paddle.vision.MobileNetV2
paddle.vision.transforms.transforms.RandomRotate paddle.vision.transforms.RandomRotate paddle.vision.models.mobilenetv2.mobilenet_v2 paddle.vision.models.mobilenet_v2,paddle.vision.mobilenet_v2
paddle.vision.transforms.transforms.Grayscale paddle.vision.transforms.Grayscale paddle.vision.models.lenet.LeNet paddle.vision.models.LeNet,paddle.vision.LeNet
paddle.vision.transforms.functional.flip paddle.vision.transforms.flip paddle.vision.transforms.transforms.Compose paddle.vision.transforms.Compose,paddle.vision.Compose
paddle.vision.transforms.functional.resize paddle.vision.transforms.resize paddle.vision.transforms.transforms.BatchCompose paddle.vision.transforms.BatchCompose,paddle.vision.BatchCompose
paddle.vision.transforms.functional.pad paddle.vision.transforms.pad paddle.vision.transforms.transforms.Resize paddle.vision.transforms.Resize,paddle.vision.Resize
paddle.vision.transforms.functional.rotate paddle.vision.transforms.rotate paddle.vision.transforms.transforms.RandomResizedCrop paddle.vision.transforms.RandomResizedCrop,paddle.vision.RandomResizedCrop
paddle.vision.transforms.functional.to_grayscale paddle.vision.transforms.to_grayscale paddle.vision.transforms.transforms.CenterCropResize paddle.vision.transforms.CenterCropResize,paddle.vision.CenterCropResize
\ No newline at end of file paddle.vision.transforms.transforms.CenterCrop paddle.vision.transforms.CenterCrop,paddle.vision.CenterCrop
paddle.vision.transforms.transforms.RandomHorizontalFlip paddle.vision.transforms.RandomHorizontalFli,paddle.vision.RandomHorizontalFli
paddle.vision.transforms.transforms.RandomVerticalFlip paddle.vision.transforms.RandomVerticalFlip,paddle.vision.RandomVerticalFlip
paddle.vision.transforms.transforms.Permute paddle.vision.transforms.Permute,paddle.vision.Permute
paddle.vision.transforms.transforms.Normalize paddle.vision.transforms.Normalize,paddle.vision.Normalize
paddle.vision.transforms.transforms.GaussianNoise paddle.vision.transforms.GaussianNoise,paddle.vision.GaussianNoise
paddle.vision.transforms.transforms.BrightnessTransform paddle.vision.transforms.BrightnessTransform,paddle.vision.BrightnessTransform
paddle.vision.transforms.transforms.SaturationTransform paddle.vision.transforms.SaturationTransform,paddle.vision.SaturationTransform
paddle.vision.transforms.transforms.ContrastTransform paddle.vision.transforms.ContrastTransform,paddle.vision.ContrastTransform
paddle.vision.transforms.transforms.HueTransform paddle.vision.transforms.HueTransform,paddle.vision.HueTransform
paddle.vision.transforms.transforms.ColorJitter paddle.vision.transforms.ColorJitter,paddle.vision.ColorJitter
paddle.vision.transforms.transforms.RandomCrop paddle.vision.transforms.RandomCrop,paddle.vision.RandomCrop
paddle.vision.transforms.transforms.RandomErasing paddle.vision.transforms.RandomErasing,paddle.vision.RandomErasing
paddle.vision.transforms.transforms.Pad paddle.vision.transforms.Pad,paddle.vision.Pad
paddle.vision.transforms.transforms.RandomRotate paddle.vision.transforms.RandomRotate,paddle.vision.RandomRotate
paddle.vision.transforms.transforms.Grayscale paddle.vision.transforms.Grayscale,paddle.vision.Grayscale
paddle.vision.transforms.functional.flip paddle.vision.transforms.flip,paddle.vision.flip
paddle.vision.transforms.functional.resize paddle.vision.transforms.resize,paddle.vision.resize
paddle.vision.transforms.functional.pad paddle.vision.transforms.pad,paddle.vision.pad
paddle.vision.transforms.functional.rotate paddle.vision.transforms.rotate,paddle.vision.rotate
paddle.vision.transforms.functional.to_grayscale paddle.vision.transforms.to_grayscale,paddle.vision.to_grayscale
paddle.vision.datasets.folder.DatasetFolder paddle.vision.datasets.DatasetFolder,paddle.vision.DatasetFolder
paddle.vision.datasets.folder.ImageFolder paddle.vision.datasets.ImageFolder,paddle.vision.ImageFolder
paddle.vision.datasets.mnist.MNIST paddle.vision.datasets.MNIST,paddle.vision.MNIST
paddle.vision.datasets.flowers.Flowers paddle.vision.datasets.Flowers,paddle.vision.Flowers
paddle.vision.datasets.cifar.Cifar10 paddle.vision.datasets.Cifar10,paddle.vision.Cifar10
paddle.vision.datasets.cifar.Cifar100 paddle.vision.datasets.Cifar100,paddle.vision.Cifar100
paddle.vision.datasets.voc2012.VOC2012 paddle.vision.datasets.VOC2012,paddle.vision.VOC2012
paddle.text.datasets.conll05.Conll05st paddle.text.datasets.Conll05st,paddle.text.Conll05st
paddle.text.datasets.imdb.Imdb paddle.text.datasets.Imdb,paddle.text.Imdb
paddle.text.datasets.imikolov.Imikolov paddle.text.datasets.Imikolov,paddle.text.Imikolov
paddle.text.datasets.movielens.Movielens paddle.text.datasets.Movielens,paddle.text.Movielens
paddle.text.datasets.movie_reviews.MovieReviews paddle.text.datasets.MovieRevie,paddle.text.MovieRevie
paddle.text.datasets.uci_housing.UCIHousing paddle.text.datasets.UCIHousing,paddle.text.UCIHousing
paddle.text.datasets.wmt14.WMT14 paddle.text.datasets.WMT14,paddle.text.WMT14
paddle.text.datasets.wmt16.WMT16 paddle.text.datasets.WMT16,paddle.text.WMT16
paddle.metric.metrics.Metric paddle.metric.Metric
paddle.metric.metrics.Accuracy paddle.metric.Accuracy
paddle.metric.metrics.Precision paddle.metric.Precision
paddle.metric.metrics.Recall paddle.metric.Recall
paddle.metric.metrics.Auc paddle.metric.Auc
to_tensor .. _api_paddle_to_tensor
train .. _api_paddle_dataset_wmt14_train: train .. _api_paddle_dataset_wmt14_train:
roi_pool .. _api_paddle_fluid_layers_roi_pool: roi_pool .. _api_paddle_fluid_layers_roi_pool:
expand .. _api_paddle_fluid_layers_expand: expand .. _api_paddle_fluid_layers_expand:
...@@ -397,7 +398,7 @@ Decoder .. _api_paddle_fluid_layers_Decoder: ...@@ -397,7 +398,7 @@ Decoder .. _api_paddle_fluid_layers_Decoder:
array_read .. _api_paddle_fluid_layers_array_read: array_read .. _api_paddle_fluid_layers_array_read:
floor_divide .. _api_paddle_tensor_math_floor_divide: floor_divide .. _api_paddle_tensor_math_floor_divide:
floor_mod .. _api_paddle_tensor_math_floor_mod: floor_mod .. _api_paddle_tensor_math_floor_mod:
logsigmoid .. _api_paddle_nn_functional_logsigmoid: log_sigmoid .. _api_paddle_nn_functional_log_sigmoid:
generate_mask_labels .. _api_paddle_fluid_layers_generate_mask_labels: generate_mask_labels .. _api_paddle_fluid_layers_generate_mask_labels:
square .. _api_paddle_fluid_layers_square: square .. _api_paddle_fluid_layers_square:
reset_profiler .. _api_paddle_fluid_profiler_reset_profiler: reset_profiler .. _api_paddle_fluid_profiler_reset_profiler:
......
...@@ -228,13 +228,13 @@ class EnDocGenerator(object): ...@@ -228,13 +228,13 @@ class EnDocGenerator(object):
self._print_ref_() self._print_ref_()
self._print_header_(self.api, dot='-', is_title=False) self._print_header_(self.api, dot='-', is_title=False)
if "fluid.dygraph" in self.module_name: if "fluid.dygraph" in self.module_name:
self.stream.write('''.. autoclass:: paddle.{0}.{1} self.stream.write('''.. autoclass:: {0}.{1}
:members: :members:
:noindex: :noindex:
'''.format(self.module_name, self.api)) '''.format(self.module_name, self.api))
elif "fluid.optimizer" in self.module_name: elif "fluid.optimizer" in self.module_name:
self.stream.write('''.. autoclass:: paddle.{0}.{1} self.stream.write('''.. autoclass:: {0}.{1}
:members: :members:
:inherited-members: :inherited-members:
:exclude-members: apply_gradients, apply_optimize, backward, load :exclude-members: apply_gradients, apply_optimize, backward, load
...@@ -242,7 +242,7 @@ class EnDocGenerator(object): ...@@ -242,7 +242,7 @@ class EnDocGenerator(object):
'''.format(self.module_name, self.api)) '''.format(self.module_name, self.api))
else: else:
self.stream.write('''.. autoclass:: paddle.{0}.{1} self.stream.write('''.. autoclass:: {0}.{1}
:members: :members:
:inherited-members: :inherited-members:
:noindex: :noindex:
......
================== ==================
API REFERENCE API 文档
================== ==================
PaddlePaddle (PArallel Distributed Deep LEarning)是一个易用、高效、灵活、可扩展的深度学习框架。
本页列出了PaddlePaddle 2.0-beta所支持的API,您可以在此查看该API的相关信息。
此外,您可参考PaddlePaddle的 `GitHub <https://github.com/PaddlePaddle/Paddle>`_ 了解详情,也可阅读 `版本说明 <../release_note_cn.html>`_ 了解新版本的特性。
**飞桨框架2.0的API目录结构如下:**
+-------------------------------+-------------------------------------------------------+
| 目录 | 功能和包含的API |
+===============================+=======================================================+
| paddle.\* | paddle |
| | 根目录下保留了常用API的别名,当前包括:paddle.tensor, |
| | paddle.framework目录下的所有API |
+-------------------------------+-------------------------------------------------------+
| paddle.tensor | 跟tensor操作相关的API,比如:创建zeros, |
| | 矩阵运算matmul, 变换concat, 计算add, 查找argmax等 |
+-------------------------------+-------------------------------------------------------+
| paddle.nn | 跟组网相关的API,比如:Linear, |
| | Conv2d,损失函数,卷积,LSTM等,激活函数等 |
+-------------------------------+-------------------------------------------------------+
| paddle.static.nn | 静态图下组网专用A |
| | PI,比如:输入占位符data/Input,控制流while_loop/cond |
+-------------------------------+-------------------------------------------------------+
| paddle.static | 静态图下基础框架相关API,比如:Variable, Program, |
| | Executor等 |
+-------------------------------+-------------------------------------------------------+
| paddle.framework | 框架通用API和imprerative模式的API,比如:to_tensor, |
| | prepare_context等 |
+-------------------------------+-------------------------------------------------------+
| paddle.optimizer | 优化算法相关API,比如:SGD,Adagrad, Adam等 |
| | |
+-------------------------------+-------------------------------------------------------+
| paddle.optimizer.lr_scheduler | 学习率衰减相关API |
| | |
+-------------------------------+-------------------------------------------------------+
| paddle.metric | 评估指标计算相关的API,比如:accuracy, auc等 |
| | |
+-------------------------------+-------------------------------------------------------+
| paddle.io | 数据输入输出相关API,比如:save, load, Dataset, |
| | DataLoader等 |
+-------------------------------+-------------------------------------------------------+
| paddle.device | 设备管理相关API,比如:CPUPlace, CUDAPlace等 |
| | |
+-------------------------------+-------------------------------------------------------+
| paddle.distributed | 分布式相关基础API |
| | |
+-------------------------------+-------------------------------------------------------+
| paddle.distributed.fleet | 分布式相关高层API |
| | |
+-------------------------------+-------------------------------------------------------+
| paddle.vision | 视觉领域API, |
| | 比如,数据集,数据处理,常用基础网络结构,比如resnet |
+-------------------------------+-------------------------------------------------------+
| paddle.text | NLP领域API, |
| | 比如,数据集,数据处理,常用网络结构,比如transformer |
+-------------------------------+-------------------------------------------------------+
================== ==================
API REFERENCE API Reference
================== ==================
PaddlePaddle (PArallel Distributed Deep LEarning) is an efficient, flexible, and extensible deep learning framework.
This page lists the APIs supported by PaddlePaddle 2.0-beta. You can view the information of the APIs here.
In addition, you can refer to PaddlePaddle's `GitHub <https://github.com/PaddlePaddle/Paddle>`_ for details, or read `Release Notes <../release_note_en.html>`_ to learn about the features of the new version.
**The API directory structure of PaddlePaddle 2.0-beta is as follows:**
+-------------------------------+-------------------------------------------------------+
| Directory | Functions and Included APIs |
+===============================+=======================================================+
| paddle.* | The aliases of commonly used APIs are reserved in the |
| | paddle root directory, which currently include all |
| | the APIs in the paddle.tensor and paddle.framework |
| | directories |
+-------------------------------+-------------------------------------------------------+
| paddle.tensor | APIs related to tensor operations such as creating |
| | zeros, matrix operation matmul, transforming concat, |
| | computing add, and finding argmax |
+-------------------------------+-------------------------------------------------------+
| paddle.nn | Networking-related APIs such as Linear, Conv2d, loss |
| | function, convolution, LSTM,and activation function |
+-------------------------------+-------------------------------------------------------+
| paddle.static.nn | Special APIs for networking under a static graph such |
| | as input placeholder data/Input and control flow |
| | while_loop/cond |
+-------------------------------+-------------------------------------------------------+
| paddle.static | APIs related to the basic framework under a static |
| | graph such as Variable, Program, and Executor |
+-------------------------------+-------------------------------------------------------+
| paddle.framework | Universal APIs and imprerative mode APIs such as |
| | to_variable and prepare_context |
+-------------------------------+-------------------------------------------------------+
| paddld.optimizer | APIs related to optimization algorithms such as SGD, |
| | Adagrad, and Adam |
+-------------------------------+-------------------------------------------------------+
| paddle.optimizer.lr_scheduler | APIs related to learning rate attenuation |
| | |
+-------------------------------+-------------------------------------------------------+
| paddle.metric | APIs related to evaluation index computation such as |
| | accuracy and auc |
+-------------------------------+-------------------------------------------------------+
| paddle.io | APIs related to data input and output such as save, |
| | load, Dataset, and DataLoader |
+-------------------------------+-------------------------------------------------------+
| paddle.device | APIs related to device management such as CPUPlace |
| | and CUDAPlace |
+-------------------------------+-------------------------------------------------------+
| paddle.distributed | Distributed related basic APIs |
| | |
+-------------------------------+-------------------------------------------------------+
| paddle.distributed.fleet | Distributed related high-level APIs |
| | |
+-------------------------------+-------------------------------------------------------+
| paddle.vision | Vision domain APIs such as datasets, data processing, |
| | and commonly used basic network structures like |
| | resnet |
+-------------------------------+-------------------------------------------------------+
| paddle.text | NLP domain APIs such as datasets, data processing, |
| | and commonly used basic network structures like |
| | transformer |
+-------------------------------+-------------------------------------------------------+
paddle.utils paddle.utils
paddle.incubate paddle.incubate
paddle.hapi.progressbar.ProgressBar
...@@ -5,9 +5,6 @@ random_crop ...@@ -5,9 +5,6 @@ random_crop
.. py:function:: paddle.fluid.layers.random_crop(x, shape, seed=None) .. py:function:: paddle.fluid.layers.random_crop(x, shape, seed=None)
:alias_main: paddle.nn.functional.random_crop
:alias: paddle.nn.functional.random_crop,paddle.nn.functional.extension.random_crop
:old_api: paddle.fluid.layers.random_crop
......
.. _cn_api_distributed_fleet_DistributedStrategy:
DistributedStrategy
-------------------------------
.. py:class:: paddle.distributed.fleet.DistributedStrategy
属性
::::::::::::
.. py:attribute:: recompute
是否启用Recompute来优化内存空间,默认值:False
**示例代码**
.. code-block:: python
import paddle.distributed.fleet as fleet
strategy = fleet.DistributedStrategy()
strategy.recompute = True
# suppose x and y are names of checkpoint tensors for recomputation
strategy.recompute_configs = {"checkpoints": ["x", "y"]}
.. py:attribute:: recompute_configs
设置Recompute策略的配置。目前来讲,用户使用Recompute策略时,必须配置 checkpoints 参数。
**checkpoints(int):** Recompute策略的检查点,默认为空列表,也即不启用Recompute。
.. py:attribute:: pipeline
是否启用Pipeline并行。目前,主要实现单机多GPU间的Pipeline并行和多机间的数据并行。Pipeline信息由用户定义程序中的device_guard确定。
**示例代码**
.. code-block:: python
import paddle.distributed.fleet as fleet
strategy = fleet.DistributedStrategy()
strategy.pipeline = True
.. py:attribute:: pipeline_configs
设置Pipeline策略的配置。Pipeline策略下,神经网络的不同层在不同的GPU设备。相邻的GPU设备间有用于同步隐层Tensor的队列。Pipeline并行包含多种生产者-消费者形式的硬件对,如GPU-CPU、CPU-GPU、GPU-XPU。加速PIpeline并行的最佳方式是减少Tensor队列中的Tensor大小,这样生产者可以更快的为下游消费者提供数据。
**micro_batch (int):** 每个用户定义的mini-batch中包含的更小的micro-batch的数量。
**示例代码**
.. code-block:: python
import paddle.distributed.fleet as fleet
strategy = fleet.DistributedStrategy()
strategy.pipeline = True
strategy.pipeline_configs = {"micro_batch": 12}
.. py:attribute:: gradient_merge
梯度累加,是一种大Batch训练的策略。添加这一策略后,模型的参数每过 **k_steps** 步更新一次,
**k_steps** 是用户定义的步数。在不更新参数的步数里,Paddle只进行前向、反向网络的计算;
在更新参数的步数里,Paddle执行优化网络,通过特定的优化器(比如SGD、Adam),
将累加的梯度应用到模型参数上。
**示例代码**
.. code-block:: python
import paddle.distributed.fleet as fleet
strategy = fleet.DistributedStrategy()
strategy.gradient_merge = True
strategy.gradient_merge_configs = {"k_steps": 4, "avg": True}
.. py:attribute:: gradient_merge_configs
设置 **distribute_strategy** 策略的配置。
**k_steps(int):** 参数更新的周期,默认为1
**avg(bool):** 梯度的融合方式,有两种选择:
- **sum**: 梯度求和
- **avg**: 梯度求平均
.. py:attribute:: lars
是否使用LARS optimizer,默认值:False
**示例代码**
.. code-block:: python
import paddle.distributed.fleet as fleet
strategy = fleet.DistributedStrategy()
strategy.lars = True
strategy.lars_configs = {
"lars_coeff": 0.001,
"lars_weight_decay": 0.0005,
"epsilon": 0,
"exclude_from_weight_decay": ["batch_norm", ".b"],
}
.. py:attribute:: lars_configs
设置LARS优化器的参数。用户可以配置 lars_coeff,lars_weight_decay,epsilon,exclude_from_weight_decay 参数。
**lars_coeff(float):** lars 系数,[原论文](https://arxiv.org/abs/1708.03888) 中的 trust coefficient。 默认值是 0.001.
**lars_weight_decay(float):** lars 公式中 weight decay 系数。 默认值是 0.0005.
**exclude_from_weight_decay(list[str]):** 不应用 weight decay 的 layers 的名字列表,某一layer 的name 如果在列表中,这一layer 的 lars_weight_decay将被置为 0. 默认值是 None.
**epsilon(float):** 一个小的浮点值,目的是维持数值稳定性,避免 lars 公式中的分母为零。 默认值是 0.
.. py:attribute:: lamb
是否使用LAMB optimizer,默认值:False
**示例代码**
.. code-block:: python
import paddle.distributed.fleet as fleet
strategy = fleet.DistributedStrategy()
strategy.lamb = True
strategy.lamb_configs = {
'lamb_weight_decay': 0.01,
'exclude_from_weight_decay': [],
}
.. py:attribute:: lamb_configs
设置LAMB优化器的参数。用户可以配置 lamb_weight_decay,exclude_from_weight_decay 参数。
**lamb_weight_decay(float):** lars 公式中 weight decay 系数。 默认值是 0.01.
**exclude_from_weight_decay(list[str]):** 不应用 weight decay 的 layers 的名字列表,某一layer 的name 如果在列表中,这一layer 的 lamb_weight_decay将被置为 0. 默认值是 None.
.. py:attribute:: localsgd
是否使用LocalSGD optimizer,默认值:False。更多的细节请参考[Don't Use Large Mini-Batches, Use Local SGD](https://arxiv.org/pdf/1808.07217.pdf)
**示例代码**
.. code-block:: python
import paddle.distributed.fleet as fleet
strategy = fleet.DistributedStrategy()
strategy.localsgd = True # by default this is false
.. py:attribute:: localsgd_configs
设置LocalSGD优化器的参数。用户可以配置k_steps和begin_step参数。
**示例代码**
.. code-block:: python
import paddle.distributed.fleet as fleet
strategy = fleet.DistributedStrategy()
strategy.localsgd = True
strategy.localsgd_configs = {"k_steps": 4,
"begin_step": 30}
**k_steps(int):** 训练过程中的全局参数更新间隔,默认值1。
**begin_step(int):** 指定从第几个step之后进行local SGD算法,默认值1。
.. py:attribute:: adaptive_localsgd
是否使用AdaptiveLocalSGD optimizer,默认值:False。更多的细节请参考[Adaptive Communication Strategies to Achieve the Best Error-Runtime Trade-off in Local-Update SGD](https://arxiv.org/pdf/1810.08313.pdf)
**示例代码**
.. code-block:: python
import paddle.distributed.fleet as fleet
strategy = fleet.DistributedStrategy()
strategy.adaptive_localsgd = True # by default this is false
.. py:attribute:: adaptive_localsgd_configs
设置AdaptiveLocalSGD优化器的参数。用户可以配置init_k_steps和begin_step参数。
**示例代码**
.. code-block:: python
import paddle.distributed.fleet as fleet
strategy = fleet.DistributedStrategy()
strategy.adaptive_localsgd = True
strategy.adaptive_localsgd_configs = {"init_k_steps": 1,
"begin_step": 30}
**init_k_steps(int):** 自适应localsgd的初始训练步长。训练后,自适应localsgd方法将自动调整步长。 默认值1。
**begin_step(int):** 指定从第几个step之后进行Adaptive LocalSGD算法,默认值1。
.. _cn_api_distributed_fleet_Fleet:
Fleet
-------------------------------
.. py:class:: paddle.distributed.fleet.Fleet
.. py:method:: init(role_maker=None, is_collective=False)
.. py:method:: is_first_worker()
.. py:method:: worker_index()
.. py:method:: worker_num()
.. py:method:: is_worker()
.. py:method:: worker_endpoints(to_string=False)
.. py:method:: server_num()
.. py:method:: server_index()
.. py:method:: server_endpoints(to_string=False)
.. py:method:: is_server()
.. py:method:: barrier_worker()
.. py:method:: init_worker()
.. py:method:: init_server(*args, **kwargs)
.. py:method:: run_server()
.. py:method:: stop_worker()
.. py:method:: save_inference_model(executor, dirname, feeded_var_names, target_vars, main_program=None, export_for_deployment=True)
.. py:method:: save_persistables(executor, dirname, main_program=None)
.. py:method:: distributed_optimizer(optimizer, strategy=None)
.. py:method:: distributed_model(model)
**注意:**
**1. API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效**
返回分布式数据并行模型。
参数:
model (Layer) - 用户定义的模型,此处模型是指继承动态图Layer的网络。
返回:分布式数据并行模型,该模型同样继承动态图Layer
**代码示例**
.. code-block:: python
# 这个示例需要由fleetrun启动, 用法为:
# fleetrun --gpus=0,1 example.py
# 脚本example.py中的代码是下面这个示例.
import paddle
import paddle.nn as nn
from paddle.distributed import fleet
class LinearNet(nn.Layer):
def __init__(self):
super(LinearNet, self).__init__()
self._linear1 = nn.Linear(10, 10)
self._linear2 = nn.Linear(10, 1)
def forward(self, x):
return self._linear2(self._linear1(x))
# 1. enable dynamic mode
paddle.disable_static()
# 2. initialize fleet environment
fleet.init(is_collective=True)
# 3. create layer & optimizer
layer = LinearNet()
loss_fn = nn.MSELoss()
adam = paddle.optimizer.Adam(
learning_rate=0.001, parameters=layer.parameters())
# 4. get data_parallel model using fleet
adam = fleet.distributed_optimizer(adam)
dp_layer = fleet.distributed_model(layer)
# 5. run layer
inputs = paddle.randn([10, 10], 'float32')
outputs = dp_layer(inputs)
labels = paddle.randn([10, 1], 'float32')
loss = loss_fn(outputs, labels)
print("loss:", loss.numpy())
loss = dp_layer.scale_loss(loss)
loss.backward()
dp_layer.apply_collective_grads()
adam.step()
adam.clear_grad()
.. py:method:: state_dict()
**注意:**
**1. API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效**
``dict`` 返回当前 ``optimizer`` 使用的所有Tensor 。比如对于Adam优化器,将返回 beta1, beta2, momentum Tensor
返回:dict, 当前 ``optimizer`` 使用的所有Tensor
**代码示例**
.. code-block:: python
# 这个示例需要由fleetrun启动, 用法为:
# fleetrun --gpus=0,1 example.py
# 脚本example.py中的代码是下面这个示例.
import numpy as np
import paddle
from paddle.distributed import fleet
paddle.disable_static()
fleet.init(is_collective=True)
value = np.arange(26).reshape(2, 13).astype("float32")
a = paddle.fluid.dygraph.to_variable(value)
layer = paddle.nn.Linear(13, 5)
adam = paddle.optimizer.Adam(learning_rate=0.01, parameters=layer.parameters())
adam = fleet.distributed_optimizer(adam)
dp_layer = fleet.distributed_model(layer)
state_dict = adam.state_dict()
.. py:method:: set_state_dict(state_dict)
**注意:**
**1. API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效**
加载 ``optimizer`` Tensor字典给当前 ``optimizer``
返回:None
**代码示例**
.. code-block:: python
# 这个示例需要由fleetrun启动, 用法为:
# fleetrun --gpus=0,1 example.py
# 脚本example.py中的代码是下面这个示例.
import numpy as np
import paddle
from paddle.distributed import fleet
paddle.disable_static()
fleet.init(is_collective=True)
value = np.arange(26).reshape(2, 13).astype("float32")
a = paddle.fluid.dygraph.to_variable(value)
layer = paddle.nn.Linear(13, 5)
adam = paddle.optimizer.Adam(learning_rate=0.01, parameters=layer.parameters())
adam = fleet.distributed_optimizer(adam)
dp_layer = fleet.distributed_model(layer)
state_dict = adam.state_dict()
paddle.framework.save(state_dict, "paddle_dy")
para_state_dict, opti_state_dict = paddle.framework.load( "paddle_dy")
adam.set_state_dict(opti_state_dict)
.. py:method:: set_lr(value)
**注意:**
**1. API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效**
手动设置当前 ``optimizer`` 的学习率。
参数:
value (float) - 需要设置的学习率的值。
返回:None
**代码示例**
.. code-block:: python
# 这个示例需要由fleetrun启动, 用法为:
# fleetrun --gpus=0,1 example.py
# 脚本example.py中的代码是下面这个示例.
import numpy as np
import paddle
from paddle.distributed import fleet
paddle.disable_static()
fleet.init(is_collective=True)
value = np.arange(26).reshape(2, 13).astype("float32")
a = paddle.fluid.dygraph.to_variable(value)
layer = paddle.nn.Linear(13, 5)
adam = paddle.optimizer.Adam(learning_rate=0.01, parameters=layer.parameters())
adam = fleet.distributed_optimizer(adam)
dp_layer = fleet.distributed_model(layer)
lr_list = [0.2, 0.3, 0.4, 0.5, 0.6]
for i in range(5):
adam.set_lr(lr_list[i])
lr = adam.get_lr()
print("current lr is {}".format(lr))
# Print:
# current lr is 0.2
# current lr is 0.3
# current lr is 0.4
# current lr is 0.5
# current lr is 0.6
.. py:method:: get_lr()
**注意:**
**1. API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效**
获取当前步骤的学习率。
返回:float,当前步骤的学习率。
**代码示例**
.. code-block:: python
# 这个示例需要由fleetrun启动, 用法为:
# fleetrun --gpus=0,1 example.py
# 脚本example.py中的代码是下面这个示例.
import numpy as np
import paddle
from paddle.distributed import fleet
paddle.disable_static()
fleet.init(is_collective=True)
value = np.arange(26).reshape(2, 13).astype("float32")
a = paddle.fluid.dygraph.to_variable(value)
layer = paddle.nn.Linear(13, 5)
adam = paddle.optimizer.Adam(learning_rate=0.01, parameters=layer.parameters())
adam = fleet.distributed_optimizer(adam)
dp_layer = fleet.distributed_model(layer)
lr = adam.get_lr()
print(lr) # 0.01
.. py:method:: step()
**注意:**
**1. API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效**
执行一次优化器并进行参数更新。
返回:None
**代码示例**
.. code-block:: python
# 这个示例需要由fleetrun启动, 用法为:
# fleetrun --gpus=0,1 example.py
# 脚本example.py中的代码是下面这个示例.
import paddle
import paddle.nn as nn
from paddle.distributed import fleet
class LinearNet(nn.Layer):
def __init__(self):
super(LinearNet, self).__init__()
self._linear1 = nn.Linear(10, 10)
self._linear2 = nn.Linear(10, 1)
def forward(self, x):
return self._linear2(self._linear1(x))
# 1. enable dynamic mode
paddle.disable_static()
# 2. initialize fleet environment
fleet.init(is_collective=True)
# 3. create layer & optimizer
layer = LinearNet()
loss_fn = nn.MSELoss()
adam = paddle.optimizer.Adam(
learning_rate=0.001, parameters=layer.parameters())
# 4. get data_parallel model using fleet
adam = fleet.distributed_optimizer(adam)
dp_layer = fleet.distributed_model(layer)
# 5. run layer
inputs = paddle.randn([10, 10], 'float32')
outputs = dp_layer(inputs)
labels = paddle.randn([10, 1], 'float32')
loss = loss_fn(outputs, labels)
print("loss:", loss.numpy())
loss = dp_layer.scale_loss(loss)
loss.backward()
dp_layer.apply_collective_grads()
adam.step()
adam.clear_grad()
.. py:method:: clear_grad()
**注意:**
**1. API只在** `Dygraph <../../user_guides/howto/dygraph/DyGraph.html>`_ **模式下生效**
清除需要优化的参数的梯度。
返回:None
**代码示例**
.. code-block:: python
# 这个示例需要由fleetrun启动, 用法为:
# fleetrun --gpus=0,1 example.py
# 脚本example.py中的代码是下面这个示例.
import paddle
import paddle.nn as nn
from paddle.distributed import fleet
class LinearNet(nn.Layer):
def __init__(self):
super(LinearNet, self).__init__()
self._linear1 = nn.Linear(10, 10)
self._linear2 = nn.Linear(10, 1)
def forward(self, x):
return self._linear2(self._linear1(x))
# 1. enable dynamic mode
paddle.disable_static()
# 2. initialize fleet environment
fleet.init(is_collective=True)
# 3. create layer & optimizer
layer = LinearNet()
loss_fn = nn.MSELoss()
adam = paddle.optimizer.Adam(
learning_rate=0.001, parameters=layer.parameters())
# 4. get data_parallel model using fleet
adam = fleet.distributed_optimizer(adam)
dp_layer = fleet.distributed_model(layer)
# 5. run layer
inputs = paddle.randn([10, 10], 'float32')
outputs = dp_layer(inputs)
labels = paddle.randn([10, 1], 'float32')
loss = loss_fn(outputs, labels)
print("loss:", loss.numpy())
loss = dp_layer.scale_loss(loss)
loss.backward()
dp_layer.apply_collective_grads()
adam.step()
adam.clear_grad()
.. py:method:: minimize(loss, startup_program=None, parameter_list=None, no_grad_set=None)
.. py:attribute:: util
.. _cn_api_distributed_fleet_PaddleCloudRoleMaker:
PaddleCloudRoleMaker
-------------------------------
.. py:class:: paddle.distributed.fleet.PaddleCloudRoleMaker
.. _cn_api_distributed_fleet_UserDefinedRoleMaker:
UserDefinedRoleMaker
-------------------------------
.. py:class:: paddle.distributed.fleet.UserDefinedRoleMaker
.. _cn_api_distributed_fleet_UtilBase:
UtilBase
-------------------------------
.. py:class:: paddle.distributed.fleet.UtilBase
.. _cn_api_distributed_fleet_utils_fs_ExecuteError:
ExecuteError
-------------------------------
.. py:class:: paddle.distributed.fleet.utils.fs.ExecuteError
.. _cn_api_distributed_fleet_utils_fs_FSFileExistsError:
FSFileExistsError
-------------------------------
.. py:class:: paddle.distributed.fleet.utils.fs.FSFileExistsError
.. _cn_api_distributed_fleet_utils_fs_FSFileNotExistsError:
FSFileNotExistsError
-------------------------------
.. py:class:: paddle.distributed.fleet.utils.fs.FSFileNotExistsError
.. _cn_api_distributed_fleet_utils_fs_FSShellCmdAborted:
FSShellCmdAborted
-------------------------------
.. py:class:: paddle.distributed.fleet.utils.fs.FSShellCmdAborted
.. _cn_api_distributed_fleet_utils_fs_FSTimeOut:
FSTimeOut
-------------------------------
.. py:class:: paddle.distributed.fleet.utils.fs.FSTimeOut
.. _cn_api_distributed_fleet_utils_fs_FS:
FS
-------------------------------
.. py:class:: paddle.distributed.fleet.utils.fs.FS
.. _cn_api_distributed_fleet_utils_fs_HDFSClient:
HDFSClient
-------------------------------
.. py:class:: paddle.distributed.fleet.utils.fs.HDFSClient
.. _cn_api_distributed_fleet_utils_fs_LocalFS:
LocalFS
-------------------------------
.. py:class:: paddle.distributed.fleet.utils.fs.LocalFS
...@@ -5,7 +5,6 @@ prepare_context ...@@ -5,7 +5,6 @@ prepare_context
.. py:class:: paddle.fluid.dygraph.prepare_context(strategy=None) .. py:class:: paddle.fluid.dygraph.prepare_context(strategy=None)
:api_attr: 命令式编程模式(动态图)
......
...@@ -25,8 +25,8 @@ Normal ...@@ -25,8 +25,8 @@ Normal
:math:`Z`: 正态分布常量。 :math:`Z`: 正态分布常量。
参数: 参数:
- **loc** (int|float|list|numpy.ndarray|Tensor) - 正态分布平均值。数据类型为int、float32、list、numpy.ndarray或Tensor。 - **loc** (int|float|list|numpy.ndarray|Tensor) - 正态分布平均值。数据类型为int、float、list、numpy.ndarray或Tensor。
- **scale** (int|float|list|numpy.ndarray|Tensor) - 正态分布标准差。数据类型为int、float32、list、numpy.ndarray或Tensor。 - **scale** (int|float|list|numpy.ndarray|Tensor) - 正态分布标准差。数据类型为int、float、list、numpy.ndarray或Tensor。
- **name** (str,可选) - 操作的名称(可选,默认值为None)。更多信息请参见 :ref:`api_guide_Name`。 - **name** (str,可选) - 操作的名称(可选,默认值为None)。更多信息请参见 :ref:`api_guide_Name`。
**代码示例**: **代码示例**:
...@@ -75,7 +75,7 @@ Normal ...@@ -75,7 +75,7 @@ Normal
参数: 参数:
- **shape** (list) - 1维列表,指定生成样本的维度。数据类型为int32。 - **shape** (list) - 1维列表,指定生成样本的维度。数据类型为int32。
- **seed** (int) - 长整型数。 - **seed** (int) - 长整型数。
返回:预先设计好维度的张量, 数据类型为float32 返回:预先设计好维度的张量, 数据类型为float32
返回类型:Tensor 返回类型:Tensor
...@@ -83,7 +83,17 @@ Normal ...@@ -83,7 +83,17 @@ Normal
.. py:function:: entropy() .. py:function:: entropy()
信息熵 信息熵
数学公式:
.. math::
entropy(\sigma) = 0.5 \log (2 \pi e \sigma^2)
上面的数学公式中:
:math:`scale = \sigma` : 标准差。
返回:正态分布的信息熵, 数据类型为float32 返回:正态分布的信息熵, 数据类型为float32
返回类型:Tensor 返回类型:Tensor
...@@ -94,7 +104,7 @@ Normal ...@@ -94,7 +104,7 @@ Normal
参数: 参数:
- **value** (Tensor) - 输入张量。数据类型为float32或float64。 - **value** (Tensor) - 输入张量。数据类型为float32或float64。
返回:对数概率, 数据类型与value相同 返回:对数概率, 数据类型与value相同
返回类型:Tensor 返回类型:Tensor
...@@ -105,7 +115,7 @@ Normal ...@@ -105,7 +115,7 @@ Normal
参数: 参数:
- **value** (Tensor) - 输入张量。数据类型为float32或float64。 - **value** (Tensor) - 输入张量。数据类型为float32或float64。
返回:概率, 数据类型与value相同 返回:概率, 数据类型与value相同
返回类型:Tensor 返回类型:Tensor
...@@ -114,9 +124,28 @@ Normal ...@@ -114,9 +124,28 @@ Normal
两个正态分布之间的KL散度。 两个正态分布之间的KL散度。
数学公式:
.. math::
KL\_divergence(\mu_0, \sigma_0; \mu_1, \sigma_1) = 0.5 (ratio^2 + (\frac{diff}{\sigma_1})^2 - 1 - 2 \ln {ratio})
ratio = \frac{\sigma_0}{\sigma_1}
diff = \mu_1 - \mu_0
上面的数学公式中:
:math:`loc = \mu_0`: 当前正态分布的平均值。
:math:`scale = \sigma_0`: 当前正态分布的标准差。
:math:`loc = \mu_1`: 另一个正态分布的平均值。
:math:`scale = \sigma_1`: 另一个正态分布的标准差。
:math:`ratio`: 两个标准差之间的比例。
:math:`diff`: 两个平均值之间的差值。
参数: 参数:
- **other** (Normal) - Normal的实例。 - **other** (Normal) - Normal的实例。
返回:两个正态分布之间的KL散度, 数据类型为float32 返回:两个正态分布之间的KL散度, 数据类型为float32
返回类型:Tensor 返回类型:Tensor
...@@ -125,4 +154,3 @@ Normal ...@@ -125,4 +154,3 @@ Normal
...@@ -27,8 +27,8 @@ Uniform ...@@ -27,8 +27,8 @@ Uniform
参数low和high的维度必须能够支持广播。 参数low和high的维度必须能够支持广播。
参数: 参数:
- **low** (int|float|list|numpy.ndarray|Tensor) - 均匀分布的下边界。数据类型为int、float32、list、numpy.ndarray或Tensor。 - **low** (int|float|list|numpy.ndarray|Tensor) - 均匀分布的下边界。数据类型为int、float、list、numpy.ndarray或Tensor。
- **high** (int|float|list|numpy.ndarray|Tensor) - 均匀分布的上边界。数据类型为int、float32、list、numpy.ndarray或Tensor。 - **high** (int|float|list|numpy.ndarray|Tensor) - 均匀分布的上边界。数据类型为int、float、list、numpy.ndarray或Tensor。
- **name** (str,可选) - 操作的名称(可选,默认值为None)。更多信息请参见 :ref:`api_guide_Name`。 - **name** (str,可选) - 操作的名称(可选,默认值为None)。更多信息请参见 :ref:`api_guide_Name`。
**代码示例**: **代码示例**:
...@@ -82,7 +82,11 @@ Uniform ...@@ -82,7 +82,11 @@ Uniform
.. py:function:: entropy() .. py:function:: entropy()
信息熵 信息熵
.. math::
entropy(low, high) = \log (high - low)
返回:均匀分布的信息熵, 数据类型为float32 返回:均匀分布的信息熵, 数据类型为float32
返回类型:Tensor 返回类型:Tensor
......
...@@ -6,7 +6,6 @@ DataFeedDesc ...@@ -6,7 +6,6 @@ DataFeedDesc
.. py:class:: paddle.fluid.DataFeedDesc(proto_file) .. py:class:: paddle.fluid.DataFeedDesc(proto_file)
:api_attr: 声明式编程模式(静态图)
......
...@@ -6,7 +6,6 @@ DataFeeder ...@@ -6,7 +6,6 @@ DataFeeder
.. py:class:: paddle.fluid.DataFeeder(feed_list, place, program=None) .. py:class:: paddle.fluid.DataFeeder(feed_list, place, program=None)
:api_attr: 声明式编程模式(静态图)
......
...@@ -6,7 +6,6 @@ DistributeTranspilerConfig ...@@ -6,7 +6,6 @@ DistributeTranspilerConfig
.. py:class:: paddle.fluid.transpiler.DistributeTranspilerConfig .. py:class:: paddle.fluid.transpiler.DistributeTranspilerConfig
:api_attr: 声明式编程模式(静态图)
......
...@@ -6,7 +6,6 @@ DistributeTranspiler ...@@ -6,7 +6,6 @@ DistributeTranspiler
.. py:class:: paddle.fluid.transpiler.DistributeTranspiler (config=None) .. py:class:: paddle.fluid.transpiler.DistributeTranspiler (config=None)
:api_attr: 声明式编程模式(静态图)
......
...@@ -6,7 +6,6 @@ append_backward ...@@ -6,7 +6,6 @@ append_backward
.. py:function:: paddle.fluid.backward.append_backward(loss, parameter_list=None, no_grad_set=None, callbacks=None) .. py:function:: paddle.fluid.backward.append_backward(loss, parameter_list=None, no_grad_set=None, callbacks=None)
:api_attr: 声明式编程模式(静态图)
......
...@@ -6,7 +6,6 @@ gradients ...@@ -6,7 +6,6 @@ gradients
.. py:function:: paddle.fluid.backward.gradients(targets, inputs, target_gradients=None, no_grad_set=None) .. py:function:: paddle.fluid.backward.gradients(targets, inputs, target_gradients=None, no_grad_set=None)
:api_attr: 声明式编程模式(静态图)
......
...@@ -5,9 +5,6 @@ GradientClipByGlobalNorm ...@@ -5,9 +5,6 @@ GradientClipByGlobalNorm
.. py:class:: paddle.fluid.clip.GradientClipByGlobalNorm(clip_norm, group_name='default_group', need_clip=None) .. py:class:: paddle.fluid.clip.GradientClipByGlobalNorm(clip_norm, group_name='default_group', need_clip=None)
:alias_main: paddle.nn.GradientClipByGlobalNorm
:alias: paddle.nn.GradientClipByGlobalNorm,paddle.nn.clip.GradientClipByGlobalNorm
:old_api: paddle.fluid.clip.GradientClipByGlobalNorm
......
...@@ -5,9 +5,6 @@ GradientClipByNorm ...@@ -5,9 +5,6 @@ GradientClipByNorm
.. py:class:: paddle.fluid.clip.GradientClipByNorm(clip_norm, need_clip=None) .. py:class:: paddle.fluid.clip.GradientClipByNorm(clip_norm, need_clip=None)
:alias_main: paddle.nn.GradientClipByNorm
:alias: paddle.nn.GradientClipByNorm,paddle.nn.clip.GradientClipByNorm
:old_api: paddle.fluid.clip.GradientClipByNorm
......
...@@ -5,9 +5,6 @@ GradientClipByValue ...@@ -5,9 +5,6 @@ GradientClipByValue
.. py:class:: paddle.fluid.clip.GradientClipByValue(max, min=None, need_clip=None) .. py:class:: paddle.fluid.clip.GradientClipByValue(max, min=None, need_clip=None)
:alias_main: paddle.nn.GradientClipByValue
:alias: paddle.nn.GradientClipByValue,paddle.nn.clip.GradientClipByValue
:old_api: paddle.fluid.clip.GradientClipByValue
......
...@@ -6,7 +6,6 @@ set_gradient_clip ...@@ -6,7 +6,6 @@ set_gradient_clip
.. py:function:: paddle.fluid.clip.set_gradient_clip(clip, param_list=None, program=None) .. py:function:: paddle.fluid.clip.set_gradient_clip(clip, param_list=None, program=None)
:api_attr: 声明式编程模式(静态图)
......
...@@ -6,7 +6,6 @@ BuildStrategy ...@@ -6,7 +6,6 @@ BuildStrategy
.. py:class:: paddle.fluid.BuildStrategy .. py:class:: paddle.fluid.BuildStrategy
:api_attr: 声明式编程模式(静态图)
......
...@@ -6,7 +6,6 @@ CompiledProgram ...@@ -6,7 +6,6 @@ CompiledProgram
.. py:class:: paddle.fluid.CompiledProgram(program_or_graph, build_strategy=None) .. py:class:: paddle.fluid.CompiledProgram(program_or_graph, build_strategy=None)
:api_attr: 声明式编程模式(静态图)
......
...@@ -6,7 +6,6 @@ ExecutionStrategy ...@@ -6,7 +6,6 @@ ExecutionStrategy
.. py:class:: paddle.fluid.ExecutionStrategy .. py:class:: paddle.fluid.ExecutionStrategy
:api_attr: 声明式编程模式(静态图)
......
...@@ -7,7 +7,6 @@ BeamSearchDecoder ...@@ -7,7 +7,6 @@ BeamSearchDecoder
.. py:class:: paddle.fluid.layers.BeamSearchDecoder(cell, start_token, end_token, beam_size, embedding_fn=None, output_fn=None) .. py:class:: paddle.fluid.layers.BeamSearchDecoder(cell, start_token, end_token, beam_size, embedding_fn=None, output_fn=None)
:api_attr: 声明式编程模式(静态图)
......
...@@ -7,7 +7,6 @@ create_random_int_lodtensor ...@@ -7,7 +7,6 @@ create_random_int_lodtensor
.. py:function:: paddle.fluid.create_random_int_lodtensor(recursive_seq_lens, base_shape, place, low, high) .. py:function:: paddle.fluid.create_random_int_lodtensor(recursive_seq_lens, base_shape, place, low, high)
:api_attr: 声明式编程模式(静态图)
......
...@@ -5,9 +5,6 @@ BatchNorm ...@@ -5,9 +5,6 @@ BatchNorm
.. py:class:: paddle.fluid.dygraph.BatchNorm(num_channels, act=None, is_test=False, momentum=0.9, epsilon=1e-05, param_attr=None, bias_attr=None, dtype='float32', data_layout='NCHW', in_place=False, moving_mean_name=None, moving_variance_name=None, do_model_average_for_mean_and_var=False, use_global_stats=False, trainable_statistics=False) .. py:class:: paddle.fluid.dygraph.BatchNorm(num_channels, act=None, is_test=False, momentum=0.9, epsilon=1e-05, param_attr=None, bias_attr=None, dtype='float32', data_layout='NCHW', in_place=False, moving_mean_name=None, moving_variance_name=None, do_model_average_for_mean_and_var=False, use_global_stats=False, trainable_statistics=False)
:alias_main: paddle.nn.BatchNorm
:alias: paddle.nn.BatchNorm,paddle.nn.layer.BatchNorm,paddle.nn.layer.norm.BatchNorm
:old_api: paddle.fluid.dygraph.BatchNorm
......
...@@ -5,9 +5,6 @@ BilinearTensorProduct ...@@ -5,9 +5,6 @@ BilinearTensorProduct
.. py:class:: paddle.fluid.dygraph.BilinearTensorProduct(input1_dim, input2_dim, output_dim, name=None, act=None, param_attr=None, bias_attr=None, dtype="float32") .. py:class:: paddle.fluid.dygraph.BilinearTensorProduct(input1_dim, input2_dim, output_dim, name=None, act=None, param_attr=None, bias_attr=None, dtype="float32")
:alias_main: paddle.nn.BilinearTensorProduct
:alias: paddle.nn.BilinearTensorProduct,paddle.nn.layer.BilinearTensorProduct,paddle.nn.layer.common.BilinearTensorProduct
:old_api: paddle.fluid.dygraph.BilinearTensorProduct
......
...@@ -5,9 +5,6 @@ Embedding ...@@ -5,9 +5,6 @@ Embedding
.. py:class:: paddle.fluid.dygraph.Embedding(size, is_sparse=False, is_distributed=False, padding_idx=None, param_attr=None, dtype='float32') .. py:class:: paddle.fluid.dygraph.Embedding(size, is_sparse=False, is_distributed=False, padding_idx=None, param_attr=None, dtype='float32')
:alias_main: paddle.nn.Embedding
:alias: paddle.nn.Embedding,paddle.nn.layer.Embedding,paddle.nn.layer.common.Embedding
:old_api: paddle.fluid.dygraph.Embedding
......
...@@ -6,7 +6,6 @@ GRUCell ...@@ -6,7 +6,6 @@ GRUCell
.. py:class:: paddle.fluid.layers.GRUCell(hidden_size, param_attr=None, bias_attr=None, gate_activation=None, activation=None, dtype="float32", name="GRUCell") .. py:class:: paddle.fluid.layers.GRUCell(hidden_size, param_attr=None, bias_attr=None, gate_activation=None, activation=None, dtype="float32", name="GRUCell")
:api_attr: 声明式编程模式(静态图)
......
...@@ -5,9 +5,6 @@ GroupNorm ...@@ -5,9 +5,6 @@ GroupNorm
.. py:class:: paddle.fluid.dygraph.GroupNorm(channels, groups, epsilon=1e-05, param_attr=None, bias_attr=None, act=None, data_layout='NCHW', dtype="float32") .. py:class:: paddle.fluid.dygraph.GroupNorm(channels, groups, epsilon=1e-05, param_attr=None, bias_attr=None, act=None, data_layout='NCHW', dtype="float32")
:alias_main: paddle.nn.GroupNorm
:alias: paddle.nn.GroupNorm,paddle.nn.layer.GroupNorm,paddle.nn.layer.norm.GroupNorm
:old_api: paddle.fluid.dygraph.GroupNorm
......
...@@ -7,7 +7,6 @@ LSTMCell ...@@ -7,7 +7,6 @@ LSTMCell
.. py:class:: paddle.fluid.layers.LSTMCell(hidden_size, param_attr=None, bias_attr=None, gate_activation=None, activation=None, forget_bias=1.0, dtype="float32", name="LSTMCell") .. py:class:: paddle.fluid.layers.LSTMCell(hidden_size, param_attr=None, bias_attr=None, gate_activation=None, activation=None, forget_bias=1.0, dtype="float32", name="LSTMCell")
:api_attr: 声明式编程模式(静态图)
......
...@@ -6,7 +6,6 @@ LambdaDecay ...@@ -6,7 +6,6 @@ LambdaDecay
.. py:class:: paddle.fluid.dygraph.LambdaDecay(learning_rate, lr_lambda) .. py:class:: paddle.fluid.dygraph.LambdaDecay(learning_rate, lr_lambda)
:api_attr: 命令式编程模式(动态图)
该API提供 lambda函数 设置学习率的功能。 ``lr_lambda`` 为一个lambda函数,其通过 ``epoch`` 计算出一个因子,该因子会乘以初始学习率。 该API提供 lambda函数 设置学习率的功能。 ``lr_lambda`` 为一个lambda函数,其通过 ``epoch`` 计算出一个因子,该因子会乘以初始学习率。
......
...@@ -5,9 +5,6 @@ LayerNorm ...@@ -5,9 +5,6 @@ LayerNorm
.. py:class:: paddle.fluid.dygraph.LayerNorm(normalized_shape, scale=True, shift=True, begin_norm_axis=1, epsilon=1e-05, param_attr=None, bias_attr=None, act=None, dtype="float32") .. py:class:: paddle.fluid.dygraph.LayerNorm(normalized_shape, scale=True, shift=True, begin_norm_axis=1, epsilon=1e-05, param_attr=None, bias_attr=None, act=None, dtype="float32")
:alias_main: paddle.nn.LayerNorm
:alias: paddle.nn.LayerNorm,paddle.nn.layer.LayerNorm,paddle.nn.layer.norm.LayerNorm
:old_api: paddle.fluid.dygraph.LayerNorm
......
...@@ -5,9 +5,6 @@ Linear ...@@ -5,9 +5,6 @@ Linear
.. py:class:: paddle.fluid.dygraph.Linear(input_dim, output_dim, param_attr=None, bias_attr=None, act=None, dtype='float32') .. py:class:: paddle.fluid.dygraph.Linear(input_dim, output_dim, param_attr=None, bias_attr=None, act=None, dtype='float32')
:alias_main: paddle.nn.Linear
:alias: paddle.nn.Linear,paddle.nn.layer.Linear,paddle.nn.layer.common.Linear
:old_api: paddle.fluid.dygraph.Linear
......
...@@ -6,7 +6,6 @@ MultiStepDecay ...@@ -6,7 +6,6 @@ MultiStepDecay
.. py:class:: paddle.fluid.dygraph.MultiStepDecay(learning_rate, milestones, decay_rate=0.1) .. py:class:: paddle.fluid.dygraph.MultiStepDecay(learning_rate, milestones, decay_rate=0.1)
:api_attr: 命令式编程模式(动态图)
该接口提供 ``MultiStep`` 衰减学习率的功能。 该接口提供 ``MultiStep`` 衰减学习率的功能。
......
...@@ -5,9 +5,6 @@ Pool2D ...@@ -5,9 +5,6 @@ Pool2D
.. py:class:: paddle.fluid.dygraph.Pool2D(pool_size=-1, pool_type='max', pool_stride=1, pool_padding=0, global_pooling=False, use_cudnn=True, ceil_mode=False, exclusive=True, data_format="NCHW") .. py:class:: paddle.fluid.dygraph.Pool2D(pool_size=-1, pool_type='max', pool_stride=1, pool_padding=0, global_pooling=False, use_cudnn=True, ceil_mode=False, exclusive=True, data_format="NCHW")
:alias_main: paddle.nn.Pool2D
:alias: paddle.nn.Pool2D,paddle.nn.layer.Pool2D,paddle.nn.layer.common.Pool2D
:old_api: paddle.fluid.dygraph.Pool2D
......
...@@ -5,9 +5,6 @@ SpectralNorm ...@@ -5,9 +5,6 @@ SpectralNorm
.. py:class:: paddle.fluid.dygraph.SpectralNorm(weight_shape, dim=0, power_iters=1, eps=1e-12, name=None, dtype="float32") .. py:class:: paddle.fluid.dygraph.SpectralNorm(weight_shape, dim=0, power_iters=1, eps=1e-12, name=None, dtype="float32")
:alias_main: paddle.nn.SpectralNorm
:alias: paddle.nn.SpectralNorm,paddle.nn.layer.SpectralNorm,paddle.nn.layer.norm.SpectralNorm
:old_api: paddle.fluid.dygraph.SpectralNorm
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册