class_docstr: Data collator that will dynamically pad the inputs received.
  Args:
      processor (:class:`~transformers.AutoProcessor`)
          The processor used for proccessing the data.
      padding (:obj:`bool`, :obj:`str` or :class:`~transformers.tokenization_utils_base.PaddingStrategy`, `optional`, defaults to :obj:`True`):
          Select a strategy to pad the returned sequences (according to the model's padding side and padding index)
          among:
          * :obj:`True` or :obj:`'longest'`: Pad to the longest sequence in the batch (or no padding if only a single
            sequence if provided).
          * :obj:`'max_length'`: Pad to a maximum length specified with the argument :obj:`max_length` or to the
            maximum acceptable input length for the model if that argument is not provided.
          * :obj:`False` or :obj:`'do_not_pad'` (default): No padding (i.e., can output a batch with sequences of
            different lengths).
      max_length (:obj:`int`, `optional`):
          Maximum length of the ``input_values`` of the returned list and optionally padding length (see above).
      max_length_labels (:obj:`int`, `optional`):
          Maximum length of the ``labels`` returned list and optionally padding length (see above).
      pad_to_multiple_of (:obj:`int`, `optional`):
          If set will pad the sequence to a multiple of the provided value.
          This is especially useful to enable the use of Tensor Cores on NVIDIA hardware with compute capability >=
          7.5 (Volta).
class_docstr_tok: ["Data","collator","that","will","dynamically","pad","the","inputs","received",".","Args",":","processor","(",":","class",":","`","~transformers.AutoProcessor","`",")","The","processor","used","for","proccessing","the","data",".","padding","(",":","obj",":","`","bool","`",",",":","obj",":","`","str","`","or",":","class",":","`","~transformers.tokenization_utils_base.PaddingStrategy","`",",","`","optional","`",",","defaults","to",":","obj",":","`","True","`",")",":","Select","a","strategy","to","pad","the","returned","sequences","(","according","to","the","model","'s","padding","side","and","padding","index",")","among",":","*",":","obj",":","`","True","`","or",":","obj",":","`","'longest","'","`",":","Pad","to","the","longest","sequence","in","the","batch","(","or","no","padding","if","only","a","single","sequence","if","provided",")",".","*",":","obj",":","`","'max_length","'","`",":","Pad","to","a","maximum","length","specified","with","the","argument",":","obj",":","`","max_length","`","or","to","the","maximum","acceptable","input","length","for","the","model","if","that","argument","is","not","provided",".","*",":","obj",":","`","False","`","or",":","obj",":","`","'do_not_pad","'","`","(","default",")",":","No","padding","(","i.e.",",","can","output","a","batch","with","sequences","of","different","lengths",")",".","max_length","(",":","obj",":","`","int","`",",","`","optional","`",")",":","Maximum","length","of","the","``","input_values","``","of","the","returned","list","and","optionally","padding","length","(","see","above",")",".","max_length_labels","(",":","obj",":","`","int","`",",","`","optional","`",")",":","Maximum","length","of","the","``","labels","``","returned","list","and","optionally","padding","length","(","see","above",")",".","pad_to_multiple_of","(",":","obj",":","`","int","`",",","`","optional","`",")",":","If","set","will","pad","the","sequence","to","a","multiple","of","the","provided","value",".","This","is","especially","useful","to","enable","the","use","of","Tensor","Cores","on","NVIDIA","hardware","with","compute","capability",">","=","7.5","(","Volta",")","."]
code: def __call__(
      self, features: List[Dict[str, Union[List[int], torch.Tensor]]]
  ) -> Dict[str, torch.Tensor]:
      # split inputs and labels since they have to be of different lenghts and need
      # different padding methods
      input_features = [
          {"input_values": feature["input_values"]}
          for feature in features
      ]
      label_features = [
          {"input_ids": feature["labels"]} for feature in features
      ]
  
      batch = self.processor.pad(
          input_features,
          padding=self.padding,
          pad_to_multiple_of=self.pad_to_multiple_of,
          return_tensors="pt",
      )
  
      labels_batch = self.processor.pad(
          labels=label_features,
          padding=self.padding,
          pad_to_multiple_of=self.pad_to_multiple_of_labels,
          return_tensors="pt",
      )
  
      # replace padding with -100 to ignore loss correctly
      labels = labels_batch["input_ids"].masked_fill(
          labels_batch.attention_mask.ne(1), -100
      )
  
      batch["labels"] = labels
  
      return batch
  
imports: import functools
  import json
  import logging
  import os
  import re
  import sys
  import warnings
  from dataclasses import dataclass, field
  from typing import Dict, List, Optional, Union
  import datasets
  import numpy
  import torch
  from datasets import DatasetDict, load_dataset, load_metric
  import bitsandbytes
  import transformers
  from transformers import AutoConfig, AutoFeatureExtractor, AutoModelForCTC, AutoProcessor, AutoTokenizer, HfArgumentParser, Trainer, TrainingArguments, Wav2Vec2Processor, set_seed
  from transformers.trainer_pt_utils import get_parameter_names
  from transformers.trainer_utils import get_last_checkpoint, is_main_process
  from transformers.utils import check_min_version
  from transformers.utils.versions import require_version
label_desc: Use image node_id 1 for calling the DataCollatorCTCWithPadding obj's underlying member method code with example usage: obj.__call__(features) and returns: batch