docstr: Multiple 1x1 convolution layer Module.
  
  This module corresponds to the final 1x1 conv block and
  non-linear function in TCNSeparator.
  This module has multiple 1x1 conv blocks. One of them is selected
  according to the given num_spk to handle flexible num_spk.
  
  Args:
      input_dim: Number of filters in autoencoder
      bottleneck_dim: Number of channels in bottleneck 1 * 1-conv block
      max_num_spk: Number of mask_conv1x1 modules
                  (>= Max number of speakers in the dataset)
      mask_nonlinear: use which non-linear function to generate mask
code: def __init__(
      self,
      input_dim: int,
      bottleneck_dim: int = 128,
      max_num_spk: int = 3,
      mask_nonlinear="relu",
  ):
      """Multiple 1x1 convolution layer Module.
  
      This module corresponds to the final 1x1 conv block and
      non-linear function in TCNSeparator.
      This module has multiple 1x1 conv blocks. One of them is selected
      according to the given num_spk to handle flexible num_spk.
  
      Args:
          input_dim: Number of filters in autoencoder
          bottleneck_dim: Number of channels in bottleneck 1 * 1-conv block
          max_num_spk: Number of mask_conv1x1 modules
                      (>= Max number of speakers in the dataset)
          mask_nonlinear: use which non-linear function to generate mask
      """
      super().__init__()
      # Hyper-parameter
      self._max_num_spk = max_num_spk
      self.mask_nonlinear = mask_nonlinear
      # [M, B, K] -> [M, C*N, K]
      self.mask_conv1x1 = nn.ModuleList()
      for z in range(1, max_num_spk + 1):
          self.mask_conv1x1.append(
              nn.Conv1d(bottleneck_dim, z * input_dim, 1, bias=False)
          )
  
file_path: espnet/espnet2/diar/layers/multi_mask.py
imports: from collections import OrderedDict
  from typing import List, Tuple, Union
  import torch
  import torch.nn
  import torch.nn.functional
  from torch_complex.tensor import ComplexTensor
  from espnet2.diar.layers.abs_mask import AbsMask
label_desc: Use image node_id 1 to create a new MultiMask object from inherited base classes: AbsMask with example: obj = MultiMask(input_dim, bottleneck_dim, max_num_spk, mask_nonlinear)