未验证 提交 5d7bc809 编写于 作者: T Tink_Y 提交者: GitHub

Update fluid_design_idea.md

上级 f29949f7
...@@ -54,7 +54,7 @@ blocks中包含: ...@@ -54,7 +54,7 @@ blocks中包含:
block的概念与通用程序一致,例如在下列这段C++代码中包含三个block: block的概念与通用程序一致,例如在下列这段C++代码中包含三个block:
``` C++ ``` cpp
int main(){ //block 0 int main(){ //block 0
int i = 0; int i = 0;
if (i<10){ //block 1 if (i<10){ //block 1
...@@ -96,7 +96,7 @@ prob = ie() ...@@ -96,7 +96,7 @@ prob = ie()
`BlockDesc`中包含本地变量的定义`vars`,和一系列的operator`ops` `BlockDesc`中包含本地变量的定义`vars`,和一系列的operator`ops`
``` ```cpp
message BlockDesc { message BlockDesc {
required int32 parent = 1; required int32 parent = 1;
repeated VarDesc vars = 2; repeated VarDesc vars = 2;
...@@ -107,7 +107,7 @@ parent ID表示父块,因此block中的操作符可以引用本地定义的变 ...@@ -107,7 +107,7 @@ parent ID表示父块,因此block中的操作符可以引用本地定义的变
Program 中的每层 block 都被压平并存储在数组中。blocks ID是这个数组中块的索引。 Program 中的每层 block 都被压平并存储在数组中。blocks ID是这个数组中块的索引。
``` ```cpp
message ProgramDesc { message ProgramDesc {
repeated BlockDesc blocks = 1; repeated BlockDesc blocks = 1;
} }
...@@ -119,14 +119,14 @@ message ProgramDesc { ...@@ -119,14 +119,14 @@ message ProgramDesc {
下述OpDesc的定义过程描述了一个operator可以包含哪些属性: 下述OpDesc的定义过程描述了一个operator可以包含哪些属性:
``` ```cpp
message OpDesc { message OpDesc {
AttrDesc attrs = 1; AttrDesc attrs = 1;
... ...
} }
``` ```
属性可以是block的类型,实际上就是上面描述的block ID: 属性可以是block的类型,实际上就是上面描述的block ID:
``` ```cpp
message AttrDesc { message AttrDesc {
required string name = 1; required string name = 1;
...@@ -162,7 +162,7 @@ Executor 在运行时将接受一个`ProgramDesc`、一个`block_id`和一个`Sc ...@@ -162,7 +162,7 @@ Executor 在运行时将接受一个`ProgramDesc`、一个`block_id`和一个`Sc
Executor的C++实现代码如下: Executor的C++实现代码如下:
``` ```cpp
class Executor{ class Executor{
public: public:
void Run(const ProgramDesc& pdesc, void Run(const ProgramDesc& pdesc,
...@@ -201,7 +201,6 @@ Fluid使用Executor.run来运行程序。定义中通过Feed映射获取数据 ...@@ -201,7 +201,6 @@ Fluid使用Executor.run来运行程序。定义中通过Feed映射获取数据
```python ```python
... ...
...
x = numpy.random.random(size=(10, 1)).astype('float32') x = numpy.random.random(size=(10, 1)).astype('float32')
outs = exe.run( outs = exe.run(
feed={'X': x}, feed={'X': x},
...@@ -243,7 +242,7 @@ sgd_optimizer.minimize(avg_cost) ...@@ -243,7 +242,7 @@ sgd_optimizer.minimize(avg_cost)
print(fluid.default_main_program().to_string(True)) print(fluid.default_main_program().to_string(True))
``` ```
完整ProgramDesc可以在本地查看,本次仅节选一部分结果如下: 完整ProgramDesc可以在本地查看,本次仅节选一部分结果如下:
```python ```
blocks { blocks {
idx: 0 idx: 0
parent_idx: -1 parent_idx: -1
...@@ -290,7 +289,6 @@ blocks { ...@@ -290,7 +289,6 @@ blocks {
} }
persistable: false persistable: false
... ...
...
``` ```
从输出结果中可以看到,整个定义过程在框架内部转化为了一段ProgramDesc,以block idx为索引。 从输出结果中可以看到,整个定义过程在框架内部转化为了一段ProgramDesc,以block idx为索引。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册