class_docstr: This module is the basic transformer stack.
  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
  
  num_hidden_layers : `int`
  layer : `TransformerLayer`, optional
  hidden_size : `int`, optional
      This needs to be provided if no `layer` argument is passed.
  intermediate_size : `int`, optional
      This needs to be provided if no `layer` argument is passed.
  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`.
  activation : `Union[str, torch.nn.Module]` (default = `"relu"`)
  add_cross_attention: `bool` (default = `False`)
      If True, the `TransformerLayer` modules will have cross attention modules as well.
      This is helpful when using the `TransformerStack` as a decoder.
class_docstr_tok: ["This","module","is","the","basic","transformer","stack",".","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","num_hidden_layers",":","`","int","`","layer",":","`","TransformerLayer","`",",","optional","hidden_size",":","`","int","`",",","optional","This","needs","to","be","provided","if","no","`","layer","`","argument","is","passed",".","intermediate_size",":","`","int","`",",","optional","This","needs","to","be","provided","if","no","`","layer","`","argument","is","passed",".","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","`",".","activation",":","`","Union","[","str",",","torch.nn.Module","]","`","(","default","=","`","``","relu","''","`",")","add_cross_attention",":","`","bool","`","(","default","=","`","False","`",")","If","True",",","the","`","TransformerLayer","`","modules","will","have","cross","attention","modules","as","well",".","This","is","helpful","when","using","the","`","TransformerStack","`","as","a","decoder","."]
docstr: # Parameters
  
  hidden_states : `torch.Tensor`
      Shape `batch_size x seq_len x hidden_dim`
  attention_mask : `torch.BoolTensor`, optional
      Shape `batch_size x seq_len`
  head_mask : `torch.BoolTensor`, optional
  output_attentions : `bool`
      Whether to also return the attention probabilities, default = `False`
  output_hidden_states : `bool`
      Whether to return the hidden_states for all layers, default = `False`
docstr_tok: ["#","Parameters","hidden_states",":","`","torch.Tensor","`","Shape","`","batch_size","x","seq_len","x","hidden_dim","`","attention_mask",":","`","torch.BoolTensor","`",",","optional","Shape","`","batch_size","x","seq_len","`","head_mask",":","`","torch.BoolTensor","`",",","optional","output_attentions",":","`","bool","`","Whether","to","also","return","the","attention","probabilities",",","default","=","`","False","`","output_hidden_states",":","`","bool","`","Whether","to","return","the","hidden_states","for","all","layers",",","default","=","`","False","`"]
code: def forward(
      self,
      hidden_states: torch.Tensor,
      attention_mask: Optional[torch.Tensor] = None,
      head_mask: Optional[torch.Tensor] = None,
      encoder_hidden_states: Optional[torch.Tensor] = None,
      encoder_attention_mask: Optional[torch.Tensor] = None,
      output_attentions: bool = False,
      output_hidden_states: bool = False,
  ) -> TransformerStackOutput:
      """
      # Parameters
  
      hidden_states : `torch.Tensor`
          Shape `batch_size x seq_len x hidden_dim`
      attention_mask : `torch.BoolTensor`, optional
          Shape `batch_size x seq_len`
      head_mask : `torch.BoolTensor`, optional
      output_attentions : `bool`
          Whether to also return the attention probabilities, default = `False`
      output_hidden_states : `bool`
          Whether to return the hidden_states for all layers, default = `False`
      """
      all_hidden_states = () if output_hidden_states else None
      all_attentions = () if output_attentions else None
      all_cross_attentions = (
          ()
          if output_attentions and self._add_cross_attention
          else None
      )
      for i, layer_module in enumerate(self.layers):
          if output_hidden_states:
              all_hidden_states = all_hidden_states + (hidden_states,)  # type: ignore
  
          layer_head_mask = (
              head_mask[i] if head_mask is not None else None
          )
  
          layer_outputs = layer_module(
              hidden_states,
              attention_mask,
              layer_head_mask,
              encoder_hidden_states,
              encoder_attention_mask,
              output_attentions,
          )
          hidden_states = layer_outputs.hidden_states
          if output_attentions:
              all_attentions = all_attentions + (layer_outputs[1],)  # type: ignore
              if self._add_cross_attention:
                  all_cross_attentions = all_cross_attentions + (layer_outputs[2],)  # type: ignore
  
      if output_hidden_states:
          all_hidden_states = all_hidden_states + (hidden_states,)  # type: ignore
  
      return TransformerStackOutput(
          hidden_states,
          all_hidden_states,
          all_attentions,
          all_cross_attentions,
      )
  
file_path: allennlp/allennlp/modules/transformer/transformer_stack.py
imports: from typing import Union, Optional, Tuple, TYPE_CHECKING
  import logging
  from dataclasses import dataclass
  import torch
  from allennlp.common import FromParams
  from allennlp.modules.util import replicate_layers
  from allennlp.modules.transformer.transformer_layer import TransformerLayer
  from allennlp.modules.transformer.transformer_module import TransformerModule
  from allennlp.modules.transformer.util import FloatT
label_desc: Use image node_id 3 for calling the TransformerStack obj's underlying member method code with example usage: obj.forward(hidden_states, attention_mask, head_mask, encoder_hidden_states, encoder_attention_mask, output_attentions, output_hidden_states) and returns: TransformerStackOutput