Getting started with Deep Learning and Apache MXNet

Deep Learning has become one of the hottest — if not THE hottest — topic in the IT industry. Indeed, this technology can efficiently solve complex problems such as image recognition or natural language speech, as demonstrated by services such as Amazon Rekognition, Amazon Polly or Amazon Lex.

However, some use cases require that customers build their own Deep Learning application. For a long time, this was a very complex task involving arcane knowledge and tools which only expert scientists could master. Unfortunately, this discouraged a lot of software developers from even trying.

Now, high-level Open Source libraries such as Apache MXNet enable non-experts to design, train and re-use state of the art deep neural networks. Thanks to its high-level API, its support of languages such as Python or R and its ability to train quickly on multiple GPUs, Apache MXNet is well-suited for exploration and experimentation. Let’s get you started!

For a no-nonsense introduction in less than 30 minutes, you should listen to the AWS podcast I recorded a few months ago.

For a deeper dive into the Apache MXNet API, here are two series of articles I recently wrote. They are specifically targeted at software developers with a basic knowledge of Python and a strong desire to learn: everyone is welcome!

Introduction to the Apache MXNet API

· Part 1: installing MXNet and a look at the NDArray API.

· Part 2: understanding imperative programming vs. symbolic programming and a look at the Symbol API.

· Part 3: training a first model and a look at the Module API.

· Part 4: recognizing images with Inception v3, a pre-trained model from the model zoo.

· Part 5: using more pre-trained models, VGG16 and ResNet-152.

· Part 6: recognizing images with a pre-trained model on a Raspberry Pi.

Training Apache MXNet

· Part 1: learning the MNIST data set, first with a Multi-Layer Perceptron then with the LeNet on a GPU instance.

· Part 2: learning the CIFAR-10 data set with ResNext-101, then fine-tuning a pre-trained network.

· Part 3: optimizing CIFAR-10 with variable learning rate and AdaDelta.

· Part 4: using the Deep Learning AMI and multiple GPU instances for distributed training.

· Part 5: using Amazon EFS to optimize data set storage for distributed training.

Training Apache MXNet on the ImageNet dataset

· Part 1

· Part 2

Keras shoot-out

· Part 1: TensorFlow vs MXNet

· Part 2: a deeper look at memory usage

· Part 3: fine-tuning

Speeding up Apache MXNet

· Part 1: NNPACK on Intel-based platforms

· Part 2: NNPACK on Raspberry Pi platforms

· Part 3: C5 instances and Intel MKL

Generative Adversarial Networks on Apache MXNet

· Part 1: generating new MNIST-like images.

Open Source projects based on Apache MXNet

· Part 1

· Part 2

I hope that you will enjoy these articles and that they will help you get started on your first Deep Learning project. Please follow me on Medium and Twitter for more AWS and AI content.