class_docstr: Conformer module definition.
  
  Args:
      block_size: Input/output size.
      self_att: Self-attention module instance.
      feed_forward: Feed-forward module instance.
      feed_forward_macaron: Feed-forward module instance for macaron network.
      conv_mod: Convolution module instance.
      norm_class: Normalization module class.
      norm_args: Normalization module arguments.
      dropout_rate: Dropout rate.
docstr: Construct a Conformer object.
docstr_tok: ["Construct","a","Conformer","object","."]
code: def __init__(
      self,
      block_size: int,
      self_att: torch.nn.Module,
      feed_forward: torch.nn.Module,
      feed_forward_macaron: torch.nn.Module,
      conv_mod: torch.nn.Module,
      norm_class: torch.nn.Module = torch.nn.LayerNorm,
      norm_args: Dict = {},
      dropout_rate: float = 0.0,
  ) -> None:
      """Construct a Conformer object."""
      super().__init__()
  
      self.self_att = self_att
  
      self.feed_forward = feed_forward
      self.feed_forward_macaron = feed_forward_macaron
      self.feed_forward_scale = 0.5
  
      self.conv_mod = conv_mod
  
      self.norm_feed_forward = norm_class(block_size, **norm_args)
      self.norm_self_att = norm_class(block_size, **norm_args)
  
      self.norm_macaron = norm_class(block_size, **norm_args)
      self.norm_conv = norm_class(block_size, **norm_args)
      self.norm_final = norm_class(block_size, **norm_args)
  
      self.dropout = torch.nn.Dropout(dropout_rate)
  
      self.block_size = block_size
      self.cache = None
  
imports: from typing import Dict, Optional, Tuple
  import torch
label_desc: Use image node_id 1 to create a new Conformer object from inherited base classes: torch.nn with example: obj = Conformer(block_size, _att, feed_forward, feed_forward_macaron, conv_mod, norm_class, norm_args, dropout_rate)