顺序¶
- class torch.nn.Sequential(*args: 模块)[源代码]¶
- class torch.nn.Sequential(arg: OrderedDict[str, 模块])
一个顺序容器。
模块将按照它们在构造函数中传递的顺序添加到其中。或者,可以传入一个包含模块的
OrderedDict。Sequential的forward()方法接受任何输入并将其转发到它包含的第一个模块。然后,它将每个后续模块的输出“链”接到输入,最后返回最后一个模块的输出。与手动调用一系列模块相比,
Sequential提供的优势在于它允许将整个容器视为一个单一模块,从而对Sequential进行转换会应用于它存储的每个模块(这些模块都是Sequential的注册子模块)。什么是
Sequential和torch.nn.ModuleList之间的区别?一个ModuleList正是它听起来那样——一个用于存储Module的列表!另一方面,Sequential中的层是以级联方式连接的。示例:
# 使用 Sequential 创建一个小型模型。当 `model` 运行时, # 输入将首先传递给 `Conv2d(1,20,5)`。`Conv2d(1,20,5)` 的输出将作为 # 第一个 `ReLU` 的输入;第一个 `ReLU` 的输出将成为 # `Conv2d(20,64,5)` 的输入。最后,`Conv2d(20,64,5)` 的输出将作为 # 第二个 `ReLU` 的输入 model = nn.Sequential( nn.Conv2d(1,20,5), nn.ReLU(), nn.Conv2d(20,64,5), nn.ReLU() ) # 使用 Sequential 和 OrderedDict。这在功能上与上述代码相同 model = nn.Sequential(OrderedDict([ ('conv1', nn.Conv2d(1,20,5)), ('relu1', nn.ReLU()), ('conv2', nn.Conv2d(20,64,5)), ('relu2', nn.ReLU()) ]))