class_docstr: This `SimpleTagger` simply encodes a sequence of text with a stacked `Seq2SeqEncoder`, then
  predicts a tag for each token in the sequence.
  
  Registered as a `Model` with name "simple_tagger".
  
  # Parameters
  
  vocab : `Vocabulary`, required
      A Vocabulary, required in order to compute sizes for input/output projections.
  text_field_embedder : `TextFieldEmbedder`, required
      Used to embed the `tokens` `TextField` we get as input to the model.
  encoder : `Seq2SeqEncoder`
      The encoder (with its own internal stacking) that we will use in between embedding tokens
      and predicting output tags.
  calculate_span_f1 : `bool`, optional (default=`None`)
      Calculate span-level F1 metrics during training. If this is `True`, then
      `label_encoding` is required. If `None` and
      label_encoding is specified, this is set to `True`.
      If `None` and label_encoding is not specified, it defaults
      to `False`.
  label_encoding : `str`, optional (default=`None`)
      Label encoding to use when calculating span f1.
      Valid options are "BIO", "BIOUL", "IOB1", "BMES".
      Required if `calculate_span_f1` is true.
  label_namespace : `str`, optional (default=`labels`)
      This is needed to compute the SpanBasedF1Measure metric, if desired.
      Unless you did something unusual, the default value should be what you want.
  verbose_metrics : `bool`, optional (default = `False`)
      If true, metrics will be returned per label class in addition
      to the overall statistics.
  initializer : `InitializerApplicator`, optional (default=`InitializerApplicator()`)
      Used to initialize the model parameters.
class_docstr_tok: ["This","`","SimpleTagger","`","simply","encodes","a","sequence","of","text","with","a","stacked","`","Seq2SeqEncoder","`",",","then","predicts","a","tag","for","each","token","in","the","sequence",".","Registered","as","a","`","Model","`","with","name","``","simple_tagger","''",".","#","Parameters","vocab",":","`","Vocabulary","`",",","required","A","Vocabulary",",","required","in","order","to","compute","sizes","for","input\/output","projections",".","text_field_embedder",":","`","TextFieldEmbedder","`",",","required","Used","to","embed","the","`","tokens","`","`","TextField","`","we","get","as","input","to","the","model",".","encoder",":","`","Seq2SeqEncoder","`","The","encoder","(","with","its","own","internal","stacking",")","that","we","will","use","in","between","embedding","tokens","and","predicting","output","tags",".","calculate_span_f1",":","`","bool","`",",","optional","(","default=","`","None","`",")","Calculate","span-level","F1","metrics","during","training",".","If","this","is","`","True","`",",","then","`","label_encoding","`","is","required",".","If","`","None","`","and","label_encoding","is","specified",",","this","is","set","to","`","True","`",".","If","`","None","`","and","label_encoding","is","not","specified",",","it","defaults","to","`","False","`",".","label_encoding",":","`","str","`",",","optional","(","default=","`","None","`",")","Label","encoding","to","use","when","calculating","span","f1",".","Valid","options","are","``","BIO","''",",","``","BIOUL","''",",","``","IOB1","''",",","``","BMES","''",".","Required","if","`","calculate_span_f1","`","is","true",".","label_namespace",":","`","str","`",",","optional","(","default=","`","labels","`",")","This","is","needed","to","compute","the","SpanBasedF1Measure","metric",",","if","desired",".","Unless","you","did","something","unusual",",","the","default","value","should","be","what","you","want",".","verbose_metrics",":","`","bool","`",",","optional","(","default","=","`","False","`",")","If","true",",","metrics","will","be","returned","per","label","class","in","addition","to","the","overall","statistics",".","initializer",":","`","InitializerApplicator","`",",","optional","(","default=","`","InitializerApplicator","(",")","`",")","Used","to","initialize","the","model","parameters","."]
docstr: # Parameters
  
  tokens : `TextFieldTensors`, required
      The output of `TextField.as_array()`, which should typically be passed directly to a
      `TextFieldEmbedder`. This output is a dictionary mapping keys to `TokenIndexer`
      tensors.  At its most basic, using a `SingleIdTokenIndexer` this is : `{"tokens":
      Tensor(batch_size, num_tokens)}`. This dictionary will have the same keys as were used
      for the `TokenIndexers` when you created the `TextField` representing your
      sequence.  The dictionary is designed to be passed directly to a `TextFieldEmbedder`,
      which knows how to combine different word representations into a single vector per
      token in your input.
  tags : `torch.LongTensor`, optional (default = `None`)
      A torch tensor representing the sequence of integer gold class labels of shape
      `(batch_size, num_tokens)`.
  metadata : `List[Dict[str, Any]]`, optional, (default = `None`)
      metadata containing the original words in the sentence to be tagged under a 'words' key.
  ignore_loss_on_o_tags : `bool`, optional (default = `False`)
      If True, we compute the loss only for actual spans in `tags`, and not on `O` tokens.
      This is useful for computing gradients of the loss on a _single span_, for
      interpretation / attacking.
  
  # Returns
  
  An output dictionary consisting of:
      - `logits` (`torch.FloatTensor`) :
          A tensor of shape `(batch_size, num_tokens, tag_vocab_size)` representing
          unnormalised log probabilities of the tag classes.
      - `class_probabilities` (`torch.FloatTensor`) :
          A tensor of shape `(batch_size, num_tokens, tag_vocab_size)` representing
          a distribution of the tag classes per word.
      - `loss` (`torch.FloatTensor`, optional) :
          A scalar loss to be optimised.
docstr_tok: ["#","Parameters","tokens",":","`","TextFieldTensors","`",",","required","The","output","of","`","TextField.as_array","(",")","`",",","which","should","typically","be","passed","directly","to","a","`","TextFieldEmbedder","`",".","This","output","is","a","dictionary","mapping","keys","to","`","TokenIndexer","`","tensors",".","At","its","most","basic",",","using","a","`","SingleIdTokenIndexer","`","this","is",":","`","{","``","tokens","''",":","Tensor","(","batch_size",",","num_tokens",")","}","`",".","This","dictionary","will","have","the","same","keys","as","were","used","for","the","`","TokenIndexers","`","when","you","created","the","`","TextField","`","representing","your","sequence",".","The","dictionary","is","designed","to","be","passed","directly","to","a","`","TextFieldEmbedder","`",",","which","knows","how","to","combine","different","word","representations","into","a","single","vector","per","token","in","your","input",".","tags",":","`","torch.LongTensor","`",",","optional","(","default","=","`","None","`",")","A","torch","tensor","representing","the","sequence","of","integer","gold","class","labels","of","shape","`","(","batch_size",",","num_tokens",")","`",".","metadata",":","`","List","[","Dict","[","str",",","Any","]","]","`",",","optional",",","(","default","=","`","None","`",")","metadata","containing","the","original","words","in","the","sentence","to","be","tagged","under","a","'words","'","key",".","ignore_loss_on_o_tags",":","`","bool","`",",","optional","(","default","=","`","False","`",")","If","True",",","we","compute","the","loss","only","for","actual","spans","in","`","tags","`",",","and","not","on","`","O","`","tokens",".","This","is","useful","for","computing","gradients","of","the","loss","on","a","_single","span_",",","for","interpretation","\/","attacking",".","#","Returns","An","output","dictionary","consisting","of",":","-","`","logits","`","(","`","torch.FloatTensor","`",")",":","A","tensor","of","shape","`","(","batch_size",",","num_tokens",",","tag_vocab_size",")","`","representing","unnormalised","log","probabilities","of","the","tag","classes",".","-","`","class_probabilities","`","(","`","torch.FloatTensor","`",")",":","A","tensor","of","shape","`","(","batch_size",",","num_tokens",",","tag_vocab_size",")","`","representing","a","distribution","of","the","tag","classes","per","word",".","-","`","loss","`","(","`","torch.FloatTensor","`",",","optional",")",":","A","scalar","loss","to","be","optimised","."]
code: def forward(  # type: ignore
      self,
      tokens: TextFieldTensors,
      tags: torch.LongTensor = None,
      metadata: List[Dict[str, Any]] = None,
      ignore_loss_on_o_tags: bool = False,
  ) -> Dict[str, torch.Tensor]:
      """
      # Parameters
  
      tokens : `TextFieldTensors`, required
          The output of `TextField.as_array()`, which should typically be passed directly to a
          `TextFieldEmbedder`. This output is a dictionary mapping keys to `TokenIndexer`
          tensors.  At its most basic, using a `SingleIdTokenIndexer` this is : `{"tokens":
          Tensor(batch_size, num_tokens)}`. This dictionary will have the same keys as were used
          for the `TokenIndexers` when you created the `TextField` representing your
          sequence.  The dictionary is designed to be passed directly to a `TextFieldEmbedder`,
          which knows how to combine different word representations into a single vector per
          token in your input.
      tags : `torch.LongTensor`, optional (default = `None`)
          A torch tensor representing the sequence of integer gold class labels of shape
          `(batch_size, num_tokens)`.
      metadata : `List[Dict[str, Any]]`, optional, (default = `None`)
          metadata containing the original words in the sentence to be tagged under a 'words' key.
      ignore_loss_on_o_tags : `bool`, optional (default = `False`)
          If True, we compute the loss only for actual spans in `tags`, and not on `O` tokens.
          This is useful for computing gradients of the loss on a _single span_, for
          interpretation / attacking.
  
      # Returns
  
      An output dictionary consisting of:
          - `logits` (`torch.FloatTensor`) :
              A tensor of shape `(batch_size, num_tokens, tag_vocab_size)` representing
              unnormalised log probabilities of the tag classes.
          - `class_probabilities` (`torch.FloatTensor`) :
              A tensor of shape `(batch_size, num_tokens, tag_vocab_size)` representing
              a distribution of the tag classes per word.
          - `loss` (`torch.FloatTensor`, optional) :
              A scalar loss to be optimised.
  
      """
      embedded_text_input = self.text_field_embedder(tokens)
      batch_size, sequence_length, _ = embedded_text_input.size()
      mask = get_text_field_mask(tokens)
      encoded_text = self.encoder(embedded_text_input, mask)
  
      logits = self.tag_projection_layer(encoded_text)
      reshaped_log_probs = logits.view(-1, self.num_classes)
      class_probabilities = F.softmax(reshaped_log_probs, dim=-1).view(
          [batch_size, sequence_length, self.num_classes]
      )
  
      output_dict = {
          "logits": logits,
          "class_probabilities": class_probabilities,
      }
  
      if tags is not None:
          if ignore_loss_on_o_tags:
              o_tag_index = self.vocab.get_token_index(
                  "O", namespace=self.label_namespace
              )
              tag_mask = mask & (tags != o_tag_index)
          else:
              tag_mask = mask
          loss = sequence_cross_entropy_with_logits(
              logits, tags, tag_mask
          )
          for metric in self.metrics.values():
              metric(logits, tags, mask)
          if self.calculate_span_f1:
              self._f1_metric(logits, tags, mask)  # type: ignore
          output_dict["loss"] = loss
  
      if metadata is not None:
          output_dict["words"] = [x["words"] for x in metadata]
      return output_dict
  
file_path: allennlp/allennlp/models/simple_tagger.py
imports: from typing import Dict, Optional, List, Any
  import numpy
  import torch
  from torch.nn.modules.linear import Linear
  import torch.nn.functional
  from allennlp.common.checks import check_dimensions_match, ConfigurationError
  from allennlp.data import TextFieldTensors, Vocabulary
  from allennlp.modules import Seq2SeqEncoder, TimeDistributed, TextFieldEmbedder
  from allennlp.models.model import Model
  from allennlp.nn import InitializerApplicator
  from allennlp.nn.util import get_text_field_mask, sequence_cross_entropy_with_logits
  from allennlp.training.metrics import CategoricalAccuracy, SpanBasedF1Measure
label_desc: Use image node_id 2 for calling the SimpleTagger obj's underlying member method code with example usage: obj.forward(tokens, tags, metadata, ignore_loss_on_o_tags) and returns: output_dict