class_docstr: This module wraps the self-attention with the output-layer, similar to the architecture in BERT.
  Details in the paper:
  [BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, Devlin et al, 2019]
  (https://api.semanticscholar.org/CorpusID:52967399)
  
  # Parameters
  
  hidden_size: `int`
  num_attention_heads: `int`
  attention_dropout: `float` (default = `0.0`)
      Dropout probability for the `SelfAttention` layer.
  hidden_dropout: `float` (default = `0.0`)
      Dropout probability for the `OutputLayer`.
code: def _from_config(cls, config: "PretrainedConfig", **kwargs):
      final_kwargs = {}
  
      final_kwargs["hidden_size"] = config.hidden_size
      final_kwargs["num_attention_heads"] = config.num_attention_heads
      final_kwargs[
          "attention_dropout"
      ] = config.attention_probs_dropout_prob
      final_kwargs["hidden_dropout"] = config.hidden_dropout_prob
  
      final_kwargs.update(**kwargs)
      return cls(**final_kwargs)
  
imports: from typing import Union, Optional, TYPE_CHECKING
  from dataclasses import dataclass
  import torch
  from allennlp.common import FromParams
  from allennlp.modules.transformer.transformer_module import TransformerModule
  from allennlp.modules.transformer.activation_layer import ActivationLayer
  from allennlp.modules.transformer.attention_module import SelfAttention, AttentionOutput
  from allennlp.modules.transformer.output_layer import OutputLayer
  from allennlp.modules.transformer.util import FloatT
label_desc: Use image node_id 3 for calling the AttentionLayer obj's underlying member method code with example usage: obj._from_config(cls, config) and returns: cls