{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Approach\n", "**[Fashion-MNIST](https://github.com/zalandoresearch/fashion-mnist)** is a dataset of Zalando's article images—consisting of a training set of 60,000 examples and a test set of 10,000 examples. Each example is a 28x28 grayscale image, associated with a label from 10 classes. The dataset serves as a direct drop-in replacement for the original [MNIST dataset](http://yann.lecun.com/exdb/mnist/) for benchmarking machine learning algorithms. It shares the same image size and structure of training and testing splits.\n", "\n", "In this work, I will train a Convolutional Neural Network classifier with 3 convolution layers using the Keras deep learning library. The model is first trained for 10 epochs with batch size of 256, compiled with `categorical_crossentropy` loss function and `Adam` optimizer. Then, I added **data augmentation**, which generates new training samples by rotating, shifting and zooming on the training samples, and trained for another 50 epochs.\n", "\n", "I will first split the original training data (60,000 images) into 80% training (48,000 images) and 20% validation (12000 images) optimize the classifier, while keeping the test data (10,000 images) to finally evaluate the accuracy of the model on the data it has never seen. This helps to see whether I'm over-fitting on the training data and whether I should lower the learning rate and train for more epochs if validation accuracy is higher than training accuracy or stop over-training if training accuracy shift higher than the validation." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n", " from ._conv import register_converters as _register_converters\n", "Using TensorFlow backend.\n" ] } ], "source": [ "import numpy as np\n", "import pandas as pd\n", "from keras.utils import to_categorical\n", "from sklearn.model_selection import train_test_split\n", "\n", "# Load training and test data into dataframes\n", "data_train = pd.read_csv('data/fashion-mnist_train.csv')\n", "data_test = pd.read_csv('data/fashion-mnist_test.csv')\n", "\n", "# X forms the training images, and y forms the training labels\n", "X = np.array(data_train.iloc[:, 1:])\n", "y = to_categorical(np.array(data_train.iloc[:, 0]))\n", "\n", "# Here I split original training data to sub-training (80%) and validation data (20%)\n", "X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=13)\n", "\n", "# X_test forms the test images, and y_test forms the test labels\n", "X_test = np.array(data_test.iloc[:, 1:])\n", "y_test = to_categorical(np.array(data_test.iloc[:, 0]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Processing Data\n", "After loading and splitting the data, I preprocess them by reshaping them into the shape the network expects and scaling them so that all values are in the [0, 1] interval. Previously, for instance, the training data were stored in an array of shape (60000, 28, 28) of type uint8 with values in the [0, 255] interval. I transform it into a float32 array of shape (60000, 28 * 28) with values between 0 and 1." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Each image's dimension is 28 x 28\n", "img_rows, img_cols = 28, 28\n", "input_shape = (img_rows, img_cols, 1)\n", "\n", "# Prepare the training images\n", "X_train = X_train.reshape(X_train.shape[0], img_rows, img_cols, 1)\n", "X_train = X_train.astype('float32')\n", "X_train /= 255\n", "\n", "# Prepare the test images\n", "X_test = X_test.reshape(X_test.shape[0], img_rows, img_cols, 1)\n", "X_test = X_test.astype('float32')\n", "X_test /= 255\n", "\n", "# Prepare the validation images\n", "X_val = X_val.reshape(X_val.shape[0], img_rows, img_cols, 1)\n", "X_val = X_val.astype('float32')\n", "X_val /= 255" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## CNN with 3 Convolutional Layers\n", "This CNN takes as input tensors of shape *(image_height, image_width, image_channels)*. In this case, I configure the CNN to process inputs of size *(28, 28, 1)*, which is the format of the FashionMNIST images. I do this by passing the argument *input_shape=(28, 28, 1)* to the first layer.\n", "\n", "* The 1st layer is a *Conv2D* layer for the **convolution** operation that extracts features from the input images by sliding a convolution filter over the input to produce a feature map. Here I choose feature map with size 3 x 3. \n", "* The 2nd layer is a *MaxPooling2D* layer for the **max-pooling** operation that reduces the dimensionality of each feature, which helps shorten training time and reduce number of parameters. Here I choose the pooling window with size 2 x 2.\n", "* To combat overfititng, I add a *Dropout* layer as the 3rd layer, a powerful regularization technique. **Dropout** is the method used to reduce overfitting. It forces the model to learn multiple independent representations of the same data by randomly disabling neurons in the learning phase. In this model, dropout will randomnly disable 20% of the outputs.\n", "* I repeat these steps to add more hidden layers: 2 *Conv2D* layers, 1 *MaxPooling2D* layers, and 2 *Dropout* layers.\n", "* The next step is to feed the last output tensor into a stack of *Dense* layers, otherwise known as **fully-connected** layers. These densely connected classifiers process vectors, which are 1D, whereas the current output is a 3D tensor. Thus, I need to **flatten** the 3D outputs to 1D, and then add 2 *Dense* layers on top.\n", "* I add another *Dropout* layer between these 2 *Dense* layers to disable 30% of the outputs.\n", "* I do a 10-way classification (as there are 10 classes of fashion images), using a final layer with 10 outputs and a softmax activation. **Softmax** activation enables me to calculate the output based on the probabilities. Each class is assigned a probability and the class with the maximum probability is the model’s output for the input." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import keras\n", "from keras.models import Sequential\n", "from keras.layers import Dense, Dropout, Flatten\n", "from keras.layers import Conv2D, MaxPooling2D\n", "\n", "cnn3 = Sequential()\n", "cnn3.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=input_shape))\n", "cnn3.add(MaxPooling2D((2, 2)))\n", "cnn3.add(Dropout(0.25))\n", "\n", "cnn3.add(Conv2D(64, kernel_size=(3, 3), activation='relu'))\n", "cnn3.add(MaxPooling2D(pool_size=(2, 2)))\n", "cnn3.add(Dropout(0.25))\n", "\n", "cnn3.add(Conv2D(128, kernel_size=(3, 3), activation='relu'))\n", "cnn3.add(Dropout(0.4))\n", "\n", "cnn3.add(Flatten())\n", "\n", "cnn3.add(Dense(128, activation='relu'))\n", "cnn3.add(Dropout(0.3))\n", "cnn3.add(Dense(10, activation='softmax'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When compiling the model, I choose **categorical_crossentropy** as the loss function (which is relevent for multiclass, single-label classification problem) and **Adam** optimizer.\n", "* The cross-entropy loss calculates the error rate between the predicted value and the original value. The formula for calculating cross-entropy loss is given [here](https://en.wikipedia.org/wiki/Cross_entropy). Categorical is used because there are 10 classes to predict from. If there were 2 classes, I would have used binary_crossentropy.\n", "* The Adam optimizer is an improvement over SGD(Stochastic Gradient Descent). The optimizer is responsible for updating the weights of the neurons via backpropagation. It calculates the derivative of the loss function with respect to each weight and subtracts it from the weight. That is how a neural network learns." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "cnn3.compile(loss=keras.losses.categorical_crossentropy,\n", " optimizer=keras.optimizers.Adam(),\n", " metrics=['accuracy'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let’s look at how the dimensions of the feature maps change with every successive layer:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "conv2d_1 (Conv2D) (None, 26, 26, 32) 320 \n", "_________________________________________________________________\n", "max_pooling2d_1 (MaxPooling2 (None, 13, 13, 32) 0 \n", "_________________________________________________________________\n", "dropout_1 (Dropout) (None, 13, 13, 32) 0 \n", "_________________________________________________________________\n", "conv2d_2 (Conv2D) (None, 11, 11, 64) 18496 \n", "_________________________________________________________________\n", "max_pooling2d_2 (MaxPooling2 (None, 5, 5, 64) 0 \n", "_________________________________________________________________\n", "dropout_2 (Dropout) (None, 5, 5, 64) 0 \n", "_________________________________________________________________\n", "conv2d_3 (Conv2D) (None, 3, 3, 128) 73856 \n", "_________________________________________________________________\n", "dropout_3 (Dropout) (None, 3, 3, 128) 0 \n", "_________________________________________________________________\n", "flatten_1 (Flatten) (None, 1152) 0 \n", "_________________________________________________________________\n", "dense_1 (Dense) (None, 128) 147584 \n", "_________________________________________________________________\n", "dropout_4 (Dropout) (None, 128) 0 \n", "_________________________________________________________________\n", "dense_2 (Dense) (None, 10) 1290 \n", "=================================================================\n", "Total params: 241,546\n", "Trainable params: 241,546\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] } ], "source": [ "cnn3.summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* 241,546 parameters are available to be trained.\n", "* The output of the *Conv2D* and *MaxPooling2D* layers are 3D tensors of shape *(height, width, channels)*.\n", "* The number of channels is controlled by the 1st argument passed to the *Conv2D* layer (32).\n", "* The (3, 3, 128) outputs from the 3rd *Dropout* layer are flattened into vectors of shape (1152,) before going through 2 *Dense* layers.\n", "\n", "## Training the Model\n", "As previously mentioned, I train the model with batch size of 256 and 10 epochs on both training and validation data." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train on 48000 samples, validate on 12000 samples\n", "Epoch 1/10\n", "48000/48000 [==============================] - 65s 1ms/step - loss: 0.8479 - acc: 0.6865 - val_loss: 0.5098 - val_acc: 0.8076\n", "Epoch 2/10\n", "48000/48000 [==============================] - 69s 1ms/step - loss: 0.5232 - acc: 0.8047 - val_loss: 0.4146 - val_acc: 0.8526\n", "Epoch 3/10\n", "48000/48000 [==============================] - 79s 2ms/step - loss: 0.4510 - acc: 0.8366 - val_loss: 0.3688 - val_acc: 0.8669\n", "Epoch 4/10\n", "48000/48000 [==============================] - 65s 1ms/step - loss: 0.4039 - acc: 0.8529 - val_loss: 0.3481 - val_acc: 0.8741\n", "Epoch 5/10\n", "48000/48000 [==============================] - 66s 1ms/step - loss: 0.3762 - acc: 0.8612 - val_loss: 0.3221 - val_acc: 0.8810\n", "Epoch 6/10\n", "48000/48000 [==============================] - 68s 1ms/step - loss: 0.3594 - acc: 0.8696 - val_loss: 0.3105 - val_acc: 0.8869\n", "Epoch 7/10\n", "48000/48000 [==============================] - 78s 2ms/step - loss: 0.3397 - acc: 0.8778 - val_loss: 0.2960 - val_acc: 0.8923\n", "Epoch 8/10\n", "48000/48000 [==============================] - 63s 1ms/step - loss: 0.3266 - acc: 0.8810 - val_loss: 0.2847 - val_acc: 0.8977\n", "Epoch 9/10\n", "48000/48000 [==============================] - 75s 2ms/step - loss: 0.3162 - acc: 0.8836 - val_loss: 0.2884 - val_acc: 0.8947\n", "Epoch 10/10\n", "48000/48000 [==============================] - 61s 1ms/step - loss: 0.3074 - acc: 0.8878 - val_loss: 0.2700 - val_acc: 0.9028\n" ] } ], "source": [ "history3 = cnn3.fit(X_train, y_train,\n", " batch_size=256,\n", " epochs=10,\n", " verbose=1,\n", " validation_data=(X_val, y_val))" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Test loss: 0.24964626643657684\n", "Test accuracy: 0.9079\n" ] } ], "source": [ "score3 = cnn3.evaluate(X_test, y_test, verbose=0)\n", "print('Test loss:', score3[0])\n", "print('Test accuracy:', score3[1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "My accuracy is 90.79%, pretty powerful!\n", "\n", "## Data Augmentation\n", "Overfitting can be caused by having too few samples to learn from, making me unable to train a model that can generalize to new data. Given infinite data, my model would be exposed to every possible aspect of the data distribution at hand: I would never overfit. \n", "\n", "**Data augmentation** takes the approach of generating more training data from existing training samples, by augmenting the samples via a number of random transformations that yield believable-looking images. The goal is that at training time, my model will never see the exact same picture twice. This helps expose the model to more aspects of the data and generalize better.\n", "\n", "In Keras, this can be done by configuring a number of random transformations to be performed on the images read by the ImageDataGenerator instance.\n", "* *rotation_range* is a value in degrees (0–180), a range within which to randomly rotate pictures.\n", "* *width_shift* and *height_shift* are ranges (as a fraction of total width or height) within which to randomly translate pictures vertically or horizontally.\n", "* *shear_range* is for randomly applying shearing transformations.\n", "* *zoom_range* is for randomly zooming inside pictures." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from keras.preprocessing.image import ImageDataGenerator\n", "gen = ImageDataGenerator(rotation_range=8, width_shift_range=0.08, shear_range=0.3,\n", " height_shift_range=0.08, zoom_range=0.08)\n", "batches = gen.flow(X_train, y_train, batch_size=256)\n", "val_batches = gen.flow(X_val, y_val, batch_size=256)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's train the network using data augmentation." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/50\n", "187/187 [==============================] - 66s 355ms/step - loss: 0.4831 - acc: 0.8195 - val_loss: 0.4110 - val_acc: 0.8404\n", "Epoch 2/50\n", "187/187 [==============================] - 71s 378ms/step - loss: 0.4413 - acc: 0.8350 - val_loss: 0.3684 - val_acc: 0.8633\n", "Epoch 3/50\n", "187/187 [==============================] - 78s 416ms/step - loss: 0.4205 - acc: 0.8437 - val_loss: 0.3511 - val_acc: 0.8684\n", "Epoch 4/50\n", "187/187 [==============================] - 69s 370ms/step - loss: 0.4098 - acc: 0.8478 - val_loss: 0.3550 - val_acc: 0.8614\n", "Epoch 5/50\n", "187/187 [==============================] - 65s 348ms/step - loss: 0.3997 - acc: 0.8510 - val_loss: 0.3362 - val_acc: 0.8744\n", "Epoch 6/50\n", "187/187 [==============================] - 67s 361ms/step - loss: 0.3943 - acc: 0.8524 - val_loss: 0.3537 - val_acc: 0.8675\n", "Epoch 7/50\n", "187/187 [==============================] - 71s 377ms/step - loss: 0.3892 - acc: 0.8560 - val_loss: 0.3249 - val_acc: 0.8750\n", "Epoch 8/50\n", "187/187 [==============================] - 72s 384ms/step - loss: 0.3793 - acc: 0.8593 - val_loss: 0.3259 - val_acc: 0.8770\n", "Epoch 9/50\n", "187/187 [==============================] - 71s 382ms/step - loss: 0.3739 - acc: 0.8601 - val_loss: 0.3197 - val_acc: 0.8802\n", "Epoch 10/50\n", "187/187 [==============================] - 75s 402ms/step - loss: 0.3700 - acc: 0.8618 - val_loss: 0.3248 - val_acc: 0.8796\n", "Epoch 11/50\n", "187/187 [==============================] - 73s 390ms/step - loss: 0.3657 - acc: 0.8648 - val_loss: 0.3177 - val_acc: 0.8790\n", "Epoch 12/50\n", "187/187 [==============================] - 63s 337ms/step - loss: 0.3607 - acc: 0.8649 - val_loss: 0.3151 - val_acc: 0.8823\n", "Epoch 13/50\n", "187/187 [==============================] - 64s 340ms/step - loss: 0.3581 - acc: 0.8665 - val_loss: 0.3046 - val_acc: 0.8869\n", "Epoch 14/50\n", "187/187 [==============================] - 66s 352ms/step - loss: 0.3577 - acc: 0.8649 - val_loss: 0.2992 - val_acc: 0.8876\n", "Epoch 15/50\n", "187/187 [==============================] - 64s 340ms/step - loss: 0.3500 - acc: 0.8686 - val_loss: 0.3014 - val_acc: 0.8867\n", "Epoch 16/50\n", "187/187 [==============================] - 63s 337ms/step - loss: 0.3497 - acc: 0.8711 - val_loss: 0.3065 - val_acc: 0.8849\n", "Epoch 17/50\n", "187/187 [==============================] - 66s 351ms/step - loss: 0.3547 - acc: 0.8696 - val_loss: 0.3068 - val_acc: 0.8861\n", "Epoch 18/50\n", "187/187 [==============================] - 62s 333ms/step - loss: 0.3439 - acc: 0.8707 - val_loss: 0.2992 - val_acc: 0.8887\n", "Epoch 19/50\n", "187/187 [==============================] - 65s 349ms/step - loss: 0.3445 - acc: 0.8727 - val_loss: 0.2916 - val_acc: 0.8931\n", "Epoch 20/50\n", "187/187 [==============================] - 75s 402ms/step - loss: 0.3384 - acc: 0.8734 - val_loss: 0.3072 - val_acc: 0.8845\n", "Epoch 21/50\n", "187/187 [==============================] - 63s 336ms/step - loss: 0.3402 - acc: 0.8731 - val_loss: 0.2955 - val_acc: 0.8875\n", "Epoch 22/50\n", "187/187 [==============================] - 61s 324ms/step - loss: 0.3391 - acc: 0.8756 - val_loss: 0.2951 - val_acc: 0.8912\n", "Epoch 23/50\n", "187/187 [==============================] - 64s 343ms/step - loss: 0.3352 - acc: 0.8755 - val_loss: 0.2813 - val_acc: 0.8937\n", "Epoch 24/50\n", "187/187 [==============================] - 61s 327ms/step - loss: 0.3328 - acc: 0.8750 - val_loss: 0.2912 - val_acc: 0.8902\n", "Epoch 25/50\n", "187/187 [==============================] - 64s 343ms/step - loss: 0.3273 - acc: 0.8774 - val_loss: 0.2873 - val_acc: 0.8952\n", "Epoch 26/50\n", "187/187 [==============================] - 66s 353ms/step - loss: 0.3306 - acc: 0.8775 - val_loss: 0.2816 - val_acc: 0.8913\n", "Epoch 27/50\n", "187/187 [==============================] - 64s 341ms/step - loss: 0.3221 - acc: 0.8790 - val_loss: 0.2978 - val_acc: 0.8876\n", "Epoch 28/50\n", "187/187 [==============================] - 64s 343ms/step - loss: 0.3290 - acc: 0.8784 - val_loss: 0.2906 - val_acc: 0.8890\n", "Epoch 29/50\n", "187/187 [==============================] - 77s 410ms/step - loss: 0.3232 - acc: 0.8812 - val_loss: 0.2892 - val_acc: 0.8894\n", "Epoch 30/50\n", "187/187 [==============================] - 69s 371ms/step - loss: 0.3232 - acc: 0.8794 - val_loss: 0.2750 - val_acc: 0.8971\n", "Epoch 31/50\n", "187/187 [==============================] - 64s 344ms/step - loss: 0.3213 - acc: 0.8821 - val_loss: 0.3017 - val_acc: 0.8852\n", "Epoch 32/50\n", "187/187 [==============================] - 63s 338ms/step - loss: 0.3244 - acc: 0.8792 - val_loss: 0.2788 - val_acc: 0.8952\n", "Epoch 33/50\n", "187/187 [==============================] - 67s 356ms/step - loss: 0.3173 - acc: 0.8820 - val_loss: 0.2817 - val_acc: 0.8931\n", "Epoch 34/50\n", "187/187 [==============================] - 67s 357ms/step - loss: 0.3161 - acc: 0.8842 - val_loss: 0.2762 - val_acc: 0.8952\n", "Epoch 35/50\n", "187/187 [==============================] - 68s 365ms/step - loss: 0.3169 - acc: 0.8837 - val_loss: 0.2794 - val_acc: 0.8969\n", "Epoch 36/50\n", "187/187 [==============================] - 78s 415ms/step - loss: 0.3197 - acc: 0.8800 - val_loss: 0.2869 - val_acc: 0.8882\n", "Epoch 37/50\n", "187/187 [==============================] - 76s 404ms/step - loss: 0.3168 - acc: 0.8822 - val_loss: 0.2767 - val_acc: 0.8928\n", "Epoch 38/50\n", "187/187 [==============================] - 79s 423ms/step - loss: 0.3066 - acc: 0.8846 - val_loss: 0.2743 - val_acc: 0.8975\n", "Epoch 39/50\n", "187/187 [==============================] - 66s 356ms/step - loss: 0.3132 - acc: 0.8825 - val_loss: 0.2677 - val_acc: 0.9027\n", "Epoch 40/50\n", "187/187 [==============================] - 64s 340ms/step - loss: 0.3093 - acc: 0.8850 - val_loss: 0.2735 - val_acc: 0.8946\n", "Epoch 41/50\n", "187/187 [==============================] - 66s 351ms/step - loss: 0.3074 - acc: 0.8862 - val_loss: 0.2695 - val_acc: 0.8980\n", "Epoch 42/50\n", "187/187 [==============================] - 64s 340ms/step - loss: 0.3089 - acc: 0.8860 - val_loss: 0.2713 - val_acc: 0.8992\n", "Epoch 43/50\n", "187/187 [==============================] - 68s 362ms/step - loss: 0.3082 - acc: 0.8840 - val_loss: 0.2751 - val_acc: 0.8970\n", "Epoch 44/50\n", "187/187 [==============================] - 66s 354ms/step - loss: 0.3063 - acc: 0.8849 - val_loss: 0.2619 - val_acc: 0.9019\n", "Epoch 45/50\n", "187/187 [==============================] - 64s 343ms/step - loss: 0.3051 - acc: 0.8873 - val_loss: 0.2639 - val_acc: 0.9031\n", "Epoch 46/50\n", "187/187 [==============================] - 67s 358ms/step - loss: 0.3063 - acc: 0.8856 - val_loss: 0.2689 - val_acc: 0.8987\n", "Epoch 47/50\n", "187/187 [==============================] - 79s 424ms/step - loss: 0.3087 - acc: 0.8849 - val_loss: 0.2760 - val_acc: 0.8954\n", "Epoch 48/50\n", "187/187 [==============================] - 66s 356ms/step - loss: 0.3028 - acc: 0.8869 - val_loss: 0.2690 - val_acc: 0.8967\n", "Epoch 49/50\n", "187/187 [==============================] - 65s 347ms/step - loss: 0.3028 - acc: 0.8858 - val_loss: 0.2712 - val_acc: 0.8959\n", "Epoch 50/50\n", "187/187 [==============================] - 67s 358ms/step - loss: 0.3042 - acc: 0.8880 - val_loss: 0.2675 - val_acc: 0.8990\n" ] } ], "source": [ "history3 = cnn3.fit_generator(batches, steps_per_epoch=48000//256, epochs=50,\n", " validation_data=val_batches, validation_steps=12000//256, use_multiprocessing=True)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Test loss: 0.22910109297037123\n", "Test accuracy: 0.9117\n" ] } ], "source": [ "score3 = cnn3.evaluate(X_test, y_test, verbose=0)\n", "print('Test loss:', score3[0])\n", "print('Test accuracy:', score3[1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Okay, I improved the accuracy to 91.17%!\n", "\n", "## Results\n", "Let's plot training and validation accuracy as well as training and validation loss." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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GjVq0KVLl3x7Jk+ezIABAxLya8FE3zCShHguGnT88ceTmZmZvz958mTat29P+/btWbx4cUDRr1KlCmeddRYAHTp0yO9tF6Zfv36HlPniiy+4+OKLAcjIyKBly5YBr505cyYdO3YkIyOD//3vf/z4449s3ryZDRs20KdPH8BNbqpatSozZsxg2LBhVKlSBYDatWsXed+9evWiVq1agHs4jRkzhjZt2tCrVy9WrVrFhg0bmDVrFgMHDsyvz/d3+PDh+e6uF198kaFDhxbZXklgom8YSUI8Fw06/PDD87eXLVvGE088waxZs1iwYAG9e/cOGEd+2GGH5W+XL18+qGujUqVKRZYJxK5duxg5ciTTp09nwYIFDBs2LKp49goVKnDgwAGAQ673v+9XXnmFrVu3Mm/ePObPn0+dOnVCttetWzeWLl3K7NmzqVixIs2bN4/Ytlhgom8YSUKiFg3atm0bRxxxBNWrVyc3N5ePP/445m106dKFadOmAbBw4cKAvyR2795NuXLlqFOnDtu3b+ftt98GoFatWtStW5f3338fcEK+a9cuzjjjDCZNmsTu3bsB2LRpEwCNGzdm7ty5ALz11ltBbdq6dSv16tWjQoUKfPLJJ6xZswaAnj17MnXq1Pz6fH8BLr30UgYPHpywXj6Y6BtGUjF4MOTkwIED7m88FhBq37496enpNG/enMsvv5wuXbrEvI1rr72WNWvWkJ6ezt133016ejo1atQoUCYtLY0rrriC9PR0zjrrLDp16pR/7vXXX+fRRx+lTZs2dO3alfXr13PuuefSu3dvMjMzadu2Lf/4xz8AuPnmm3niiSdo3749mzdvDmrTZZddxldffUXr1q2ZMmUKTZs2BZz76ZZbbuHUU0+lbdu23HzzzfnXDB48mK1btzJw4MBYvj0RIb7R7dJCZmamZmVlJdoMwygVLF68mBYtWiTajISTl5dHXl4elStXZtmyZfTq1Ytly5aVubDJKVOm8PHHH4cVyhqKQN8LEZmrqplBLsmnbL1jhmGkJDt27OC0004jLy8PVeW5554rc4J/9dVXM2PGjPwInkRRtt41wzBSkpo1a+b72csqzzzzTKJNAMynbxiGkVKY6BuGYaQQJvqGYRgphIm+YRhGCmGibxhGUHr06HHIZKvHH3+cq6++OuR11apVA2Dt2rX0798/YJnu3btTVHj2448/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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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7OzsRCfDGGPKlaVLl+5R1WDNnIEkDPrZ2dksWbIk0ckwxphyRURK61kOWPGOMcakFQv6xhiTRizoG2NMGkm6Mn1jTHydOHGCrVu3cuzYsUQnxYSgatWqNGzYkEqVAg29FJwFfWPS3NatW8nKyiI7Oxs3uKlJVqrK3r172bp1K02aNCl9Bz9Spnhn6lTIzoYKFdz71LCm+zYmfR07doy6detawC8HRIS6deuW6aksJXL6U6fCiBFw5Ihb3rTJLQMMLvPYgsakPgv45UdZf1cpkdMfO/ZkwPc6csStN8YYc1JKBP3Nm8Nbb4xJHnv37qVt27a0bduWM888kwYNGhQtHz8e2rD7N910E3l5eUG3mTx5MlOjVO7705/+lOXLl0flWPGWEsU7jRq5Ih1/640x0TV1qnuK3rzZ/Y+NH1+2YtS6desWBdBHH32UGjVqcN999xXbRlVRVSpU8J9PfeONN0o9zx133BF5IlNISuT0x4+HzMzi6zIz3XpjTPR46882bQLVk/VnsWg4sW7dOnJychg8eDAtW7Zk+/btjBgxgtzcXFq2bMm4ceOKtvXmvPPz86lduzZjxoyhTZs2XHzxxezatQuAhx56iIkTJxZtP2bMGDp06ECzZs34z3/+A8APP/zAtddeS05ODv379yc3N7fUHP2UKVO48MILadWqFQ8++CAA+fn53HDDDUXrJ02aBMDvfvc7cnJyaN26NUOGDIn6zywUKZHT9+Yyopn7MMacKlj9WSz+377++mvefPNNcnNzAXjqqaeoU6cO+fn59OjRg/79+5OTk1NsnwMHDtCtWzeeeuopRo8ezeuvv86YMWNOObaqsmjRImbPns24ceOYO3cuL7zwAmeeeSbvvPMOK1asoH379kHTt3XrVh566CGWLFlCrVq1uPTSS/nHP/5B/fr12bNnD6tWrQJg//79ADzzzDNs2rSJypUrF62Lt5TI6YP7g9u4EQoL3bsFfGOiL971Z+edd15RwAeYPn067du3p3379qxZs4avvvrqlH2qVavGlVdeCcBFF13Exo0b/R775z//+SnbfPrppwwcOBCANm3a0LJly6DpW7hwIT179qRevXpUqlSJ66+/ngULFnD++eeTl5fHXXfdxbx586hVqxYALVu2ZMiQIUydOjXizlVllTJB3xgTe4HqyWJVf1a9evWiz2vXruX555/n3//+NytXrqRXr15+26tXrly56HNGRgb5+fl+j12lSpVSt4lU3bp1WblyJV26dGHy5MncdtttAMybN4+RI0eyePFiOnToQEFBQVTPGwoL+saYkCWy/uzgwYNkZWVRs2ZNtm/fzrx586J+js6dOzNz5kwAVq1a5fdJwlfHjh2ZP38+e/fuJT8/nxkzZtCtWzd2796NqvKLX/yCcePGsWzZMgoKCti6dSs9e/bkmWeeYc+ePRwpWVYWBylRpm+MiY9E1p+1b9+enJwcmjdvTuPGjencuXPUz3HnnXdy4403kpOTU/TyFs3407BhQx5//HG6d++OqnLNNddw1VVXsWzZMm655RZUFRHh6aefJj8/n+uvv55Dhw5RWFjIfffdR1ZWVtSvoTRJN0dubm6u2iQqxsTPmjVraNGiRaKTkRTy8/PJz8+natWqrF27lssvv5y1a9dSsWJy5Y/9/c5EZKmq5gbYpUhyXYkxxiTQ4cOHueSSS8jPz0dVefXVV5Mu4JdVal2NMcaUQe3atVm6dGmikxFTVpFrjDFpxIK+McakEQv6xhiTRizoG2NMGrGgb4xJqB49epzS0WrixIncfvvtQferUaMGANu2baN///5+t+nevTulNQGfOHFisU5SvXv3jsq4OI8++igTJkwo83GizYK+MSahBg0axIwZM4qtmzFjBoMGDQpp/7PPPpu333474vOXDPpz5syhdu3aER8v2VnQN8YkVP/+/XnvvfeKJkzZuHEj27Zto0uXLkXt5tu3b8+FF17I3//+91P237hxI61atQLg6NGjDBw4kBYtWtCvXz+OHj1atN3tt99eNCzzI488AsCkSZPYtm0bPXr0oEePHgBkZ2ezZ88eAJ577jlatWpFq1atioZl3rhxIy1atODWW2+lZcuWXH755cXO48/y5cvp1KkTrVu3pl+/fuzbt6/o/N6hlr0DvX388cdFk8i0a9eOQ4cORfyz9cfa6RtjitxzD0R7Qqi2bcETL/2qU6cOHTp04P3336dv377MmDGDAQMGICJUrVqVWbNmUbNmTfbs2UOnTp3o06dPwHliX375ZTIzM1mzZg0rV64sNjTy+PHjqVOnDgUFBVxyySWsXLmSu+66i+eee4758+dTr169YsdaunQpb7zxBgsXLkRV6dixI926deO0005j7dq1TJ8+nd///vcMGDCAd955J+j4+DfeeCMvvPAC3bp149e//jWPPfYYEydO5KmnnmLDhg1UqVKlqEhpwoQJTJ48mc6dO3P48GGqVq0axk+7dJbTN8YknG8Rj2/Rjqry4IMP0rp1ay699FK+++47du7cGfA4CxYsKAq+rVu3pnXr1kXfzZw5k/bt29OuXTtWr15d6mBqn376Kf369aN69erUqFGDn//853zyyScANGnShLZt2wLBh28GN77//v376datGwBDhw5lwYIFRWkcPHgwU6ZMKer527lzZ0aPHs2kSZPYv39/1HsEW07fGFMkWI48lvr27cu9997LsmXLOHLkCBdddBEAU6dOZffu3SxdupRKlSqRnZ3tdzjl0mzYsIEJEyawePFiTjvtNIYNGxbRcby8wzKDG5q5tOKdQN577z0WLFjAu+++y/jx41m1ahVjxozhqquuYs6cOXTu3Jl58+bRvHnziNNakuX0jTEJV6NGDXr06MHNN99crAL3wIEDnH766VSqVIn58+ezyd9k2D66du3KtGnTAPjyyy9ZuXIl4IZlrl69OrVq1WLnzp28//77RftkZWX5LTfv0qULf/vb3zhy5Ag//PADs2bNokuXLmFfW61atTjttNOKnhLeeustunXrRmFhIVu2bKFHjx48/fTTHDhwgMOHD7N+/XouvPBC7r//fn7yk5/w9ddfh33OYCynb4xJCoMGDaJfv37FWvIMHjyYa665hgsvvJDc3NxSc7y33347N910Ey1atKBFixZFTwxt2rShXbt2NG/enHPOOafYsMwjRoygV69enH322cyfP79offv27Rk2bBgdOnQAYPjw4bRr1y5oUU4gf/rTnxg5ciRHjhzh3HPP5Y033qCgoIAhQ4Zw4MABVJW77rqL2rVr8/DDDzN//nwqVKhAy5Yti2YBixYbWtmYNGdDK5c/ZRla2Yp3jDEmjVjQN8aYNGJB3xhDshXzmsDK+rsKKeiLSC8RyRORdSIyJsh214qIikiuZzlbRI6KyHLP65UypdYYE3VVq1Zl7969FvjLAVVl7969ZeqwVWrrHRHJACYDlwFbgcUiMltVvyqxXRZwN7CwxCHWq2rbiFNojImphg0bsnXrVnbv3p3opJgQVK1alYYNG0a8fyhNNjsA61T1WwARmQH0BUp2Z3sceBr4VcSpMcbEXaVKlWjSpEmik2HiJJTinQbAFp/lrZ51RUSkPXCO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cNVV8N57yXX9pnwIJegvBpqKSBMRqQwMBGb7biAiTX0WrwLWej7PBgaKSBURaQI0BRaVPdmmPOvQAWbNgjVr4Jprindpf+45F9D79w+8f40a8OyzbniGVq2ge3fo1w9uugnuvRfGjYMvv4z5ZZzitddcYL7/fheQBw2C/PzoHX/xYjh8GC65xP3c9uxxQ2oYE46KpW2gqvkiMgpXCZsBvK6qq0VkHO5xYjYwSkQuBU4A+4Chnn1Xi8hM4CsgH7hDVS1vYrjsMjc+y3XXuddf/+oC9fz58MwzpY8N9ItfwLp1sHAh7NsH69e79/37XWB85RW3rlq1+FzP8ePw8stw5ZUut3/mme4GdOON8NZbkJFR9nN8+KF7+uneHSpWdD+j2bOhc+eyH9ukkVDKgOL5sjL99PLyy658/oYbXEeuGjVU9+0r2zHnz9e4N+2cOtWd8/33T6578km3btiw6ExU3727az7rddllqs2bl/24JjVg0yWa8mDkSHj8cZcbnjoVbrkFatcu2zG7d4cePeDJJwOPhhhtkybBBRe48navMWPgkUfgj3909Q+uLUNkjhyB//zHFe149ekDX3/t6kCMCZUFfZNwY8e6opCsLLjrrugc87HHXGXxyy+Xvu1f/gL16sGvf+2KhsK1cKF73XnnqcM/P/II/O//unQMHw4ffQQHD4Z/js8+c0VIPXueXHfNNe793XfDP55JXzaevkkax45B1arRO97ll8Py5bBhA1Sv7n+bzZuhdWuoXBl274azznLjqA8dGvr4/UOGuLL1775zN66SVOG++1wltdcFF0Burnt16eLeg3ngAZgwwdVb+LauatMGTjvN3UxMegt1PH3L6ZukEc2ADy63v3s3TJ7s//uCAlfRWlAAn3/uik8aNYKbb3ZBOJRAun07zJzp9vEX8MFVvj77rHvymDPHFWe1aAEff+yapv7kJzB3bvDzfPghdOp0anPaPn3g009h797S02oMYBW5JrX16uU6gx08eOp3Tz/tKlpff/3kusJC1WnTVM85x333s58FH8f/kUdc78q1ayNL37Ztrmdmx46BO6Pt2+cGrPv1r0/9buFCl8633ors/OE6dCh2Hc9M2WAVuca43P7evfDCC8XXf/EFPPQQXHstDBt2cr2Ia1+fl+eKef75T5fr//zzU4/944+uaWjv3nD++ZGl76yzXIXvwoXwr3/53+bjj90UfL6VuF65ua556OzZp34XbRs2QLNm0LWr649gyicL+ialdegAV1/tysO9FahHjrh5WuvXh1df9d/zt1o1ePBBF4wzM12LoNdfL77NX/7iimzKWvl8003QoIEr9vHnww9dejp2PPW7ChVche7cudHvAexrxw7Xt+LAAddJ7De/id25TGxZ0Dcp79FHXQXo88+75fvvd72B//hHqFs3+L6tWrkg162ba056550ul6vqjteihQuGZVGlimvh88knLldf0ocfusreKlX879+nDxw65H/faNi3D664wgX+Dz90N8wnnoClS2NzPhNjoZQBxfNlZfomFvr2Va1VS3X6dFcGfs894e1/4oTq6NFu3+7dVd99131+6aXopO/IETf66CWXFF+/fbs7z9NPB9+3WjXVUaOikxZfhw+7obUrV3YT6aiqfv+9aoMGbn4FK99PHth0icac9MUXWjQkcatWkQerN990Q0+Du4lEc0TSCRP0lNFDvT19Fy8Ovm+fPm6i+pKVwYWF7nhvvql6/Hh46fGd9eztt4t/N3euS9cvfxneMU3sWNA3poT+/V2OdcWKsh1n0SI3NPS4cdFJl9fhw27u4l69Tq67+WbV2rVV8/OD7/uHP7j/Zu+1HTzohrho3frkza5LF/fkEIr8fNXrrnP7BZrfeORI13Ip1NnQTGxZ0DemhCNHVNevj86xCgtDnyc4HL/5jfuvXLTILWdnq/brV/p+O3a4AHzrrar/7/+pZmW547Rtq/rqq65ZarVqqmedpfrpp8GPtW+fu9mA6jPPBN7u0CF382vSxH+TWBNfFvSNKYcOHHATpPTp425QoPrCC6Ht27GjFs18dsMNqp9/XvzGtGKFm4ClYkXVSZNOvWlt2eKKa7w3jAcfLP2cn3zibjYjRoR+jSY2LOgbU0499pj7z7zjDvf+1Veh7bdwoQvmu3cH3mbfPtVrrnHHHTzYFSmtWqV6443uZpCR4Wb+WrYs9PT+6lfueHPmhL6Pib5Qg76NvWNMktm/Hxo3dv0KzjrLjekTaBaxSBQWuhFIH37Y9VXYtcv1RRg+3A18l50d3vGOHXOdxNatc30GBg928woEamKaSnbudE1Xr7wyur+jSNjYO8aUU7Vru/4A4EbVjHYwqVDBjWz6/vvu5vL4427gueefDz/ggxszac4cGDHC9RXo18/drG67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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "\n", "accuracy = history3.history['acc']\n", "val_accuracy = history3.history['val_acc']\n", "loss = history3.history['loss']\n", "val_loss = history3.history['val_loss']\n", "epochs = range(len(accuracy))\n", "\n", "plt.plot(epochs, accuracy, 'bo', label='Training accuracy')\n", "plt.plot(epochs, val_accuracy, 'b', label='Validation accuracy')\n", "plt.title('Training and validation accuracy')\n", "plt.legend()\n", "plt.figure()\n", "\n", "plt.plot(epochs, loss, 'bo', label='Training loss')\n", "plt.plot(epochs, val_loss, 'b', label='Validation loss')\n", "plt.title('Training and validation loss')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "These plots look decent: The training curves are closely tracking the validation curves.\n", "\n", "## Classification Report\n", "I can summarize the performance of my classifier as follows:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# get the predictions for the test data\n", "predicted_classes = cnn3.predict_classes(X_test)\n", "\n", "# get the indices to be plotted\n", "y_true = data_test.iloc[:, 0]\n", "correct = np.nonzero(predicted_classes==y_true)[0]\n", "incorrect = np.nonzero(predicted_classes!=y_true)[0]" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " precision recall f1-score support\n", "\n", " Class 0 0.85 0.86 0.86 1000\n", " Class 1 0.99 0.99 0.99 1000\n", " Class 2 0.92 0.83 0.87 1000\n", " Class 3 0.93 0.94 0.93 1000\n", " Class 4 0.88 0.83 0.85 1000\n", " Class 5 0.98 0.98 0.98 1000\n", " Class 6 0.68 0.78 0.73 1000\n", " Class 7 0.95 0.96 0.96 1000\n", " Class 8 0.99 0.99 0.99 1000\n", " Class 9 0.98 0.96 0.97 1000\n", "\n", "avg / total 0.91 0.91 0.91 10000\n", "\n" ] } ], "source": [ "from sklearn.metrics import classification_report\n", "target_names = [\"Class {}\".format(i) for i in range(10)]\n", "print(classification_report(y_true, predicted_classes, target_names=target_names))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It's apparent that the classifier is underperforming for class 6 in terms of both precision and recall. For class 0, the classifier is slightly lacking precision; whereas for class 2 and 4, it is slightly lacking recall.\n", "\n", "Perhaps I would gain more insight after visualizing the correct and incorrect predictions.\n", "\n", "Here is a subset of correctly predicted classes." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for i, correct in enumerate(correct[:9]):\n", " plt.subplot(3,3,i+1)\n", " plt.imshow(X_test[correct].reshape(28,28), cmap='gray', interpolation='none')\n", " plt.title(\"Predicted {}, Class {}\".format(predicted_classes[correct], y_true[correct]))\n", " plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here is a subset of incorrectly predicted classes:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for i, incorrect in enumerate(incorrect[0:9]):\n", " plt.subplot(3,3,i+1)\n", " plt.imshow(X_test[incorrect].reshape(28,28), cmap='gray', interpolation='none')\n", " plt.title(\"Predicted {}, Class {}\".format(predicted_classes[incorrect], y_true[incorrect]))\n", " plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Visualizing What My Model Learns\n", "It’s often said that deep-learning models are “black boxes”: learning representations that are difficult to extract and present in a human-readable form. Although this is partially true for certain types of deep-learning models, it’s definitely not true for convnets. The representations learned by convnets are highly amenable to visualization, in large part because they’re representations of visual concepts.\n", "\n", "Here I attempt to visualize the intermediate CNN outputs (intermediate activations). Visualizing intermediate activations consists of displaying the feature maps that are output by various convolution and pooling layers in a network, given a certain input (the output of a layer is often called its *activation*, the output of the activation function). This gives a view into how an input is decomposed into the different filters learned by the network. \n", "\n", "I want to visualize feature maps with three dimensions: width, height, and depth (channels). Each channel encodes relatively independent features, so the proper way to visualize these feature maps is by independently plotting the contents of every channel as a 2D image.\n", "\n", "I first get an input test image (#1994)." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "test_im = X_train[1994]\n", "plt.imshow(test_im.reshape(28,28), cmap='viridis', interpolation='none')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In order to extract the feature maps I want to look at, I create a Keras model that takes batches of images as input, and outputs the activations of all convolution and pooling layers. To do this, I use the Keras class Model. A model is instantiated using two arguments: an input tensor (or list of input tensors) and an output tensor (or list of output tensors). The resulting class is a Keras model, mapping the specified inputs to the specified outputs. When fed an image input, this model returns the values of the layer activations in the original model." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/ipykernel_launcher.py:6: UserWarning: Update your `Model` call to the Keras 2 API: `Model(inputs=Tensor(\"co..., outputs=[" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from keras import models\n", "# extracts the outputs of the top 8 layers\n", "layer_outputs = [layer.output for layer in cnn3.layers[:8]]\n", "\n", "# creates a model that will return these outputs, given the model input\n", "activation_model = models.Model(input=cnn3.input, output=layer_outputs)\n", "\n", "# returns a list of Numpy arrays: one array per layer activation\n", "activations = activation_model.predict(test_im.reshape(1,28,28,1))\n", "\n", "# activation of the 1st convolution layer\n", "first_layer_activation = activations[0]\n", "\n", "# display the 3rd channel of the activation of the 1st layer of the original model\n", "plt.matshow(first_layer_activation[0, :, :, 3], cmap='viridis')" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# display the 6th channel of the activation of the 1st layer of the original model\n", "plt.matshow(first_layer_activation[0, :, :, 6], cmap='viridis')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's plot a complete visualization of all the activations in the network. I extract and plot every channel in each of the eight activation maps, and then stack the results in one big image tensor, with channels stacked side by side." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/ipykernel_launcher.py:15: RuntimeWarning: invalid value encountered in true_divide\n", " from ipykernel import kernelapp as app\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "layer_names = []\n", "for layer in cnn3.layers[:-1]:\n", " layer_names.append(layer.name) \n", "images_per_row = 16\n", "for layer_name, layer_activation in zip(layer_names, activations):\n", " if layer_name.startswith('conv'):\n", " n_features = layer_activation.shape[-1]\n", " size = layer_activation.shape[1]\n", " n_cols = n_features // images_per_row\n", " display_grid = np.zeros((size * n_cols, images_per_row * size))\n", " for col in range(n_cols):\n", " for row in range(images_per_row):\n", " channel_image = layer_activation[0,:, :, col * images_per_row + row]\n", " channel_image -= channel_image.mean()\n", " channel_image /= channel_image.std()\n", " channel_image *= 64\n", " channel_image += 128\n", " channel_image = np.clip(channel_image, 0, 255).astype('uint8')\n", " display_grid[col * size : (col + 1) * size,\n", " row * size : (row + 1) * size] = channel_image\n", " scale = 1. / size\n", " plt.figure(figsize=(scale * display_grid.shape[1],\n", " scale * display_grid.shape[0]))\n", " plt.title(layer_name)\n", " plt.grid(False)\n", " plt.imshow(display_grid, aspect='auto', cmap='viridis')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 2 }