class_docstr: Convolution-augmented Emformer layer that constitutes ConvEmformer.
  
  Args:
      input_dim (int): input dimension.
      num_heads (int): number of attention heads.
      ffn_dim: (int): hidden layer dimension of feedforward network.
      segment_length (int): length of each input segment.
      kernel_size (int): size of kernel to use in convolution module.
      dropout (float, optional): dropout probability. (Default: 0.0)
      ffn_activation (str, optional): activation function to use in feedforward network.
          Must be one of ("relu", "gelu", "silu"). (Default: "relu")
      left_context_length (int, optional): length of left context. (Default: 0)
      right_context_length (int, optional): length of right context. (Default: 0)
      max_memory_size (int, optional): maximum number of memory elements to use. (Default: 0)
      weight_init_gain (float or None, optional): scale factor to apply when initializing
          attention module parameters. (Default: ``None``)
      tanh_on_mem (bool, optional): if ``True``, applies tanh to memory elements. (Default: ``False``)
      negative_inf (float, optional): value to use for negative infinity in attention weights. (Default: -1e8)
      conv_activation (str, optional): activation function to use in convolution module.
          Must be one of ("relu", "gelu", "silu"). (Default: "silu")
code: def _init_state(
      self, batch_size: int, device: Optional[torch.device]
  ) -> List[torch.Tensor]:
      empty_memory = torch.zeros(
          self.max_memory_size,
          batch_size,
          self.input_dim,
          device=device,
      )
      left_context_key = torch.zeros(
          self.left_context_length,
          batch_size,
          self.input_dim,
          device=device,
      )
      left_context_val = torch.zeros(
          self.left_context_length,
          batch_size,
          self.input_dim,
          device=device,
      )
      past_length = torch.zeros(
          1, batch_size, dtype=torch.int32, device=device
      )
      conv_cache = torch.zeros(
          batch_size,
          self.input_dim,
          self.kernel_size - 1,
          device=device,
      )
      return [
          empty_memory,
          left_context_key,
          left_context_val,
          past_length,
          conv_cache,
      ]
  
imports: import math
  from typing import List, Optional, Tuple
  import torch
  from torchaudio.models.emformer import _EmformerAttention, _EmformerImpl, _get_weight_init_gains
label_desc: Use image node_id 2 for calling the _ConvEmformerLayer obj's underlying member method code with example usage: obj._init_state(batch_size, device) and returns: list