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

class WaveBlock[source]

WaveBlock(c_in, c_out, seq_len, wavelet=None) :: Module

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

class mWDN[source]

mWDN(c_in, c_out, seq_len, levels=3, wavelet=None, arch=InceptionTime, arch_kwargs={}) :: Module

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

bs = 16
c_in = 3
seq_len = 12
c_out = 2
xb = torch.rand(bs, c_in, seq_len)
m = mWDN(c_in, c_out, seq_len)
test_eq(mWDN(c_in, c_out, seq_len)(xb).shape, [bs, c_out])
m
mWDN(
  (blocks): ModuleList(
    (0): WaveBlock(
      (mWDN_H): Linear(in_features=12, out_features=12, bias=True)
      (mWDN_L): Linear(in_features=12, out_features=12, bias=True)
      (sigmoid): Sigmoid()
      (pool): AvgPool1d(kernel_size=(2,), stride=(2,), padding=(0,))
    )
    (1): WaveBlock(
      (mWDN_H): Linear(in_features=6, out_features=6, bias=True)
      (mWDN_L): Linear(in_features=6, out_features=6, bias=True)
      (sigmoid): Sigmoid()
      (pool): AvgPool1d(kernel_size=(2,), stride=(2,), padding=(0,))
    )
    (2): WaveBlock(
      (mWDN_H): Linear(in_features=3, out_features=3, bias=True)
      (mWDN_L): Linear(in_features=3, out_features=3, bias=True)
      (sigmoid): Sigmoid()
      (pool): AvgPool1d(kernel_size=(2,), stride=(2,), padding=(0,))
    )
  )
  (classifier): InceptionTime(
    (inceptionblock): InceptionBlock(
      (inception): ModuleList(
        (0): InceptionModule(
          (bottleneck): Conv1d(3, 32, kernel_size=(1,), stride=(1,), bias=False)
          (convs): ModuleList(
            (0): Conv1d(32, 32, kernel_size=(39,), stride=(1,), padding=(19,), bias=False)
            (1): Conv1d(32, 32, kernel_size=(19,), stride=(1,), padding=(9,), bias=False)
            (2): Conv1d(32, 32, kernel_size=(9,), stride=(1,), padding=(4,), bias=False)
          )
          (maxconvpool): Sequential(
            (0): MaxPool1d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)
            (1): Conv1d(3, 32, kernel_size=(1,), stride=(1,), bias=False)
          )
          (concat): Concat()
          (bn): BatchNorm1d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
          (act): ReLU()
        )
        (1): InceptionModule(
          (bottleneck): Conv1d(128, 32, kernel_size=(1,), stride=(1,), bias=False)
          (convs): ModuleList(
            (0): Conv1d(32, 32, kernel_size=(39,), stride=(1,), padding=(19,), bias=False)
            (1): Conv1d(32, 32, kernel_size=(19,), stride=(1,), padding=(9,), bias=False)
            (2): Conv1d(32, 32, kernel_size=(9,), stride=(1,), padding=(4,), bias=False)
          )
          (maxconvpool): Sequential(
            (0): MaxPool1d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)
            (1): Conv1d(128, 32, kernel_size=(1,), stride=(1,), bias=False)
          )
          (concat): Concat()
          (bn): BatchNorm1d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
          (act): ReLU()
        )
        (2): InceptionModule(
          (bottleneck): Conv1d(128, 32, kernel_size=(1,), stride=(1,), bias=False)
          (convs): ModuleList(
            (0): Conv1d(32, 32, kernel_size=(39,), stride=(1,), padding=(19,), bias=False)
            (1): Conv1d(32, 32, kernel_size=(19,), stride=(1,), padding=(9,), bias=False)
            (2): Conv1d(32, 32, kernel_size=(9,), stride=(1,), padding=(4,), bias=False)
          )
          (maxconvpool): Sequential(
            (0): MaxPool1d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)
            (1): Conv1d(128, 32, kernel_size=(1,), stride=(1,), bias=False)
          )
          (concat): Concat()
          (bn): BatchNorm1d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
          (act): ReLU()
        )
        (3): InceptionModule(
          (bottleneck): Conv1d(128, 32, kernel_size=(1,), stride=(1,), bias=False)
          (convs): ModuleList(
            (0): Conv1d(32, 32, kernel_size=(39,), stride=(1,), padding=(19,), bias=False)
            (1): Conv1d(32, 32, kernel_size=(19,), stride=(1,), padding=(9,), bias=False)
            (2): Conv1d(32, 32, kernel_size=(9,), stride=(1,), padding=(4,), bias=False)
          )
          (maxconvpool): Sequential(
            (0): MaxPool1d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)
            (1): Conv1d(128, 32, kernel_size=(1,), stride=(1,), bias=False)
          )
          (concat): Concat()
          (bn): BatchNorm1d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
          (act): ReLU()
        )
        (4): InceptionModule(
          (bottleneck): Conv1d(128, 32, kernel_size=(1,), stride=(1,), bias=False)
          (convs): ModuleList(
            (0): Conv1d(32, 32, kernel_size=(39,), stride=(1,), padding=(19,), bias=False)
            (1): Conv1d(32, 32, kernel_size=(19,), stride=(1,), padding=(9,), bias=False)
            (2): Conv1d(32, 32, kernel_size=(9,), stride=(1,), padding=(4,), bias=False)
          )
          (maxconvpool): Sequential(
            (0): MaxPool1d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)
            (1): Conv1d(128, 32, kernel_size=(1,), stride=(1,), bias=False)
          )
          (concat): Concat()
          (bn): BatchNorm1d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
          (act): ReLU()
        )
        (5): InceptionModule(
          (bottleneck): Conv1d(128, 32, kernel_size=(1,), stride=(1,), bias=False)
          (convs): ModuleList(
            (0): Conv1d(32, 32, kernel_size=(39,), stride=(1,), padding=(19,), bias=False)
            (1): Conv1d(32, 32, kernel_size=(19,), stride=(1,), padding=(9,), bias=False)
            (2): Conv1d(32, 32, kernel_size=(9,), stride=(1,), padding=(4,), bias=False)
          )
          (maxconvpool): Sequential(
            (0): MaxPool1d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)
            (1): Conv1d(128, 32, kernel_size=(1,), stride=(1,), bias=False)
          )
          (concat): Concat()
          (bn): BatchNorm1d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
          (act): ReLU()
        )
      )
      (shortcut): ModuleList(
        (0): ConvBlock(
          (0): Conv1d(3, 128, kernel_size=(1,), stride=(1,), bias=False)
          (1): BatchNorm1d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
        )
        (1): BatchNorm1d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
      )
      (add): Add()
      (act): ReLU()
    )
    (gap): AdaptiveAvgPool1d(output_size=1)
    (squeeze): Squeeze()
    (fc): Linear(in_features=128, out_features=2, bias=True)
  )
)