input: def create_cat_dog_classifier_model(input_shape: tuple, num_classes: int) -> keras.models.Sequential:
      """ This function builds and compiles a neural network model for classifying images of cats and dogs. The model is a Convolutional Neural Network (CNN) with multiple layers including Convolutional, Pooling, Dropout, and Dense layers. The input images are expected to be color images with a specified input shape and the output is a binary classification for either a cat or a dog.
      
      >>> model = create_cat_dog_classifier_model((64, 64, 3), 1)
      >>> isinstance(model, keras.models.Sequential)
      True
      """
output:     model = keras.models.Sequential()
      model.add(keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=input_shape))
      model.add(keras.layers.MaxPooling2D((2, 2)))
      model.add(keras.layers.Conv2D(64, (3, 3), activation='relu'))
      model.add(keras.layers.MaxPooling2D((2, 2)))
      model.add(keras.layers.Conv2D(128, (3, 3), activation='relu'))
      model.add(keras.layers.MaxPooling2D((2, 2)))
      model.add(keras.layers.Conv2D(128, (3, 3), activation='relu'))
      model.add(keras.layers.MaxPooling2D((2, 2)))
      model.add(keras.layers.Flatten())
      model.add(keras.layers.Dropout(0.5))
      model.add(keras.layers.Dense(512, activation='relu'))
      model.add(keras.layers.Dense(num_classes, activation='sigmoid'))
  
      model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
      return model