Skip to content

Commit c3846de

Browse files
Mddcttink2123
authored andcommitted
First 15 translation (#281)
* first_commit_for_testing- * change format * Update fluid_cn.rst * Update fluid_cn.rst * Update fluid_cn.rst * Update fluid_cn.rst * Update fluid_cn.rst * Update fluid_cn.rst * Update fluid_cn.rst * Update fluid_cn.rst * Update fluid_cn.rst * Update fluid_cn.rst * Update fluid_cn.rst * Update fluid_cn.rst * Update fluid_cn.rst * Update fluid_cn.rst * Update fluid_cn.rst * Update fluid_cn.rst * Update fluid_cn.rst * Update fluid_cn.rst * Update fluid_cn.rst * Update fluid_cn.rst * Update fluid_cn.rst * Create layers_cn.rst * Update layers_cn.rst * Update layers_cn.rst * Update layers_cn.rst * Update layers_cn.rst * Update layers_cn.rst * Update layers_cn.rst * Update fluid_cn.rst 修改笔误等 * Update fluid_cn.rst 修改笔误等 * Update layers_cn.rst 修改部分格式 * Update layers_cn.rst 修改了写格式
1 parent d4b445a commit c3846de

File tree

2 files changed

+805
-0
lines changed

2 files changed

+805
-0
lines changed

doc/fluid/api/fluid_cn.rst

Lines changed: 395 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,395 @@
1+
2+
.. _cn_api_fluid_Program:
3+
4+
Program
5+
>>>>>>>>>>>>
6+
7+
class paddle.fluid.Program
8+
""""""""""""""""""""""""""""""""""""""""""
9+
10+
创建python program, 在paddleFluid内部会被转换为ProgramDesc描述语言,是被用来创建c++ Program。Program像容器一样也是一种独立的程序语言。Program包括至少一个块(Block),控制流比如conditional_block包括while_op,该Program将会含有嵌套块(nested block)。详情请参阅framework.proto。
11+
12+
注意:默认情况下,paddleFluid内部默认含有default_startup_program和default_main_program,它们将共享参数。default_startup_program只运行一次来初始化参数,default_main_program在每个mini batch中运行并调整权重。
13+
14+
返回: empty program
15+
16+
**代码示例**
17+
18+
.. code-block:: python
19+
20+
main_program = fluid.Program()
21+
startup_program = fluid.Program()
22+
with fluid.program_guard(main_program=main_program, startup_program=startup_program):
23+
fluid.layers.data(name="x", shape=[-1, 784], dtype='float32')
24+
fluid.layers.data(name="y", shape=[-1, 1], dtype='int32')
25+
fluid.layers.fc(name="fc", shape=[10], dtype='float32', act="relu")
26+
27+
op_role
28+
""""""""""""""""""""""""""""""""""""""""""
29+
operator的角色,值只能是枚举变量{Forward, Backward, Optimize}。
30+
31+
注意:这是一个底层API。它仅用于ParallelExecutor复制或调度operator到设备。
32+
33+
例如,Forward operator应该在每个设备上执行。Backward operator在每个设备上执行,并将后向传播的参数梯度(使用op_role_var获得该变量)合并到一个设备上。Optimize operator只在一个设备上执行,并向其他设备广播新的参数,
34+
35+
set_op_role
36+
""""""""""""""""""""""""""""""""""""""""""
37+
operator的角色,值只能是枚举变量{Forward, Backward, Optimize}。
38+
39+
注意:这是一个底层API。它仅用于ParallelExecutor复制或调度operator到设备上执行。
40+
41+
例如,Forward operator应该在每个设备上执行。Backward operato应该在每个设备上执行,并将后向传播的参数梯度(使用op_role_var获得该变量)合并到一个设备上。Optimize operator只在一个设备上执行,并向其他设备广播新的参数
42+
43+
op_role_var
44+
""""""""""""""""""""""""""""""""""""""""""
45+
op_role的辅助变量。
46+
47+
参考:Program.op_role 文档。
48+
49+
注意:这是一个底层API,用户不应该直接使用它。
50+
51+
set_op_role_var
52+
""""""""""""""""""""""""""""""""""""""""""
53+
op_role的辅助变量。
54+
55+
参考:Program.op_role 文档。
56+
57+
注意:这是一个底层API。用户不应该直接使用它。
58+
59+
to_string(throw_on_error, with_details=False)
60+
""""""""""""""""""""""""""""""""""""""""""
61+
62+
用于debug
63+
64+
参数:
65+
66+
- throw_on_error(bool): 没有设置任何必需的字段时,抛出值错误。
67+
- with_details(bool): 值为true时,打印更多关于变量和参数的信息,如trainable, optimize_attr等
68+
69+
返回:
70+
71+
(str): debug 字符串
72+
73+
抛出异常:
74+
75+
ValueError:当throw_on_error = true时,但没有设置任何必需的字段时,抛出ValueError。
76+
77+
clone(for_test=False)
78+
""""""""""""""""""""""""""""""""""""""""""
79+
创建一个新的、相同的Program。
80+
81+
有些operator,在训练和测试之间的行为是不同的,比如batch_norm。它们有一个属性is_test来控制行为。当for_test=True时,此方法将把它们的is_test属性更改为True。
82+
83+
- 克隆Program,该Program用于训练时,将for_test设置为False。
84+
- 克隆Program,该Program用于测试时,将for_test设置为True。
85+
86+
注意:此API不会删除任何操作符。请在backward和optimization之前使用clone(for_test=True)。
87+
88+
**代码示例**
89+
90+
.. code-block:: python
91+
92+
test_program = fluid.default_main_program().clone(for_test=True)
93+
optimizer = fluid.optimizer.Momentum(learning_rate=0.01, momentum=0.9)
94+
optimizer.minimize()
95+
96+
参数:for_test (bool) – 取值为True时,clone方法内部会把operator的属性is_test设置为true.
97+
98+
返回:一个新的、相同的Program.
99+
100+
返回类型:Program
101+
102+
**代码示例**
103+
104+
1. 克隆一个Program,示例代码如下:
105+
106+
.. code-block:: python
107+
108+
train_program = fluid.Program()
109+
startup_program = fluid.Program()
110+
with fluid.program_guard(train_program, startup_program):
111+
img = fluid.layers.data(name='image', shape=[784])
112+
hidden = fluid.layers.fc(input=img, size=200, act='relu')
113+
hidden = fluid.layers.dropout(hidden, dropout_prob=0.5)
114+
loss = fluid.layers.cross_entropy(
115+
input=fluid.layers.fc(hidden, size=10, act='softmax'),
116+
label=fluid.layers.data(name='label', shape=[1], dtype='int64'))
117+
test_program = train_program.clone(for_test=True)
118+
sgd = fluid.optimizer.SGD(learning_rate=1e-3)
119+
with fluid.program_guard(train_program, startup_program):
120+
sgd.minimize(loss)
121+
122+
2.如果分别运行train Program 和 test Program,则可以不使用clone。
123+
124+
.. code-block:: python
125+
126+
import paddle.fluid as fluid
127+
128+
def network(is_test):
129+
img = fluid.layers.data(name='image', shape=[784])
130+
hidden = fluid.layers.fc(input=img, size=200, act='relu')
131+
hidden = fluid.layers.dropout(hidden, dropout_prob=0.5, is_test=is_test)
132+
loss = fluid.layers.cross_entropy(
133+
input=fluid.layers.fc(hidden, size=10, act='softmax'),
134+
label=fluid.layers.data(name='label', shape=[1], dtype='int64'))
135+
return loss
136+
137+
train_program = fluid.Program()
138+
startup_program = fluid.Program()
139+
test_program = fluid.Program()
140+
141+
with fluid.program_guard(train_program, startup_program):
142+
with fluid.unique_name.guard():
143+
loss = network(is_test=False)
144+
sgd = fluid.optimizer.SGD(learning_rate=1e-3)
145+
sgd.minimize(loss)
146+
147+
# the test startup program is not used.
148+
with fluid.program_guard(test_program, fluid.Program()):
149+
with fluid.unique_name.guard():
150+
loss = network(is_test=True)
151+
152+
上边两个代码片段生成的Program是一样的。
153+
154+
static parse_from_string(binary_str)
155+
""""""""""""""""""""""""""""""""""""""""""
156+
反序列化protobuf,转换成program
157+
158+
注意:在序列化和反序列化之后,所有关于参数的信息都会丢失。
159+
160+
参数: binary_str_type (str) – prootbuf二进制字符串
161+
162+
返回: 反序列化后的ProgramDesc
163+
164+
返回类型:Program
165+
166+
num_blocks
167+
""""""""""""""""""""""""""""""""""""""""""
168+
该program中的block的个数
169+
170+
random_seed
171+
""""""""""""""""""""""""""""""""""""""""""
172+
173+
程序中随机运算符的默认随机种子。0意味着从随机设备中获取随机种子。
174+
175+
注意:必须在operator被添加之前设置。
176+
177+
global_block()
178+
""""""""""""""""""""""""""""""""""""""""""
179+
获取该program的第一个block。
180+
181+
block(index)
182+
""""""""""""""""""""""""""""""""""""""""""
183+
返回该program中 ,index指定的block。index类型为int
184+
185+
返回:index对应的block
186+
187+
返回类型:Block
188+
189+
current_block()
190+
""""""""""""""""""""""""""""""""""""""""""
191+
获取当前block。当前block是用来添加operators。
192+
193+
list_vars()
194+
""""""""""""""""""""""""""""""""""""""""""
195+
获取当前program中所有变量。返回值是一个可迭代对象(iterable object)。
196+
197+
返回:generator 会yield每个Program中的变量
198+
199+
返回类型:iterable
200+
201+
202+
.. _cn_api_fluid_name_scope:
203+
204+
name_scope
205+
>>>>>>>>>>>>
206+
207+
paddle.fluid.name_scope(*args, **kwds)
208+
""""""""""""""""""""""""""""""""""""""""""
209+
210+
为operators生成层次名称前缀
211+
212+
注意: 这个函数只能用于调试和可视化。不要将其用于分析,比如graph/program转换。
213+
214+
.. _cn_api_fluid_global_scope:
215+
216+
global_scope
217+
>>>>>>>>>>>>
218+
219+
paddle.fluid.global_scope()
220+
""""""""""""""""""""""""""""""""""""""""""
221+
222+
获取全局/默认作用域实例。很多api使用默认global_scope,例如Executor.run
223+
224+
返回:全局/默认作用域实例
225+
226+
返回类型:Scope
227+
228+
.. _cn_api_fluid_scope_guard:
229+
230+
scope_guard
231+
>>>>>>>>>>>>
232+
233+
paddle.fluid.scope_guard(*args, **kwds)()
234+
""""""""""""""""""""""""""""""""""""""""""
235+
236+
修改全局/默认作用scope, 运行时中的所有变量都将分配给新的scope。
237+
238+
参数:scope -新的全局/默认 scope。
239+
240+
**代码示例**
241+
242+
.. code-block:: python
243+
244+
import paddle.fluid as fluid
245+
246+
new_scope = fluid.Scope()
247+
with fluid.scope_guard(new_scope):
248+
...
249+
250+
251+
.. _cn_api_fluid_memory_optimize:
252+
253+
memory_optimize
254+
>>>>>>>>>>>>
255+
256+
paddle.fluid.memory_optimize(input_program, skip_opt_set=None, print_log=False, level=0, skip_grads=False)
257+
""""""""""""""""""""""""""""""""""""""""""
258+
259+
通过重用var内存来优化内存。
260+
261+
注意:它不支持block中嵌套子block。
262+
263+
参数:
264+
265+
- input_program (str) – 输入Program。
266+
- skip_opt_set (set) – set中的vars将不被内存优化。
267+
- print_log (bool) – 是否打印debug日志。
268+
- level (int) 如果 level=0 并且shape是完全相等,则重用。
269+
270+
返回: None
271+
272+
273+
.. _cn_api_fluid_DistributeTranspilerConfig:
274+
275+
DistributeTranspilerConfig
276+
>>>>>>>>>>>>
277+
278+
class paddle.fluid.DistributeTranspilerConfig
279+
""""""""""""""""""""""""""""""""""""""""""
280+
281+
slice_var_up (bool): 使用Tensor切片保存, 默认为True
282+
283+
split_method (PSDispatcher): 可使用 RoundRobin 或者 HashName
284+
285+
注意: 尝试选择最佳方法来达到负载均衡。
286+
287+
min_block_size (int): 最小数据块的大小
288+
289+
注意: 根据:https://github.com/PaddlePaddle/Paddle/issues/8638#issuecomment-369912156, 当数据块大小超过2MB时,我们可以有效地使用带宽。如果你想更改它,请详细查看slice_variable函数。
290+
291+
.. _cn_api_fluid_LoDTensor:
292+
293+
LoDTensor
294+
>>>>>>>>>>>>
295+
296+
class paddle.fluid.LoDTensor
297+
""""""""""""""""""""""""""""""""""""""""""
298+
299+
LoDTensor是一个具有LoD信息的张量(Tensor)
300+
301+
np.array(lod_tensor)可以将LoDTensor转换为numpy array。lod_tensor.lod()可以获得LoD信息。
302+
LoD是多层序列(Level of Details)的缩写,通常用于不同长度的序列。如果您不需要了解LoD信息,可以跳过下面的注解。
303+
304+
举例:
305+
306+
X 为 LoDTensor,它包含两个序列。第一个长度是2,第二个长度是3。
307+
308+
从Lod中可以计算出X的第一维度为5, 因为5=2+3, 说明X中有5个序列。在X中的每个序列中的每个元素有2列,因此X的shape为[5,2]。
309+
310+
::
311+
312+
x.lod = [[2, 3]] x.data = [[1, 2], [3, 4], // seq 1
313+
314+
[5, 6], [7, 8], [9, 10]] // seq 2
315+
316+
x.shape = [5, 2]
317+
318+
319+
LoD可以有多个level(例如,一个段落可以有多个句子,一个句子可以有多个单词)。下面的例子中,Y为LoDTensor ,lod_level为2。表示有2个序列,第一个序列的长度是2(有2个子序列),其中第二个序列的长度是1。第一序列的两个子序列长度分别为2和2。第二个序列的子序列的长度是3。
320+
321+
322+
::
323+
324+
y.lod = [[2 1], [2 2 3]] y.shape = [2+2+3, ...]
325+
326+
327+
.. note::
328+
329+
在上面的描述中,LoD是基于长度的。在paddle内部实现中,lod是基于偏移的。因此,在内部,y.lod表示为[[0,2,3],[0,2,4,7]](基于长度的Lod表示为为[[2-0,3-2],[2-0,4-2,7-4]])。
330+
331+
可以将LoD理解为recursive_sequence_length(递归序列长度)。此时,LoD必须是基于长度的。由于历史原因。当LoD在API中被称为lod时,它可能是基于偏移的。用户应该注意。
332+
333+
334+
::
335+
336+
has_valid_recursive_sequence_lengths(self: paddle.fluid.core.LoDTensor) → bool
337+
338+
339+
::
340+
341+
lod(self: paddle.fluid.core.LoDTensor) → List[List[int]]
342+
343+
344+
::
345+
346+
recursive_sequence_lengths(self: paddle.fluid.core.LoDTensor) → List[List[int]]
347+
348+
349+
::
350+
351+
set_lod(self: paddle.fluid.core.LoDTensor, arg0: List[List[int]]) → None
352+
353+
354+
::
355+
356+
set_recursive_sequence_lengths(self: paddle.fluid.core.LoDTensor, arg0: List[List[int]]) → None
357+
358+
359+
360+
361+
362+
.. _cn_api_fluid_WeightNormParamAttr:
363+
364+
WeightNormParamAttr
365+
>>>>>>>>>>>>
366+
367+
class paddle.fluid.WeightNormParamAttr(dim=None, name=None, initializer=None, learning_rate=1.0, regularizer=None, trainable=True, gradient_clip=None, do_model_average=False)
368+
""""""""""""""""""""""""""""""""""""""""""
369+
370+
权重归一化。权重归一化是将权重向量的长度与其方向解耦。`Weight Normalization: A Simple Reparameterization to Accelerate Training of Deep Neural Networks <https://arxiv.org/pdf/1602.07868.pdf>`_ 这篇paper中讨论了权重归一化的实现
371+
372+
参数:
373+
374+
- dim(list) : 参数的名称。默认None。
375+
- name (str): 参数的名称。默认None。
376+
- initializer(initializer): 初始化参数的方法。默认None。
377+
- learning_rate (float): 学习率。优化时学习速率global_lr∗parameter_lr∗scheduler_factor。默认1.0。
378+
- regularizer (WeightDecayRegularizer): 正则化因子。默认None。
379+
- trainable(bool) : 参数是否可训练。默认True。
380+
- gradient_clip (BaseGradientClipAttr): 梯度下降裁剪(Gradient Clipping)的方法。默认None。
381+
- do_model_average (bool): 参数是否应该model average。默认False。
382+
383+
返回: empty program
384+
385+
**代码示例**
386+
387+
.. code-block:: python
388+
389+
data = fluid.layers.data(name="data", shape=[3, 32, 32], dtype="float32")
390+
fc = fluid.layers.fc(input=data,
391+
size=1000,
392+
param_attr=WeightNormParamAttr(
393+
dim=None,
394+
name='weight_norm_param'))
395+

0 commit comments

Comments
 (0)