class_docstr: Aggregates frame-level features to single utterance-level feature.
  Proposed in B.Desplanques et al., "ECAPA-TDNN: Emphasized Channel
  Attention, Propagation and Aggregation in TDNN Based Speaker Verification"
  
  args:
      input_size: dimensionality of the input frame-level embeddings.
          Determined by encoder hyperparameter.
          For this pooling layer, the output dimensionality will be double of
          the input_size
code: def __init__(self, input_size: int = 1536):
      super().__init__()
      self.attention = nn.Sequential(
          nn.Conv1d(input_size * 3, 128, kernel_size=1),
          nn.ReLU(),
          nn.BatchNorm1d(128),
          nn.Conv1d(128, input_size, kernel_size=1),
          nn.Softmax(dim=2),
      )
      self._output_size = input_size * 2
  
imports: import torch
  import torch.nn
  from espnet2.spk.pooling.abs_pooling import AbsPooling
label_desc: Use image node_id 1 to create a new ChnAttnStatPooling object from inherited base classes: AbsPooling with example: obj = ChnAttnStatPooling(input_size)