class_docstr: Second phase of decoder layer block
      Each layer will be of type TransformerDecoderLayerPhase2
  Args:
      args (argparse.Namespace): parsed command-line arguments
      dictionary (~fairseq.data.Dictionary): encoding dictionary
      embed_tokens (torch.nn.Embedding): input embedding
      no_encoder_decoder_attn: If encoder decoder attention is required or not
docstr: Project features to the vocabulary size.
docstr_tok: ["Project","features","to","the","vocabulary","size","."]
code: def output_layer(self, features, **kwargs):
      """Project features to the vocabulary size."""
      if self.adaptive_softmax is None:
          # project back to size of vocabulary
          if self.share_input_output_embed:
              return F.linear(features, self.embed_tokens.weight)
          else:
              return F.linear(features, self.embed_out)
      else:
          return features
  
imports: import math
  import torch
  import torch.nn
  import torch.nn.functional
  from fairseq import options, utils
  from fairseq.models import FairseqEncoderDecoderModel, FairseqIncrementalDecoder, register_model, register_model_architecture
  from fairseq.models.transformer import Embedding, Linear, TransformerDecoder, TransformerEncoder
  from fairseq.modules import AdaptiveSoftmax, LayerNorm, MultiheadAttention, PositionalEmbedding, SinusoidalPositionalEmbedding
label_desc: Use image node_id 4 for calling the TransformerDecoderPhase2 obj's underlying member method code with example usage: obj.output_layer(features) and returns: features, F, F