@@ -15,6 +15,8 @@ Executor
1515
1616
1717
18+
19+
1820 执行引擎(Executor)使用python脚本驱动,仅支持在单GPU环境下运行。多卡环境下请参考 ``ParallelExecutor `` 。
1921Python Executor可以接收传入的program,并根据feed map(输入映射表)和fetch_list(结果获取表)
2022向program中添加feed operators(数据输入算子)和fetch operators(结果获取算子)。
@@ -28,12 +30,38 @@ Executor将全局变量存储到全局作用域中,并为临时变量创建局
2830
2931program中所有的算子会按顺序执行。
3032
33+ **示例代码 **
34+
35+ .. code-block :: python
36+
37+ # 新建一个执行引擎Executor名为exe。
38+ place = fluid.CUDAPlace(0 ) if use_cuda else fluid.CPUPlace()
39+ exe = fluid.Executor(place)
40+
41+ # 仅运行一次startup program.
42+ # 不需要优化/编译这个startup program.
43+ exe.run(fluid.default_startup_program())
44+
45+ # 无需编译,直接运行main program
46+ loss, = exe.run(fluid.default_main_program(),
47+ feed = feed_dict,
48+ fetch_list = [loss.name])
49+
50+ # 另一种方法是,编译这个main program然后运行. 参考CompiledProgram
51+ compiled_prog = compiler.CompiledProgram(
52+ fluid.default_main_program()).with_data_parallel(
53+ loss_name = loss.name)
54+ loss, = exe.run(compiled_prog,
55+ feed = feed_dict,
56+ fetch_list = [loss.name])
57+
58+
3159 参数:
3260 - **place ** (core.CPUPlace|core.CUDAPlace(n)) – 指明了 ``Executor `` 的执行场所
3361
3462
3563
36- 提示:你可以用Executor来调试基于并行GPU实现的复杂网络 ,他们有完全一样的参数也会产生相同的结果。
64+ 提示:你可以用 `` Executor `` 来调试基于并行GPU实现的复杂网络 ,他们有完全一样的参数也会产生相同的结果。
3765
3866
3967.. py :method :: close()
@@ -62,8 +90,8 @@ feed map为该program提供输入数据。fetch_list提供program训练结束后
6290应注意,执行器会执行program中的所有算子而不仅仅是依赖于fetch_list的那部分。
6391
6492参数:
65- - **program ** (Program) – 需要执行的program,如果没有给定那么默认使用default_main_program
66- - **feed ** (dict) – 前向输入的变量,数据,词典dict类型, 例如 {“image”: ImageData, “label”: LableData }
93+ - **program ** (Program|CompiledProgram ) – 需要执行的program,如果没有给定那么默认使用default_main_program (未编译的)
94+ - **feed ** (dict) – 前向输入的变量,数据,词典dict类型, 例如 {“image”: ImageData, “label”: LabelData }
6795 - **fetch_list ** (list) – 用户想得到的变量或者命名的列表, run会根据这个列表给与结果
6896 - **feed_var_name ** (str) – 前向算子(feed operator)变量的名称
6997 - **fetch_var_name ** (str) – 结果获取算子(fetch operator)的输出变量名称
@@ -80,23 +108,21 @@ feed map为该program提供输入数据。fetch_list提供program训练结束后
80108
81109.. code-block :: python
82110
83-
84111 data = fluid.layers.data(name = ' X' , shape = [1 ], dtype = ' float32' )
85112 out = fluid.layers.create_tensor(dtype = ' float32' )
86113 hidden = fluid.layers.fc(input = data, size = 10 )
87- fluid.layers.assign(hidden, out)
114+ fluid.layers.assign(hidden,out)
88115 loss = fluid.layers.mean(out)
89116 adam = fluid.optimizer.Adam()
90- adam.minimize(loss)
117+ # adam.minimize(loss)
91118
92119
93120 .. code-block :: python
94-
95-
121+
96122 cpu = core.CPUPlace()
97123 exe = fluid.Executor(cpu)
98124 exe.run(fluid.default_startup_program())
99-
125+
100126 .. code-block :: python
101127
102128 x = numpy.random.random(size = (10 , 1 )).astype(' float32' )
@@ -118,7 +144,7 @@ feed map为该program提供输入数据。fetch_list提供program训练结束后
118144global_scope
119145-------------------------------
120146
121- .. py :function :: paddle.fluid.global_scope()
147+ .. py :function :: paddle.fluid.global_scope ()
122148
123149
124150 获取全局/默认作用域实例。很多api使用默认 ``global_scope `` ,例如 ``Executor.run `` 。
@@ -137,7 +163,7 @@ global_scope
137163scope_guard
138164-------------------------------
139165
140- .. py :function :: paddle.fluid.scope_guard( * args, ** kwds )
166+ .. py :function :: paddle.fluid.scope_guard (scope )
141167
142168
143169 修改全局/默认作用域(scope), 运行时中的所有变量都将分配给新的scope。
0 commit comments