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)

*一个顺序容器。

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

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)
tst = xse_resnext18()
x = torch.randn(64, 3, 128, 128)
y = tst(x)
tst = xresnext18()
x = torch.randn(64, 3, 128, 128)
y = tst(x)
tst = xse_resnet50()
x = torch.randn(8, 3, 64, 64)
y = tst(x)
tst = xresnet18(ndim=1, c_in=1, ks=15)
x = torch.randn(64, 1, 128)
y = tst(x)
tst = xresnext50(ndim=1, c_in=2, ks=31, stride=4)
x = torch.randn(8, 2, 128)
y = tst(x)
tst = xresnet18(ndim=3, c_in=3, ks=3)
x = torch.randn(8, 3, 32, 32, 32)
y = tst(x)