This is an unofficial PyTorch implementation by Ignacio Oguiza - oguiza@gmail.com modified on:

class XceptionModulePlus[source]

XceptionModulePlus(ni, nf, ks=40, kss=None, bottleneck=True, coord=False, separable=True, norm='Batch', zero_norm=False, bn_1st=True, act=ReLU, act_kwargs={}, norm_act=False) :: Module

Same as nn.Module, but no need for subclasses to call super().__init__

class XceptionBlockPlus[source]

XceptionBlockPlus(ni, nf, residual=True, coord=False, norm='Batch', zero_norm=False, act=ReLU, act_kwargs={}, ks=40, kss=None, bottleneck=True, separable=True, bn_1st=True, norm_act=False) :: Module

Same as nn.Module, but no need for subclasses to call super().__init__

class XceptionTimePlus[source]

XceptionTimePlus(c_in, c_out, nf=16, nb_filters=None, coord=False, norm='Batch', concat_pool=False, adaptive_size=50, residual=True, zero_norm=False, act=ReLU, act_kwargs={}) :: Sequential

A sequential container. Modules will be added to it in the order they are passed in the constructor. Alternatively, an ordered dict of modules can also be passed in.

To make it easier to understand, here is a small example::

# Example of using Sequential
model = nn.Sequential(
          nn.Conv2d(1,20,5),
          nn.ReLU(),
          nn.Conv2d(20,64,5),
          nn.ReLU()
        )

# Example of using Sequential with OrderedDict
model = nn.Sequential(OrderedDict([
          ('conv1', nn.Conv2d(1,20,5)),
          ('relu1', nn.ReLU()),
          ('conv2', nn.Conv2d(20,64,5)),
          ('relu2', nn.ReLU())
        ]))
bs = 16
vars = 3
seq_len = 12
c_out = 2
xb = torch.rand(bs, vars, seq_len)
test_eq(XceptionTimePlus(vars,c_out)(xb).shape, [bs, c_out])
test_eq(XceptionTimePlus(vars,c_out, nf=32)(xb).shape, [bs, c_out])
test_eq(XceptionTimePlus(vars,c_out, bottleneck=False)(xb).shape, [bs, c_out])
test_eq(XceptionTimePlus(vars,c_out, residual=False)(xb).shape, [bs, c_out])
test_eq(XceptionTimePlus(vars,c_out, coord=True)(xb).shape, [bs, c_out])
test_eq(XceptionTimePlus(vars,c_out, concat_pool=True)(xb).shape, [bs, c_out])
test_eq(total_params(XceptionTimePlus(3, 2))[0], 399540)
m = XceptionTimePlus(2,3)
test_eq(check_weight(m, is_bn)[0].sum(), 5)
test_eq(len(check_bias(m, is_conv)[0]), 0)
m = XceptionTimePlus(2,3, zero_norm=True)
test_eq(check_weight(m, is_bn)[0].sum(), 5)
m = XceptionTimePlus(2,3, zero_norm=True, norm_act=True)
test_eq(check_weight(m, is_bn)[0].sum(), 7)
m = XceptionTimePlus(2,3, coord=True)
test_eq(len(get_layers(m, cond=is_layer(AddCoords1d))), 25)
test_eq(len(get_layers(m, cond=is_layer(nn.Conv1d))), 37)
m = XceptionTimePlus(2,3, bottleneck=False, coord=True)
test_eq(len(get_layers(m, cond=is_layer(AddCoords1d))), 21)
test_eq(len(get_layers(m, cond=is_layer(nn.Conv1d))), 33)
XceptionTimePlus(vars, c_out, coord=True)
XceptionTimePlus(
  (backbone): XceptionBlockPlus(
    (xception): ModuleList(
      (0): XceptionModulePlus(
        (bottleneck): ConvBlock(
          (0): AddCoords1d()
          (1): Conv1d(4, 16, kernel_size=(1,), stride=(1,), bias=False)
        )
        (convs): ModuleList(
          (0): ConvBlock(
            (0): AddCoords1d()
            (1): SeparableConv1d(
              (depthwise_conv): Conv1d(17, 17, kernel_size=(39,), stride=(1,), padding=(19,), groups=17, bias=False)
              (pointwise_conv): Conv1d(17, 16, kernel_size=(1,), stride=(1,), bias=False)
            )
          )
          (1): ConvBlock(
            (0): AddCoords1d()
            (1): SeparableConv1d(
              (depthwise_conv): Conv1d(17, 17, kernel_size=(19,), stride=(1,), padding=(9,), groups=17, bias=False)
              (pointwise_conv): Conv1d(17, 16, kernel_size=(1,), stride=(1,), bias=False)
            )
          )
          (2): ConvBlock(
            (0): AddCoords1d()
            (1): SeparableConv1d(
              (depthwise_conv): Conv1d(17, 17, kernel_size=(9,), stride=(1,), padding=(4,), groups=17, bias=False)
              (pointwise_conv): Conv1d(17, 16, kernel_size=(1,), stride=(1,), bias=False)
            )
          )
        )
        (mp_conv): Sequential(
          (0): MaxPool1d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)
          (1): ConvBlock(
            (0): AddCoords1d()
            (1): Conv1d(4, 16, kernel_size=(1,), stride=(1,), bias=False)
          )
        )
        (concat): Concat(dim=1)
      )
      (1): XceptionModulePlus(
        (bottleneck): ConvBlock(
          (0): AddCoords1d()
          (1): Conv1d(65, 32, kernel_size=(1,), stride=(1,), bias=False)
        )
        (convs): ModuleList(
          (0): ConvBlock(
            (0): AddCoords1d()
            (1): SeparableConv1d(
              (depthwise_conv): Conv1d(33, 33, kernel_size=(39,), stride=(1,), padding=(19,), groups=33, bias=False)
              (pointwise_conv): Conv1d(33, 32, kernel_size=(1,), stride=(1,), bias=False)
            )
          )
          (1): ConvBlock(
            (0): AddCoords1d()
            (1): SeparableConv1d(
              (depthwise_conv): Conv1d(33, 33, kernel_size=(19,), stride=(1,), padding=(9,), groups=33, bias=False)
              (pointwise_conv): Conv1d(33, 32, kernel_size=(1,), stride=(1,), bias=False)
            )
          )
          (2): ConvBlock(
            (0): AddCoords1d()
            (1): SeparableConv1d(
              (depthwise_conv): Conv1d(33, 33, kernel_size=(9,), stride=(1,), padding=(4,), groups=33, bias=False)
              (pointwise_conv): Conv1d(33, 32, kernel_size=(1,), stride=(1,), bias=False)
            )
          )
        )
        (mp_conv): Sequential(
          (0): MaxPool1d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)
          (1): ConvBlock(
            (0): AddCoords1d()
            (1): Conv1d(65, 32, kernel_size=(1,), stride=(1,), bias=False)
          )
        )
        (concat): Concat(dim=1)
      )
      (2): XceptionModulePlus(
        (bottleneck): ConvBlock(
          (0): AddCoords1d()
          (1): Conv1d(129, 64, kernel_size=(1,), stride=(1,), bias=False)
        )
        (convs): ModuleList(
          (0): ConvBlock(
            (0): AddCoords1d()
            (1): SeparableConv1d(
              (depthwise_conv): Conv1d(65, 65, kernel_size=(39,), stride=(1,), padding=(19,), groups=65, bias=False)
              (pointwise_conv): Conv1d(65, 64, kernel_size=(1,), stride=(1,), bias=False)
            )
          )
          (1): ConvBlock(
            (0): AddCoords1d()
            (1): SeparableConv1d(
              (depthwise_conv): Conv1d(65, 65, kernel_size=(19,), stride=(1,), padding=(9,), groups=65, bias=False)
              (pointwise_conv): Conv1d(65, 64, kernel_size=(1,), stride=(1,), bias=False)
            )
          )
          (2): ConvBlock(
            (0): AddCoords1d()
            (1): SeparableConv1d(
              (depthwise_conv): Conv1d(65, 65, kernel_size=(9,), stride=(1,), padding=(4,), groups=65, bias=False)
              (pointwise_conv): Conv1d(65, 64, kernel_size=(1,), stride=(1,), bias=False)
            )
          )
        )
        (mp_conv): Sequential(
          (0): MaxPool1d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)
          (1): ConvBlock(
            (0): AddCoords1d()
            (1): Conv1d(129, 64, kernel_size=(1,), stride=(1,), bias=False)
          )
        )
        (concat): Concat(dim=1)
      )
      (3): XceptionModulePlus(
        (bottleneck): ConvBlock(
          (0): AddCoords1d()
          (1): Conv1d(257, 128, kernel_size=(1,), stride=(1,), bias=False)
        )
        (convs): ModuleList(
          (0): ConvBlock(
            (0): AddCoords1d()
            (1): SeparableConv1d(
              (depthwise_conv): Conv1d(129, 129, kernel_size=(39,), stride=(1,), padding=(19,), groups=129, bias=False)
              (pointwise_conv): Conv1d(129, 128, kernel_size=(1,), stride=(1,), bias=False)
            )
          )
          (1): ConvBlock(
            (0): AddCoords1d()
            (1): SeparableConv1d(
              (depthwise_conv): Conv1d(129, 129, kernel_size=(19,), stride=(1,), padding=(9,), groups=129, bias=False)
              (pointwise_conv): Conv1d(129, 128, kernel_size=(1,), stride=(1,), bias=False)
            )
          )
          (2): ConvBlock(
            (0): AddCoords1d()
            (1): SeparableConv1d(
              (depthwise_conv): Conv1d(129, 129, kernel_size=(9,), stride=(1,), padding=(4,), groups=129, bias=False)
              (pointwise_conv): Conv1d(129, 128, kernel_size=(1,), stride=(1,), bias=False)
            )
          )
        )
        (mp_conv): Sequential(
          (0): MaxPool1d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)
          (1): ConvBlock(
            (0): AddCoords1d()
            (1): Conv1d(257, 128, kernel_size=(1,), stride=(1,), bias=False)
          )
        )
        (concat): Concat(dim=1)
      )
    )
    (shortcut): ModuleList(
      (0): ConvBlock(
        (0): AddCoords1d()
        (1): Conv1d(4, 128, kernel_size=(1,), stride=(1,), bias=False)
        (2): BatchNorm1d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      )
      (1): ConvBlock(
        (0): AddCoords1d()
        (1): Conv1d(129, 512, kernel_size=(1,), stride=(1,), bias=False)
        (2): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      )
    )
    (act): ModuleList(
      (0): ReLU()
      (1): ReLU()
    )
    (add): Add
  )
  (head): Sequential(
    (0): AdaptiveAvgPool1d(output_size=50)
    (1): ConvBlock(
      (0): AddCoords1d()
      (1): Conv1d(513, 256, kernel_size=(1,), stride=(1,), bias=False)
      (2): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (3): ReLU()
    )
    (2): ConvBlock(
      (0): AddCoords1d()
      (1): Conv1d(257, 128, kernel_size=(1,), stride=(1,), bias=False)
      (2): BatchNorm1d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (3): ReLU()
    )
    (3): ConvBlock(
      (0): AddCoords1d()
      (1): Conv1d(129, 2, kernel_size=(1,), stride=(1,), bias=False)
      (2): BatchNorm1d(2, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      (3): ReLU()
    )
    (4): GAP1d(
      (gap): AdaptiveAvgPool1d(output_size=1)
      (flatten): Flatten(full=False)
    )
  )
)