docstr: Called after preprocessing ends.
  
  :param training_set: The training set.
  :type training_set: ludwig.dataset.base.Dataset
  :param validation_set: The validation set.
  :type validation_set: ludwig.dataset.base.Dataset
  :param test_set: The test set.
  :type test_set: ludwig.dataset.base.Dataset
  :param training_set_metadata: Values inferred from the training set, including preprocessing settings,
                                vocabularies, feature statistics, etc. Same as training_set_metadata.json.
docstr_tok: ["Called","after","preprocessing","ends",".",":","param","training_set",":","The","training","set",".",":","type","training_set",":","ludwig.dataset.base.Dataset",":","param","validation_set",":","The","validation","set",".",":","type","validation_set",":","ludwig.dataset.base.Dataset",":","param","test_set",":","The","test","set",".",":","type","test_set",":","ludwig.dataset.base.Dataset",":","param","training_set_metadata",":","Values","inferred","from","the","training","set",",","including","preprocessing","settings",",","vocabularies",",","feature","statistics",",","etc",".","Same","as","training_set_metadata.json","."]
code: def on_preprocess_end(
      self,
      training_set,
      validation_set,
      test_set,
      training_set_metadata: TrainingSetMetadataDict,
  ):
      """Called after preprocessing ends.
  
      :param training_set: The training set.
      :type training_set: ludwig.dataset.base.Dataset
      :param validation_set: The validation set.
      :type validation_set: ludwig.dataset.base.Dataset
      :param test_set: The test set.
      :type test_set: ludwig.dataset.base.Dataset
      :param training_set_metadata: Values inferred from the training set, including preprocessing settings,
                                    vocabularies, feature statistics, etc. Same as training_set_metadata.json.
      """
  
      pass
  
imports: from abc import ABC
  from typing import Any, Callable, Dict, List, Union
  from ludwig.api_annotations import PublicAPI
  from ludwig.types import HyperoptConfigDict, ModelConfigDict, TrainingSetMetadataDict
label_desc: Use image node_id 3 for calling the Callback obj's underlying member method code with example usage: obj.on_preprocess_end(training_set, validation_set, test_set, training_set_metadata) without return types