未验证 提交 289420aa 编写于 作者: X xiaoting 提交者: GitHub

add scope&variable concept for design doc (#882)

* modified lrn formula

* modified design idea

* Update fluid_design_idea.md

* Update fluid_design_idea.md
上级 50f90580
...@@ -97,7 +97,7 @@ prob = ie() ...@@ -97,7 +97,7 @@ prob = ie()
用户描述的block与program信息在Fluid中以[protobuf](https://en.wikipedia.org/wiki/Protocol_Buffers) 格式保存,所有的`protobuf`信息被定义在`framework.proto`中,在Fluid中被称为BlockDesc和ProgramDesc。ProgramDesc和BlockDesc的概念类似于一个[抽象语法树](https://en.wikipedia.org/wiki/Abstract_syntax_tree) 用户描述的block与program信息在Fluid中以[protobuf](https://en.wikipedia.org/wiki/Protocol_Buffers) 格式保存,所有的`protobuf`信息被定义在`framework.proto`中,在Fluid中被称为BlockDesc和ProgramDesc。ProgramDesc和BlockDesc的概念类似于一个[抽象语法树](https://en.wikipedia.org/wiki/Abstract_syntax_tree)
`BlockDesc`中包含本地变量的定义`vars`,和一系列的operator`ops` `BlockDesc`中包含本地变量的定义 [vars](../../api_guides/low_level/program.html#variable),和一系列的operator`ops`
```cpp ```cpp
message BlockDesc { message BlockDesc {
...@@ -150,10 +150,12 @@ message AttrDesc { ...@@ -150,10 +150,12 @@ message AttrDesc {
Executor 在运行时将接受一个`ProgramDesc`、一个`block_id`和一个`Scope``ProgramDesc``block`的列表,每一项包含`block`中所有参数和`operator``protobuf`定义;`block_id`指定入口块;`Scope`是所有变量实例的容器。 Executor 在运行时将接受一个`ProgramDesc`、一个`block_id`和一个`Scope``ProgramDesc``block`的列表,每一项包含`block`中所有参数和`operator``protobuf`定义;`block_id`指定入口块;`Scope`是所有变量实例的容器。
其中 `Scope` 包含了 `name``Variable` 的映射,所有变量都被定义在 `Scope` 里。大部分API会默认使用 `global_scope` ,例如 :code:`Executor.run`,您也可以指定网络运行在某个特定的 `Scope` 中,一个网络可以在不同的 `Scope`内运行,并在该 `Scope` 内更新不同的 `Variable`
完成的编译执行的具体过程如下图所示: 完成的编译执行的具体过程如下图所示:
<p align="center"> <p align="center">
<img src="https://raw.githubusercontent.com/PaddlePaddle/FluidDoc/develop/doc/fluid/advanced_usage/design_idea/image/executor_design.png" width=600> <img src="https://raw.githubusercontent.com/PaddlePaddle/FluidDoc/develop/doc/fluid/advanced_usage/design_idea/image/executor_design.png" width=600>
</p> </p>
1. Executor 为每一个block创建一个Scope,Block是可嵌套的,因此Scope也是可嵌套的 1. Executor 为每一个block创建一个Scope,Block是可嵌套的,因此Scope也是可嵌套的
...@@ -183,8 +185,7 @@ class Executor{ ...@@ -183,8 +185,7 @@ class Executor{
auto op = CreateOp(*op_desc); auto op = CreateOp(*op_desc);
op->Run(*local_scope, place_); op->Run(*local_scope, place_);
} }
} }
};
``` ```
**创建Executor** **创建Executor**
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册