class_docstr: Transformer decoder augmented with an additional cross-attention. Each layer
  is a :class:`AugTransformerDecoderLayerBase`.
  
  Args:
      cfg (argparse.Namespace): parsed command-line arguments
      dictionary (~fairseq.data.Dictionary): decoding dictionary
      embed_tokens (torch.nn.Embedding): output embedding
      encoder_attn_merge_type (str, optional): the way to combine outputs from
          two cross-attention modules. If "sequential" is set, two cross-attention
          modules are stacked sequentially. If "parallel" is set, they are processed
          in parallel and combined before feeding it to FFN (default: sequential).
      dropnet_ratio (float, optional): a probability to drop each cross-attention
          module during training (default: 0.0).
code: def __init__(
      self,
      cfg,
      dictionary,
      embed_tokens,
      output_projection=None,
      encoder_attn_merge_type="sequential",
      dropnet_ratio=0.0,
  ):
      super().__init__(
          cfg,
          dictionary,
          embed_tokens,
          no_encoder_attn=False,
          output_projection=output_projection,
      )
      # assert cfg.cross_self_attention
      self.cross_self_attention = cfg.cross_self_attention
  
      if self.decoder_layerdrop > 0.0:
          self.layers = LayerDropModuleList(p=self.decoder_layerdrop)
      else:
          self.layers = nn.ModuleList([])
      self.layers.extend(
          [
              self.build_decoder_layer(
                  cfg, encoder_attn_merge_type, dropnet_ratio
              )
              for _ in range(cfg.decoder.layers)
          ]
      )
  
imports: from typing import Any, Dict, List, Optional
  import torch
  import torch.nn
  from torch import Tensor
  from fairseq import utils
  from fairseq.distributed import fsdp_wrap
  from fairseq.models.transformer import TransformerConfig
  from fairseq.models.transformer.transformer_decoder import TransformerDecoderBase
  from fairseq.modules import LayerDropModuleList, SinusoidalPositionalEmbedding, transformer_layer_aug
  from fairseq.modules.checkpoint_activations import checkpoint_wrapper
label_desc: Use image node_id 1 to create a new AugTransformerDecoderBase object from inherited base classes: TransformerDecoderBase with example: obj = AugTransformerDecoderBase(cfg, dictionary, embed_tokens, output_projection, encoder_attn_merge_type, dropnet_ratio)