code: def run(
      training_data,
      test_ratio,
      epochs,
      batch_size,
      image_width,
      image_height,
      seed,
  ):
      image_files = []
      labels = []
      domain = {}
      print("Training model with the following parameters:")
      for param, value in locals().items():
          print("  ", param, "=", value)
  
      if training_data == "./flower_photos" and not os.path.exists(
          training_data
      ):
          print(
              "Input data not found, attempting to download the data from the web."
          )
          download_input()
  
      for dirname, _, files in os.walk(training_data):
          for filename in files:
              if filename.endswith("jpg"):
                  image_files.append(os.path.join(dirname, filename))
                  clazz = os.path.basename(dirname)
                  if clazz not in domain:
                      domain[clazz] = len(domain)
                  labels.append(domain[clazz])
  
      train(
          image_files,
          labels,
          domain,
          epochs=epochs,
          test_ratio=test_ratio,
          batch_size=batch_size,
          image_width=image_width,
          image_height=image_height,
          seed=seed,
      )
  
imports: import math
  import os
  import tarfile
  import click
  import keras
  import numpy
  import tensorflow
  from image_pyfunc import decode_and_resize_image, log_model
  from keras.applications import vgg16
  from keras.callbacks import Callback
  from keras.layers import Dense, Flatten, Input, Lambda
  from keras.models import Model
  from keras.utils import np_utils
  from sklearn.model_selection import train_test_split
  import mlflow
  from mlflow.models import infer_signature
label_desc: Use image node_id 2 for calling a global function with example usage: run(training_data, test_ratio, epochs, batch_size, image_width, image_height, seed) without return types