Sequential

class paddle.nn. Sequential ( *layers ) [源代码]

顺序容器。子 Layer 将按构造函数参数的顺序依次添加到此容器中。 参数支持以下三种形式:

  1. 逐个 Layer 实例:Sequential(layer1, layer2, ...)

  2. 带名字的 (name, layer) 对:Sequential(('l1', layer1), ('l2', layer2))

  3. OrderedDict:Sequential(OrderedDict([('l1', layer1), ('l2', layer2)]))

可通过 整数下标 或 字符串名字 访问、修改、新增子层;支持 append、insert、extend 等列表式操作。

参数

  • layers (Layer|tuple(str, Layer)|list|OrderedDict) - 任意数量的 Layer 对象,或 (name, layer) 可迭代结构,或一个 OrderedDict。

返回

代码示例

>>> import paddle

>>> data = paddle.uniform(shape=[30, 10], dtype='float32')
>>> # create Sequential with iterable Layers
>>> model1 = paddle.nn.Sequential(
...     paddle.nn.Linear(10, 1), paddle.nn.Linear(1, 2)
>>> )
>>> model1[0]  # access the first layer
>>> res1 = model1(data)  # sequential execution

>>> # create Sequential with name Layer pairs
>>> model2 = paddle.nn.Sequential(
...     ('l1', paddle.nn.Linear(10, 2)),
...     ('l2', paddle.nn.Linear(2, 3))
>>> )
>>> model2['l1']  # access l1 layer
>>> model2.add_sublayer('l3', paddle.nn.Linear(3, 3))  # add sublayer
>>> res2 = model2(data)  # sequential execution

>>> # append single layer at the end of sequential
>>> model2 = paddle.nn.Sequential(paddle.nn.Linear(10, 20))
>>> model2.append(paddle.nn.Linear(20, 30))
>>> res2 = model2(data)  # [30, 30]

>>> # insert single layer at the given position
>>> model2 = paddle.nn.Sequential(paddle.nn.Linear(20, 30))
>>> model2.insert(0, paddle.nn.Linear(10, 20))
>>> res2 = model2(data)  # [30, 30]

>>> # extend sequential with given sequence of layer(s) at the end
>>> model2 = paddle.nn.Sequential()
>>> model2.extend([paddle.nn.Linear(10, 20), paddle.nn.Linear(20, 30)])
>>> res2 = model2(data)  # [30, 30]