input: 
  def create_cat_dog_classifier(image_directory: str) -> keras.models.Sequential:
      """Builds and returns a deep learning model designed to classify images of cats and dogs."""
      
      import numpy as np
      import keras
      from keras.layers import Dense, Conv2D, MaxPooling2D, Dropout, Flatten
      from keras.models import Sequential
      from keras.preprocessing.image import ImageDataGenerator
  
      # Create the neural network model
      model = Sequential()
  
      # Input layer
      model.add(Conv2D(32, (3, 3), input_shape = (64, 64, 3), activation = 'relu'))
  
      # Hidden layers
      model.add(MaxPooling2D(pool_size = (2, 2)))
      model.add(Dropout(0.3))
      model.add(Conv2D(64, (3, 3), activation = 'relu'))
      model.add(MaxPooling2D(pool_size = (2, 2)))
      model.add(Dropout(0.3))
      model.add(Conv2D(64, (3, 3), activation = 'relu'))
      model.add(MaxPooling2D(pool_size = (2, 2)))
      model.add(Dropout(0.3))
  
      # Output layer
      model.add(Flatten())
      model.add(Dense(units = 128, activation = 'relu'))
      model.add(Dense(units = 1, activation = 'sigmoid'))
  
      # Compile the model
      model.compile(loss = 'binary_crossentropy', optimizer = 'adam', metrics = ['accuracy'])
  
      # Create data generator
      datagen = ImageDataGenerator(rescale = 1./255, shear_range = 0.2, zoom_range = 0.2, horizontal_flip = True)
  
      # Fit the model
      train_generator = datagen.flow_from_directory(directory = image_directory, target_size = (64, 64), color_mode = 'rgb', class_mode = 'binary', batch_size = 32)
      model.fit_generator(generator = train_generator, steps_per_epoch = 800, epochs = 5, validation_data = test_generator, validation_steps = 200)
      
      return model
  
  # Test case
  # model = create_cat_dog_classifier('/path/to/dataset')
  # model should be a compiled Keras Sequential model ready to classify images of cats and dogs.
  
output:     
      # Create test data generator
      test_datagen = ImageDataGenerator(rescale = 1./255)
      test_generator = test_datagen.flow_from_directory(directory = image_directory, target_size = (64, 64), color_mode = 'rgb', class_mode = 'binary', batch_size = 32)
  
      # Return the trained model
      return model
  