Overview

In this assignment you are going to leave behind what you have done with interactive object recognition based upon OpenCV. Instead, attention will shift to using TensorFlow and TensorBoard. Given the relatively short time that remains in the semester, waht you are being asked to do here is to some extent formulaic. That said, it may prove nontrivial and it would be good to get started sooner not later.

There are in substance two basic tasks which you must accomplish to complete this assignment. First, you're going to write a complete TensorFlow model by selectively including parts of the two examples which we have discussed in lecture and which are further elaborated on the courses resources page. The second task is to generate a simple comparison of different learning models while varying two architectural features. Unlike the previous assignments where grading was based upon live demonstration and review of code with the instructor, for this assignment your team will turn in a single python file and a companion PDF document summarizing your tuning experiments.

Parts of Two Models

In lecture we have been looking at two different examples of neural nets to solve the MNIST hand-drawn digit recognition problem. You can find more on these two resources on the class resources page. Specifically, the two source files are: cnn_mnist.py and mnist_with_summaries.py where the first of these emphasizes the use of TensorFlow layers and estimators in order to support a convolutional neural net and the second uses a simple or fully connected neural net and a simpler more direct architecture including much more complete summary walking for TensorBoard.

In this assignment you are to build a new file called mnist_ .py where team_name is something distinctive that you make up to help the instructor keep separate the different submissions. Outwardly, your new file needs to behave in the same way as the two example files insomuch as it can be run from the command line and it will log information to a directory using the TensorFlow summaries capability.

In your code you should discard the use of estimators. You should include the use of layers and build a convolution neural network matching the structure of network from file cnn_mnist.py while at the same time building in the more useful summaries capabilities illustrated in the other example, i.e. the mnist_with_summaries.py file.

Tuning

A huge amount of effort goes into refining architectures and tuning models when doing development on neural networks. For the second part of the assignment, you are supposed to stick a toe in the water with respect to tuning. Specifically, present results across at least eight different model variants. You may pick and choose what you want to vary, but some obvious contenders include the size of the intermediate layers within your network, the learning rate, and the use of dropout. An ulterior motive for requiring this part of the assignment is to give you a motivation to study the last portion of the video on YouTube describing the use of summaries. In that video, you'll see briefly presented some very nice instructions on how you can get comparative results from a number of different models into a format that is easily inspected using TensorBoard.

Teams and Grading

You are expected to work in pairs - teams - for this project. Unless worked out between yourselves and approved by me in advance, I strongly suggest you keep your partner from the previous assignments.

For this assignment you will turn in using canvas two files. The first is the Python file described above which absolutely should be able to create a sample run of one of your models. It is okay, if you choose, to submit a file that runs all of your variants. The other file you submit should be a nicely formatted and very concise project write up. This writeup should be a PDF document. What should be in this write up is a one paragraph introduction, a section outlining your tuning experiment, and a conclusion. Your conclusion can be as brief as one paragraph or longer if you choose. In the section on your experiments comparing different tunings you must include one or more figures highlighting the salient findings relative to the different architectures and parameter settings examined. .