displays the images in a grid formation from the 
        start index to the end index, y_true are the true
        labels for the images, y_pred should be your predictions
        imgs should be an (NxWxHx3) array of your input images

def view_predictions(imgs, y_pred, y_true, start, end):
        '''
        displays the images in a grid formation from the 
        start index to the end index, y_true are the true
        labels for the images, y_pred should be your predictions
        imgs should be an (NxWxHx3) array of your input images

        '''
        fig, ax = plt.subplots(16, 4, sharex='col', sharey='row', figsize=(25, 100))
        for i, img in enumerate(imgs[start:end]):
            pred_label = y_pred[start:end][i]
            actual_label = y_true[i]
            ax[i//4][i%4].imshow(img)
            ax[i//4][i%4].annotate(pred_label[0],
                          (0,0), (0, -32), xycoords='axes fraction', 
                           textcoords='offset points', va='top', size=20)
            ax[i//4][i%4].annotate(actual_label,
                          (0,0), (200, -32), xycoords='axes fraction', 
                           textcoords='offset points', va='top', size=20)
            ax[i//4][i%4].axis('off')
        return ax