Implemeneted a 2D CNN model for multi class image classification of Caltech101 dataset containing images of airplanes, motorbikes and schooners. Created a custom function to build CNN models using tensorflow 2.0 with keras functional API with varying number of layers and amount of dropout in the penultimate layer. Conducted a preliminary model exploration with varying depth of CNN model and varying amount of dropout in the penultimate layer. Created a classification report to evaluate the performance of multiclass classification using 'sklearn.metrics.classificationreport'. Used metrics like balanced accuracy, precision, recall and their weighted averages for unbiased performance evaluation of the model and obtained class wise performances.Created barplots for visualizing the effect on training and validation performance when varying number of layers and amount of dropout. Built an optimal model by selecting depth of the model(Number of layers) and amount of dropout based on their effect on performance. Using any amount of dropout has resulted in decreased performance when compared to the baseline model. Best performance was observed at a model depth of 3 (2 conv2D layers and 1 Dense layer). Model overfitting was observed at depths greater than 3.