Is it correct as the structure of the model in this image?

username: YuhskeHujisaki
cooked: <aside class="onebox allowlistedgeneric" data-onebox-src="https://www.frontiersin.org/articles/10.3389/fnins.2019.01275/full">
  <header class="source">
      <img src="https://3718aeafc638f96f5bd6-d4a9ca15fc46ba40e71f94dec0aad28c.ssl.cf1.rackcdn.com/favicon_16x16.ico" class="site-icon" width="48" height="48">

      <a href="https://www.frontiersin.org/articles/10.3389/fnins.2019.01275/full" target="_blank" rel="noopener nofollow ugc">Frontiers</a>
  </header>

  <article class="onebox-body">
    <div class="aspect-image" style="--aspect-ratio:400/142;"><img src="https://www.frontiersin.org/files/MyHome%20Article%20Library/493234/493234_Thumb_400.jpg" class="thumbnail" width="400" height="142"></div>

<h3><a href="https://www.frontiersin.org/articles/10.3389/fnins.2019.01275/full" target="_blank" rel="noopener nofollow ugc">A Parallel Multiscale Filter Bank Convolutional Neural Networks for Motor...</a></h3>

  <p>ObjectiveElectroencephalogram (EEG) based brain–computer interfaces (BCI) in motor imagery (MI) have developed rapidly in recent years. A reliable feature extraction method is essential because of a low signal-to-noise ratio (SNR) and time-dependent...</p>


  </article>

  <div class="onebox-metadata">
    
    
  </div>

  <div style="clear: both"></div>
</aside>

<p>I would like to use pytorch to create the MSFBCNN model in this paper.<br>
I am currently making it this way.</p>
<pre><code class="lang-auto">import torch
import torch.nn as nn
class MSFBCNN(nn.Module):
  def __init__(self,channel_num,hz,time):
    super().__init__()
    self.channel_num = channel_num
    self.hz = hz
    self.time = time
    self.timeconv1 = nn.Conv2d(1,self.hz, kernel_size = (64,1), padding='same', bias=False, padding_mode='replicate')
    self.timeconv2 = nn.Conv2d(1,self.hz, kernel_size = (40,1), padding='same', bias=False, padding_mode='replicate')
    self.timeconv3 = nn.Conv2d(1,self.hz, kernel_size = (26,1), padding='same', bias=False, padding_mode='replicate')
    self.timeconv4 = nn.Conv2d(1,self.hz, kernel_size = (16,1), padding='same', bias=False, padding_mode='replicate')
    self.batchnorm = nn.BatchNorm2d(self.hz*4)
    self.spacialconv = nn.Sequential(
        nn.Conv2d(self.hz*4, self.hz, kernel_size = (1,self.channel_num), padding='valid'),
        nn.BatchNorm2d(self.hz),
        nn.ReLU(),
        nn.AvgPool2d(kernel_size=(75,1),stride=(15,1)),
        nn.Dropout2d(p = 0.5),
    )
    self.linear = nn.Linear(self.hz*self.hz//15,3)

  def forward(self,x):
    timeconv1_x = self.timeconv1(x)
    timeconv2_x = self.timeconv2(x)
    timeconv3_x = self.timeconv3(x)
    timeconv4_x = self.timeconv4(x)
    all_x = torch.cat((timeconv1_x, timeconv2_x, timeconv3_x, timeconv4_x), 1)
    all_x = self.batchnorm(all_x)
    all_x = self.spacialconv(all_x)
    all_x = torch.flatten(all_x)
    print(all_x.shape,self.hz//15)
    all_x = self.linear(all_x)
    return all_x

net = MSFBCNN(16, 250, 1)
x = torch.randn(1,1, 250, 16)
print(net(x).shape)
</code></pre>
<p><a href="https://i.stack.imgur.com/7IBmB.png" rel="noopener nofollow ugc"><img src="https://i.stack.imgur.com/7IBmB.png" alt="enter image description here" width="690" height="265"></a></p>
<p>But is it correct as the structure of the model in this image?</p>