Layer_cn.rst 6.8 KB
Newer Older
H
Hao Wang 已提交
1 2 3 4 5
.. _cn_api_fluid_dygraph_Layer:

Layer
-------------------------------

Y
Youwei Song 已提交
6
.. py:class:: paddle.fluid.dygraph.Layer(name_scope=None, dtype=core.VarDesc.VarType.FP32)
H
Hao Wang 已提交
7

8
基于OOD实现的动态图Layer,包含该Layer的参数、前序运行的结构等信息。
H
Hao Wang 已提交
9 10

参数:
Y
Youwei Song 已提交
11
    - **name_scope** (str,可选) - 为Layer内部参数命名而采用的名称前缀。如果前缀为“mylayer”,在一个类名为MyLayer的Layer中,参数名为“mylayer_0.w_n”,其中w是参数的名称,n为自动生成的具有唯一性的后缀。如果为None,前缀名将为小写的类名。默认值为None。
12
    - **dtype** (str|core.VarDesc.VarType, 可选) - Layer中参数数据类型。如果设置为str,则可以是“bool”,“float16”,“float32”,“float64”,“int8”,“int16”,“int32”,“int64”,“uint8”或“uint16”。默认值为 ``core.VarDesc.VarType.FP32`` 。
H
Hao Wang 已提交
13

14
返回:无
H
Hao Wang 已提交
15 16 17

.. py:method:: full_name()

18
Layer的全名。组成方式为: ``name_scope`` + “/” + MyLayer.__class__.__name__ 。
H
Hao Wang 已提交
19

20
返回:Layer的全名
H
Hao Wang 已提交
21

22
返回类型:str
H
Hao Wang 已提交
23

Y
Youwei Song 已提交
24
.. py:method:: create_parameter(shape, attr=None, dtype="float32", is_bias=False, default_initializer=None)
H
Hao Wang 已提交
25

26
为Layer创建参数。
H
Hao Wang 已提交
27 28

参数:
29
    - **shape** (list) - 参数的形状。列表中的数据类型必须为int。
Y
Youwei Song 已提交
30 31
    - **attr** (ParamAttr,可选) - 指定权重参数属性的对象,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。默认值为None。
    - **dtype** (str|core.VarDesc.VarType, 可选) - Layer中参数数据类型。如果设置为str,则可以是“bool”,“float16”,“float32”,“float64”,“int8”,“int16”,“int32”,“int64”,“uint8”或“uint16”。默认值为“float32”。
32 33
    - **is_bias** (bool, 可选) - 是否是偏置参数。默认值:False。
    - **default_initializer** (Initializer, 可选) - 默认的参数初始化方法。如果设置为None,则设置非bias参数的初始化方式为 :ref:`cn_api_fluid_initializer_XavierInitializer` ,设置bias参数的初始化方式为 :ref:`cn_api_fluid_initializer_ConstantInitializer` 。默认值:None。
H
Hao Wang 已提交
34

35
返回:创建的参数变量
H
Hao Wang 已提交
36

37
返回类型: :ref:`cn_api_fluid_Variable`
H
Hao Wang 已提交
38 39 40

.. py:method:: create_variable(name=None, persistable=None, dtype=None, type=VarType.LOD_TENSOR)

41
为Layer创建变量。
H
Hao Wang 已提交
42 43

参数:
44 45
    - **name** (str, 可选) - 变量名。默认值:None。
    - **persistable** (bool, 可选) - 是否为持久性变量,后续会被移出。默认值:None。
46 47
    - **dtype** (str|core.VarDesc.VarType, 可选) - Layer中参数数据类型。如果设置为str,则可以是“bool”,“float16”,“float32”,“float64”,“int8”,“int16”,“int32”,“int64”,“uint8”或“uint16”。默认值为 ``core.VarDesc.VarType.FP32`` 。
    - **type** (core.VarDesc.VarType, 可选) - 变量类型,该参数不需要用户设置。默认值:core.VarDesc.VarType.LOD_TENSOR。
H
Hao Wang 已提交
48

49
返回:创建的 ``Tensor`` 
H
Hao Wang 已提交
50

51
返回类型: :ref:`cn_api_fluid_Variable`
H
Hao Wang 已提交
52 53 54

.. py:method:: parameters(include_sublayers=True)

55
返回一个由当前层及其子层的所有参数组成的列表。
H
Hao Wang 已提交
56 57

参数:
58
    - **include_sublayers** (bool, 可选) - 是否返回子层的参数。如果为True,返回的列表中包含子层的参数。默认值:True。
H
Hao Wang 已提交
59

60
返回:一个由当前层及其子层的所有参数组成的列表,列表中的元素类型为Parameter(Variable)。
H
Hao Wang 已提交
61

62
返回类型:list
H
Hao Wang 已提交
63 64 65 66 67 68

.. py:method:: sublayers(include_sublayers=True)

返回一个由所有子层组成的列表。

参数:
69
    - **include_sublayers** (bool, 可选) - 是否返回子层中各个子层。如果为True,则包括子层中的各个子层。默认值:True。
H
Hao Wang 已提交
70

71
返回: 一个由所有子层组成的列表,列表中的元素类型为Layer。
H
Hao Wang 已提交
72

73
返回类型:list
H
Hao Wang 已提交
74

75 76 77 78 79 80 81 82
.. py:method:: forward(*inputs, **kwargs)

定义每次调用时执行的计算。应该被所有子类覆盖。

参数:
    - **\*inputs** (tuple) - 解包后的tuple参数。
    - **\*\*kwargs** (dict) - 解包后的dict参数。

H
Hao Wang 已提交
83 84
.. py:method:: add_sublayer(name, sublayer)

85
添加子层实例。可以通过self.name访问该sublayer。
H
Hao Wang 已提交
86 87

参数:
88 89
    - **name** (str) - 子层名。
    - **sublayer** (Layer) - Layer实例。
H
Hao Wang 已提交
90

91
返回:添加的子层
H
Hao Wang 已提交
92

93
返回类型:Layer
H
Hao Wang 已提交
94 95 96

.. py:method:: add_parameter(name, parameter)

97
添加参数实例。可以通过self.name访问该parameter。
H
Hao Wang 已提交
98 99

参数:
100 101
    - **name** (str) - 参数名。
    - **parameter** (Parameter) - Parameter实例。
H
Hao Wang 已提交
102

103
返回:传入的参数实例
H
Hao Wang 已提交
104

105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
返回类型:Parameter( :ref:`cn_api_fluid_Variable` )

.. py:method:: state_dict(destination=None, include_sublayers=True)

获取当前层及其子层的所有参数。并将所有参数存放在dict结构中。

参数:
    - **destination** (dict, 可选) - 如果提供 ``destination`` ,则所有参数都将存放在 ``destination`` 中。 默认值:None。
    - **include_sublayers** (bool, 可选) - 如果设置为True,则包括子层的参数。默认值:True。

返回:包含所有参数的dict

返回类型:dict

**代码示例**

.. code-block:: python

    import paddle.fluid as fluid
    with fluid.dygraph.guard():
Y
Youwei Song 已提交
125
        emb = fluid.dygraph.Embedding([10, 10])
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
        state_dict = emb.state_dict()
        fluid.save_dygraph(state_dict, "paddle_dy")

.. py:method:: set_dict(stat_dict, include_sublayers=True)

根据传入的 ``stat_dict`` 设置参数。 所有参数将由 ``stat_dict`` 中的 ``Tensor`` 设置。

参数:
    - **state_dict** (dict) - 包含所有参数的dict。
    - **include_sublayers** (bool, 可选) - 如果设置为True,则还包括子层的参数。 默认值:True。

返回:None

**代码示例**

.. code-block:: python

    import paddle.fluid as fluid
    with fluid.dygraph.guard():
Y
Youwei Song 已提交
145
        emb = fluid.dygraph.Embedding([10, 10])
146 147 148 149 150 151 152
        state_dict = emb.state_dict()
        fluid.save_dygraph(state_dict, "paddle_dy")
        para_state_dict, _ = fluid.load_dygraph("paddle_dy")
        emb.set_dict(para_state_dict)

.. py:method:: load_dict(stat_dict, include_sublayers=True)

Y
Youwei Song 已提交
153 154
.. warning::
    该函数将被弃用。请使用set_dict函数。
155 156 157 158 159 160 161 162 163 164 165 166 167 168 169

根据传入的 ``stat_dict`` 设置参数。 所有参数将由 ``stat_dict`` 中的 ``Tensor`` 设置。

参数:
    - **state_dict** (dict) - 包含所有参数的dict。
    - **include_sublayers** (bool, 可选) - 如果设置为True,则还包括子层的参数。 默认值:True。

返回:None

**代码示例**

.. code-block:: python

    import paddle.fluid as fluid
    with fluid.dygraph.guard():
Y
Youwei Song 已提交
170
        emb = fluid.dygraph.Embedding([10, 10])
171 172 173 174
        state_dict = emb.state_dict()
        fluid.save_dygraph(state_dict, "paddle_dy")
        para_state_dict, _ = fluid.load_dygraph("paddle_dy")
        emb.load_dict(para_state_dict)
H
Hao Wang 已提交
175