code: def __init__(
      self,
      in_channels,
      kernel_sizes,
      stride,
      dilatied=False,
      bias=False,
  ):
      super().__init__()
  
      if not isinstance(kernel_sizes, list):
          kernel_sizes = [kernel_sizes]
  
      self.in_channels = _split_channels(in_channels, len(kernel_sizes))
  
      self.convs = nn.ModuleList()
      for ch, k in zip(self.in_channels, kernel_sizes):
          dilation = 1
          if stride[0] == 1 and dilatied:
              dilation, stride = (k - 1) // 2, 3
              print(
                  "Use dilated conv with dilation rate = {}".format(
                      dilation
                  )
              )
          pad = ((stride[0] - 1) + dilation * (k - 1)) // 2
  
          conv = nn.Conv2d(
              ch, ch, k, stride, pad, dilation, groups=ch, bias=bias
          )
          self.convs.append(conv)
  
imports: import torch
  import torch.nn
  import torch.nn.functional
label_desc: Use image node_id 1 to create a new MDConv object from inherited base classes: nn with example: obj = MDConv(in_channels, kernel_sizes, stride, dilatied, bias)