CSCE 479/879 (Fall 2019) Homework 2

Assigned Friday, October 4
Due Tuesday, October 22 Friday, October 25 Saturday, October 26 at 11:59 p.m.

When one person from your group hands in your team's results from this homework, they should submit via handin the following, in separate files:

  1. Three program files, with the following names (files from either Exercise 1 or 2 are fine):
    1. main.py: Code to specify and train the TensorFlow graph
    2. model.py: TensorFlow code that defines the network
    3. util.py: Helper functions
  2. A single .pdf file with your writeup of the results for all the homework problems. Only pdf will be accepted, and you should only submit one pdf file, with the name username1-username2.pdf, where username1 and username2 are your team members' user names on cse. Include all your plots in this file, and all discussion.

On this homework, you must work with your homework partner(s).


  1. (75 pts)

    For this problem, you will apply convolutional neural networks to the problem of image classification from the CIFAR 100 dataset.

    Your trained (from scratch) network will take as input color images as 4-dimensional NHWC (number × height × width × channels) data. Each image has 3 color panes, each of size 32 × 32. The 100 classes are listed at the website. You will convert the integer labels to one-hot vectors.

    Design and implement at least two convolutional architectures for this problem. You may vary the number and sizes of the layers, but you must use at least two convolutional+pooling layers and you must use at least one connected layer, followed by softmax for the output layer. You will measure loss with cross-entropy since the class labels will be one-hot vectors after you convert them from integers.

    The data is on crane in the folder

    /work/cse479/shared/homework/02
    In that folder you will find the numpy files cifar_images.npy and cifar_labels.npy. It is up to you to split your data set into train, validation, and test sets for conducting your experiments. For each of your architectures, you will choose an optimizer, and for each training run, you will use at least two sets of hyperparameters. You must also choose a regularizer.

  2. (75 pts)

    In this exercise you will perform unsupervised pre-training of your classifier. You will start by training an autoencoder from 1.33M unlabeled images (each sized 32 × 32) from ImageNet. The data is on crane in the folder

    /work/cse479/shared/homework/02
    in the file imagenet_images.npy. After pre-training your autoencoder, you will remove the decoder, add some connected layers and an output layer, and then train on the same CIFAR 100 data as before.

    Submission Requirements

    For both of these exercises, you are to submit a detailed, well-written report, with conclusions that you can justify with your results. Your report should include a description of the learning problem (what is to be learned), a detailed description of your architectures, activation functions, and regularizers, and the values of the hyperparameters you tested. All these design decisions must be justified. You should then describe your experimental results, including a confusion matrix, and draw conclusions from your results (conclusions must be justified by your presented results). In particular, you should discuss the impact that pre-training and the hyperparameters had on performance, including how pre-training allowed you to use more complex architectures to improve classification performance.

    As part of your submission, you will include files representing your best model of the ones that you created and tested (from either exercise). After the deadline, we will evaluate each team's best model on a held-out data set (separate from the file you will access on crane). Bonus points will be awarded to the teams with the best submitted models, as measured by classification accuracy.


Return to the CSCE 479/879 (Fall 2019) Home Page

Last modified 24 October 2019; please report problems to sscott.