= xse_resnext18()
tst = torch.randn(64, 3, 128, 128)
x = tst(x) y
XResnet
来自 bags of tricks 论文的 Resnet
init_cnn
init_cnn (m)
XResNet
XResNet (block, expansion, layers, p=0.0, c_in=3, n_out=1000, stem_szs=(32, 32, 64), widen=1.0, sa=False, act_cls=<class 'torch.nn.modules.activation.ReLU'>, ndim=2, ks=3, stride=2, groups=1, reduction=None, nh1=None, nh2=None, dw=False, g2=1, sym=False, norm_type=<NormType.Batch: 1>, pool=<function AvgPool>, pool_first=True, padding=None, bias=None, bn_1st=True, transpose=False, init='auto', xtra=None, bias_std=0.01, dilation:Union[int,Tuple[int,int]]=1, padding_mode:str='zeros', device=None, dtype=None)
*一个顺序容器。
模块将按照构造函数中传递的顺序添加到其中。或者,可以传递一个模块的 OrderedDict
。Sequential
的 forward()
方法接受任何输入,并将其转发到它包含的第一个模块。然后,它将每个后续模块的输出按顺序“链接”到输入,最后返回最后一个模块的输出。
Sequential
相较于手动调用一系列模块的价值在于,它允许将整个容器视为一个单一模块,这样对 Sequential
执行的转换将应用于其存储的每个模块(每个模块都是 Sequential
的一个注册子模块)。
Sequential
和 :class:torch.nn.ModuleList
有什么区别?ModuleList
正如其名——一个用于存储 [
Module](https://docs.fastai.net.cn/torch_core.html#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())
]))*
xresnet50_deeper
xresnet50_deeper (pretrained=False, **kwargs)
xresnet34_deeper
xresnet34_deeper (pretrained=False, **kwargs)
xresnet18_deeper
xresnet18_deeper (pretrained=False, **kwargs)
xresnet50_deep
xresnet50_deep (pretrained=False, **kwargs)
xresnet34_deep
xresnet34_deep (pretrained=False, **kwargs)
xresnet18_deep
xresnet18_deep (pretrained=False, **kwargs)
xresnet152
xresnet152 (pretrained=False, **kwargs)
xresnet101
xresnet101 (pretrained=False, **kwargs)
xresnet50
xresnet50 (pretrained=False, **kwargs)
xresnet34
xresnet34 (pretrained=False, **kwargs)
xresnet18
xresnet18 (pretrained=False, **kwargs)
xse_resnext50_deeper
xse_resnext50_deeper (n_out=1000, pretrained=False, **kwargs)
xse_resnext34_deeper
xse_resnext34_deeper (n_out=1000, pretrained=False, **kwargs)
xse_resnext18_deeper
xse_resnext18_deeper (n_out=1000, pretrained=False, **kwargs)
xse_resnext50_deep
xse_resnext50_deep (n_out=1000, pretrained=False, **kwargs)
xse_resnext34_deep
xse_resnext34_deep (n_out=1000, pretrained=False, **kwargs)
xse_resnext18_deep
xse_resnext18_deep (n_out=1000, pretrained=False, **kwargs)
xsenet154
xsenet154 (n_out=1000, pretrained=False, **kwargs)
xse_resnet152
xse_resnet152 (n_out=1000, pretrained=False, **kwargs)
xresnext101
xresnext101 (n_out=1000, pretrained=False, **kwargs)
xse_resnext101
xse_resnext101 (n_out=1000, pretrained=False, **kwargs)
xse_resnet101
xse_resnet101 (n_out=1000, pretrained=False, **kwargs)
xresnext50
xresnext50 (n_out=1000, pretrained=False, **kwargs)
xse_resnext50
xse_resnext50 (n_out=1000, pretrained=False, **kwargs)
xse_resnet50
xse_resnet50 (n_out=1000, pretrained=False, **kwargs)
xresnext34
xresnext34 (n_out=1000, pretrained=False, **kwargs)
xse_resnext34
xse_resnext34 (n_out=1000, pretrained=False, **kwargs)
xse_resnet34
xse_resnet34 (n_out=1000, pretrained=False, **kwargs)
xresnext18
xresnext18 (n_out=1000, pretrained=False, **kwargs)
xse_resnext18
xse_resnext18 (n_out=1000, pretrained=False, **kwargs)
xse_resnet18
xse_resnet18 (n_out=1000, pretrained=False, **kwargs)
= xresnext18()
tst = torch.randn(64, 3, 128, 128)
x = tst(x) y
= xse_resnet50()
tst = torch.randn(8, 3, 64, 64)
x = tst(x) y
= xresnet18(ndim=1, c_in=1, ks=15)
tst = torch.randn(64, 1, 128)
x = tst(x) y
= xresnext50(ndim=1, c_in=2, ks=31, stride=4)
tst = torch.randn(8, 2, 128)
x = tst(x) y
= xresnet18(ndim=3, c_in=3, ks=3)
tst = torch.randn(8, 3, 32, 32, 32)
x = tst(x) y