Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
FluidDoc
提交
362df867
F
FluidDoc
项目概览
PaddlePaddle
/
FluidDoc
通知
5
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
23
列表
看板
标记
里程碑
合并请求
111
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
FluidDoc
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
23
Issue
23
列表
看板
标记
里程碑
合并请求
111
合并请求
111
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
362df867
编写于
9月 24, 2019
作者:
A
Aurelius84
提交者:
GitHub
9月 24, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add Name zh doc (#1306)
* add name * refine name doc
上级
5a2d1f0f
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
44 addition
and
0 deletion
+44
-0
doc/fluid/api_guides/low_level/program.rst
doc/fluid/api_guides/low_level/program.rst
+44
-0
未找到文件。
doc/fluid/api_guides/low_level/program.rst
浏览文件 @
362df867
...
...
@@ -71,6 +71,50 @@ Fluid 中的 :code:`Variable` 可以包含任何类型的值———在大多
Name
=========
Fluid 中部分Operator里包含 :code:`name` 参数,如 :ref:`cn_api_fluid_layers_fc` 。该参数常用于标记此类OP对应的网络层名称,便于开发人员在打印调试信息时,快速定位各个网络层输出数据的来源位置。若在OP中不指定 :code:`name` 参数,其默认值为None,则在打印该网络层时,Fluid 将自动生成形如 ``OP名_数字.tmp_数字`` 的唯一标识对网络层进行命名,其中的数字会自动递增,以区分同名OP下的不同网络层;若指定了 :code:`name` 参数,则以 ``name值_数字.tmp_数字`` 作为唯一标识进行网络层命名。
此外,在 :ref:`cn_api_fluid_ParamAttr` 中,可通过指定 :code:`name` 参数实现多个网络层的权重共享。
示例代码如下:
.. code-block:: python
import paddle.fluid as fluid
import numpy as np
x = fluid.layers.data(name='x', shape=[1], dtype='int64', lod_level=1)
emb = fluid.layers.embedding(input=x, size=(128, 100))
# default name
fc_none = fluid.layers.fc(input=emb, size=1)
fc_none = fluid.layers.Print(fc_none) # Tensor[fc_0.tmp_1]
fc_none1 = fluid.layers.fc(input=emb, size=1)
fc_none1 = fluid.layers.Print(fc_none1) # Tensor[fc_1.tmp_1]
# name in ParamAttr
w_param_attrs = fluid.ParamAttr(name="fc_weight", learning_rate=0.5, trainable=True)
print(w_param_attrs.name) # fc_weight
# name == 'my_fc'
my_fc1 = fluid.layers.fc(input=emb, size=1, name='my_fc', param_attr=w_param_attrs)
my_fc1 = fluid.layers.Print(my_fc1) # Tensor[my_fc.tmp_1]
my_fc2 = fluid.layers.fc(input=emb, size=1, name='my_fc', param_attr=w_param_attrs)
my_fc2 = fluid.layers.Print(my_fc2) # Tensor[my_fc.tmp_3]
place = fluid.CPUPlace()
x_data = np.array([[1],[2],[3]]).astype("int64")
x_lodTensor = fluid.create_lod_tensor(x_data, [[1, 2]], place)
exe = fluid.Executor(place)
exe.run(fluid.default_startup_program())
ret = exe.run(feed={'x': x_lodTensor}, fetch_list=[fc_none, fc_none1, my_fc1, my_fc2], return_numpy=False)
在上述示例中,总共包含了四个全连接层。其中 ``fc_none`` 和 ``fc_none1`` 均未指定 :code:`name` 参数,则以 ``OP名_数字.tmp_数字`` 分别进行命名:``fc_0.tmp_1`` 和 ``fc_1.tmp_1`` ,其中 ``fc_1`` 和 ``fc_0`` 中的数字自动递增以区分两个全连接层;另外两个全连接层 ``my_fc1`` 和 ``my_fc2`` 均指定了 :code:`name` 参数,但取值相同,Fluid 会在网络层名称后按照代码顺序以后缀 ``tmp_数字`` 进行区分,即网络层名称分别为 ``my_fc.tmp_1`` 和 ``my_fc.tmp_3`` 。
此外,上述示例中,``my_fc1`` 和 ``my_fc2`` 两个全连接层通过构建 ``ParamAttr`` ,并指定 :code:`name` 参数,实现了网络层权重参数的共享机制。
.. _api_guide_ParamAttr:
=========
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录