Skip to content

Latest commit

 

History

History
842 lines (753 loc) · 181 KB

mxnetbasics.md

File metadata and controls

842 lines (753 loc) · 181 KB

A first neural network in MXNet

General imports

% matplotlib inline
import pickle 
import matplotlib.pyplot as plt 
import numpy as np 
import random
import time

First step is to load data from file and plot a few examples

train_x = pickle.load(open("MNIST_train_x.pkl", 'rb'))
train_y = pickle.load(open("MNIST_train_y.pkl", 'rb'))
test_x = pickle.load(open("MNIST_test_x.pkl", 'rb'))
test_y = pickle.load(open("MNIST_test_y.pkl", 'rb'))
print("Data stats")
print(type(train_x))
print(train_x.shape)
print(type(train_y))
print(train_y.shape)
print(type(test_x))
print(test_x.shape)
print(type(test_y))
print(test_y.shape)
[
 {
  "name": "stdout",
  "output_type": "stream",
  "text": "Data stats\n<class 'numpy.ndarray'>\n(60000, 784)\n<class 'numpy.ndarray'>\n(60000, 10)\n<class 'numpy.ndarray'>\n(10000, 784)\n<class 'numpy.ndarray'>\n(10000, 10)\n"
 }
]

Visualization function

  • It plots a grid of 2 x 4 examples, with the real and predicted values
def plotExamples(data, labels, model_predict):
    plt.figure(figsize=(8,5))
    for i in range(8):
        sub = 241 + i
        ax = plt.subplot(sub)
        index = np.random.randint(0, data.shape[0])
        ax.set_title("num: " + str(np.argmax(labels[index])) + "," + str(np.argmax(model_predict[index])))
        im = np.reshape(data[index], (28, 28))
        plt.imshow(im, cmap="gray")
    plt.show()
'''
Currently we are just duplicating the correct labels
When we have a model we can plot both the correct and predicted labels
'''
plotExamples(train_x, train_y, train_y)
[
 {
  "data": {
   "image/png": "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\nMu8erm4xAAAAAElFTkSuQmCC\n",
   "text/plain": "<matplotlib.figure.Figure at 0x104397978>"
  },
  "metadata": {},
  "output_type": "display_data"
 }
]

Building a first MXNet model

  • Simple 3 layer feedforward network
    • One input, one hidden, and one output layer
  • Six steps:
    1. Preparing the data
    2. Build model
    3. Initialize parameters
    4. Prepare loss and optimizer
    5. Prepare training and evaluation code loops
    6. Train the model
  • Please note, this section on how to set up an MXNet model closely tracks the tutorial available as part of the Gluon documentation, available here

MXNet imports

import mxnet as mx
from mxnet import nd, autograd
from mxnet import gluon

1. Preparing the data

  • We will use MXNet's NDArray to store our data. This is the core data structure to hold data for computation in MXNet.
  • NDArray is similar to numpy.ndarray but also supports execution on different types of hardware (CPU, GPU for example) and can easily by parallelized
  • We can also use it to build dataIterators, a useful structure which makes it easy to organize your data into batches to feed into a model for training and evaluation
  • For more information about NDArrays see this tutorial
''' NDArrays can be created from numpy arrays '''
train_x_mx = mx.nd.array(train_x)
train_y_mx = mx.nd.array(train_y)
test_x_mx = mx.nd.array(test_x)
test_y_mx = mx.nd.array(test_y)
'''NDArrays have a shape, data type and context (processor that the computation will be executed on)'''
print("NDArray attributes")
print(train_x_mx.shape)
print(train_x_mx.dtype)
print(train_x_mx.context)
print()
'''The two different representations have different types'''
print("Numpy data type")
print(type(train_x_mx))
print("NDArray data type")
print(type(train_x_mx.asnumpy()))
print()
'''
Each type can be printed directly
Also note that NDArrays have similar indexing operators to numpy
'''
print("Numpy format")
print(train_x[0,150:160])
print("NDArray format")
print(train_x_mx[0,150:160])
''' Or convert from an NDArray back to numpy '''
print("NDArray converted to numpy")
print(train_x_mx[0,150:160].asnumpy())
print()
[
 {
  "name": "stdout",
  "output_type": "stream",
  "text": "NDArray attributes\n(60000, 784)\n<class 'numpy.float32'>\ncpu(0)\n\nNumpy data type\n<class 'mxnet.ndarray.NDArray'>\nNDArray data type\n<class 'numpy.ndarray'>\n\nNumpy format\n[  0   0   3  18  18  18 126 136 175  26]\nNDArray format\n\n[   0.    0.    3.   18.   18.   18.  126.  136.  175.   26.]\n<NDArray 10 @cpu(0)>\nNDArray converted to numpy\n[   0.    0.    3.   18.   18.   18.  126.  136.  175.   26.]\n\n"
 }
]
''' Printing statistics of the data in the NDArray format '''
print("Training data")
print(train_x_mx.shape)
print(train_x_mx.dtype)
print("Training labels")
print(train_y_mx.shape)
print(train_y_mx.dtype)
print("Test data")
print(test_x_mx.shape)
print(test_x_mx.dtype)
print("Test labels")
print(test_y_mx.shape)
print(test_y_mx.dtype)
[
 {
  "name": "stdout",
  "output_type": "stream",
  "text": "Training data\n(60000, 784)\n<class 'numpy.float32'>\nTraining labels\n(60000, 10)\n<class 'numpy.float32'>\nTest data\n(10000, 784)\n<class 'numpy.float32'>\nTest labels\n(10000, 10)\n<class 'numpy.float32'>\n"
 }
]
''' It is easy to change data types as needed '''
test_y_mx = test_y_mx.astype('int32')
print(test_y_mx.dtype)
test_y_mx = test_y_mx.astype('float32')
print(test_y_mx.dtype)
[
 {
  "name": "stdout",
  "output_type": "stream",
  "text": "<class 'numpy.int32'>\n<class 'numpy.float32'>\n"
 }
]
'''
Create an iterator for the training and test data
This packages the data and labels into individual batches to be fed into the network
'''
batch_size = 32
train_data = mx.io.NDArrayIter(train_x_mx, train_y_mx, batch_size, shuffle=True, \
                                   last_batch_handle='pad', data_name='train_data', label_name='train_label')
test_data = mx.io.NDArrayIter(test_x_mx, test_y_mx, batch_size, shuffle=True, \
                                   last_batch_handle='pad', data_name='test_data', label_name='test_label')
''' Iterators have a number of useful descriptive attributes '''
print(train_data)
print(train_data.provide_data)
print(train_data.provide_label)
print(test_data)
print(test_data.provide_data)
print(test_data.provide_label)
[
 {
  "name": "stdout",
  "output_type": "stream",
  "text": "<mxnet.io.NDArrayIter object at 0x10f1b7da0>\n[DataDesc[train_data,(32, 784),<class 'numpy.float32'>,NCHW]]\n[DataDesc[train_label,(32, 10),<class 'numpy.float32'>,NCHW]]\n<mxnet.io.NDArrayIter object at 0x10f1b7c18>\n[DataDesc[test_data,(32, 784),<class 'numpy.float32'>,NCHW]]\n[DataDesc[test_label,(32, 10),<class 'numpy.float32'>,NCHW]]\n"
 }
]

2. Build model

'''First step is to initialize your model'''
net = mx.gluon.nn.Sequential()
'''Then, define your model architecture'''
with net.name_scope():    
    '''
    Add a fully connected hidden layer with 128 nodes and specify the activation function 
    The input layer is implicit
    '''
    net.add(mx.gluon.nn.Dense(128, activation="sigmoid"))
    
    '''Add an output layer with 10 output nodes and specify the activation function'''
    net.add(mx.gluon.nn.Dense(10, activation="sigmoid"))

3. Initialize parameters

''' 
Lists information about the parameters in the network
Placeholder of 0 for the dimension of the input data. 
In this example it will be 784 and is inferred when data is fed through the network
'''
print(net.collect_params())

''' 
All parameters need a context - the device on which they carry out the computations 
In this example computation is carried out on cpu 0
'''
ctx = mx.cpu()
print("Context for calculations: {}".format(ctx))

''' 
Initialize all of the network's weights and biases to 
Assign all of the networks parameters to the context - cpu 0
'''
net.collect_params().initialize(mx.init.Xavier(magnitude=2.24), ctx=ctx)
[
 {
  "name": "stdout",
  "output_type": "stream",
  "text": "sequential0_ (\n  Parameter sequential0_dense1_weight (shape=(10, 0), dtype=<class 'numpy.float32'>)\n  Parameter sequential0_dense0_bias (shape=(128,), dtype=<class 'numpy.float32'>)\n  Parameter sequential0_dense1_bias (shape=(10,), dtype=<class 'numpy.float32'>)\n  Parameter sequential0_dense0_weight (shape=(128, 0), dtype=<class 'numpy.float32'>)\n)\nContext for calculations: cpu(0)\n"
 }
]

4. Prepare the loss and optimizer

'''Next, define your loss function and optimizer through MXNet's Trainer class
    1. Loss function - how your model defines the error between
       the correct output and its prediction
    2. Optimizer (part of the Trainer) - how your model learns.
'''
loss = gluon.loss.L2Loss()
trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': .01})

5. Prepare training and evaluation code

'''
The dataIterator structure packages data nicely and has a number of interesting features
The code below demonstrates some of the features of a single batch of data
'''
train_data.reset()
for i, batch in enumerate(train_data):
    print("Batch object type: {}".format(type(batch)))
    print(batch)
    print()
    print("Batch.data is a list of length 1 containing the data for this batch")
    print("Batch data type {}".format(type(batch.data)))
    print("Batch data list length: {}".format(len(batch.data)))
    print("Batch data example values")
    print(batch.data[0][0,150:160])
    print()
    print("Batch.label is a list of length 1 containing the label for this batch")
    print("Batch label type {}".format(type(batch.label)))
    print("Batch label list length: {}".format(len(batch.label)))
    print("Batch label example values")
    print(batch.label[0][:5])
    print()
    data = batch.data[0]
    print("Data context: {}, shape: {}, data type: {}".format(data.context, data.shape, data.dtype))
    label = batch.label[0]
    print("Label context: {}, shape: {}, data type: {}".format(label.context, label.shape, label.dtype))
    break
[
 {
  "name": "stdout",
  "output_type": "stream",
  "text": "Batch object type: <class 'mxnet.io.DataBatch'>\nDataBatch: data shapes: [(32, 784)] label shapes: [(32, 10)]\n\nBatch.data is a list of length 1 containing the data for this batch\nBatch data type <class 'list'>\nBatch data list length: 1\nBatch data example values\n\n[ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]\n<NDArray 10 @cpu(0)>\n\nBatch.label is a list of length 1 containing the label for this batch\nBatch label type <class 'list'>\nBatch label list length: 1\nBatch label example values\n\n[[ 0.  0.  0.  0.  0.  1.  0.  0.  0.  0.]\n [ 0.  0.  0.  0.  1.  0.  0.  0.  0.  0.]\n [ 0.  0.  0.  0.  0.  0.  0.  1.  0.  0.]\n [ 0.  0.  0.  0.  0.  0.  0.  0.  1.  0.]\n [ 1.  0.  0.  0.  0.  0.  0.  0.  0.  0.]]\n<NDArray 5x10 @cpu(0)>\n\nData context: cpu(0), shape: (32, 784), data type: <class 'numpy.float32'>\nLabel context: cpu(0), shape: (32, 10), data type: <class 'numpy.float32'>\n"
 }
]
''' Next step is to define a performance measure'''

''' The typical measure for this problem is overall accuracy 
    - the percentage of examples for which the model predicted the correct class
    For more challenging classification tasks, the classic ImageNet challenge for example,
    which contains images from 1000 classes it is common to look at a top k accuracy, 
    the percentage of examples for which the model predicted the correct class 
    in the the top k results
    
    This also demonstrates MXNet's CompositeEvalMetric, 
    which allows you to evaluate models using multiple metrics
'''

''' Helper function creating the composite metric'''
def create_metrics():
    m_acc = mx.metric.Accuracy()
    m_acc_topk = mx.metric.TopKAccuracy(top_k=3, name='top_3_accuracy')
    metrics = mx.metric.CompositeEvalMetric()
    metrics.add(m_acc)
    metrics.add(m_acc_topk)
    return metrics

''' Helper function converting one hot labels to a single number'''
def convert_from_one_hot(label):
    label_np = label.asnumpy()
    label_np = label_np.argmax(axis=1)
    label_np = np.expand_dims(label_np, axis=1)
    label_np = mx.nd.array(label_np)
    return label_np

''' This helper function takes some data and a network and calculates the performance of that
    network using the metrics defined above
'''
def evaluate_accuracy(data_iterator, net, metrics):
    data_iterator.reset()
    ''' Iterate through the data'''
    for i, batch in enumerate(data_iterator):
        with autograd.record():
            data = batch.data[0]
            label_one_hot = batch.label[0]
            '''
            Labels need to have a single value per example. 
            So we need to convert from a one hot encoding.
            e.g. from [0, 0, 0, 1, 0, 0, 0, 0, 0, 0] --> [3]
            '''
            label = convert_from_one_hot(label_one_hot)
            ''' Forward pass '''
            output = net(data)    
        metrics.update([label], [output])
        ''' 
        Metrics.get() returns a tuple containing two lists. 
        The first list contains the names of the evaluation metrics
        The second contains a list of the values
        e.g. (['accuracy', top_3_accuracy'],[0.75, 1.0])
        '''
    return metrics.get()[1]

6. Train the model

def train_model(net, train_data, test_data, metrics, loss, trainer, batch_limit=0, num_epochs=10, verbose=1):
    '''
    net: neural network
    train_data: training data
    test_data: test data
    metrics: instance of mx.metric class defining evaluation metrics for the network
    loss: instance of gluon.loss class defining the loss function - the measure of error
    trainer: instance of gluon.Trainer class defining an optimizer over parameters
    batch_limit: number of batches to limit training to. 
              Can be useful to limit data for quick experiments
              A zero value indicates no limit
    num_epochs: number of iterations of the data to train on
    verbose: Three values - 1, 2, or 3
             Controls how much information to print
             1 = least verbose, 3 = most verbose 
    '''
    
    ''' Lists to hold training statistics '''
    losses = []
    train_accuracies = []
    test_accuracies = []
    
    for e in range(num_epochs):
        ''' Keep track of how long an epoch takes '''
        start = time.time()
        epoch_loss = []
        train_data.reset()
        num_batches = 0
        '''Iterate through the training data'''
        for i, batch in enumerate(train_data):
            data = batch.data[0]
            label_one_hot = batch.label[0]
            '''
            Labels for the SoftmaxCrossEntropy loss need to have a single value per example. 
            So we need to convert from a one hot encoding.
            e.g. from [0, 0, 0, 1, 0, 0, 0, 0, 0, 0] --> [3]
            '''
            label = convert_from_one_hot(label_one_hot)
            with autograd.record():
                '''Forward pass'''
                output = net(data)
                '''Calculate loss for this batch'''
                try:
                    '''format for mse loss'''
                    b_loss = loss(output, label_one_hot)
                except:
                    '''format for softmax cross entropy'''
                    b_loss = loss(output, label)
                    
                '''Calculate gradient of the weights and biases with respect to the loss'''
                b_loss.backward()
            '''Update all of the weights and biases'''
            trainer.step(batch_size=data.shape[0])
            '''Keep track of average loss per batch'''
            loss_avg = mx.nd.mean(b_loss).asnumpy()[0]
            epoch_loss.append(loss_avg)
            num_batches += 1
            if batch_limit > 0 and i >= batch_limit - 1:
                break

        '''Select 10 random epochs to print'''
        sample_losses = random.sample(epoch_loss, 10)
        average_loss = sum(epoch_loss) / (len(epoch_loss) * 1.0)
        test_accuracy = evaluate_accuracy(test_data, net, metrics)
        train_accuracy = evaluate_accuracy(train_data, net, metrics)
        '''Store results'''
        losses.append(average_loss)
        train_accuracies.append(train_accuracy)
        test_accuracies.append(test_accuracy)
        end = time.time()
        
        '''Print stats depending on verbosity'''
        print("Epoch {} Loss: {:.5f} Time: {:.1f}s Num batches: {}".format(e, average_loss, end - start, num_batches))
        if verbose == 3:
            print("Sample batch losses: {}".format(sample_losses))
        if verbose == 2 or verbose == 3:
            print("Train_acc {:.5f}, Train_top_3_accuracy {:.5f}".format(train_accuracy[0], train_accuracy[1]))
            print("Test_acc {:.5f}, Test_top_3_accuracy {:.5f}".format(test_accuracy[0], test_accuracy[1]))
        if verbose > 3 or verbose < 1:
            print("Not a valid verbose option. Valid options 1, 2, 3")
        print()
        
    return (losses, train_accuracies, test_accuracies)
batch_limit = 625 # Approximately 1/3 of the data
epochs = 10
metrics = create_metrics()
''' Note the loss, net, and trainer were created in parts 2 and 4'''
results = train_model(net, train_data, test_data, metrics, loss, trainer, \
                      batch_limit=batch_limit, num_epochs=epochs, verbose=2)
[
 {
  "name": "stdout",
  "output_type": "stream",
  "text": "Epoch 0 Loss: 0.06545 Time: 5.6s Num batches: 625\nTrain_acc 0.24003, Train_top_3_accuracy 0.50434\nTest_acc 0.24131, Test_top_3_accuracy 0.50170\n\nEpoch 1 Loss: 0.04351 Time: 5.4s Num batches: 625\nTrain_acc 0.29984, Train_top_3_accuracy 0.56743\nTest_acc 0.25564, Test_top_3_accuracy 0.52068\n\nEpoch 2 Loss: 0.04063 Time: 6.6s Num batches: 625\nTrain_acc 0.35047, Train_top_3_accuracy 0.61643\nTest_acc 0.31011, Test_top_3_accuracy 0.57759\n\nEpoch 3 Loss: 0.03869 Time: 9.1s Num batches: 625\nTrain_acc 0.39313, Train_top_3_accuracy 0.65444\nTest_acc 0.35824, Test_top_3_accuracy 0.62353\n\nEpoch 4 Loss: 0.03691 Time: 6.6s Num batches: 625\nTrain_acc 0.43042, Train_top_3_accuracy 0.68505\nTest_acc 0.39958, Test_top_3_accuracy 0.65975\n\nEpoch 5 Loss: 0.03514 Time: 4.9s Num batches: 625\nTrain_acc 0.46202, Train_top_3_accuracy 0.70995\nTest_acc 0.43570, Test_top_3_accuracy 0.68926\n\nEpoch 6 Loss: 0.03355 Time: 5.7s Num batches: 625\nTrain_acc 0.48876, Train_top_3_accuracy 0.73059\nTest_acc 0.46638, Test_top_3_accuracy 0.71337\n\nEpoch 7 Loss: 0.03215 Time: 5.3s Num batches: 625\nTrain_acc 0.51195, Train_top_3_accuracy 0.74804\nTest_acc 0.49248, Test_top_3_accuracy 0.73347\n\nEpoch 8 Loss: 0.03091 Time: 4.9s Num batches: 625\nTrain_acc 0.53210, Train_top_3_accuracy 0.76311\nTest_acc 0.51518, Test_top_3_accuracy 0.75053\n\nEpoch 9 Loss: 0.02977 Time: 5.8s Num batches: 625\nTrain_acc 0.54997, Train_top_3_accuracy 0.77625\nTest_acc 0.53494, Test_top_3_accuracy 0.76522\n\n"
 }
]

Quadratic cost (mean squared error) vs. categorical crossentropy loss

functions

  • Categorical cross-entropy significantly speeds up training
  • Softmax output layers are the most appropriate for the MNIST problem since each image can only belong to one class and the softmax functions over a set of values converts the values to a proability distribution. The result in this example is a probability distribution across the 10 classes.
    • As the value of one output node increases, the value of one or more other output nodes must decrease
    • This is consistent with our intuition that as we become more confident and image belongs to one class, we reduce our confidence that an image belongs to other classes
  • In MXNet the softmax operation is combined with the categorical cross-entropy loss function

Softmax output layer, categorical cross-entropy

net = mx.gluon.nn.Sequential()
with net.name_scope():
    net.add(mx.gluon.nn.Dense(128, activation="sigmoid"))
    net.add(mx.gluon.nn.Dense(10))
ctx = mx.cpu()
net.collect_params().initialize(mx.init.Xavier(magnitude=2.24), ctx=ctx)

loss = gluon.loss.SoftmaxCrossEntropyLoss()
trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': .01})
batch_limit = 625 
epochs = 10
metrics = create_metrics()
results = train_model(net, train_data, test_data, metrics, loss, trainer, \
                      batch_limit=batch_limit, num_epochs=epochs, verbose=2)
[
 {
  "name": "stdout",
  "output_type": "stream",
  "text": "Epoch 0 Loss: 0.97943 Time: 5.6s Num batches: 625\nTrain_acc 0.86485, Train_top_3_accuracy 0.96525\nTest_acc 0.86861, Test_top_3_accuracy 0.96645\n\nEpoch 1 Loss: 0.50903 Time: 6.2s Num batches: 625\nTrain_acc 0.87453, Train_top_3_accuracy 0.96895\nTest_acc 0.86823, Test_top_3_accuracy 0.96631\n\nEpoch 2 Loss: 0.41627 Time: 5.5s Num batches: 625\nTrain_acc 0.88272, Train_top_3_accuracy 0.97117\nTest_acc 0.87652, Test_top_3_accuracy 0.96954\n\nEpoch 3 Loss: 0.36922 Time: 4.7s Num batches: 625\nTrain_acc 0.88856, Train_top_3_accuracy 0.97295\nTest_acc 0.88403, Test_top_3_accuracy 0.97154\n\nEpoch 4 Loss: 0.33710 Time: 3.8s Num batches: 625\nTrain_acc 0.89249, Train_top_3_accuracy 0.97437\nTest_acc 0.88933, Test_top_3_accuracy 0.97321\n\nEpoch 5 Loss: 0.31375 Time: 4.3s Num batches: 625\nTrain_acc 0.89610, Train_top_3_accuracy 0.97550\nTest_acc 0.89318, Test_top_3_accuracy 0.97457\n\nEpoch 6 Loss: 0.29741 Time: 4.3s Num batches: 625\nTrain_acc 0.89919, Train_top_3_accuracy 0.97653\nTest_acc 0.89670, Test_top_3_accuracy 0.97566\n\nEpoch 7 Loss: 0.28289 Time: 5.8s Num batches: 625\nTrain_acc 0.90183, Train_top_3_accuracy 0.97731\nTest_acc 0.89966, Test_top_3_accuracy 0.97665\n\nEpoch 8 Loss: 0.26460 Time: 6.1s Num batches: 625\nTrain_acc 0.90406, Train_top_3_accuracy 0.97794\nTest_acc 0.90217, Test_top_3_accuracy 0.97740\n\nEpoch 9 Loss: 0.26550 Time: 4.8s Num batches: 625\nTrain_acc 0.90598, Train_top_3_accuracy 0.97847\nTest_acc 0.90437, Test_top_3_accuracy 0.97803\n\n"
 }
]

Rectified Linear Unit (ReLU) vs. Sigmoid

Observations

  • ReLU needs a low learning rate for the network to learn anything
  • May perform worse than a sigmoid hidden layer for shallow networks
''' Learning rate of 0.01 results in poor learning'''
net = mx.gluon.nn.Sequential()
with net.name_scope():
    net.add(mx.gluon.nn.Dense(128, activation="relu"))
    net.add(mx.gluon.nn.Dense(10))
ctx = mx.cpu()
net.collect_params().initialize(mx.init.Xavier(magnitude=2.24), ctx=ctx)

loss = gluon.loss.SoftmaxCrossEntropyLoss()
trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': .01})
batch_limit = 625 
epochs = 5
metrics = create_metrics()
results = train_model(net, train_data, test_data, metrics, loss, trainer, \
                      batch_limit=batch_limit, num_epochs=epochs, verbose=2)
[
 {
  "name": "stdout",
  "output_type": "stream",
  "text": "Epoch 0 Loss: 20.24067 Time: 4.7s Num batches: 625\nTrain_acc 0.31457, Train_top_3_accuracy 0.52389\nTest_acc 0.31450, Test_top_3_accuracy 0.52586\n\nEpoch 1 Loss: 1.89924 Time: 5.7s Num batches: 625\nTrain_acc 0.32852, Train_top_3_accuracy 0.53276\nTest_acc 0.31795, Test_top_3_accuracy 0.52668\n\nEpoch 2 Loss: 1.83847 Time: 4.7s Num batches: 625\nTrain_acc 0.32083, Train_top_3_accuracy 0.52455\nTest_acc 0.32696, Test_top_3_accuracy 0.53142\n\nEpoch 3 Loss: 1.79576 Time: 4.4s Num batches: 625\nTrain_acc 0.30263, Train_top_3_accuracy 0.50467\nTest_acc 0.31752, Test_top_3_accuracy 0.52102\n\nEpoch 4 Loss: 1.78232 Time: 5.4s Num batches: 625\nTrain_acc 0.30345, Train_top_3_accuracy 0.50447\nTest_acc 0.30281, Test_top_3_accuracy 0.50474\n\n"
 }
]
''' Learning rate of 0.001 is a significant improvement'''
net = mx.gluon.nn.Sequential()
with net.name_scope():
    net.add(mx.gluon.nn.Dense(128, activation="relu"))
    net.add(mx.gluon.nn.Dense(10))
ctx = mx.cpu()
net.collect_params().initialize(mx.init.Xavier(magnitude=2.24), ctx=ctx)

loss = gluon.loss.SoftmaxCrossEntropyLoss()
trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': .001})
batch_limit = 625 
epochs = 10
metrics = create_metrics()
results = train_model(net, train_data, test_data, metrics, loss, trainer, \
                      batch_limit=batch_limit, num_epochs=epochs, verbose=2)
[
 {
  "name": "stdout",
  "output_type": "stream",
  "text": "Epoch 0 Loss: 2.76247 Time: 4.1s Num batches: 625\nTrain_acc 0.80047, Train_top_3_accuracy 0.93269\nTest_acc 0.79223, Test_top_3_accuracy 0.93041\n\nEpoch 1 Loss: 0.58072 Time: 4.7s Num batches: 625\nTrain_acc 0.82558, Train_top_3_accuracy 0.94491\nTest_acc 0.80572, Test_top_3_accuracy 0.93518\n\nEpoch 2 Loss: 0.41387 Time: 4.0s Num batches: 625\nTrain_acc 0.84327, Train_top_3_accuracy 0.95101\nTest_acc 0.82863, Test_top_3_accuracy 0.94590\n\nEpoch 3 Loss: 0.32937 Time: 4.3s Num batches: 625\nTrain_acc 0.85437, Train_top_3_accuracy 0.95583\nTest_acc 0.84490, Test_top_3_accuracy 0.95172\n\nEpoch 4 Loss: 0.27667 Time: 4.4s Num batches: 625\nTrain_acc 0.86294, Train_top_3_accuracy 0.95940\nTest_acc 0.85553, Test_top_3_accuracy 0.95626\n\nEpoch 5 Loss: 0.24108 Time: 4.4s Num batches: 625\nTrain_acc 0.87046, Train_top_3_accuracy 0.96221\nTest_acc 0.86396, Test_top_3_accuracy 0.95977\n\nEpoch 6 Loss: 0.21641 Time: 4.8s Num batches: 625\nTrain_acc 0.87646, Train_top_3_accuracy 0.96436\nTest_acc 0.87120, Test_top_3_accuracy 0.96248\n\nEpoch 7 Loss: 0.19475 Time: 4.3s Num batches: 625\nTrain_acc 0.88148, Train_top_3_accuracy 0.96616\nTest_acc 0.87703, Test_top_3_accuracy 0.96459\n\nEpoch 8 Loss: 0.17621 Time: 4.5s Num batches: 625\nTrain_acc 0.88572, Train_top_3_accuracy 0.96767\nTest_acc 0.88194, Test_top_3_accuracy 0.96634\n\nEpoch 9 Loss: 0.16417 Time: 4.2s Num batches: 625\nTrain_acc 0.88937, Train_top_3_accuracy 0.96890\nTest_acc 0.88609, Test_top_3_accuracy 0.96781\n\n"
 }
]

Relu really comes into its own for deep networks

  • Deeper networks tend to perform better than shallow networks for complex tasks
  • But they are hard to train. Relu's make it easier for deep networks to learn because their gradients don't saturate for postive inputs
net = mx.gluon.nn.Sequential()
with net.name_scope():
    net.add(mx.gluon.nn.Dense(512, activation="relu"))
    net.add(mx.gluon.nn.Dense(256, activation="relu"))
    net.add(mx.gluon.nn.Dense(128, activation="relu"))
    net.add(mx.gluon.nn.Dense(64, activation="relu"))
    net.add(mx.gluon.nn.Dense(10))
ctx = mx.cpu()
net.collect_params().initialize(mx.init.Xavier(magnitude=2.24), ctx=ctx)

loss = gluon.loss.SoftmaxCrossEntropyLoss()
trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': .001})
batch_limit = 625 
epochs = 10
metrics = create_metrics()
results = train_model(net, train_data, test_data, metrics, loss, trainer, \
                      batch_limit=batch_limit, num_epochs=epochs, verbose=2)
[
 {
  "name": "stdout",
  "output_type": "stream",
  "text": "Epoch 0 Loss: 0.93562 Time: 10.3s Num batches: 625\nTrain_acc 0.89744, Train_top_3_accuracy 0.97563\nTest_acc 0.89397, Test_top_3_accuracy 0.97384\n\nEpoch 1 Loss: 0.26473 Time: 10.1s Num batches: 625\nTrain_acc 0.91104, Train_top_3_accuracy 0.97980\nTest_acc 0.90021, Test_top_3_accuracy 0.97637\n\nEpoch 2 Loss: 0.17058 Time: 11.2s Num batches: 625\nTrain_acc 0.91897, Train_top_3_accuracy 0.98220\nTest_acc 0.91213, Test_top_3_accuracy 0.98013\n\nEpoch 3 Loss: 0.11954 Time: 12.3s Num batches: 625\nTrain_acc 0.92432, Train_top_3_accuracy 0.98385\nTest_acc 0.91956, Test_top_3_accuracy 0.98242\n\nEpoch 4 Loss: 0.08741 Time: 12.1s Num batches: 625\nTrain_acc 0.92822, Train_top_3_accuracy 0.98499\nTest_acc 0.92465, Test_top_3_accuracy 0.98394\n\nEpoch 5 Loss: 0.06425 Time: 10.8s Num batches: 625\nTrain_acc 0.93139, Train_top_3_accuracy 0.98587\nTest_acc 0.92843, Test_top_3_accuracy 0.98506\n\nEpoch 6 Loss: 0.04815 Time: 9.8s Num batches: 625\nTrain_acc 0.93386, Train_top_3_accuracy 0.98654\nTest_acc 0.93148, Test_top_3_accuracy 0.98589\n\nEpoch 7 Loss: 0.03664 Time: 9.9s Num batches: 625\nTrain_acc 0.93607, Train_top_3_accuracy 0.98706\nTest_acc 0.93391, Test_top_3_accuracy 0.98655\n\nEpoch 8 Loss: 0.02820 Time: 10.7s Num batches: 625\nTrain_acc 0.93799, Train_top_3_accuracy 0.98747\nTest_acc 0.93612, Test_top_3_accuracy 0.98706\n\nEpoch 9 Loss: 0.02225 Time: 9.4s Num batches: 625\nTrain_acc 0.93967, Train_top_3_accuracy 0.98784\nTest_acc 0.93803, Test_top_3_accuracy 0.98748\n\n"
 }
]
''' Same network as above but with sigmoid units - performance is much worse'''
net = mx.gluon.nn.Sequential()
with net.name_scope():
    net.add(mx.gluon.nn.Dense(512, activation="sigmoid"))
    net.add(mx.gluon.nn.Dense(256, activation="sigmoid"))
    net.add(mx.gluon.nn.Dense(128, activation="sigmoid"))
    net.add(mx.gluon.nn.Dense(64, activation="sigmoid"))
    net.add(mx.gluon.nn.Dense(10))
ctx = mx.cpu()
net.collect_params().initialize(mx.init.Xavier(magnitude=2.24), ctx=ctx)

loss = gluon.loss.SoftmaxCrossEntropyLoss()
trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': .01})
batch_limit = 625 
epochs = 10
metrics = create_metrics()
results = train_model(net, train_data, test_data, metrics, loss, trainer, \
                      batch_limit=batch_limit, num_epochs=epochs, verbose=2)
[
 {
  "name": "stdout",
  "output_type": "stream",
  "text": "Epoch 0 Loss: 2.30421 Time: 11.6s Num batches: 625\nTrain_acc 0.11252, Train_top_3_accuracy 0.31326\nTest_acc 0.11342, Test_top_3_accuracy 0.31240\n\nEpoch 1 Loss: 2.29384 Time: 10.3s Num batches: 625\nTrain_acc 0.11252, Train_top_3_accuracy 0.32046\nTest_acc 0.11263, Test_top_3_accuracy 0.31481\n\nEpoch 2 Loss: 2.28594 Time: 11.3s Num batches: 625\nTrain_acc 0.11445, Train_top_3_accuracy 0.34032\nTest_acc 0.11302, Test_top_3_accuracy 0.32438\n\nEpoch 3 Loss: 2.27541 Time: 10.4s Num batches: 625\nTrain_acc 0.13221, Train_top_3_accuracy 0.35966\nTest_acc 0.11776, Test_top_3_accuracy 0.34390\n\nEpoch 4 Loss: 2.25928 Time: 11.2s Num batches: 625\nTrain_acc 0.15058, Train_top_3_accuracy 0.39299\nTest_acc 0.13548, Test_top_3_accuracy 0.36553\n\nEpoch 5 Loss: 2.23073 Time: 10.5s Num batches: 625\nTrain_acc 0.17506, Train_top_3_accuracy 0.43499\nTest_acc 0.15477, Test_top_3_accuracy 0.39990\n\nEpoch 6 Loss: 2.17232 Time: 10.4s Num batches: 625\nTrain_acc 0.19858, Train_top_3_accuracy 0.47889\nTest_acc 0.17896, Test_top_3_accuracy 0.44215\n\nEpoch 7 Loss: 2.05232 Time: 12.7s Num batches: 625\nTrain_acc 0.22295, Train_top_3_accuracy 0.51959\nTest_acc 0.20251, Test_top_3_accuracy 0.48560\n\nEpoch 8 Loss: 1.87483 Time: 14.0s Num batches: 625\nTrain_acc 0.25058, Train_top_3_accuracy 0.55649\nTest_acc 0.22743, Test_top_3_accuracy 0.52554\n\nEpoch 9 Loss: 1.66491 Time: 12.0s Num batches: 625\nTrain_acc 0.27972, Train_top_3_accuracy 0.58971\nTest_acc 0.25515, Test_top_3_accuracy 0.56169\n\n"
 }
]

Putting everything together and training on all the data

net = mx.gluon.nn.Sequential()
with net.name_scope():
    net.add(mx.gluon.nn.Dense(512, activation="relu"))
    net.add(mx.gluon.nn.Dense(256, activation="relu"))
    net.add(mx.gluon.nn.Dense(128, activation="relu"))
    net.add(mx.gluon.nn.Dense(64, activation="relu"))
    net.add(mx.gluon.nn.Dense(10))
ctx = mx.cpu()
net.collect_params().initialize(mx.init.Xavier(magnitude=2.24), ctx=ctx)

loss = gluon.loss.SoftmaxCrossEntropyLoss()
trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': .001})
batch_limit = 0 # No limit, use all the data 
epochs = 10
metrics = create_metrics()
results = train_model(net, train_data, test_data, metrics, loss, trainer, \
                      batch_limit=batch_limit, num_epochs=epochs, verbose=2)
[
 {
  "name": "stdout",
  "output_type": "stream",
  "text": "Epoch 0 Loss: 0.53746 Time: 15.8s Num batches: 1875\nTrain_acc 0.92782, Train_top_3_accuracy 0.98780\nTest_acc 0.91853, Test_top_3_accuracy 0.98552\n\nEpoch 1 Loss: 0.18172 Time: 14.4s Num batches: 1875\nTrain_acc 0.94028, Train_top_3_accuracy 0.99047\nTest_acc 0.92910, Test_top_3_accuracy 0.98810\n\nEpoch 2 Loss: 0.12440 Time: 14.2s Num batches: 1875\nTrain_acc 0.94785, Train_top_3_accuracy 0.99206\nTest_acc 0.94057, Test_top_3_accuracy 0.99055\n\nEpoch 3 Loss: 0.09217 Time: 15.0s Num batches: 1875\nTrain_acc 0.95357, Train_top_3_accuracy 0.99320\nTest_acc 0.94791, Test_top_3_accuracy 0.99210\n\nEpoch 4 Loss: 0.06971 Time: 15.2s Num batches: 1875\nTrain_acc 0.95790, Train_top_3_accuracy 0.99402\nTest_acc 0.95352, Test_top_3_accuracy 0.99320\n\nEpoch 5 Loss: 0.05400 Time: 14.5s Num batches: 1875\nTrain_acc 0.96153, Train_top_3_accuracy 0.99466\nTest_acc 0.95781, Test_top_3_accuracy 0.99401\n\nEpoch 6 Loss: 0.04200 Time: 14.7s Num batches: 1875\nTrain_acc 0.96454, Train_top_3_accuracy 0.99518\nTest_acc 0.96141, Test_top_3_accuracy 0.99464\n\nEpoch 7 Loss: 0.03272 Time: 18.4s Num batches: 1875\nTrain_acc 0.96720, Train_top_3_accuracy 0.99560\nTest_acc 0.96439, Test_top_3_accuracy 0.99515\n\nEpoch 8 Loss: 0.02571 Time: 18.0s Num batches: 1875\nTrain_acc 0.96949, Train_top_3_accuracy 0.99594\nTest_acc 0.96705, Test_top_3_accuracy 0.99557\n\nEpoch 9 Loss: 0.02037 Time: 14.9s Num batches: 1875\nTrain_acc 0.97153, Train_top_3_accuracy 0.99623\nTest_acc 0.96934, Test_top_3_accuracy 0.99591\n\n"
 }
]

Evaluation helper functions

def accuracy(test_data, net):
    predictions = []
    labels = []
    alldata = []
    test_data.reset()
    ''' Collect model predictions '''
    for i, batch in enumerate(test_data):
        with autograd.record():
            data = batch.data[0]
            label_one_hot = batch.label[0]
            output = net(data)
        predictions.append(output.asnumpy())
        labels.append(label_one_hot.asnumpy())
    ''' Selecting only the first 10,000 values since the last batch was padded'''
    predictions = np.vstack(predictions)[:10000]
    labels = np.vstack(labels)[:10000]
    ''' Calculate accuracy '''
    num_correct = np.argmax(predictions, axis=1)==np.argmax(labels, axis=1)
    accuracy = 1.0 * np.sum(num_correct) / predictions.shape[0]
    print("Accuracy on data is: {}%".format(accuracy * 100))

def get_correct_and_incorrect(net, test_data):
    predictions = []
    labels = []
    alldata = []
    test_data.reset()
    ''' Collect model predictions '''
    for i, batch in enumerate(test_data):
        with autograd.record():
            data = batch.data[0]
            label_one_hot = batch.label[0]
            output = net(data)
        predictions.append(output.asnumpy())
        labels.append(label_one_hot.asnumpy())
        alldata.append(data.asnumpy())
    ''' Selecting only the first 10,000 values since the last batch was padded'''
    predictions = np.vstack(predictions)[:10000]
    labels = np.vstack(labels)[:10000]
    alldata = np.vstack(alldata)[:10000]
    ''' Separate the data into correct and incorrect subsets'''
    correct_indices = np.equal(np.argmax(predictions, axis=1),np.argmax(labels, axis=1))
    test_x_correct = alldata[correct_indices]
    test_y_correct = labels[correct_indices]
    predict_test_y_correct = predictions[correct_indices]
    incorrect_indices = np.not_equal(np.argmax(predictions, axis=1), np.argmax(labels, axis=1))
    test_x_incorrect = alldata[incorrect_indices]
    test_y_incorrect = labels[incorrect_indices]
    predict_test_y_incorrect = predictions[incorrect_indices]
    return test_x_correct, test_y_correct, test_x_incorrect, test_y_incorrect, predict_test_y_correct, predict_test_y_incorrect

Final model performance

test_accuracy = evaluate_accuracy(test_data, net, metrics)
print("Test_acc {:.5f}, Test_top_3_accuracy {:.5f}".format(test_accuracy[0], test_accuracy[1]))
[
 {
  "name": "stdout",
  "output_type": "stream",
  "text": "Test_acc 0.97105, Test_top_3_accuracy 0.99614\n"
 }
]
accuracy(train_data, net)
accuracy(test_data, net)
[
 {
  "name": "stdout",
  "output_type": "stream",
  "text": "Accuracy on data is: 99.41%\nAccuracy on data is: 96.0%\n"
 }
]
test_x_correct, test_y_correct, test_x_incorrect, test_y_incorrect, predict_test_y_correct, predict_test_y_incorrect = \
    get_correct_and_incorrect(net, test_data)
print(test_x_correct.shape)
plotExamples(test_x_correct, test_y_correct, predict_test_y_correct)
[
 {
  "name": "stdout",
  "output_type": "stream",
  "text": "(9600, 784)\n"
 },
 {
  "data": {
   "image/png": "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\n",
   "text/plain": "<matplotlib.figure.Figure at 0x10f1cb080>"
  },
  "metadata": {},
  "output_type": "display_data"
 }
]
print(test_x_incorrect.shape)
plotExamples(test_x_incorrect, test_y_incorrect, predict_test_y_incorrect)
[
 {
  "name": "stdout",
  "output_type": "stream",
  "text": "(400, 784)\n"
 },
 {
  "data": {
   "image/png": "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\nYMGCBQuPgP8fBS699jzxyTQAAAAASUVORK5CYII=\n",
   "text/plain": "<matplotlib.figure.Figure at 0x113ebac18>"
  },
  "metadata": {},
  "output_type": "display_data"
 }
]