{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "c1451689",
   "metadata": {},
   "source": [
    "<!--- Licensed to the Apache Software Foundation (ASF) under one -->\n",
    "<!--- or more contributor license agreements.  See the NOTICE file -->\n",
    "<!--- distributed with this work for additional information -->\n",
    "<!--- regarding copyright ownership.  The ASF licenses this file -->\n",
    "<!--- to you under the Apache License, Version 2.0 (the -->\n",
    "<!--- \"License\"); you may not use this file except in compliance -->\n",
    "<!--- with the License.  You may obtain a copy of the License at -->\n",
    "\n",
    "<!---   http://www.apache.org/licenses/LICENSE-2.0 -->\n",
    "\n",
    "<!--- Unless required by applicable law or agreed to in writing, -->\n",
    "<!--- software distributed under the License is distributed on an -->\n",
    "<!--- \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -->\n",
    "<!--- KIND, either express or implied.  See the License for the -->\n",
    "<!--- specific language governing permissions and limitations -->\n",
    "<!--- under the License. -->\n",
    "\n",
    "# Handwritten Digit Recognition\n",
    "\n",
    "In this tutorial, we'll give you a step by step walk-through of how to build a hand-written digit classifier using the [MNIST](https://en.wikipedia.org/wiki/MNIST_database) dataset.\n",
    "\n",
    "MNIST is a widely used dataset for the hand-written digit classification task. It consists of 70,000 labeled 28x28 pixel grayscale images of hand-written digits. The dataset is split into 60,000 training images and 10,000 test images. There are 10 classes (one for each of the 10 digits). The task at hand is to train a model using the 60,000 training images and subsequently test its classification accuracy on the 10,000 test images.\n",
    "\n",
    "![png](https://raw.githubusercontent.com/dmlc/web-data/master/mxnet/example/mnist.png)\n",
    "\n",
    "**Figure 1:** Sample images from the MNIST dataset.\n",
    "\n",
    "This tutorial uses MXNet's new high-level interface, gluon package to implement MLP using\n",
    "imperative fashion.\n",
    "\n",
    "This is based on the Mnist tutorial with symbolic approach. You can find it [here](https://mxnet.apache.org/api/python/docs/tutorials/packages/gluon/image/mnist.html).\n",
    "\n",
    "## Prerequisites\n",
    "To complete this tutorial, we need:\n",
    "\n",
    "- MXNet. See the instructions for your operating system in [Setup and Installation](https://mxnet.io/get_started).\n",
    "\n",
    "- [Python Requests](http://docs.python-requests.org/en/master/) and [Jupyter Notebook](http://jupyter.org/index.html)."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "797f82e3",
   "metadata": {},
   "source": [
    "```\n",
    "$ pip install requests jupyter\n",
    "```\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "93c29b4f",
   "metadata": {},
   "source": [
    "## Loading Data\n",
    "\n",
    "Before we define the model, let's first fetch the [MNIST](http://yann.lecun.com/exdb/mnist/) dataset.\n",
    "\n",
    "The following source code downloads and loads the images and the corresponding labels into memory."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7350abba",
   "metadata": {},
   "source": [
    "```python\n",
    "import mxnet as mx\n",
    "\n",
    "# Fixing the random seed\n",
    "mx.random.seed(42)\n",
    "\n",
    "mnist = mx.test_utils.get_mnist()\n",
    "```\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e02e7897",
   "metadata": {},
   "source": [
    "After running the above source code, the entire MNIST dataset should be fully loaded into memory. Note that for large datasets it is not feasible to pre-load the entire dataset first like we did here. What is needed is a mechanism by which we can quickly and efficiently stream data directly from the source. MXNet Data iterators come to the rescue here by providing exactly that. Data iterator is the mechanism by which we feed input data into an MXNet training algorithm and they are very simple to initialize and use and are optimized for speed. During training, we typically process training samples in small batches and over the entire training lifetime will end up processing each training example multiple times. In this tutorial, we'll configure the data iterator to feed examples in batches of 100. Keep in mind that each example is a 28x28 grayscale image and the corresponding label.\n",
    "\n",
    "Image batches are commonly represented by a 4-D array with shape `(batch_size, num_channels, width, height)`. For the MNIST dataset, since the images are grayscale, there is only one color channel. Also, the images are 28x28 pixels, and so each image has width and height equal to 28. Therefore, the shape of input is `(batch_size, 1, 28, 28)`. Another important consideration is the order of input samples. When feeding training examples, it is critical that we don't feed samples with the same label in succession. Doing so can slow down training.\n",
    "Data iterators take care of this by randomly shuffling the inputs. Note that we only need to shuffle the training data. The order does not matter for test data.\n",
    "\n",
    "The following source code initializes the data iterators for the MNIST dataset. Note that we initialize two iterators: one for train data and one for test data."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "11714161",
   "metadata": {},
   "source": [
    "```python\n",
    "batch_size = 100\n",
    "train_data = mx.io.NDArrayIter(mnist['train_data'], mnist['train_label'], batch_size, shuffle=True)\n",
    "val_data = mx.io.NDArrayIter(mnist['test_data'], mnist['test_label'], batch_size)\n",
    "```\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f9e1b7fd",
   "metadata": {},
   "source": [
    "## Approaches\n",
    "\n",
    "We will cover a couple of approaches for performing the hand written digit recognition task. The first approach makes use of a traditional deep neural network architecture called Multilayer Perceptron (MLP). We'll discuss its drawbacks and use that as a motivation to introduce a second more advanced approach called Convolution Neural Network (CNN) that has proven to work very well for image classification tasks.\n",
    "\n",
    "Now, let's import required nn modules"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "53e6f3cf",
   "metadata": {},
   "source": [
    "```python\n",
    "from __future__ import print_function\n",
    "import mxnet as mx\n",
    "from mxnet import gluon\n",
    "from mxnet.gluon import nn\n",
    "from mxnet import autograd as ag\n",
    "```\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9410f21d",
   "metadata": {},
   "source": [
    "### Define a network: Multilayer Perceptron\n",
    "\n",
    "The first approach makes use of a [Multilayer Perceptron](https://en.wikipedia.org/wiki/Multilayer_perceptron) to solve this problem. We'll define the MLP using MXNet's imperative approach.\n",
    "\n",
    "MLPs consist of several fully connected layers. A fully connected layer or FC layer for short, is one where each neuron in the layer is connected to every neuron in its preceding layer. From a linear algebra perspective, an FC layer applies an [affine transform](https://en.wikipedia.org/wiki/Affine_transformation) to the *n x m* input matrix *X* and outputs a matrix *Y* of size *n x k*, where *k* is the number of neurons in the FC layer. *k* is also referred to as the hidden size. The output *Y* is computed according to the equation *Y = W X + b*. The FC layer has two learnable parameters, the *m x k* weight matrix *W* and the *m x 1* bias vector *b*.\n",
    "\n",
    "In an MLP, the outputs of most FC layers are fed into an activation function, which applies an element-wise non-linearity. This step is critical and it gives neural networks the ability to classify inputs that are not linearly separable. Common choices for activation functions are sigmoid, tanh, and [rectified linear unit](https://en.wikipedia.org/wiki/Rectifier_%28neural_networks%29) (ReLU). In this example, we'll use the ReLU activation function which has several desirable properties and is typically considered a default choice.\n",
    "\n",
    "The following code declares three fully connected layers with 128, 64 and 10 neurons each.\n",
    "The last fully connected layer often has its hidden size equal to the number of output classes in the dataset. Furthermore, these FC layers uses ReLU activation for performing an element-wise ReLU transformation on the FC layer output.\n",
    "\n",
    "To do this, we will use [Sequential layer](https://mxnet.io/api/python/docs/api/gluon/_autogen/mxnet.gluon.nn.Sequential.html) type. This is simply a linear stack of neural network layers. `nn.Dense` layers are nothing but the fully connected layers we discussed above."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "15c255e2",
   "metadata": {},
   "source": [
    "```python\n",
    "# define network\n",
    "net = nn.Sequential()\n",
    "with net.name_scope():\n",
    "    net.add(nn.Dense(128, activation='relu'))\n",
    "    net.add(nn.Dense(64, activation='relu'))\n",
    "    net.add(nn.Dense(10))\n",
    "```\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e74d7050",
   "metadata": {},
   "source": [
    "#### Initialize parameters and optimizer\n",
    "\n",
    "The following source code initializes all parameters received from parameter dict using [Xavier](https://mxnet.io/api/python/docs/api/gluon-related/_autogen/mxnet.initializer.Xavier.html) initializer\n",
    "to train the MLP network we defined above.\n",
    "\n",
    "For our training, we will make use of the stochastic gradient descent (SGD) optimizer. In particular, we'll be using mini-batch SGD. Standard SGD processes train data one example at a time. In practice, this is very slow and one can speed up the process by processing examples in small batches. In this case, our batch size will be 100, which is a reasonable choice. Another parameter we select here is the learning rate, which controls the step size the optimizer takes in search of a solution. We'll pick a learning rate of 0.02, again a reasonable choice. Settings such as batch size and learning rate are what are usually referred to as hyper-parameters. What values we give them can have a great impact on training performance.\n",
    "\n",
    "We will use [Trainer](/api/python/docs/api/gluon/trainer.html) class to apply the\n",
    "[SGD optimizer](/api/python/docs/api/optimizer/index.html#mxnet.optimizer.SGD) on the\n",
    "initialized parameters."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "20b5515d",
   "metadata": {},
   "source": [
    "```python\n",
    "gpus = mx.test_utils.list_gpus()\n",
    "ctx =  [mx.gpu()] if gpus else [mx.cpu(0), mx.cpu(1)]\n",
    "net.initialize(mx.init.Xavier(magnitude=2.24), ctx=ctx)\n",
    "trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': 0.02})\n",
    "```\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f7ab5572",
   "metadata": {},
   "source": [
    "#### Train the network\n",
    "\n",
    "Typically, one runs the training until convergence, which means that we have learned a good set of model parameters (weights + biases) from the train data. For the purpose of this tutorial, we'll run training for 10 epochs and stop. An epoch is one full pass over the entire train data.\n",
    "\n",
    "We will take following steps for training:\n",
    "\n",
    "- Define [Accuracy evaluation metric](https://mxnet.io/api/python/metric/metric.html#mxnet.metric.Accuracy) over training data.\n",
    "- Loop over inputs for every epoch.\n",
    "- Forward input through network to get output.\n",
    "- Compute loss with output and label inside record scope.\n",
    "- Backprop gradient inside record scope.\n",
    "- Update evaluation metric and parameters with gradient descent.\n",
    "\n",
    "Loss function takes (output, label) pairs and computes a scalar loss for each sample in the mini-batch. The scalars measure how far each output is from the label.\n",
    "There are many predefined loss functions in gluon.loss. Here we use\n",
    "[softmax_cross_entropy_loss](https://mxnet.io/api/python/gluon/gluon.html#mxnet.gluon.loss.softmax_cross_entropy_loss) for digit classification. We will compute loss and do backward propagation inside\n",
    "training scope which is defined by `autograd.record()`."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "569daf74",
   "metadata": {},
   "source": [
    "```python\n",
    "%%time\n",
    "epoch = 10\n",
    "# Use Accuracy as the evaluation metric.\n",
    "metric = mx.metric.Accuracy()\n",
    "softmax_cross_entropy_loss = gluon.loss.SoftmaxCrossEntropyLoss()\n",
    "for i in range(epoch):\n",
    "    # Reset the train data iterator.\n",
    "    train_data.reset()\n",
    "    # Loop over the train data iterator.\n",
    "    for batch in train_data:\n",
    "        # Splits train data into multiple slices along batch_axis\n",
    "        # and copy each slice into a context.\n",
    "        data = gluon.utils.split_and_load(batch.data[0], ctx_list=ctx, batch_axis=0)\n",
    "        # Splits train labels into multiple slices along batch_axis\n",
    "        # and copy each slice into a context.\n",
    "        label = gluon.utils.split_and_load(batch.label[0], ctx_list=ctx, batch_axis=0)\n",
    "        outputs = []\n",
    "        # Inside training scope\n",
    "        with ag.record():\n",
    "            for x, y in zip(data, label):\n",
    "                z = net(x)\n",
    "                # Computes softmax cross entropy loss.\n",
    "                loss = softmax_cross_entropy_loss(z, y)\n",
    "                # Backpropagate the error for one iteration.\n",
    "                loss.backward()\n",
    "                outputs.append(z)\n",
    "        # Updates internal evaluation\n",
    "        metric.update(label, outputs)\n",
    "        # Make one step of parameter update. Trainer needs to know the\n",
    "        # batch size of data to normalize the gradient by 1/batch_size.\n",
    "        trainer.step(batch.data[0].shape[0])\n",
    "    # Gets the evaluation result.\n",
    "    name, acc = metric.get()\n",
    "    # Reset evaluation result to initial state.\n",
    "    metric.reset()\n",
    "    print('training acc at epoch %d: %s=%f'%(i, name, acc))\n",
    "```\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "31ada467",
   "metadata": {},
   "source": [
    "#### Prediction\n",
    "\n",
    "After the above training completes, we can evaluate the trained model by running predictions on validation dataset. Since the dataset also has labels for all test images, we can compute the accuracy metric over validation data as follows:"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dc92819f",
   "metadata": {},
   "source": [
    "```python\n",
    "# Use Accuracy as the evaluation metric.\n",
    "metric = mx.metric.Accuracy()\n",
    "# Reset the validation data iterator.\n",
    "val_data.reset()\n",
    "# Loop over the validation data iterator.\n",
    "for batch in val_data:\n",
    "    # Splits validation data into multiple slices along batch_axis\n",
    "    # and copy each slice into a context.\n",
    "    data = gluon.utils.split_and_load(batch.data[0], ctx_list=ctx, batch_axis=0)\n",
    "    # Splits validation label into multiple slices along batch_axis\n",
    "    # and copy each slice into a context.\n",
    "    label = gluon.utils.split_and_load(batch.label[0], ctx_list=ctx, batch_axis=0)\n",
    "    outputs = []\n",
    "    for x in data:\n",
    "        outputs.append(net(x))\n",
    "    # Updates internal evaluation\n",
    "    metric.update(label, outputs)\n",
    "print('validation acc: %s=%f'%metric.get())\n",
    "assert metric.get()[1] > 0.94\n",
    "```\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "004a2a16",
   "metadata": {},
   "source": [
    "If everything went well, we should see an accuracy value that is around 0.96, which means that we are able to accurately predict the digit in 96% of test images. This is a pretty good result. But as we will see in the next part of this tutorial, we can do a lot better than that.\n",
    "\n",
    "### Convolutional Neural Network\n",
    "\n",
    "Earlier, we briefly touched on a drawback of MLP when we said we need to discard the input image's original shape and flatten it as a vector before we can feed it as input to the MLP's first fully connected layer. Turns out this is an important issue because we don't take advantage of the fact that pixels in the image have natural spatial correlation along the horizontal and vertical axes. A convolutional neural network (CNN) aims to address this problem by using a more structured weight representation. Instead of flattening the image and doing a simple matrix-matrix multiplication, it employs one or more convolutional layers that each performs a 2-D convolution on the input image.\n",
    "\n",
    "A single convolution layer consists of one or more filters that each play the role of a feature detector. During training, a CNN learns appropriate representations (parameters) for these filters. Similar to MLP, the output from the convolutional layer is transformed by applying a non-linearity. Besides the convolutional layer, another key aspect of a CNN is the pooling layer. A pooling layer serves to make the CNN translation invariant: a digit remains the same even when it is shifted left/right/up/down by a few pixels. A pooling layer reduces a *n x m* patch into a single value to make the network less sensitive to the spatial location. Pooling layer is always included after each conv (+ activation) layer in the CNN.\n",
    "\n",
    "The following source code defines a convolutional neural network architecture called LeNet. LeNet is a popular network known to work well on digit classification tasks. We will use a slightly different version from the original LeNet implementation, replacing the sigmoid activations with tanh activations for the neurons.\n",
    "\n",
    "A typical way to write your network is creating a new class inherited from `gluon.Block`\n",
    "class. We can define the network by composing and inheriting Block class as follows:"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e9716e3b",
   "metadata": {},
   "source": [
    "```python\n",
    "import mxnet.ndarray as F\n",
    "\n",
    "class Net(gluon.Block):\n",
    "    def __init__(self, **kwargs):\n",
    "        super(Net, self).__init__(**kwargs)\n",
    "        with self.name_scope():\n",
    "            # layers created in name_scope will inherit name space\n",
    "            # from parent layer.\n",
    "            self.conv1 = nn.Conv2D(20, kernel_size=(5,5))\n",
    "            self.pool1 = nn.MaxPool2D(pool_size=(2,2), strides = (2,2))\n",
    "            self.conv2 = nn.Conv2D(50, kernel_size=(5,5))\n",
    "            self.pool2 = nn.MaxPool2D(pool_size=(2,2), strides = (2,2))\n",
    "            self.fc1 = nn.Dense(500)\n",
    "            self.fc2 = nn.Dense(10)\n",
    "\n",
    "    def forward(self, x):\n",
    "        x = self.pool1(F.tanh(self.conv1(x)))\n",
    "        x = self.pool2(F.tanh(self.conv2(x)))\n",
    "        # 0 means copy over size from corresponding dimension.\n",
    "        # -1 means infer size from the rest of dimensions.\n",
    "        x = x.reshape((0, -1))\n",
    "        x = F.tanh(self.fc1(x))\n",
    "        x = F.tanh(self.fc2(x))\n",
    "        return x\n",
    "```\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c6ce8cc4",
   "metadata": {},
   "source": [
    "We just defined the forward function here, and the backward function to compute gradients\n",
    "is automatically defined for you using autograd.\n",
    "We also imported `mxnet.ndarray` package to use activation functions from `ndarray` API.\n",
    "\n",
    "Now, We will create the network as follows:"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "14de6f1b",
   "metadata": {},
   "source": [
    "```python\n",
    "net = Net()\n",
    "```\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7617d3f1",
   "metadata": {},
   "source": [
    "![png](https://raw.githubusercontent.com/dmlc/web-data/master/mxnet/image/conv_mnist.png){ width=500px }\n",
    "\n",
    "**Figure 3:** First conv + pooling layer in LeNet.\n",
    "\n",
    "Now we train LeNet with similar hyper-parameters as before. Note that, if a GPU is available, we recommend using it. This greatly speeds up computation given that LeNet is more complex and compute-intensive than the previous multilayer perceptron. To do so, we only need to change `mx.cpu()` to `mx.gpu()` and MXNet takes care of the rest. Just like before, we'll stop training after 10 epochs.\n",
    "\n",
    "Training and prediction can be done in the similar way as we did for MLP.\n",
    "\n",
    "#### Initialize parameters and optimizer\n",
    "\n",
    "We will initialize the network parameters as follows:"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ca037956",
   "metadata": {},
   "source": [
    "```python\n",
    "# set the context on GPU is available otherwise CPU\n",
    "ctx = [mx.gpu() if mx.test_utils.list_gpus() else mx.cpu()]\n",
    "net.initialize(mx.init.Xavier(magnitude=2.24), ctx=ctx)\n",
    "trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': 0.03})\n",
    "```\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b7e6eaf7",
   "metadata": {},
   "source": [
    "#### Training"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4101e865",
   "metadata": {},
   "source": [
    "```python\n",
    "# Use Accuracy as the evaluation metric.\n",
    "metric = mx.metric.Accuracy()\n",
    "softmax_cross_entropy_loss = gluon.loss.SoftmaxCrossEntropyLoss()\n",
    "\n",
    "for i in range(epoch):\n",
    "    # Reset the train data iterator.\n",
    "    train_data.reset()\n",
    "    # Loop over the train data iterator.\n",
    "    for batch in train_data:\n",
    "        # Splits train data into multiple slices along batch_axis\n",
    "        # and copy each slice into a context.\n",
    "        data = gluon.utils.split_and_load(batch.data[0], ctx_list=ctx, batch_axis=0)\n",
    "        # Splits train labels into multiple slices along batch_axis\n",
    "        # and copy each slice into a context.\n",
    "        label = gluon.utils.split_and_load(batch.label[0], ctx_list=ctx, batch_axis=0)\n",
    "        outputs = []\n",
    "        # Inside training scope\n",
    "        with ag.record():\n",
    "            for x, y in zip(data, label):\n",
    "                z = net(x)\n",
    "                # Computes softmax cross entropy loss.\n",
    "                loss = softmax_cross_entropy_loss(z, y)\n",
    "                # Backpropogate the error for one iteration.\n",
    "                loss.backward()\n",
    "                outputs.append(z)\n",
    "        # Updates internal evaluation\n",
    "        metric.update(label, outputs)\n",
    "        # Make one step of parameter update. Trainer needs to know the\n",
    "        # batch size of data to normalize the gradient by 1/batch_size.\n",
    "        trainer.step(batch.data[0].shape[0])\n",
    "    # Gets the evaluation result.\n",
    "    name, acc = metric.get()\n",
    "    # Reset evaluation result to initial state.\n",
    "    metric.reset()\n",
    "    print('training acc at epoch %d: %s=%f'%(i, name, acc))\n",
    "```\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e5f55c7c",
   "metadata": {},
   "source": [
    "#### Prediction\n",
    "\n",
    "Finally, we'll use the trained LeNet model to generate predictions for the test data."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e11e2c91",
   "metadata": {},
   "source": [
    "```python\n",
    "# Use Accuracy as the evaluation metric.\n",
    "metric = mx.metric.Accuracy()\n",
    "# Reset the validation data iterator.\n",
    "val_data.reset()\n",
    "# Loop over the validation data iterator.\n",
    "for batch in val_data:\n",
    "    # Splits validation data into multiple slices along batch_axis\n",
    "    # and copy each slice into a context.\n",
    "    data = gluon.utils.split_and_load(batch.data[0], ctx_list=ctx, batch_axis=0)\n",
    "    # Splits validation label into multiple slices along batch_axis\n",
    "    # and copy each slice into a context.\n",
    "    label = gluon.utils.split_and_load(batch.label[0], ctx_list=ctx, batch_axis=0)\n",
    "    outputs = []\n",
    "    for x in data:\n",
    "        outputs.append(net(x))\n",
    "    # Updates internal evaluation\n",
    "    metric.update(label, outputs)\n",
    "print('validation acc: %s=%f'%metric.get())\n",
    "assert metric.get()[1] > 0.98\n",
    "```\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "91f09f06",
   "metadata": {},
   "source": [
    "If all went well, we should see a higher accuracy metric for predictions made using LeNet. With CNN we should be able to correctly predict around 98% of all test images.\n",
    "\n",
    "## Summary\n",
    "\n",
    "In this tutorial, we have learned how to use MXNet to solve a standard computer vision problem: classifying images of hand written digits. You have seen how to quickly and easily build, train and evaluate models such as MLP and CNN with MXNet Gluon package.\n",
    "\n",
    "<!-- INSERT SOURCE DOWNLOAD BUTTONS -->"
   ]
  }
 ],
 "metadata": {
  "language_info": {
   "name": "python"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}