docstr: Keep this API same with TasNet.
  
  Args:
      mixture_w: [M, N, K], M is batch size
  
  Returns:
      est_mask: [M, C, N, K]
docstr_tok: ["Keep","this","API","same","with","TasNet",".","Args",":","mixture_w",":","[","M",",","N",",","K","]",",","M","is","batch","size","Returns",":","est_mask",":","[","M",",","C",",","N",",","K","]"]
code: def forward(self, mixture_w):
      """Keep this API same with TasNet.
  
      Args:
          mixture_w: [M, N, K], M is batch size
  
      Returns:
          est_mask: [M, C, N, K]
      """
      M, N, K = mixture_w.size()
      bottleneck = self.network[:2]
      tcns = self.network[2]
      masknet = self.network[3:]
      output = bottleneck(mixture_w)
      skip_conn = 0.0
      for block in tcns:
          for layer in block:
              tcn_out = layer(output)
              if self.skip_connection:
                  residual, skip = tcn_out
                  skip_conn = skip_conn + skip
              else:
                  residual = tcn_out
              output = output + residual
      # Use residual output when no skip connection
      if self.skip_connection:
          score = masknet(skip_conn)
      else:
          score = masknet(output)
  
      # [M, C*self.out_channel, K] -> [M, C, self.out_channel, K]
      score = score.view(M, self.C, self.out_channel, K)
      if self.mask_nonlinear == "softmax":
          est_mask = torch.softmax(score, dim=1)
      elif self.mask_nonlinear == "relu":
          est_mask = torch.relu(score)
      elif self.mask_nonlinear == "sigmoid":
          est_mask = torch.sigmoid(score)
      elif self.mask_nonlinear == "tanh":
          est_mask = torch.tanh(score)
      elif self.mask_nonlinear == "linear":
          est_mask = score
      else:
          raise ValueError("Unsupported mask non-linear function")
      return est_mask
  
imports: import torch
  import torch.nn
  import torch.nn.functional
  from espnet2.enh.layers.adapt_layers import make_adapt_layer
label_desc: Use image node_id 2 for calling the TemporalConvNet obj's underlying member method code with example usage: obj.forward(mixture_w) and returns: est_mask