TensorFlow

Building Convolutional Neural Networks on TensorFlow: Three Examples

Convolutional Neural Networks (CNN) are the foundation of implementations of deep learning for computer vision, which include image classification. TensorFlow lets you build CNN architectures with tremendous flexibility, for tasks like image classification and object detection, but can be a bit challenging at first. We’ll show you three examples that outline the process, and explain how to easily track and manage your experiments with the MissingLink deep learning platform.

Scaling Up CNN on TensorFlow with MissingLink

If you’re working on a CNN project, you probably have a large dataset and need to run your experiments on several machines.

This can become challenging, and you might find yourself spending serious time on setting up machines, copying data and troubleshooting, instead of building a winning experiment.

MissingLink is a deep learning platform that lets you effortlessly scale TensorFlow CNN models across many machines, either on-premise or in the cloud. It also helps you manage large data sets, manage multiple experiments, and view metrics and hyperparameters across your team on one convenient dashboard.

Concepts Required to Understand CNN on TensorFlow

What is a tensor?

A tensor is a way to represent deep learning data. It is a multidimensional array, used to store data for multiple features of a dataset, where each feature represents an additional dimension. For example, a 3-dimensional tensor is a “cube” storing values along three axes.

What is a computational graph?

The TensorFlow computational graph represents the flow of operations that occur during training of a deep learning model. For CNN models, the computational graph can be quite complex. Below is an example of a simple graph. You can visualize your model’s computational graph using TensorBoard – learn more about TensorFlow visualization .

What is a constant?

Used in TensorFlow to store constant values that don’t change. Used for nodes that are required to stay the same throughout model training. A constant does not take inputs.

What is a placeholder?

Used to feed input when running a model. A placeholder can take parameters, and so it can be modified in runtime, while you are running the computational graph.

What is a variable?

Used to modify the computational graph, adding parameters or nodes to the graph which are trainable.

TensorFlow API levels

TensorFlow lets you work directly with Tensors to build a neural network from the ground up. However, instead of using these low-level APIs which can be quite complex, TensorFlow recommends working with the higher-level Estimators API. This API enables object detection in TensorFlow, allowing you to define an object, at a higher level of abstraction, which creates and trains deep learning structures.

Basic TensorFlow CNN Example: Using MNIST Dataset with Estimators

A great way to get started with CNN on TensorFlow is to work with examples based on standard datasets. These datasets are built into TensorFlow and will give you predictable results, helping you learn to run and tune a model.

The TensorFlow MNIST example builds a TensorFlow object detection Estimator that creates a Convolutional Neural Network, which can classify handwritten digits in the MNIST dataset. Below are the general steps.

Architecture:

Convolutional layer with 32 5×5 filters

Pooling layer with 2×2 filter

Convolutional layer with 64 5×5 filters

Pooling layer with 2×2 filter

Dense layer with 1024 neurons

Dense layer with 10 neurons, to predict the digit for the current image

Process:

Build the input layer using the reshape() function.

Build the convolutional/pooling layers using the layers.conv2d() and layers.max_pooling2d() functions.

This is a slightly more advanced example using 28×28 grayscale images of 65,000 fashion products in 10 categories. The dataset was presented in an article by Xiao, Rasul and Vollgraf, and is not built into TensorFlow, so you’ll need to import it and perform some pre-processing.

Advanced TensorFlow CNN Example: CIFAR10 without Estimators

This example shows how to build a CNN on TensorFlow without an object detection Estimator, using lower level APIs that give you much more control over network structure and parameters, because you’ll create custom object detection in TensorFlow.

In this example, you classify an RGB 32×32 pixel image across 10 categories: airplane, automobile, bird, cat, deer, dog, frog, horse, ship, and truck. The example includes a multi-GPU version which will show you how to scale up your model.

Architecture: Alternating convolutions and nonlinearities, followed by fully connected layer, ending with a softmax classifier.

Process:

Crop images to 24×24 pixels and random distortions are applied to increase the dataset size.

Use the inference() function to compute predictions. The computation graph is as follows:Source: TensorFlow

Launch the model using the training script, which reports total loss every 10 steps and the processing speed for the last batch of data.

Evaluate the model using the evaluation script. It tests the model on all 10,000 images in the evaluation set of CIFAR-10, and displays accuracy.

Train the same model on multiple GPUs by running the separate GPU training script. This creates several replicas of the model and runs each of them on a different GPU, on a subset of the training data.

Running CNN on TensorFlow in the Real World

In this article we explained how to run Convolutional Neural Networks on TensorFlow. When you start working on CNN projects, processing and generating predictions for real images, audio and video, or performing custom object detection, you’ll run into some practical challenges:

Tracking experiments

Tracking experiment progress, source code, and hyperparameters across multiple CNN experiments. CNNs can have many different architectures and parameter tweaks, and testing each of these will require running and tracking large numbers of experiments.

Running experiments across multiple machines

A CNN is computationally intensive, and projects will likely require multiple machines or GPUs. Provisioning these machines, distributing experiments on them and monitoring experiments as they run can become a burden.

Manage training data

CNN projects usually involve images or video, and training sets can get huge, up to Gigabytes or Petabytes of data. Copying this data to each training machine and replacing it for different experiments can be time consuming and error prone.

MissingLink is a deep learning platform that does all of this for you, and lets you concentrate on building the most accurate model. Learn more to see how easy it is.