未验证 提交 88707316 编写于 作者: Y Yang Zhang 提交者: GitHub

Update `no_grad` docs (#2324)

* Update `no_grad` docs

add alias `paddle.no_grad`
use `paddle.no_grad()` for decorator usage
update code sample

* Fix alias

* Reword decorator usage note
上级 ea408129
...@@ -4,48 +4,51 @@ no_grad ...@@ -4,48 +4,51 @@ no_grad
------------------------------- -------------------------------
.. py:method:: paddle.fluid.dygraph.no_grad(func=None) .. py:class:: paddle.fluid.dygraph.no_grad
:api_attr: 命令式编程模式(动态图) :api_attr: 命令式编程模式(动态图)
:alias_main: paddle.no_grad
:alias: paddle.no_grad
:old_api: paddle.fluid.dygraph.no_grad
创建一个上下文来禁用动态图梯度计算。在此模式下,每次计算的结果都将具有stop_gradient=True。 创建一个上下文来禁用动态图梯度计算。在此模式下,每次计算的结果都将具有stop_gradient=True。
也可以用作一个装饰器(确保不要用括号来初始化)。 也可以用作一个装饰器(需要创建实例对象作为装饰器)。
**代码示例** **代码示例**
.. code-block:: python .. code-block:: python
import numpy as np import numpy as np
import paddle.fluid as fluid import paddle.fluid as fluid
paddle.enable_imperative()
# 用作生成器 # 用作生成器
data = np.array([[2, 3], [4, 5]]).astype('float32') data = np.array([[2, 3], [4, 5]]).astype('float32')
with fluid.dygraph.guard(): l0 = fluid.Linear(2, 2) # l0.weight.gradient() is None
l0 = fluid.Linear(2, 2) # l0.weight.gradient() is None l1 = fluid.Linear(2, 2)
l1 = fluid.Linear(2, 2) with fluid.no_grad():
with fluid.dygraph.no_grad(): # l1.weight.stop_gradient is False
# l1.weight.stop_gradient is False tmp = l1.weight * 2 # tmp.stop_gradient is True
tmp = l1.weight * 2 # tmp.stop_gradient is True x = fluid.dygraph.to_variable(data)
x = fluid.dygraph.to_variable(data) y = l0(x) + tmp
y = l0(x) + tmp o = l1(y)
o = l1(y) o.backward()
o.backward() print(tmp.gradient() is None) # True
print(tmp.gradient() is None) # True print(l0.weight.gradient() is None) # False
print(l0.weight.gradient() is None) # False
# 用作装饰器 # 用作装饰器
@fluid.dygraph.no_grad
@fluid.no_grad()
def test_layer(): def test_layer():
with fluid.dygraph.guard(): inp = np.ones([3, 1024], dtype='float32')
inp = np.ones([3, 1024], dtype='float32') t = fluid.dygraph.base.to_variable(inp)
t = fluid.dygraph.base.to_variable(inp) linear1 = fluid.Linear(1024, 4, bias_attr=False)
linear1 = fluid.Linear(1024, 4, bias_attr=False) linear2 = fluid.Linear(4, 4)
linear2 = fluid.Linear(4, 4) ret = linear1(t)
ret = linear1(t) dy_ret = linear2(ret)
dy_ret = linear2(ret)
test_layer() test_layer()
...@@ -5,7 +5,7 @@ paddle ...@@ -5,7 +5,7 @@ paddle
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 1
paddle_cn/abs_cn.rst paddle_cn/abs_cn.rst
paddle_cn/acos_cn.rst paddle_cn/acos_cn.rst
paddle_cn/addcmul_cn.rst paddle_cn/addcmul_cn.rst
paddle_cn/addmm_cn.rst paddle_cn/addmm_cn.rst
...@@ -101,7 +101,8 @@ paddle ...@@ -101,7 +101,8 @@ paddle
paddle_cn/minimum_cn.rst paddle_cn/minimum_cn.rst
paddle_cn/multiplex_cn.rst paddle_cn/multiplex_cn.rst
paddle_cn/mul_cn.rst paddle_cn/mul_cn.rst
paddle_cn/name_scope_cn.rst paddle_cn/name_scope_cn.rst
paddle_cn/no_grad_cn.rst
paddle_cn/nonzero_cn.rst paddle_cn/nonzero_cn.rst
paddle_cn/not_equal_cn.rst paddle_cn/not_equal_cn.rst
paddle_cn/ones_cn.rst paddle_cn/ones_cn.rst
......
.. _cn_api_paddle_cn_name_scope:
name_scope
-------------------------------
:doc_source: paddle.fluid.dygraph.no_grad
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册