From b24c7bd976c960752c3614330eb91d8f546bba10 Mon Sep 17 00:00:00 2001 From: Infinity_lee Date: Fri, 26 Aug 2022 23:49:07 +0800 Subject: [PATCH] Update case_analysis_cn.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix __call__ and 控制流转写的links --- docs/guides/jit/case_analysis_cn.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/guides/jit/case_analysis_cn.md b/docs/guides/jit/case_analysis_cn.md index 81595f75b7b..2920b21ca97 100644 --- a/docs/guides/jit/case_analysis_cn.md +++ b/docs/guides/jit/case_analysis_cn.md @@ -41,7 +41,7 @@ + 建议模型搭建时,尽量考虑将预测主逻辑放到 ``forward`` 函数中 + 将训练独有的逻辑放到 子函数 中,通过 ``if self.training`` 来控制 - + 最大程度抽离 训练和预测 的逻辑为 **公共子函数** + + 最大程度抽离 **训练和预测** 的逻辑为 **公共子函数** ## 二、何时指定 InputSpec? @@ -129,7 +129,7 @@ def forward(self, x): ## 四、to_tensor() 的使用 -``paddle.to_tensor()`` 接口是动态图模型代码中使用比较频繁的一个接口。 ``to_tensor`` 功能强大,将可以将一个 ``scalar`` , ``list`` ,``tuple`` , ``numpy.ndarray`` 转为 ``paddle.Tensor`` 类型。 +``paddle.to_tensor()`` 接口是动态图模型代码中使用比较频繁的一个接口。 ``to_tensor`` 功能强大,可以将一个 ``scalar`` , ``list`` ,``tuple`` , ``numpy.ndarray`` 转为 ``paddle.Tensor`` 类型。 此接口是动态图独有的接口,在动转静时,会转换为 ``assign`` 接口: @@ -191,7 +191,7 @@ class SimpleNet(paddle.nn.Layer): ## 五、 建议都继承 nn.Layer -动态图模型常常包含很多嵌套的子网络,建议各个自定义的子网络 ``sublayer`` **无论是否包含了参数,都继承 ``nn.Layer`` .** +动态图模型常常包含很多嵌套的子网络,建议各个自定义的子网络 ``sublayer`` **无论是否包含了参数,都继承 ``nn.Layer`` **。 从 **Parameters 和 Buffers** 章节可知,有些 ``paddle.to_tensor`` 接口转来的 ``Tensor`` 也可能参与预测逻辑分支的计算,即模型导出时,也需要作为参数序列化保存到 ``.pdiparams`` 文件中。 @@ -215,7 +215,7 @@ class SimpleNet(object): # <---- 继承 Object 同时,所有继承 ``nn.Layer`` 的 ``sublayer`` 都建议: -+ 重写 ``forward`` 函数,尽量避免重写 ``__call__``` 函数 ++ 重写 ``forward`` 函数,尽量避免重写 ``__call__`` 函数 > ``__call__`` 函数通常会包含框架层面的一些通用的处理逻辑,比如 ``pre_hook`` 和 ``post_hook`` 。重写此函数可能会覆盖框架层面的逻辑。 + 尽量将 ``forward`` 函数作为 sublayers 的调用入口 @@ -326,7 +326,7 @@ another_func.pdiparams.info // 存放额外的其他信息 ## 八、再谈控制流 -前面[【控制流转写】(./basic_usage_cn.html#sikongzhiliuzhuanxie)]提到,不论控制流 ``if/for/while`` 语句是否需要转为静态图中的 ``cond_op/while_op`` ,都会先进行代码规范化,如 ``IfElse`` 语句会规范为如下范式: +前面[【控制流转写】](./basic_usage_cn.html#sikongzhiliuzhuanxie)提到,不论控制流 ``if/for/while`` 语句是否需要转为静态图中的 ``cond_op/while_op`` ,都会先进行代码规范化,如 ``IfElse`` 语句会规范为如下范式: ```python def true_fn_0(out):