Sequential#
- class torch.nn.modules.container.Sequential(*args: Module)[源代码]#
- class torch.nn.modules.container.Sequential(arg: OrderedDict[str, Module])
一个顺序容器。
模块将按照在构造函数中传递的顺序添加到其中。或者,也可以传入一个模块的
OrderedDict
。Sequential
的forward()
方法接受任何输入,并将其转发给它包含的第一个模块。然后,它将为每个后续模块依次“链接”输出到输入,最后返回最后一个模块的输出。与手动调用一系列模块相比,
Sequential
提供的优势在于,它允许将整个容器视为一个单独的模块,这样对Sequential
执行的转换将应用于它存储的每个模块(这些模块都是Sequential
的注册子模块)。那么
Sequential
和torch.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)[源代码]#
将给定的模块附加到末尾。
- 参数
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)[源代码]#
使用另一个 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)[源代码]#
将模块插入到指定索引的 Sequential 容器中。
示例
>>> 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) )