class_docstr: This class implements the decoder for the ConvTasnet.
  
  The separated source embeddings are fed to the decoder to reconstruct
  the estimated sources in the time domain.
  
  Arguments
  ---------
  L : int
      Number of bases to use when reconstructing.
  
  Example
  -------
  >>> L, C, N = 8, 2, 8
  >>> mixture_w = torch.randn(10, 100, N)
  >>> est_mask = torch.randn(10, 100, C, N)
  >>> Decoder = Decoder(L, N)
  >>> mixture_hat = Decoder(mixture_w, est_mask)
  >>> mixture_hat.shape
  torch.Size([10, 404, 2])
docstr: Arguments
  ---------
  mixture_w : Tensor
      Tensor shape is [M, K, N].
  est_mask : Tensor
      Tensor shape is [M, K, C, N].
  
  Returns
  -------
  est_source : Tensor
      Tensor shape is [M, T, C].
docstr_tok: ["Arguments","--","--","--","--","-","mixture_w",":","Tensor","Tensor","shape","is","[","M",",","K",",","N","]",".","est_mask",":","Tensor","Tensor","shape","is","[","M",",","K",",","C",",","N","]",".","Returns","--","--","--","-","est_source",":","Tensor","Tensor","shape","is","[","M",",","T",",","C","]","."]
code: def forward(self, mixture_w, est_mask):
      """
      Arguments
      ---------
      mixture_w : Tensor
          Tensor shape is [M, K, N].
      est_mask : Tensor
          Tensor shape is [M, K, C, N].
  
      Returns
      -------
      est_source : Tensor
          Tensor shape is [M, T, C].
      """
      # D = W * M
      source_w = (
          torch.unsqueeze(mixture_w, 2).repeat(
              1, 1, est_mask.size(2), 1
          )
          * est_mask
      )  # [M, K, C, N]
      source_w = source_w.permute(0, 2, 1, 3)  # [M, C, K, N]
      # S = DV
      est_source = self.basis_signals(source_w)  # [M, C, K, L]
      est_source = overlap_and_add(est_source, self.L // 2)  # M x C x T
  
      return est_source.permute(0, 2, 1)
  
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 2 for calling the Decoder obj's underlying member method code with example usage: obj.forward(mixture_w, est_mask) and returns: est_source