class_docstr: A class containing all of the functions supporting generation, to be used as a mixin in [`TFPreTrainedModel`].
class_docstr_tok: ["A","class","containing","all","of","the","functions","supporting","generation",",","to","be","used","as","a","mixin","in","[","`","TFPreTrainedModel","`","]","."]
code: def _get_decoder_start_token_id(
      self, decoder_start_token_id: int = None, bos_token_id: int = None
  ) -> int:
      # retrieve decoder_start_token_id for encoder-decoder models
      # fall back to bos_token_id if necessary
      decoder_start_token_id = (
          decoder_start_token_id
          if decoder_start_token_id is not None
          else self.config.decoder_start_token_id
      )
      bos_token_id = (
          bos_token_id
          if bos_token_id is not None
          else self.config.bos_token_id
      )
  
      if decoder_start_token_id is not None:
          return decoder_start_token_id
      elif (
          hasattr(self.config, "decoder")
          and hasattr(self.config.decoder, "decoder_start_token_id")
          and self.config.decoder.decoder_start_token_id is not None
      ):
          return self.config.decoder.decoder_start_token_id
      elif bos_token_id is not None:
          return bos_token_id
      elif (
          hasattr(self.config, "decoder")
          and hasattr(self.config.decoder, "bos_token_id")
          and self.config.decoder.bos_token_id is not None
      ):
          return self.config.decoder.bos_token_id
      raise ValueError(
          "`decoder_start_token_id` or `bos_token_id` has to be defined for encoder-decoder generation."
      )
  
imports: import inspect
  import warnings
  from dataclasses import dataclass
  from typing import Any, Dict, List, Optional, Tuple, Union
  import numpy
  import tensorflow
  from tensorflow.compiler.tf2xla.python.xla import dynamic_update_slice
  from .generation_tf_logits_process import TFForcedBOSTokenLogitsProcessor, TFForcedEOSTokenLogitsProcessor, TFForceTokensLogitsProcessor, TFLogitsProcessorList, TFMinLengthLogitsProcessor, TFNoBadWordsLogitsProcessor, TFNoRepeatNGramLogitsProcessor, TFRepetitionPenaltyLogitsProcessor, TFSuppressTokensAtBeginLogitsProcessor, TFSuppressTokensLogitsProcessor, TFTemperatureLogitsWarper, TFTopKLogitsWarper, TFTopPLogitsWarper
  from .models.auto import TF_MODEL_FOR_CAUSAL_LM_MAPPING, TF_MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING, TF_MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING, TF_MODEL_FOR_VISION_2_SEQ_MAPPING
  from .tf_utils import shape_list, stable_softmax
  from .utils import ModelOutput, logging
label_desc: Use image node_id 14 for calling the TFGenerationMixin obj's underlying member method code with example usage: obj._get_decoder_start_token_id(decoder_start_token_id, bos_token_id) and returns: decoder_start_token_id, self, bos_token_id, self