class_docstr: The pooling layer at the end of the BERT model. This returns an embedding for the
  [CLS] token, after passing it through a non-linear tanh activation; the non-linear layer
  is also part of the BERT model. If you want to use the pretrained BERT model
  to build a classifier and you want to use the AllenNLP token-indexer ->
  token-embedder -> seq2vec encoder setup, this is the Seq2VecEncoder to use.
  (For example, if you want to experiment with other embedding / encoding combinations.)
  
  Registered as a `Seq2VecEncoder` with name "bert_pooler".
  
  # Parameters
  
  pretrained_model : `Union[str, BertModel]`, required
      The pretrained BERT model to use. If this is a string,
      we will call `transformers.AutoModel.from_pretrained(pretrained_model)`
      and use that.
  override_weights_file: `Optional[str]`, optional (default = `None`)
      If set, this specifies a file from which to load alternate weights that override the
      weights from huggingface. The file is expected to contain a PyTorch `state_dict`, created
      with `torch.save()`.
  override_weights_strip_prefix: `Optional[str]`, optional (default = `None`)
      If set, strip the given prefix from the state dict when loading it.
  load_weights: `bool`, optional (default = `True`)
      Whether to load the pretraiend weights.
  requires_grad : `bool`, optional (default = `True`)
      If True, the weights of the pooler will be updated during training.
      Otherwise they will not.
  dropout : `float`, optional, (default = `0.0`)
      Amount of dropout to apply after pooling
  transformer_kwargs: `Dict[str, Any]`, optional (default = `None`)
      Dictionary with
      [additional arguments](https://github.com/huggingface/transformers/blob/155c782a2ccd103cf63ad48a2becd7c76a7d2115/transformers/modeling_utils.py#L253)
      for `AutoModel.from_pretrained`.
code: def forward(
      self,
      tokens: torch.Tensor,
      mask: torch.BoolTensor = None,
      num_wrapping_dims: int = 0,
  ):
      pooler = self.pooler
      for _ in range(num_wrapping_dims):
          from allennlp.modules import TimeDistributed
  
          pooler = TimeDistributed(pooler)
      pooled = pooler(tokens)
      pooled = self._dropout(pooled)
      return pooled
  
file_path: allennlp/allennlp/modules/seq2vec_encoders/bert_pooler.py
imports: from typing import Optional, Dict, Any
  import torch
  import torch.nn
  from allennlp.modules.seq2vec_encoders.seq2vec_encoder import Seq2VecEncoder
label_desc: Use image node_id 4 for calling the BertPooler obj's underlying member method code with example usage: obj.forward(tokens, mask, num_wrapping_dims) and returns: pooled