评价此页

顺序#

class torch.nn.Sequential(*args: Module)[source]#
class torch.nn.Sequential(arg: OrderedDict[str, Module])

一个顺序容器。

模块将按照它们在构造函数中传递的顺序添加到其中。或者,也可以传入模块的 OrderedDictSequentialforward() 方法接受任何输入并将其转发到它包含的第一个模块。然后它将输出“链式”地传递给每个后续模块的输入,最终返回最后一个模块的输出。

Sequential 相对于手动调用一系列模块的优势在于,它允许将整个容器视为一个单独的模块,从而对 Sequential 执行的转换会应用于它存储的每个模块(它们都是 Sequential 的注册子模块)。

Sequentialtorch.nn.ModuleList 之间有什么区别? ModuleList 顾名思义——一个用于存储 Module 的列表!另一方面,Sequential 中的层以级联方式连接。

示例

# Using Sequential to create a small model. When `model` is run,
# input will first be passed to `Conv2d(1,20,5)`. The output of
# `Conv2d(1,20,5)` will be used as the input to the first
# `ReLU`; the output of the first `ReLU` will become the input
# for `Conv2d(20,64,5)`. Finally, the output of
# `Conv2d(20,64,5)` will be used as input to the second `ReLU`
model = nn.Sequential(
    nn.Conv2d(1, 20, 5), nn.ReLU(), nn.Conv2d(20, 64, 5), nn.ReLU()
)

# Using Sequential with OrderedDict. This is functionally the
# same as the above code
model = nn.Sequential(
    OrderedDict(
        [
            ("conv1", nn.Conv2d(1, 20, 5)),
            ("relu1", nn.ReLU()),
            ("conv2", nn.Conv2d(20, 64, 5)),
            ("relu2", nn.ReLU()),
        ]
    )
)
append(module)[source]#

在末尾追加一个给定模块。

参数

module (nn.Module) – 要追加的模块

返回类型

自身

示例

>>> import torch.nn as nn
>>> n = nn.Sequential(nn.Linear(1, 2), nn.Linear(2, 3))
>>> n.append(nn.Linear(3, 4))
Sequential(
    (0): Linear(in_features=1, out_features=2, bias=True)
    (1): Linear(in_features=2, out_features=3, bias=True)
    (2): Linear(in_features=3, out_features=4, bias=True)
)
extend(sequential)[source]#

使用另一个 Sequential 容器中的层扩展当前 Sequential 容器。

参数

sequential (Sequential) – 一个 Sequential 容器,其层将添加到当前容器中。

返回类型

自身

示例

>>> import torch.nn as nn
>>> n = nn.Sequential(nn.Linear(1, 2), nn.Linear(2, 3))
>>> other = nn.Sequential(nn.Linear(3, 4), nn.Linear(4, 5))
>>> n.extend(other) # or `n + other`
Sequential(
    (0): Linear(in_features=1, out_features=2, bias=True)
    (1): Linear(in_features=2, out_features=3, bias=True)
    (2): Linear(in_features=3, out_features=4, bias=True)
    (3): Linear(in_features=4, out_features=5, bias=True)
)
insert(index, module)[source]#

在指定索引处将模块插入 Sequential 容器中。

参数
  • index (int) – 要插入模块的索引。

  • module (Module) – 要插入的模块。

返回类型

自身

示例

>>> import torch.nn as nn
>>> n = nn.Sequential(nn.Linear(1, 2), nn.Linear(2, 3))
>>> n.insert(0, nn.Linear(3, 4))
Sequential(
    (0): Linear(in_features=3, out_features=4, bias=True)
    (1): Linear(in_features=1, out_features=2, bias=True)
    (2): Linear(in_features=2, out_features=3, bias=True)
)