In this project we will write the back propagation algorithm and mini batch stochastic gradient descent for a single hidden layer network and a simple convolutional network. We will use sigmoid activation for both networks and least squares (MSE) as the loss function. See the Mini-batch SGD algorithm in the online document "Stochastic gradient descent variation" for the sgd implementation. The outline of the project is given in the file project1_startingpoint.py on the course website. You may use this as a starting point. The code for input and output are already given in the course site. Your task would be to complete the three functions in this file. The input to your program is the data file and the train labels given in the datasets posted course on the website. For example to run your project on ionosphere data with trainlabels.0 and images in traindir and testdir you would type python project1.py ion.train.0 ion.test.0 traindir testdir The output of your project are just the predicted labels of each datapoint in the test file. Each predicted label is either +1 or -1. For each classifier you will output a separate file: 1. Back propagation output "back_prop_predictions" 2. SGD output is "sgd_prediction" 3. Convolutional network output is "convnet_output" Submit your assignment by copying it into the directory /afs/cad/courses/ccs/s21/cs/677/002/. For example if your ucid is abc12 then copy your solution into /afs/cad/courses/ccs/s21/cs/677/002/abc12. Your completed assignment is due by midnight June 27th 1:30 2021