docstr: Forward.
  
  Args:
      input (torch.Tensor): (Batch, samples, channels)
      ilens (torch.Tensor): input lengths [Batch]
      additional (Dict or None): other data included in model
          NOTE: not used in this model
  
  Returns:
      separated (List[Union(torch.Tensor, ComplexTensor)]): [(B, T, N), ...]
      ilens (torch.Tensor): (B,)
      others predicted data, e.g. masks: OrderedDict[
          'mask_spk1': torch.Tensor(Batch, Frames, Freq),
          'mask_spk2': torch.Tensor(Batch, Frames, Freq),
          ...
          'mask_spkn': torch.Tensor(Batch, Frames, Freq),
      ]
code: def forward(
      self,
      input: torch.Tensor,
      ilens: torch.Tensor,
      additional: Optional[Dict] = None,
  ) -> Tuple[List[torch.Tensor], torch.Tensor, OrderedDict]:
      """Forward.
  
      Args:
          input (torch.Tensor): (Batch, samples, channels)
          ilens (torch.Tensor): input lengths [Batch]
          additional (Dict or None): other data included in model
              NOTE: not used in this model
  
      Returns:
          separated (List[Union(torch.Tensor, ComplexTensor)]): [(B, T, N), ...]
          ilens (torch.Tensor): (B,)
          others predicted data, e.g. masks: OrderedDict[
              'mask_spk1': torch.Tensor(Batch, Frames, Freq),
              'mask_spk2': torch.Tensor(Batch, Frames, Freq),
              ...
              'mask_spkn': torch.Tensor(Batch, Frames, Freq),
          ]
      """
  
      assert (
          input.dim() == 3
      ), "only support input shape: (Batch, samples, channels)"
      # currently only support for fixed-array
  
      input = input.permute(0, 2, 1)
  
      none_mic = torch.zeros(1, dtype=input.dtype)
  
      separated = self.fasnet(input, none_mic)
  
      separated = list(separated.unbind(dim=1))
  
      others = {}
      if self.predict_noise:
          *separated, noise = separated
          others["noise1"] = noise
  
      return separated, ilens, others
  
file_path: espnet/espnet2/enh/separator/fasnet_separator.py
imports: from collections import OrderedDict
  from typing import Dict, List, Optional, Tuple
  import torch
  from packaging.version import parse
  from espnet2.enh.layers.fasnet import FaSNet_TAC
  from espnet2.enh.layers.ifasnet import iFaSNet
  from espnet2.enh.separator.abs_separator import AbsSeparator
label_desc: Use image node_id 2 for calling the FaSNetSeparator obj's underlying member method code with example usage: obj.forward(input, ilens, additional) and returns: separated,  ilens,  others