Deep learning projects


This page is intended as a tutorial for students in my research group to begin understanding deep learning. It contains a series of simulated problems that help demonstrate concepts. It links to tutorials from some other sites to provide real world examples. Finally, it ends with links to our data sets and problems my group is currently researching.

Software options and installation

There are many software packages that can be used to implement neural networks (NNs) for deep learning. This article compares the most popular as of 2019. We use TensorFlow. To install it on your computer, follow these instructions, which includes the step of installing Python. Be careful about versions. Python, pip and TensorFlow are being updated often. You will probably not want to run the very latest because they may not be compatible with each other. If you run into this problem, back up a few versions.

The Clemson CCIT group offers a series of training classes on python programming, big data, and machine learning. They also operate the Palmetto high performance computing cluster. Students can request an account on this platform to speed up computations or run them remotely.

Simulations

The strength of deep learning is that it can be applied to complex classification problems, such as recognizing pictures of different types of animals (e.g. dogs vs cats). However, starting to study deep learning by working on these problems can be overwhelming. The purpose of these simulations is to enable students to study deep learning concepts on simple problems. Each problem has a specific known feature or challenge so that we can see how deep learning is identifying that feature.

Training on huge data sets

If a data set is too large to load into memory all at once then we can use batches to train on it incrementally. Each subset of the data is called a batch. The batch size can be tuned to balance against the number of epochs needed for training.

Batch training is programmed using python generators. The following python code examples serve as a tutorial to introduce generators and how to use them for batch training.

Using a TensorFlow classifier in a C program

All TensorFlow models are trained in Python programs, but sometimes we want to deploy the classifier for use in a program in another language. In my group we write a lot of C programs. This section demonstrates how to use a TensorFlow model (classifier) in a C program.

First it is important to have some understanding of how a classifier is saved to a file. There are 3 important pieces: the graph, weights, and gradients. The graph defines the nodes and connections in the neural network. The weights are the values at the nodes used to make calculations. The gradients are used during training to continually update the weights. There are two ways to save a model: save everything so that training can be resumed, or ``freeze'' the model (omitting the gradients) so that the model can be used for classification but cannot continue training. There are a huge variety of file formats used in machine learning. For our purposes, we will use the H5 file format to store a complete model, and the PB file format to store a frozen model. Note that as of 2020 TensorFlow v2 has created a TF file format that tries to do both; it uses a folder to contain the basic PB file along with secondary files containing the checkpoint data (gradients) necessary to resume training.

Each of those programs contains further info in the comments as well as links to other sites that explain more of the concepts.

Tutorials from other sources

FAQ

Our data sets

In a set of projects we are using deep learning to study classification of datasets our group has collected over the years:

Helpful study sites


Deep learning projects page / ahoover@clemson.edu