class_docstr: Emformer layer that constitutes Emformer.
  
  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.
      dropout (float, optional): dropout probability. (Default: 0.0)
      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)
      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)
class_docstr_tok: ["Emformer","layer","that","constitutes","Emformer",".","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",".","dropout","(","float",",","optional",")",":","dropout","probability",".","(","Default",":","0.0",")","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",")","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",")"]
code: def _apply_pre_attention_layer_norm(
      self, utterance: torch.Tensor, right_context: torch.Tensor
  ) -> Tuple[torch.Tensor, torch.Tensor]:
      layer_norm_input = self.layer_norm_input(
          torch.cat([right_context, utterance])
      )
      return (
          layer_norm_input[right_context.size(0) :],
          layer_norm_input[: right_context.size(0)],
      )
  
imports: import math
  from typing import List, Optional, Tuple
  import torch
label_desc: Use image node_id 6 for calling the _EmformerLayer obj's underlying member method code with example usage: obj._apply_pre_attention_layer_norm(utterance, right_context) and returns: layer_norm_input,  layer_norm_input