class_docstr: This class learns the adaptive frontend for the ConvTasnet model.
  
  Arguments
  ---------
  L : int
      The filter kernel size. Needs to be an odd number.
  N : int
      Number of dimensions at the output of the adaptive front end.
  
  Example
  -------
  >>> inp = torch.rand(10, 100)
  >>> encoder = Encoder(11, 20)
  >>> h = encoder(inp)
  >>> h.shape
  torch.Size([10, 20, 20])
docstr: Arguments
  ---------
  mixture : Tensor
      Tensor shape is [M, T]. M is batch size. T is #samples
  
  Returns
  -------
  mixture_w : Tensor
      Tensor shape is [M, K, N], where K = (T-L)/(L/2)+1 = 2T/L-1
docstr_tok: ["Arguments","--","--","--","--","-","mixture",":","Tensor","Tensor","shape","is","[","M",",","T","]",".","M","is","batch","size",".","T","is","#","samples","Returns","--","--","--","-","mixture_w",":","Tensor","Tensor","shape","is","[","M",",","K",",","N","]",",","where","K","=","(","T-L",")","\/","(","L\/2",")","+1","=","2T\/L-1"]
code: def forward(self, mixture):
      """
      Arguments
      ---------
      mixture : Tensor
          Tensor shape is [M, T]. M is batch size. T is #samples
  
      Returns
      -------
      mixture_w : Tensor
          Tensor shape is [M, K, N], where K = (T-L)/(L/2)+1 = 2T/L-1
      """
      mixture = torch.unsqueeze(mixture, -1)  # [M, T, 1]
      conv_out = self.conv1d_U(mixture)
      mixture_w = F.relu(conv_out)  # [M, K, N]
      return mixture_w
  
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 Encoder obj's underlying member method code with example usage: obj.forward(mixture) and returns: mixture_w