Sequential
顺序容器。子 Layer 将按构造函数参数的顺序依次添加到此容器中。 参数支持以下三种形式:
逐个 Layer 实例:Sequential(layer1, layer2, ...)
带名字的 (name, layer) 对:Sequential(('l1', layer1), ('l2', layer2))
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]