class_docstr: The conv1d compound layers used in Masknet.
  
  Arguments
  ---------
  input_shape : tuple
      The expected shape of the input.
  out_channels : int
      The number of intermediate channels.
  kernel_size : int
      The kernel size in the convolutions.
  stride : int
      Convolution stride in convolutional layers.
  padding : str
      The type of padding in the convolutional layers,
      (same, valid, causal). If "valid", no padding is performed.
  dilation : int
      Amount of dilation in convolutional layers.
  norm type : str
      The type of normalization, in ['gLN', 'cLN'].
  causal : bool
      To use causal or non-causal convolutions, in [True, False].
  
  Example:
  ---------
  >>> x = torch.randn(14, 100, 10)
  >>> TemporalBlock = TemporalBlock(x.shape, 10, 11, 1, 'same', 1)
  >>> y = TemporalBlock(x)
  >>> y.shape
  torch.Size([14, 100, 10])
code: def __init__(
      self,
      input_shape,
      out_channels,
      kernel_size,
      stride,
      padding,
      dilation,
      norm_type="gLN",
      causal=False,
  ):
      super().__init__()
      M, K, B = input_shape
  
      self.layers = sb.nnet.containers.Sequential(
          input_shape=input_shape
      )
  
      # [M, K, B] -> [M, K, H]
      self.layers.append(
          sb.nnet.CNN.Conv1d,
          out_channels=out_channels,
          kernel_size=1,
          bias=False,
          layer_name="conv",
      )
      self.layers.append(nn.PReLU(), layer_name="act")
      self.layers.append(
          choose_norm(norm_type, out_channels), layer_name="norm"
      )
  
      # [M, K, H] -> [M, K, B]
      self.layers.append(
          DepthwiseSeparableConv,
          out_channels=B,
          kernel_size=kernel_size,
          stride=stride,
          padding=padding,
          dilation=dilation,
          norm_type=norm_type,
          causal=causal,
          layer_name="DSconv",
      )
  
imports: import torch
  import torch.nn
  import speechbrain
  import torch.nn.functional
  from speechbrain.processing.signal_processing import overlap_and_add
label_desc: Use image node_id 1 to create a new TemporalBlock object from inherited base classes: torch.nn with example: obj = TemporalBlock(input_shape, out_channels, kernel_size, stride, padding, dilation, norm_type, causal)