class_docstr: Skipping Memory (SkiM) Separator
  
  Args:
      input_dim: input feature dimension
      causal: bool, whether the system is causal.
      num_spk: number of target speakers.
      nonlinear: the nonlinear function for mask estimation,
          select from 'relu', 'tanh', 'sigmoid'
      layer: int, number of SkiM blocks. Default is 3.
      unit: int, dimension of the hidden state.
      segment_size: segmentation size for splitting long features
      dropout: float, dropout ratio. Default is 0.
      mem_type: 'hc', 'h', 'c', 'id' or None.
          It controls whether the hidden (or cell) state of
          SegLSTM will be processed by MemLSTM.
          In 'id' mode, both the hidden and cell states
          will be identically returned.
          When mem_type is None, the MemLSTM will be removed.
      seg_overlap: Bool, whether the segmentation will reserve 50%
          overlap for adjacent segments. Default is False.
class_docstr_tok: ["Skipping","Memory","(","SkiM",")","Separator","Args",":","input_dim",":","input","feature","dimension","causal",":","bool",",","whether","the","system","is","causal",".","num_spk",":","number","of","target","speakers",".","nonlinear",":","the","nonlinear","function","for","mask","estimation",",","select","from","'relu","'",",","'tanh","'",",","'sigmoid'","layer",":","int",",","number","of","SkiM","blocks",".","Default","is","3.","unit",":","int",",","dimension","of","the","hidden","state",".","segment_size",":","segmentation","size","for","splitting","long","features","dropout",":","float",",","dropout","ratio",".","Default","is","0.","mem_type",":","'hc","'",",","'","h","'",",","'","c","'",",","'id","'","or","None",".","It","controls","whether","the","hidden","(","or","cell",")","state","of","SegLSTM","will","be","processed","by","MemLSTM",".","In","'id","'","mode",",","both","the","hidden","and","cell","states","will","be","identically","returned",".","When","mem_type","is","None",",","the","MemLSTM","will","be","removed",".","seg_overlap",":","Bool",",","whether","the","segmentation","will","reserve","50","%","overlap","for","adjacent","segments",".","Default","is","False","."]
code: def num_spk(self):
      return self._num_spk
  
file_path: espnet/espnet2/enh/separator/skim_separator.py
imports: from collections import OrderedDict
  from typing import Dict, List, Optional, Tuple, Union
  import torch
  from torch_complex.tensor import ComplexTensor
  from espnet2.enh.layers.complex_utils import is_complex
  from espnet2.enh.layers.skim import SkiM
  from espnet2.enh.separator.abs_separator import AbsSeparator
label_desc: Use image node_id 4 for calling the SkiMSeparator obj's underlying member method code with example usage: obj.num_spk() and returns: self