class_docstr: Implements a Transformer Encoder Layer with adapters used in BERT/XLM style pre-trained
  models. An adapter module is added along with vanilla Transformer module.
class_docstr_tok: ["Implements","a","Transformer","Encoder","Layer","with","adapters","used","in","BERT\/XLM","style","pre-trained","models",".","An","adapter","module","is","added","along","with","vanilla","Transformer","module","."]
code: def __init__(
      self,
      embedding_dim: float = 768,
      ffn_embedding_dim: float = 3072,
      num_attention_heads: int = 8,
      dropout: float = 0.1,
      attention_dropout: float = 0.1,
      activation_dropout: float = 0.1,
      activation_fn: str = "relu",
      layer_norm_first: bool = False,
      adapter_num=201,
      adapter_dim=64,
      adapter_act_fn="relu",
  ) -> None:
      super().__init__(
          embedding_dim=embedding_dim,
          ffn_embedding_dim=ffn_embedding_dim,
          num_attention_heads=num_attention_heads,
          dropout=dropout,
          attention_dropout=attention_dropout,
          activation_dropout=activation_dropout,
          activation_fn=activation_fn,
          layer_norm_first=layer_norm_first,
      )
  
      self.adapter_num = adapter_num
      self.adapter_dim = adapter_dim
      self.adapter_layer = AdapterFast(
          adapter_num,
          self.embedding_dim,
          self.adapter_dim,
          adapter_act_fn,
      )
  
imports: import math
  from dataclasses import dataclass, field
  from typing import List, Tuple
  import numpy
  import torch
  import torch.nn
  import torch.nn.functional
  from fairseq import utils
  from fairseq.data.data_utils import compute_mask_indices
  from fairseq.dataclass import ChoiceEnum, FairseqDataclass
  from fairseq.distributed import fsdp_wrap
  from fairseq.models import BaseFairseqModel, register_model
  from fairseq.distributed.fully_sharded_data_parallel import FullyShardedDataParallel
  from fairseq.modules import Fp32GroupNorm, Fp32LayerNorm, GradMultiply, GumbelVectorQuantizer, LayerNorm, MultiheadAttention, RelPositionalEncoding, SamePad, TransposeLast
  from fairseq.modules.checkpoint_activations import checkpoint_wrapper
  from fairseq.modules.conformer_layer import ConformerWav2Vec2EncoderLayer
  from fairseq.modules.transformer_sentence_encoder import init_bert_params
  from fairseq.utils import buffered_arange, index_put, is_xla_tensor
  from .utils import pad_to_multiple
label_desc: Use image node_id 1 to create a new TransformerSentenceEncoderWithAdapterLayer object from inherited base classes: TransformerSentenceEncoderLayer with example: obj = TransformerSentenceEncoderWithAdapterLayer(embedding_dim, ffn_embedding_dim, num_attention_heads, dropout, attention_dropout, activation_dropout, activation_fn, layer_norm_first, adapter_num, adapter_dim, adapter_act_fn)