class_docstr: Output layer for word tagging models that use Conditional Random Field.
  
  Args:
      num_tags (int): Total number of possible word tags.
  
  Attributes:
      num_tags: Total number of possible word tags.
class_docstr_tok: ["Output","layer","for","word","tagging","models","that","use","Conditional","Random","Field",".","Args",":","num_tags","(","int",")",":","Total","number","of","possible","word","tags",".","Attributes",":","num_tags",":","Total","number","of","possible","word","tags","."]
code: def __init__(self, num_tags, labels: Vocabulary, *args) -> None:
      super().__init__(list(labels), *args)
      self.crf = CRF(
          num_tags=num_tags,
          ignore_index=labels.get_pad_index(
              Padding.DEFAULT_LABEL_PAD_IDX
          ),
          default_label_pad_index=Padding.DEFAULT_LABEL_PAD_IDX,
      )
      log_class_usage(__class__)
  
imports: from typing import Any, Dict, List, Optional, Tuple, Union
  import torch
  import torch.jit
  import torch.nn
  import torch.nn.functional
  from caffe2.python import core
  from pytext.common import Padding
  from pytext.config.component import create_loss
  from pytext.config.serialize import MissingValueError
  from pytext.data.utils import Vocabulary
  from pytext.loss import AUCPRHingeLoss, BinaryCrossEntropyLoss, CrossEntropyLoss, KLDivergenceBCELoss, KLDivergenceCELoss, LabelSmoothedCrossEntropyLoss, StructuredLoss, StructuredMarginLoss
  from pytext.models.crf import CRF
  from pytext.utils.label import get_label_weights
  from pytext.utils.usage import log_class_usage
  from .output_layer_base import OutputLayerBase
  from .utils import OutputLayerUtils
label_desc: Use image node_id 2 to create a new CRFOutputLayer object from inherited base classes: OutputLayerBase with example: obj = CRFOutputLayer(num_tags, labels)