Construct a convolutional neural network (CNN) model with at least 2 convolutional layers. Train your own CNN model for prediction on testing data. The training data and testing data should be the same as Question 2. Present the result (1), (2) and (3) as described in Question 2. You can use model.evaluate to get the accuracy score on testing data. You need to transform the training data and testing data to fit your own CNN model. Adjust parameters to achieve higher accuracy. For example, epoch number, filter number for conv2D, number of layers, add Dropout layer and percentage, batch_size, optimizer, etc. If you experience no change of val_loss and val_acc over a few epochs at the beginning, most likely some parameters were not optimal. Running can take a few hours, depending on the quality of your computer. Model is normally converged between 10 and 30 epochs. >40% val_acc is required. You need to show the history of val_acc. Also note val_acc for training is NOT necessarily the same as accuracy score for prediction using testing data.