docstr: Called at the end of training, before the model is saved.
  
  :param output_directory: file path to where training results are stored.
docstr_tok: ["Called","at","the","end","of","training",",","before","the","model","is","saved",".",":","param","output_directory",":","file","path","to","where","training","results","are","stored","."]
code: def on_train_end(self, output_directory: str):
      """Called at the end of training, before the model is saved.
  
      :param output_directory: file path to where training results are stored.
      """
      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 16 for calling the Callback obj's underlying member method code with example usage: obj.on_train_end(output_directory) without return types