input: 
  def classify_cats_and_dogs() -> Sequential:
      """ Construct and train a deep learning model using Keras to distinguish between cats and dogs.
      Returns the trained model.
      >>> model = classify_cats_and_dogs()
      >>> type(model) == keras.models.Sequential
      True
      """
      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='/path/to/dataset', 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
  
output:     
      # Create test data generator
      test_generator = datagen.flow_from_directory(directory='/path/to/test_dataset', target_size=(64, 64), color_mode='rgb', class_mode='binary', batch_size=32)
  
      # Evaluate the model
      scores = model.evaluate_generator(test_generator, steps=200)
      print(f"Accuracy: {scores[1]*100}%")
  