code: def __init__(self, *args, **kwargs):
      super(iFaSNet, self).__init__(*args, **kwargs)
  
      self.context = self.context_len * 2 // self.win_len
      # context compression
      self.summ_BN = nn.Linear(self.enc_dim, self.feature_dim)
      self.summ_RNN = dprnn.SingleRNN(
          "LSTM", self.feature_dim, self.hidden_dim, bidirectional=True
      )
      self.summ_LN = nn.GroupNorm(1, self.feature_dim, eps=self.eps)
      self.summ_output = nn.Linear(self.feature_dim, self.enc_dim)
  
      self.separator = BF_module(
          self.enc_dim + (self.context * 2 + 1) ** 2,
          self.feature_dim,
          self.hidden_dim,
          self.enc_dim,
          self.num_spk,
          self.layer,
          self.segment_size,
          dropout=self.dropout,
          fasnet_type="ifasnet",
      )
  
      # waveform encoder/decoder
      self.encoder = nn.Conv1d(
          1, self.enc_dim, self.window, stride=self.stride, bias=False
      )
      self.decoder = nn.ConvTranspose1d(
          self.enc_dim, 1, self.window, stride=self.stride, bias=False
      )
      self.enc_LN = nn.GroupNorm(1, self.enc_dim, eps=self.eps)
  
      # context decompression
      self.gen_BN = nn.Conv1d(self.enc_dim * 2, self.feature_dim, 1)
      self.gen_RNN = dprnn.SingleRNN(
          "LSTM", self.feature_dim, self.hidden_dim, bidirectional=True
      )
      self.gen_LN = nn.GroupNorm(1, self.feature_dim, eps=self.eps)
      self.gen_output = nn.Conv1d(self.feature_dim, self.enc_dim, 1)
  
file_path: espnet/espnet2/enh/layers/ifasnet.py
imports: import torch
  import torch.nn
  from espnet2.enh.layers import dprnn
  from espnet2.enh.layers.fasnet import BF_module, FaSNet_base
label_desc: Use image node_id 1 to create a new iFaSNet object from inherited base classes: FaSNet_base with example: obj = iFaSNet()