ml-finance-python

python scripts for finance machine learning

git clone https://9o.is/git/ml-finance-python.git

02_convolutional_denoising_autoencoders.ipynb

(188874B)


      1 {
      2  "cells": [
      3   {
      4    "cell_type": "markdown",
      5    "metadata": {},
      6    "source": [
      7     "# Convolutional & Denoising Autoencoders"
      8    ]
      9   },
     10   {
     11    "cell_type": "markdown",
     12    "metadata": {},
     13    "source": [
     14     "The insights from Chapter 17, Convolutional Neural Networks, suggest we incorporate convolutional layers into the autoencoder to extract information characteristic of the grid-like structure of image data."
     15    ]
     16   },
     17   {
     18    "cell_type": "markdown",
     19    "metadata": {},
     20    "source": [
     21     "Source: https://blog.keras.io/building-autoencoders-in-keras.html"
     22    ]
     23   },
     24   {
     25    "cell_type": "markdown",
     26    "metadata": {},
     27    "source": [
     28     "## Imports & Settings"
     29    ]
     30   },
     31   {
     32    "cell_type": "code",
     33    "execution_count": 1,
     34    "metadata": {
     35     "ExecuteTime": {
     36      "end_time": "2018-04-05T10:38:11.113253Z",
     37      "start_time": "2018-04-05T10:38:05.324609Z"
     38     },
     39     "slideshow": {
     40      "slide_type": "skip"
     41     }
     42    },
     43    "outputs": [
     44     {
     45      "name": "stderr",
     46      "output_type": "stream",
     47      "text": [
     48       "Using TensorFlow backend.\n"
     49      ]
     50     }
     51    ],
     52    "source": [
     53     "from os.path import join\n",
     54     "import pandas as pd\n",
     55     "\n",
     56     "import numpy as np\n",
     57     "from numpy.random import choice\n",
     58     "from numpy.linalg import norm\n",
     59     "import seaborn as sns\n",
     60     "\n",
     61     "import matplotlib.pyplot as plt\n",
     62     "from matplotlib.colors import ListedColormap\n",
     63     "from matplotlib.offsetbox import AnnotationBbox, OffsetImage\n",
     64     "from mpl_toolkits.axes_grid1 import make_axes_locatable\n",
     65     "\n",
     66     "from keras.layers import Input, Dense, Conv2D, MaxPooling2D, UpSampling2D\n",
     67     "from keras import regularizers\n",
     68     "from keras.models import Model, model_from_json\n",
     69     "from keras.callbacks import TensorBoard, EarlyStopping, ModelCheckpoint\n",
     70     "from keras.datasets import fashion_mnist\n",
     71     "from keras import backend as K\n",
     72     "\n",
     73     "from sklearn.preprocessing import minmax_scale\n",
     74     "from sklearn.manifold import TSNE\n",
     75     "from sklearn.model_selection import train_test_split\n",
     76     "\n",
     77     "from scipy.spatial.distance import pdist, cdist"
     78    ]
     79   },
     80   {
     81    "cell_type": "code",
     82    "execution_count": 2,
     83    "metadata": {
     84     "ExecuteTime": {
     85      "end_time": "2018-04-05T10:38:11.139587Z",
     86      "start_time": "2018-04-05T10:38:11.117034Z"
     87     }
     88    },
     89    "outputs": [],
     90    "source": [
     91     "%matplotlib inline\n",
     92     "plt.style.use('ggplot')\n",
     93     "n_classes = 10 # all examples have 10 classes\n",
     94     "cmap = sns.color_palette('Paired', n_classes)\n",
     95     "pd.options.display.float_format = '{:,.2f}'.format"
     96    ]
     97   },
     98   {
     99    "cell_type": "markdown",
    100    "metadata": {
    101     "slideshow": {
    102      "slide_type": "slide"
    103     }
    104    },
    105    "source": [
    106     "## Fashion MNIST Data"
    107    ]
    108   },
    109   {
    110    "cell_type": "code",
    111    "execution_count": 3,
    112    "metadata": {},
    113    "outputs": [],
    114    "source": [
    115     "(X_train, y_train), (X_test, y_test) = fashion_mnist.load_data()"
    116    ]
    117   },
    118   {
    119    "cell_type": "code",
    120    "execution_count": 4,
    121    "metadata": {},
    122    "outputs": [
    123     {
    124      "data": {
    125       "text/plain": [
    126        "((60000, 28, 28), (10000, 28, 28))"
    127       ]
    128      },
    129      "execution_count": 4,
    130      "metadata": {},
    131      "output_type": "execute_result"
    132     }
    133    ],
    134    "source": [
    135     "X_train.shape, X_test.shape"
    136    ]
    137   },
    138   {
    139    "cell_type": "code",
    140    "execution_count": 5,
    141    "metadata": {},
    142    "outputs": [],
    143    "source": [
    144     "class_dict = {0: 'T-shirt/top',\n",
    145     "              1: 'Trouser',\n",
    146     "              2: 'Pullover',\n",
    147     "              3: 'Dress',\n",
    148     "              4: 'Coat',\n",
    149     "              5: 'Sandal',\n",
    150     "              6: 'Shirt',\n",
    151     "              7: 'Sneaker',\n",
    152     "              8: 'Bag',\n",
    153     "              9: 'Ankle boot'}\n",
    154     "classes = list(class_dict.keys())"
    155    ]
    156   },
    157   {
    158    "cell_type": "markdown",
    159    "metadata": {
    160     "slideshow": {
    161      "slide_type": "subslide"
    162     }
    163    },
    164    "source": [
    165     "## Reshape & normalize Fashion MNIST data"
    166    ]
    167   },
    168   {
    169    "cell_type": "code",
    170    "execution_count": 6,
    171    "metadata": {},
    172    "outputs": [],
    173    "source": [
    174     "image_size = 28"
    175    ]
    176   },
    177   {
    178    "cell_type": "code",
    179    "execution_count": 7,
    180    "metadata": {},
    181    "outputs": [],
    182    "source": [
    183     "def data_prep_conv(x, size=image_size):\n",
    184     "    return x.reshape(-1, size, size, 1).astype('float32')/255"
    185    ]
    186   },
    187   {
    188    "cell_type": "code",
    189    "execution_count": 8,
    190    "metadata": {},
    191    "outputs": [],
    192    "source": [
    193     "X_train_scaled = data_prep_conv(X_train)\n",
    194     "X_test_scaled = data_prep_conv(X_test)"
    195    ]
    196   },
    197   {
    198    "cell_type": "code",
    199    "execution_count": 9,
    200    "metadata": {},
    201    "outputs": [
    202     {
    203      "data": {
    204       "text/plain": [
    205        "((60000, 28, 28, 1), (10000, 28, 28, 1))"
    206       ]
    207      },
    208      "execution_count": 9,
    209      "metadata": {},
    210      "output_type": "execute_result"
    211     }
    212    ],
    213    "source": [
    214     "X_train_scaled.shape, X_test_scaled.shape"
    215    ]
    216   },
    217   {
    218    "cell_type": "markdown",
    219    "metadata": {},
    220    "source": [
    221     "## Combine training steps into function"
    222    ]
    223   },
    224   {
    225    "cell_type": "code",
    226    "execution_count": 10,
    227    "metadata": {},
    228    "outputs": [],
    229    "source": [
    230     "def train_autoencoder(path, model, x_train=X_train_scaled, x_test=X_test_scaled):\n",
    231     "    callbacks = [EarlyStopping(patience=5, restore_best_weights=True),\n",
    232     "                 ModelCheckpoint(filepath=path, save_best_only=True, save_weights_only=True)]\n",
    233     "    model.fit(x=x_train, y=x_train, epochs=100, validation_split=.1, callbacks=callbacks)\n",
    234     "    model.load_weights(path)\n",
    235     "    mse = model.evaluate(x=x_test, y=x_test)\n",
    236     "    return model, mse"
    237    ]
    238   },
    239   {
    240    "cell_type": "markdown",
    241    "metadata": {},
    242    "source": [
    243     "## Convolutional Autoencoder"
    244    ]
    245   },
    246   {
    247    "cell_type": "markdown",
    248    "metadata": {},
    249    "source": [
    250     "We define a three-layer encoder that uses 2D convolutions with 32, 16, and 8 filters, respectively, ReLU activations, and 'same' padding to maintain the input size. The resulting encoding size at the third layer is 4 x 4 x 8 = 128, higher than for the preceding examples:"
    251    ]
    252   },
    253   {
    254    "cell_type": "markdown",
    255    "metadata": {},
    256    "source": [
    257     "### 3-dim input"
    258    ]
    259   },
    260   {
    261    "cell_type": "code",
    262    "execution_count": 11,
    263    "metadata": {},
    264    "outputs": [],
    265    "source": [
    266     "input_ = Input(shape=(28, 28, 1), name='Input_3D')"
    267    ]
    268   },
    269   {
    270    "cell_type": "markdown",
    271    "metadata": {},
    272    "source": [
    273     "### Encoding Layers"
    274    ]
    275   },
    276   {
    277    "cell_type": "code",
    278    "execution_count": 12,
    279    "metadata": {},
    280    "outputs": [
    281     {
    282      "name": "stdout",
    283      "output_type": "stream",
    284      "text": [
    285       "WARNING:tensorflow:From /home/stefan/.pyenv/versions/miniconda3-latest/envs/ml4t/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.\n",
    286       "Instructions for updating:\n",
    287       "Colocations handled automatically by placer.\n"
    288      ]
    289     }
    290    ],
    291    "source": [
    292     "x = Conv2D(filters=32, kernel_size=(3, 3), activation='relu', padding='same', name='Encoding_Conv_1')(input_)\n",
    293     "x = MaxPooling2D(pool_size=(2, 2), padding='same', name='Encoding_Max_1')(x)\n",
    294     "x = Conv2D(filters=16, kernel_size=(3, 3), activation='relu', padding='same', name='Encoding_Conv_2')(x)\n",
    295     "x = MaxPooling2D(pool_size=(2, 2), padding='same', name='Encoding_Max_2')(x)\n",
    296     "x = Conv2D(filters=8, kernel_size=(3, 3), activation='relu', padding='same', name='Encoding_Conv_3')(x)\n",
    297     "encoded_conv = MaxPooling2D(pool_size=(2, 2), padding='same', name='Encoding_Max_3')(x)"
    298    ]
    299   },
    300   {
    301    "cell_type": "markdown",
    302    "metadata": {},
    303    "source": [
    304     "We also define a matching decoder that reverses the number of filters and uses 2D upsampling instead of max pooling to reverse the reduction of the filter sizes. The three-layer autoencoder has 12,785 parameters, a little more than 5% of the capacity of the preceding deep autoencoder."
    305    ]
    306   },
    307   {
    308    "cell_type": "code",
    309    "execution_count": 13,
    310    "metadata": {},
    311    "outputs": [],
    312    "source": [
    313     "x = Conv2D(filters=8, kernel_size=(3, 3), activation='relu', padding='same', name='Decoding_Conv_1')(encoded_conv)\n",
    314     "x = UpSampling2D(size=(2, 2), name='Decoding_Upsample_1')(x)\n",
    315     "x = Conv2D(filters=16, kernel_size=(3, 3), activation='relu', padding='same', name='Decoding_Conv_2')(x)\n",
    316     "x = UpSampling2D(size=(2, 2), name='Decoding_Upsample_2')(x)\n",
    317     "x = Conv2D(filters=32, kernel_size=(3, 3), activation='relu', name='Decoding_Conv_3')(x)\n",
    318     "x = UpSampling2D(size=(2, 2), name='Decoding_Upsample_3')(x)\n",
    319     "decoded_conv = Conv2D(filters=1, kernel_size=(3, 3), activation='sigmoid', padding='same', name='Decoding_Conv_4')(x)"
    320    ]
    321   },
    322   {
    323    "cell_type": "code",
    324    "execution_count": 14,
    325    "metadata": {},
    326    "outputs": [],
    327    "source": [
    328     "autoencoder_conv = Model(input_, decoded_conv)\n",
    329     "autoencoder_conv.compile(optimizer='adam', loss='mse')"
    330    ]
    331   },
    332   {
    333    "cell_type": "code",
    334    "execution_count": 15,
    335    "metadata": {},
    336    "outputs": [
    337     {
    338      "name": "stdout",
    339      "output_type": "stream",
    340      "text": [
    341       "_________________________________________________________________\n",
    342       "Layer (type)                 Output Shape              Param #   \n",
    343       "=================================================================\n",
    344       "Input_3D (InputLayer)        (None, 28, 28, 1)         0         \n",
    345       "_________________________________________________________________\n",
    346       "Encoding_Conv_1 (Conv2D)     (None, 28, 28, 32)        320       \n",
    347       "_________________________________________________________________\n",
    348       "Encoding_Max_1 (MaxPooling2D (None, 14, 14, 32)        0         \n",
    349       "_________________________________________________________________\n",
    350       "Encoding_Conv_2 (Conv2D)     (None, 14, 14, 16)        4624      \n",
    351       "_________________________________________________________________\n",
    352       "Encoding_Max_2 (MaxPooling2D (None, 7, 7, 16)          0         \n",
    353       "_________________________________________________________________\n",
    354       "Encoding_Conv_3 (Conv2D)     (None, 7, 7, 8)           1160      \n",
    355       "_________________________________________________________________\n",
    356       "Encoding_Max_3 (MaxPooling2D (None, 4, 4, 8)           0         \n",
    357       "_________________________________________________________________\n",
    358       "Decoding_Conv_1 (Conv2D)     (None, 4, 4, 8)           584       \n",
    359       "_________________________________________________________________\n",
    360       "Decoding_Upsample_1 (UpSampl (None, 8, 8, 8)           0         \n",
    361       "_________________________________________________________________\n",
    362       "Decoding_Conv_2 (Conv2D)     (None, 8, 8, 16)          1168      \n",
    363       "_________________________________________________________________\n",
    364       "Decoding_Upsample_2 (UpSampl (None, 16, 16, 16)        0         \n",
    365       "_________________________________________________________________\n",
    366       "Decoding_Conv_3 (Conv2D)     (None, 14, 14, 32)        4640      \n",
    367       "_________________________________________________________________\n",
    368       "Decoding_Upsample_3 (UpSampl (None, 28, 28, 32)        0         \n",
    369       "_________________________________________________________________\n",
    370       "Decoding_Conv_4 (Conv2D)     (None, 28, 28, 1)         289       \n",
    371       "=================================================================\n",
    372       "Total params: 12,785\n",
    373       "Trainable params: 12,785\n",
    374       "Non-trainable params: 0\n",
    375       "_________________________________________________________________\n"
    376      ]
    377     }
    378    ],
    379    "source": [
    380     "autoencoder_conv.summary()"
    381    ]
    382   },
    383   {
    384    "cell_type": "code",
    385    "execution_count": 16,
    386    "metadata": {},
    387    "outputs": [],
    388    "source": [
    389     "path = 'models/fashion_mnist.autencoder_conv.32.weights.hdf5'"
    390    ]
    391   },
    392   {
    393    "cell_type": "code",
    394    "execution_count": 17,
    395    "metadata": {
    396     "scrolled": false
    397    },
    398    "outputs": [
    399     {
    400      "name": "stdout",
    401      "output_type": "stream",
    402      "text": [
    403       "WARNING:tensorflow:From /home/stefan/.pyenv/versions/miniconda3-latest/envs/ml4t/lib/python3.6/site-packages/tensorflow/python/ops/math_ops.py:3066: to_int32 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n",
    404       "Instructions for updating:\n",
    405       "Use tf.cast instead.\n",
    406       "Train on 54000 samples, validate on 6000 samples\n",
    407       "Epoch 1/100\n",
    408       "54000/54000 [==============================] - 21s 398us/step - loss: 0.0233 - val_loss: 0.0160\n",
    409       "Epoch 2/100\n",
    410       "54000/54000 [==============================] - 19s 361us/step - loss: 0.0149 - val_loss: 0.0140\n",
    411       "Epoch 3/100\n",
    412       "54000/54000 [==============================] - 20s 371us/step - loss: 0.0134 - val_loss: 0.0129\n",
    413       "Epoch 4/100\n",
    414       "54000/54000 [==============================] - 22s 401us/step - loss: 0.0125 - val_loss: 0.0122\n",
    415       "Epoch 5/100\n",
    416       "54000/54000 [==============================] - 22s 410us/step - loss: 0.0120 - val_loss: 0.0118\n",
    417       "Epoch 6/100\n",
    418       "54000/54000 [==============================] - 21s 389us/step - loss: 0.0115 - val_loss: 0.0114\n",
    419       "Epoch 7/100\n",
    420       "54000/54000 [==============================] - 22s 412us/step - loss: 0.0112 - val_loss: 0.0111\n",
    421       "Epoch 8/100\n",
    422       "54000/54000 [==============================] - 21s 383us/step - loss: 0.0109 - val_loss: 0.0111\n",
    423       "Epoch 9/100\n",
    424       "54000/54000 [==============================] - 20s 364us/step - loss: 0.0107 - val_loss: 0.0107\n",
    425       "Epoch 10/100\n",
    426       "54000/54000 [==============================] - 20s 368us/step - loss: 0.0106 - val_loss: 0.0104\n",
    427       "Epoch 11/100\n",
    428       "54000/54000 [==============================] - 19s 361us/step - loss: 0.0104 - val_loss: 0.0105\n",
    429       "Epoch 12/100\n",
    430       "54000/54000 [==============================] - 21s 396us/step - loss: 0.0103 - val_loss: 0.0103\n",
    431       "Epoch 13/100\n",
    432       "54000/54000 [==============================] - 20s 364us/step - loss: 0.0102 - val_loss: 0.0101\n",
    433       "Epoch 14/100\n",
    434       "54000/54000 [==============================] - 21s 393us/step - loss: 0.0101 - val_loss: 0.0100\n",
    435       "Epoch 15/100\n",
    436       "54000/54000 [==============================] - 18s 337us/step - loss: 0.0100 - val_loss: 0.0101\n",
    437       "Epoch 16/100\n",
    438       "54000/54000 [==============================] - 18s 334us/step - loss: 0.0099 - val_loss: 0.0100\n",
    439       "Epoch 17/100\n",
    440       "54000/54000 [==============================] - 18s 331us/step - loss: 0.0098 - val_loss: 0.0098\n",
    441       "Epoch 18/100\n",
    442       "54000/54000 [==============================] - 19s 360us/step - loss: 0.0097 - val_loss: 0.0096\n",
    443       "Epoch 19/100\n",
    444       "54000/54000 [==============================] - 22s 398us/step - loss: 0.0096 - val_loss: 0.0096\n",
    445       "Epoch 20/100\n",
    446       "54000/54000 [==============================] - 21s 387us/step - loss: 0.0096 - val_loss: 0.0095\n",
    447       "Epoch 21/100\n",
    448       "54000/54000 [==============================] - 20s 368us/step - loss: 0.0095 - val_loss: 0.0094\n",
    449       "Epoch 22/100\n",
    450       "54000/54000 [==============================] - 21s 389us/step - loss: 0.0095 - val_loss: 0.0097\n",
    451       "Epoch 23/100\n",
    452       "54000/54000 [==============================] - 21s 392us/step - loss: 0.0094 - val_loss: 0.0094\n",
    453       "Epoch 24/100\n",
    454       "54000/54000 [==============================] - 19s 356us/step - loss: 0.0094 - val_loss: 0.0093\n",
    455       "Epoch 25/100\n",
    456       "54000/54000 [==============================] - 19s 354us/step - loss: 0.0093 - val_loss: 0.0093\n",
    457       "Epoch 26/100\n",
    458       "54000/54000 [==============================] - 21s 384us/step - loss: 0.0093 - val_loss: 0.0093\n",
    459       "Epoch 27/100\n",
    460       "54000/54000 [==============================] - 19s 350us/step - loss: 0.0092 - val_loss: 0.0092\n",
    461       "Epoch 28/100\n",
    462       "54000/54000 [==============================] - 19s 358us/step - loss: 0.0092 - val_loss: 0.0092\n",
    463       "Epoch 29/100\n",
    464       "54000/54000 [==============================] - 19s 354us/step - loss: 0.0092 - val_loss: 0.0091\n",
    465       "Epoch 30/100\n",
    466       "54000/54000 [==============================] - 19s 350us/step - loss: 0.0091 - val_loss: 0.0094\n",
    467       "Epoch 31/100\n",
    468       "54000/54000 [==============================] - 19s 351us/step - loss: 0.0091 - val_loss: 0.0093\n",
    469       "Epoch 32/100\n",
    470       "54000/54000 [==============================] - 19s 351us/step - loss: 0.0091 - val_loss: 0.0092\n",
    471       "Epoch 33/100\n",
    472       "54000/54000 [==============================] - 19s 359us/step - loss: 0.0090 - val_loss: 0.0090\n",
    473       "Epoch 34/100\n",
    474       "54000/54000 [==============================] - 22s 398us/step - loss: 0.0090 - val_loss: 0.0090\n",
    475       "Epoch 35/100\n",
    476       "54000/54000 [==============================] - 20s 377us/step - loss: 0.0090 - val_loss: 0.0090\n",
    477       "Epoch 36/100\n",
    478       "54000/54000 [==============================] - 20s 373us/step - loss: 0.0089 - val_loss: 0.0089\n",
    479       "Epoch 37/100\n",
    480       "54000/54000 [==============================] - 22s 414us/step - loss: 0.0089 - val_loss: 0.0092\n",
    481       "Epoch 38/100\n",
    482       "54000/54000 [==============================] - 23s 430us/step - loss: 0.0089 - val_loss: 0.0089\n",
    483       "Epoch 39/100\n",
    484       "54000/54000 [==============================] - 25s 462us/step - loss: 0.0089 - val_loss: 0.0093\n",
    485       "Epoch 40/100\n",
    486       "54000/54000 [==============================] - 23s 419us/step - loss: 0.0088 - val_loss: 0.0089\n",
    487       "Epoch 41/100\n",
    488       "54000/54000 [==============================] - 20s 366us/step - loss: 0.0088 - val_loss: 0.0088\n",
    489       "Epoch 42/100\n",
    490       "54000/54000 [==============================] - 20s 374us/step - loss: 0.0088 - val_loss: 0.0088\n",
    491       "Epoch 43/100\n",
    492       "54000/54000 [==============================] - 24s 442us/step - loss: 0.0088 - val_loss: 0.0088\n",
    493       "Epoch 44/100\n",
    494       "54000/54000 [==============================] - 24s 450us/step - loss: 0.0088 - val_loss: 0.0087\n",
    495       "Epoch 45/100\n",
    496       "54000/54000 [==============================] - 21s 385us/step - loss: 0.0087 - val_loss: 0.0087\n",
    497       "Epoch 46/100\n",
    498       "54000/54000 [==============================] - 48s 884us/step - loss: 0.0087 - val_loss: 0.0086\n",
    499       "Epoch 47/100\n",
    500       "54000/54000 [==============================] - 48s 886us/step - loss: 0.0087 - val_loss: 0.0086\n",
    501       "Epoch 48/100\n",
    502       "54000/54000 [==============================] - 50s 925us/step - loss: 0.0087 - val_loss: 0.0089\n",
    503       "Epoch 49/100\n",
    504       "54000/54000 [==============================] - 50s 935us/step - loss: 0.0086 - val_loss: 0.0086\n",
    505       "Epoch 50/100\n",
    506       "54000/54000 [==============================] - 36s 666us/step - loss: 0.0086 - val_loss: 0.0089\n",
    507       "Epoch 51/100\n",
    508       "54000/54000 [==============================] - 21s 381us/step - loss: 0.0086 - val_loss: 0.0086\n",
    509       "Epoch 52/100\n",
    510       "54000/54000 [==============================] - 20s 369us/step - loss: 0.0086 - val_loss: 0.0086\n",
    511       "Epoch 53/100\n",
    512       "54000/54000 [==============================] - 22s 404us/step - loss: 0.0086 - val_loss: 0.0087\n",
    513       "Epoch 54/100\n",
    514       "54000/54000 [==============================] - 19s 356us/step - loss: 0.0086 - val_loss: 0.0085\n",
    515       "Epoch 55/100\n",
    516       "54000/54000 [==============================] - 19s 344us/step - loss: 0.0085 - val_loss: 0.0086\n",
    517       "Epoch 56/100\n",
    518       "54000/54000 [==============================] - 19s 358us/step - loss: 0.0085 - val_loss: 0.0085\n",
    519       "Epoch 57/100\n",
    520       "54000/54000 [==============================] - 19s 358us/step - loss: 0.0085 - val_loss: 0.0085\n",
    521       "Epoch 58/100\n",
    522       "54000/54000 [==============================] - 19s 348us/step - loss: 0.0085 - val_loss: 0.0085\n",
    523       "Epoch 59/100\n",
    524       "54000/54000 [==============================] - 20s 366us/step - loss: 0.0085 - val_loss: 0.0085\n",
    525       "Epoch 60/100\n",
    526       "54000/54000 [==============================] - 20s 363us/step - loss: 0.0085 - val_loss: 0.0085\n",
    527       "Epoch 61/100\n",
    528       "54000/54000 [==============================] - 20s 367us/step - loss: 0.0085 - val_loss: 0.0084\n",
    529       "Epoch 62/100\n",
    530       "54000/54000 [==============================] - 19s 356us/step - loss: 0.0085 - val_loss: 0.0084\n",
    531       "Epoch 63/100\n",
    532       "54000/54000 [==============================] - 20s 373us/step - loss: 0.0084 - val_loss: 0.0084\n",
    533       "Epoch 64/100\n",
    534       "54000/54000 [==============================] - 21s 392us/step - loss: 0.0084 - val_loss: 0.0085\n",
    535       "Epoch 65/100\n",
    536       "54000/54000 [==============================] - 19s 360us/step - loss: 0.0084 - val_loss: 0.0084\n",
    537       "Epoch 66/100\n",
    538       "54000/54000 [==============================] - 19s 353us/step - loss: 0.0084 - val_loss: 0.0085\n",
    539       "Epoch 67/100\n",
    540       "54000/54000 [==============================] - 20s 364us/step - loss: 0.0084 - val_loss: 0.0084\n",
    541       "Epoch 68/100\n",
    542       "54000/54000 [==============================] - 20s 364us/step - loss: 0.0084 - val_loss: 0.0089\n",
    543       "Epoch 69/100\n",
    544       "54000/54000 [==============================] - 19s 355us/step - loss: 0.0084 - val_loss: 0.0085\n",
    545       "Epoch 70/100\n",
    546       "54000/54000 [==============================] - 20s 373us/step - loss: 0.0084 - val_loss: 0.0084\n",
    547       "10000/10000 [==============================] - 1s 112us/step\n"
    548      ]
    549     }
    550    ],
    551    "source": [
    552     "autoencoder_deep, mse = train_autoencoder(path, \n",
    553     "                                          autoencoder_conv, \n",
    554     "                                          x_train=X_train_scaled, \n",
    555     "                                          x_test=X_test_scaled)"
    556    ]
    557   },
    558   {
    559    "cell_type": "markdown",
    560    "metadata": {},
    561    "source": [
    562     "Training stops after 75 epochs and results in a further 9% reduction of the test RMSE, due to a combination of the ability of convolutional filters to learn more efficiently from image data and the larger encoding size."
    563    ]
    564   },
    565   {
    566    "cell_type": "code",
    567    "execution_count": 18,
    568    "metadata": {},
    569    "outputs": [
    570     {
    571      "data": {
    572       "text/plain": [
    573        "'MSE: 0.0084 | RMSE 0.0916'"
    574       ]
    575      },
    576      "execution_count": 18,
    577      "metadata": {},
    578      "output_type": "execute_result"
    579     }
    580    ],
    581    "source": [
    582     "f'MSE: {mse:.4f} | RMSE {mse**.5:.4f}'"
    583    ]
    584   },
    585   {
    586    "cell_type": "code",
    587    "execution_count": 19,
    588    "metadata": {},
    589    "outputs": [],
    590    "source": [
    591     "autoencoder_conv.load_weights(path)"
    592    ]
    593   },
    594   {
    595    "cell_type": "code",
    596    "execution_count": 20,
    597    "metadata": {},
    598    "outputs": [
    599     {
    600      "data": {
    601       "text/plain": [
    602        "(10000, 28, 28, 1)"
    603       ]
    604      },
    605      "execution_count": 20,
    606      "metadata": {},
    607      "output_type": "execute_result"
    608     }
    609    ],
    610    "source": [
    611     "reconstructed_images = autoencoder_deep.predict(X_test_scaled)\n",
    612     "reconstructed_images.shape"
    613    ]
    614   },
    615   {
    616    "cell_type": "code",
    617    "execution_count": 21,
    618    "metadata": {},
    619    "outputs": [
    620     {
    621      "data": {
    622       "image/png": "iVBORw0KGgoAAAANSUhEUgAABIEAAAD4CAYAAAB7VPbbAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Wm0HlWZ9vHbVlFkCiEkkHkeGBKGAEkgRBJkbAgIKODCkW7Fpdgu2nH1ahW1HdqpFXVB06LQS41LTQMyBYJhSAhTyAQh8xwyQkIQRFTeD75sr31xavOcQ3KS89T/9+l+qEqdOrVr76rzsO97v+Hll19+OQAAAAAAANDU/mFXnwAAAAAAAAB2Pr4EAgAAAAAAqAG+BAIAAAAAAKgBvgQCAAAAAACoAb4EAgAAAAAAqAG+BAIAAAAAAKgBvgQCAAAAAACoAb4EAgAAAAAAqAG+BAIAAAAAAKgBvgQCAAAAAACogTe15w97wxve0J4/DuLll1/eIcfZXdpwn332SfGxxx6bbZs6dWqrj3fUUUdln5977rkUL1q0qNXH2xl2VBtGtG87+s/S32PChAkpvvzyy7P9Zs+eneKDDjooxUuWLMn223vvvVO8//77Z9teeumlFPfv3z/F5557bkPnvjM0Q1888MADU/zP//zPKd62bVu23wsvvNDiv/f99Jq88Y1vzLbtscceKd64cWOKp02blu33pz/96TXOesfZFX3xH/4h/382f/3rXxs6RlvOddSoUdnnvfbaK8XaHt5W6i1veUv2edOmTSm+9957W31OO0Mz9EWlfeLPf/5ztu3FF19M8Vvf+tYUr1ixIttPt3Xr1i3bps9FbXu/N88888zGT/p1asbnovJn2jPPPJPiAQMGpLhLly7Zfn/5y19S/Mc//jHbNn/+/NadbDvoiH3R73v92Xr93Xvf+94Ujx49OsVvelP+J5m29YIFC7Jt1113XYvHbvS+Kv27trZFR+2LyHXEvohco23ITCAAAAAAAIAaeMPLO/Kr29f6YXwruMt0lG929f9C/su//Eu27aKLLkqx/t8xnZUQEfH888+nuHPnzg39XP8/ZTqDQf+Pzj333JPtd+2116b49ttvb+hntVVH/b8spRkM9913X4pPOOGEho737LPPZp/f9ra3pdj/T5reC7rfWWedle33u9/9rqGfvSN0lL5Yctlll6X4u9/9boqffvrpbL+nnnoqxToTa82aNdl+ixcvTvGwYcOybdo377rrrhTPnTs32++GG25o6Nx3hF3RFxvdr3RuOoMyImL8+PEp1tmQp59+erbfwoULWzy+zsKLiDjggANSvHnz5mzbnnvumWKdRXLzzTdn+910000pXrVqVQu/xY7TDH1x3333TfHSpUtTrLPmnI6FPj5rf/PZDDqe6kwv/1k6w3Nn60jPRb3v/drqz9ZZW29+85uz/bQNtE9t3bo120//nc8K++///u8Uf/rTn27o3He2ZuiLVYYPH559njNnTopnzJiRYn03isjbzd+P9F25NOtoR8zwaVRH6ouo1sx9sS6YCQQAAAAAAICEL4EAAAAAAABqgC+BAAAAAAAAaqBdVwcD3De+8Y3ss6405PUrtE6Pxl6HRPPkq1YzichXE9I8+4i8ToLWPvjHf/zHbL+JEyem+IEHHsi2nXjiiYFX57mrI444IsXejlpTpFT3Z8uWLSn22geakzxw4MAUDx06NNuvPWsCNYOuXbumWFcXKtUm0PpA3he1lozWOInIa0B17949xU8++WTjJ9wEPMe70VoPOqYOHjw426btoNdz0qRJ2X7aT7VeifdFrR3ktbt0jNU6bn369Mn2+853vtPiv4mI+OxnP5videvWBfLaIHofeNvo805jXYEoIr8nvC/q8bXfV60CiFxpfHz3u9+d4iuvvDLFXk/m/PPPT/G3vvWtFB955JHZfieffHKKtZZaRMSPfvSjFOt9Unp+tmP50A5L3yt0Zb0NGzZk+x133HEp/tKXvpRi7286/l166aXZNn2/1HpB/k7dnqtmAuhYmAkEAAAAAABQA3wJBAAAAAAAUAOkg6HdaXqCL0+6fv36FGsqV8kee+yRfdYlbjX26cyapuTLsFYdz89Jp3ePGTMm26ZLH/uS5PgbXWLal5TWqdGanqfpKBF5+oKm7rW07yt69erV+pNFoulbmzZtSrEuAx+Rp/hpeqf3o06dOqXYlxXVf6d9dt68ea097Q7Nr0tVesZll12Wfda20hSeiIiXXnopxdrHfMnve+65J8XnnntuinW8jsj7m5+ftpcuQb9o0aJsv23btqXYU8W+8pWvpPiDH/xgIOK8885LcefOnVO8evXqbD9N+ymNp7pNU838GPvtt1+KDz744Gy/o48+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5Zdf3iHHac82/Id/yL+j3GuvvVI8ZMiQFD/33HPZfosXL07xX/7yl8rj6+/SqVOnbFvv3r1TvGjRohS/8MILr3XaO82OasOI3acvjhkzJsWXXnpptm316tUp3rx5c4r33XffbL999tknxW9+85uzbXvvvXeKte2+8IUvZPtt27atNaf9unTEvui0v3zyk59M8bJly7L9Fi5cmGL9vd/ylrdk++2xxx4pfutb35ptGzBgQIpXrVqV4ltvvTXb78UXX2zo3HeEZumLet0HDx6c4qOPPjrb709/+lOKn3rqqRT72HvggQem+Ljjjsu2zZo1K8X33HNPituz77lm6ItvfOMbU3z99den+OCDD872e/bZZ1Os/e/Pf/5ztt+b3vT310JvX30ma+z9/otf/GKKt2/fXjz/16tZ+qKOqUceeWSKtT0iIh555JEU//GPf0yx3gcRed/+61//mm3TdtV3pB15LVurGfpilV69emWfL7vsshT36NEjxfouE5G36e23355tu/rqq1Ps7burNEtfrLtm7ot10WgbMhMIAAAAAACgBvgSCAAAAAAAoAbaNR0McD5dcOzYsSn+3Oc+l2077LDDUqxTp3269Jo1a1Ks09Q9vUynxI8YMSLbpmlFmq5w9913Z/t9+ctfTrGmvkTs2qnVHYVeP09B0WnqOi3apz7rNr+fNAVM95s/f36237XXXtua064dv64f/vCHU/zxj388xS+99FK2n6Yk6FR3389TUtQf/vCHFG/atKnFOCJi+vTpKabv/Z2Oj97HzjnnnBRrCkr37t2z/fSzpuV6upCOm56aqWPxvHnzUvyb3/wm2+/BBx9MsaaeRZTTe+tK0yUvvvjiFHuf0s/aLzWlKCLv6369t27dmmJt35EjR2b7/fjHP07xzk4H66j222+/7PMVV1yR4uOPPz7FBxxwQOUx9D3o+eefz7bp+86MGTOybV/72tdSvHz58hT7uIy20z42bNiwbNvpp5+e4qFDh6bY+6yms3ft2jXbduedd6Z46dKlKebZB6BRzAQCAAAAAACoAb4EAgAAAAAAqAG+BAIAAAAAAKgBagKh3WnNgR/+8IfZtnPPPTfFb3vb27JtWp9AY6/1o8sUd+vWLcWeK631YvwYeo77779/ii+44IJsv/POOy/FWi8hIq8ztGHDhsDf6LXu3Llzir02hS5Lveeee6bY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S6PqeP781GeA11TROlBaC8eX3t6wYUPlz+7otHZHRF5vRPuf90V9BmmNmIceeijb76STTqr8WZs3b06xjt3e1t26davc1uxjr74H+LuJfvbxq6o+l9fA03FUawL5ddZ+Vapro+83Bx10ULaf3if+/lQXXnvuwAMPTLG3oe6r7eTvhlU1gfz9UsdrHyer6kt5W+s9Ujq+/l7UBAJ2f6V3rIaPsQPOAwAAAAAAALs5vgQCAAAAAACoAdLBdgCfOq/L9S5fvjzFvhRro3Tap07tj4jo3LlzilevXp1t252WyR0wYECKdXqqT6fVabO+nLFOr9XUIf89NRWglBKnU3f9Z+l56DKgmj4RkadQ7L///pXH19SmuvFpzDrtWPlyq9omq1atSvEPf/jDbL9jjz02xT49UlOLNLXEp9ijzFM4tI9pOsr27duz/bSfan/QcTEi4rDDDkuxpjlF5H24TksWv5Y+ffqkWK+ZLwet931p+XhdStj7UdW19v+u90kp9UCP7/eWjgP+vNOUFN2vV69e2X7NnA6mz8+I/JroEvHehpqS/cQTT6T45z//ebbfkUcemeKuXbtm2zRNRNvX+2wpBaUZ6TNOn2/+TqDXyd8H9X7WtvPlxfV66n6ebquf/R1J+72ek47DEfn7zooVK6KZ6T2rqaY+nur7vqabR+Rjrbavjq0R5VQ9pdu83+u4qdv0b4KI/HfxlHs9R+3rTz75ZOU5AXXgf49o//A0X+0vbf07v1Gaou1/S/l7dSOYCQQAAAAAAFADfAkEAAAAAABQA3wJBAAAAAAAUAPUBGojzQn8xCc+kW3T+gRz5sxJ8U033ZTt99RTT6W4tEzuIYcckuKzzz47209rpVx11VXZtt2pJpBeL63H4suOau60123RHE3NaS8tWaxL2npOteZHa72EiOpl4T1/W/PuvX6F5vL3798/xd7WzV4zoXRv6z3qNQ20XXVJ8ilTpmT76X3ibaD0nvElW1Hm96j2He2Xvry79nutYbB48eJsv6r+5p+1rZu937wWrQmktZK8zppeWx8rtW/q2OvXVvum1sEoLUvt56E/W9vRawLpeehS4xH5M1Nz74844ohsv0ceeSSalf+uev38mle58847Uzx9+vRsmy4ZP3To0GybtndpGXOvgdLs9Pft1KlTir099D3Da0547Zkqekztb94Gpfc/73OvKNW4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\n",
    623       "text/plain": [
    624        "<Figure size 1440x288 with 20 Axes>"
    625       ]
    626      },
    627      "metadata": {},
    628      "output_type": "display_data"
    629     }
    630    ],
    631    "source": [
    632     "fig, axes = plt.subplots(ncols=n_classes, nrows=2, figsize=(20, 4))\n",
    633     "for i in range(n_classes):\n",
    634     "    \n",
    635     "    axes[0, i].imshow(X_test_scaled[i].reshape(image_size, image_size), cmap='gray')\n",
    636     "    axes[0, i].axis('off')\n",
    637     "\n",
    638     "    axes[1, i].imshow(reconstructed_images[i].reshape(image_size, image_size) , cmap='gray')\n",
    639     "    axes[1, i].axis('off')"
    640    ]
    641   },
    642   {
    643    "cell_type": "markdown",
    644    "metadata": {},
    645    "source": [
    646     "## Denoising Autoencoder"
    647    ]
    648   },
    649   {
    650    "cell_type": "markdown",
    651    "metadata": {},
    652    "source": [
    653     "The application of an autoencoder to a denoising task only affects the training stage. In this example, we add noise to the Fashion MNIST data from a standard normal distribution while maintaining the pixel values in the range of [0, 1], as follows:"
    654    ]
    655   },
    656   {
    657    "cell_type": "code",
    658    "execution_count": 22,
    659    "metadata": {},
    660    "outputs": [],
    661    "source": [
    662     "def add_noise(x, noise_factor=.3):\n",
    663     "    return np.clip(x  + noise_factor * np.random.normal(size=x.shape), 0, 1)"
    664    ]
    665   },
    666   {
    667    "cell_type": "code",
    668    "execution_count": 23,
    669    "metadata": {},
    670    "outputs": [],
    671    "source": [
    672     "X_train_noisy = add_noise(X_train_scaled)\n",
    673     "X_test_noisy = add_noise(X_test_scaled)"
    674    ]
    675   },
    676   {
    677    "cell_type": "code",
    678    "execution_count": 24,
    679    "metadata": {},
    680    "outputs": [
    681     {
    682      "data": {
    683       "image/png": "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\n",
    684       "text/plain": [
    685        "<Figure size 1440x288 with 10 Axes>"
    686       ]
    687      },
    688      "metadata": {},
    689      "output_type": "display_data"
    690     }
    691    ],
    692    "source": [
    693     "fig, axes = plt.subplots(nrows=2, ncols=5, figsize=(20, 4))\n",
    694     "axes = axes.flatten()\n",
    695     "for i, ax in enumerate(axes):\n",
    696     "    ax.imshow(X_test_noisy[i].reshape(28, 28), cmap='gray')\n",
    697     "    ax.axis('off')"
    698    ]
    699   },
    700   {
    701    "cell_type": "code",
    702    "execution_count": 25,
    703    "metadata": {},
    704    "outputs": [],
    705    "source": [
    706     "x = Conv2D(filters=32, kernel_size=(3, 3), activation='relu', padding='same', name='Encoding_Conv_1')(input_)\n",
    707     "x = MaxPooling2D(pool_size=(2, 2), padding='same', name='Encoding_Max_1')(x)\n",
    708     "x = Conv2D(filters=32, kernel_size=(3, 3), activation='relu', padding='same', name='Encoding_Conv_2')(x)\n",
    709     "encoded_conv = MaxPooling2D(pool_size=(2, 2), padding='same', name='Encoding_Max_3')(x)"
    710    ]
    711   },
    712   {
    713    "cell_type": "code",
    714    "execution_count": 26,
    715    "metadata": {},
    716    "outputs": [],
    717    "source": [
    718     "x = Conv2D(filters=32, kernel_size=(3, 3), activation='relu', padding='same', name='Decoding_Conv_1')(encoded_conv)\n",
    719     "x = UpSampling2D(size=(2, 2), name='Decoding_Upsample_1')(x)\n",
    720     "x = Conv2D(filters=32, kernel_size=(3, 3), activation='relu', padding='same', name='Decoding_Conv_2')(x)\n",
    721     "x = UpSampling2D(size=(2, 2), name='Decoding_Upsample_2')(x)\n",
    722     "decoded_conv = Conv2D(filters=1, kernel_size=(3, 3), activation='sigmoid', padding='same', name='Decoding_Conv_4')(x)"
    723    ]
    724   },
    725   {
    726    "cell_type": "code",
    727    "execution_count": 27,
    728    "metadata": {},
    729    "outputs": [],
    730    "source": [
    731     "autoencoder_denoise = Model(input_, decoded_conv)\n",
    732     "autoencoder_denoise.compile(optimizer='adam', loss='mse')"
    733    ]
    734   },
    735   {
    736    "cell_type": "code",
    737    "execution_count": 28,
    738    "metadata": {},
    739    "outputs": [],
    740    "source": [
    741     "path = 'models/fashion_mnist.autencoder_denoise.32.weights'"
    742    ]
    743   },
    744   {
    745    "cell_type": "code",
    746    "execution_count": 29,
    747    "metadata": {},
    748    "outputs": [],
    749    "source": [
    750     "callbacks = [EarlyStopping(patience=5, restore_best_weights=True),\n",
    751     "                 ModelCheckpoint(filepath=path, save_best_only=True, save_weights_only=True)]"
    752    ]
    753   },
    754   {
    755    "cell_type": "markdown",
    756    "metadata": {},
    757    "source": [
    758     "We then proceed to train the convolutional autoencoder on noisy input with the objective to learn how to generate the uncorrupted originals:"
    759    ]
    760   },
    761   {
    762    "cell_type": "code",
    763    "execution_count": 30,
    764    "metadata": {
    765     "scrolled": false
    766    },
    767    "outputs": [
    768     {
    769      "name": "stdout",
    770      "output_type": "stream",
    771      "text": [
    772       "Train on 54000 samples, validate on 6000 samples\n",
    773       "Epoch 1/100\n",
    774       "54000/54000 [==============================] - 17s 322us/step - loss: 0.0251 - val_loss: 0.0158\n",
    775       "Epoch 2/100\n",
    776       "54000/54000 [==============================] - 17s 313us/step - loss: 0.0147 - val_loss: 0.0141\n",
    777       "Epoch 3/100\n",
    778       "54000/54000 [==============================] - 17s 319us/step - loss: 0.0133 - val_loss: 0.0127\n",
    779       "Epoch 4/100\n",
    780       "54000/54000 [==============================] - 17s 324us/step - loss: 0.0124 - val_loss: 0.0119\n",
    781       "Epoch 5/100\n",
    782       "54000/54000 [==============================] - 17s 309us/step - loss: 0.0117 - val_loss: 0.0114\n",
    783       "Epoch 6/100\n",
    784       "54000/54000 [==============================] - 17s 320us/step - loss: 0.0112 - val_loss: 0.0109\n",
    785       "Epoch 7/100\n",
    786       "54000/54000 [==============================] - 17s 316us/step - loss: 0.0108 - val_loss: 0.0105\n",
    787       "Epoch 8/100\n",
    788       "54000/54000 [==============================] - 17s 318us/step - loss: 0.0105 - val_loss: 0.0103\n",
    789       "Epoch 9/100\n",
    790       "54000/54000 [==============================] - 18s 324us/step - loss: 0.0103 - val_loss: 0.0102\n",
    791       "Epoch 10/100\n",
    792       "54000/54000 [==============================] - 16s 304us/step - loss: 0.0101 - val_loss: 0.0100\n",
    793       "Epoch 11/100\n",
    794       "54000/54000 [==============================] - 17s 306us/step - loss: 0.0100 - val_loss: 0.0099\n",
    795       "Epoch 12/100\n",
    796       "54000/54000 [==============================] - 17s 318us/step - loss: 0.0099 - val_loss: 0.0098\n",
    797       "Epoch 13/100\n",
    798       "54000/54000 [==============================] - 17s 310us/step - loss: 0.0097 - val_loss: 0.0097\n",
    799       "Epoch 14/100\n",
    800       "54000/54000 [==============================] - 17s 310us/step - loss: 0.0096 - val_loss: 0.0095\n",
    801       "Epoch 15/100\n",
    802       "54000/54000 [==============================] - 17s 314us/step - loss: 0.0095 - val_loss: 0.0095\n",
    803       "Epoch 16/100\n",
    804       "54000/54000 [==============================] - 17s 320us/step - loss: 0.0095 - val_loss: 0.0094\n",
    805       "Epoch 17/100\n",
    806       "54000/54000 [==============================] - 18s 336us/step - loss: 0.0094 - val_loss: 0.0094\n",
    807       "Epoch 18/100\n",
    808       "54000/54000 [==============================] - 19s 343us/step - loss: 0.0093 - val_loss: 0.0093\n",
    809       "Epoch 19/100\n",
    810       "54000/54000 [==============================] - 18s 339us/step - loss: 0.0093 - val_loss: 0.0092\n",
    811       "Epoch 20/100\n",
    812       "54000/54000 [==============================] - 17s 321us/step - loss: 0.0092 - val_loss: 0.0092\n",
    813       "Epoch 21/100\n",
    814       "54000/54000 [==============================] - 20s 370us/step - loss: 0.0092 - val_loss: 0.0091\n",
    815       "Epoch 22/100\n",
    816       "54000/54000 [==============================] - 18s 329us/step - loss: 0.0091 - val_loss: 0.0091\n",
    817       "Epoch 23/100\n",
    818       "54000/54000 [==============================] - 19s 353us/step - loss: 0.0091 - val_loss: 0.0091\n",
    819       "Epoch 24/100\n",
    820       "54000/54000 [==============================] - 17s 306us/step - loss: 0.0091 - val_loss: 0.0091\n",
    821       "Epoch 25/100\n",
    822       "54000/54000 [==============================] - 17s 310us/step - loss: 0.0090 - val_loss: 0.0090\n",
    823       "Epoch 26/100\n",
    824       "54000/54000 [==============================] - 16s 303us/step - loss: 0.0090 - val_loss: 0.0089\n",
    825       "Epoch 27/100\n",
    826       "54000/54000 [==============================] - 16s 293us/step - loss: 0.0090 - val_loss: 0.0090\n",
    827       "Epoch 28/100\n",
    828       "54000/54000 [==============================] - 16s 298us/step - loss: 0.0090 - val_loss: 0.0089\n",
    829       "Epoch 29/100\n",
    830       "54000/54000 [==============================] - 20s 361us/step - loss: 0.0089 - val_loss: 0.0089\n",
    831       "Epoch 30/100\n",
    832       "54000/54000 [==============================] - 16s 300us/step - loss: 0.0089 - val_loss: 0.0089\n",
    833       "Epoch 31/100\n",
    834       "54000/54000 [==============================] - 16s 299us/step - loss: 0.0089 - val_loss: 0.0089\n",
    835       "Epoch 32/100\n",
    836       "54000/54000 [==============================] - 16s 296us/step - loss: 0.0089 - val_loss: 0.0088\n",
    837       "Epoch 33/100\n",
    838       "54000/54000 [==============================] - 19s 352us/step - loss: 0.0088 - val_loss: 0.0089\n",
    839       "Epoch 34/100\n",
    840       "54000/54000 [==============================] - 17s 320us/step - loss: 0.0088 - val_loss: 0.0089\n",
    841       "Epoch 35/100\n",
    842       "54000/54000 [==============================] - 18s 325us/step - loss: 0.0088 - val_loss: 0.0088\n",
    843       "Epoch 36/100\n",
    844       "54000/54000 [==============================] - 17s 316us/step - loss: 0.0088 - val_loss: 0.0088\n",
    845       "Epoch 37/100\n",
    846       "54000/54000 [==============================] - 17s 306us/step - loss: 0.0088 - val_loss: 0.0088\n",
    847       "Epoch 38/100\n",
    848       "54000/54000 [==============================] - 16s 304us/step - loss: 0.0088 - val_loss: 0.0087\n",
    849       "Epoch 39/100\n",
    850       "54000/54000 [==============================] - 17s 306us/step - loss: 0.0087 - val_loss: 0.0087\n",
    851       "Epoch 40/100\n",
    852       "54000/54000 [==============================] - 17s 321us/step - loss: 0.0087 - val_loss: 0.0087\n",
    853       "Epoch 41/100\n",
    854       "54000/54000 [==============================] - 17s 308us/step - loss: 0.0087 - val_loss: 0.0088\n",
    855       "Epoch 42/100\n",
    856       "54000/54000 [==============================] - 17s 324us/step - loss: 0.0087 - val_loss: 0.0087\n",
    857       "Epoch 43/100\n",
    858       "54000/54000 [==============================] - 16s 293us/step - loss: 0.0087 - val_loss: 0.0087\n",
    859       "Epoch 44/100\n",
    860       "54000/54000 [==============================] - 16s 293us/step - loss: 0.0087 - val_loss: 0.0087\n",
    861       "Epoch 45/100\n",
    862       "54000/54000 [==============================] - 16s 288us/step - loss: 0.0087 - val_loss: 0.0087\n",
    863       "Epoch 46/100\n",
    864       "54000/54000 [==============================] - 16s 288us/step - loss: 0.0087 - val_loss: 0.0086\n",
    865       "Epoch 47/100\n",
    866       "54000/54000 [==============================] - 16s 290us/step - loss: 0.0087 - val_loss: 0.0087\n",
    867       "Epoch 48/100\n",
    868       "54000/54000 [==============================] - 16s 292us/step - loss: 0.0086 - val_loss: 0.0088\n",
    869       "Epoch 49/100\n",
    870       "54000/54000 [==============================] - 16s 290us/step - loss: 0.0086 - val_loss: 0.0086\n",
    871       "Epoch 50/100\n",
    872       "54000/54000 [==============================] - 16s 288us/step - loss: 0.0086 - val_loss: 0.0086\n",
    873       "Epoch 51/100\n",
    874       "54000/54000 [==============================] - 15s 285us/step - loss: 0.0086 - val_loss: 0.0086\n",
    875       "Epoch 52/100\n",
    876       "54000/54000 [==============================] - 16s 287us/step - loss: 0.0086 - val_loss: 0.0086\n",
    877       "Epoch 53/100\n",
    878       "54000/54000 [==============================] - 16s 288us/step - loss: 0.0086 - val_loss: 0.0087\n",
    879       "Epoch 54/100\n",
    880       "54000/54000 [==============================] - 16s 288us/step - loss: 0.0086 - val_loss: 0.0086\n",
    881       "Epoch 55/100\n",
    882       "54000/54000 [==============================] - 16s 289us/step - loss: 0.0086 - val_loss: 0.0087\n",
    883       "Epoch 56/100\n",
    884       "54000/54000 [==============================] - 15s 286us/step - loss: 0.0086 - val_loss: 0.0086\n",
    885       "Epoch 57/100\n",
    886       "54000/54000 [==============================] - 16s 294us/step - loss: 0.0086 - val_loss: 0.0086\n",
    887       "Epoch 58/100\n",
    888       "54000/54000 [==============================] - 16s 295us/step - loss: 0.0086 - val_loss: 0.0086\n",
    889       "Epoch 59/100\n",
    890       "54000/54000 [==============================] - 16s 292us/step - loss: 0.0086 - val_loss: 0.0086\n",
    891       "Epoch 60/100\n",
    892       "54000/54000 [==============================] - 16s 293us/step - loss: 0.0085 - val_loss: 0.0086\n",
    893       "Epoch 61/100\n",
    894       "54000/54000 [==============================] - 16s 294us/step - loss: 0.0085 - val_loss: 0.0086\n",
    895       "Epoch 62/100\n",
    896       "54000/54000 [==============================] - 16s 295us/step - loss: 0.0085 - val_loss: 0.0086\n",
    897       "Epoch 63/100\n",
    898       "54000/54000 [==============================] - 16s 293us/step - loss: 0.0085 - val_loss: 0.0085\n",
    899       "Epoch 64/100\n",
    900       "54000/54000 [==============================] - 16s 293us/step - loss: 0.0085 - val_loss: 0.0085\n",
    901       "Epoch 65/100\n",
    902       "54000/54000 [==============================] - 16s 291us/step - loss: 0.0085 - val_loss: 0.0085\n",
    903       "Epoch 66/100\n",
    904       "54000/54000 [==============================] - 16s 291us/step - loss: 0.0085 - val_loss: 0.0085\n",
    905       "Epoch 67/100\n",
    906       "54000/54000 [==============================] - 16s 291us/step - loss: 0.0085 - val_loss: 0.0086\n",
    907       "Epoch 68/100\n",
    908       "54000/54000 [==============================] - 16s 294us/step - loss: 0.0085 - val_loss: 0.0085\n",
    909       "Epoch 69/100\n",
    910       "54000/54000 [==============================] - 16s 292us/step - loss: 0.0085 - val_loss: 0.0085\n",
    911       "Epoch 70/100\n",
    912       "54000/54000 [==============================] - 16s 292us/step - loss: 0.0085 - val_loss: 0.0085\n"
    913      ]
    914     },
    915     {
    916      "data": {
    917       "text/plain": [
    918        "<keras.callbacks.History at 0x7f2a0d71a400>"
    919       ]
    920      },
    921      "execution_count": 30,
    922      "metadata": {},
    923      "output_type": "execute_result"
    924     }
    925    ],
    926    "source": [
    927     "autoencoder_denoise.fit(x=X_train_noisy,\n",
    928     "                        y=X_train_scaled,\n",
    929     "                        epochs=100,\n",
    930     "                        batch_size=128,\n",
    931     "                        shuffle=True,\n",
    932     "                        validation_split=.1,\n",
    933     "                        callbacks=callbacks)"
    934    ]
    935   },
    936   {
    937    "cell_type": "code",
    938    "execution_count": 31,
    939    "metadata": {},
    940    "outputs": [],
    941    "source": [
    942     "autoencoder_denoise.load_weights(path)"
    943    ]
    944   },
    945   {
    946    "cell_type": "code",
    947    "execution_count": 32,
    948    "metadata": {},
    949    "outputs": [
    950     {
    951      "name": "stdout",
    952      "output_type": "stream",
    953      "text": [
    954       "10000/10000 [==============================] - 1s 106us/step\n"
    955      ]
    956     },
    957     {
    958      "data": {
    959       "text/plain": [
    960        "'MSE: 0.0086 | RMSE 0.0925'"
    961       ]
    962      },
    963      "execution_count": 32,
    964      "metadata": {},
    965      "output_type": "execute_result"
    966     }
    967    ],
    968    "source": [
    969     "mse = autoencoder_denoise.evaluate(x=X_test_noisy, y=X_test_scaled)\n",
    970     "f'MSE: {mse:.4f} | RMSE {mse**.5:.4f}'"
    971    ]
    972   },
    973   {
    974    "cell_type": "markdown",
    975    "metadata": {},
    976    "source": [
    977     "## Visualize Reconstructed Images"
    978    ]
    979   },
    980   {
    981    "cell_type": "markdown",
    982    "metadata": {},
    983    "source": [
    984     "The following figure shows, from top to bottom, the original images as well as the noisy and denoised versions. It illustrates that the autoencoder is successful in producing compressed encodings from the noisy images that are quite similar to those produced from the original images:"
    985    ]
    986   },
    987   {
    988    "cell_type": "code",
    989    "execution_count": 33,
    990    "metadata": {},
    991    "outputs": [
    992     {
    993      "data": {
    994       "text/plain": [
    995        "(10000, 28, 28, 1)"
    996       ]
    997      },
    998      "execution_count": 33,
    999      "metadata": {},
   1000      "output_type": "execute_result"
   1001     }
   1002    ],
   1003    "source": [
   1004     "reconstructed_images = autoencoder_denoise.predict(X_test_noisy)\n",
   1005     "reconstructed_images.shape"
   1006    ]
   1007   },
   1008   {
   1009    "cell_type": "code",
   1010    "execution_count": 34,
   1011    "metadata": {},
   1012    "outputs": [
   1013     {
   1014      "data": {
   1015       "image/png": "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rFy5Et9++y0eeuihfH0viYiISLCIiIjoqomPj7cAWB9//LHP53bv3t0CYI0YMcJ+bOLEiRYAy8/Pz5o9e7bX1wGw4uLijMd69eplAbAGDx5sPL527VorMDDQAmANHTrUaIuLi7P0pcGCBQssABYAa+LEiUbbhx9+aAGw+vXrZzx+9OhRKz093WM7165daxUpUsRq37698fiePXssANbjjz9uPzZz5kwLgPXss896LOfChQtel59b+/fvtwBY/v7+1rlz5/L02j59+lgArD59+ljZ2dn249u3b7dCQkKswMBAa8+ePfbj8v378MMPvS6zcuXKFgCrdevW1pkzZzzaH3/8cQuAsVy9fKd9WaNGDevEiRP24+fOnbMaN25sAbC++OIL4zXe+lGObdu2WQEBAVa1atWsgwcPGm3z58+3ChQoYN133332Y9nZ2VZUVJQFwJo+fbrx/HHjxtnvyYIFC7yuTzt48KB1/vx5j8fnzp1rFShQwOrbt6/x+OX026eeesprn1u5cqXl7+/v9X12krN+b+/niBEjLABWnTp1PNqGDh1qAbAGDBhgXbx40X784sWL9jEt389NmzZZ/v7+VlhYmLVx40aP5R04cMAuJyYmWgCsiIgIKzk52X48KyvLuueeeywA1ptvvmm8PqdvdujQwcrIyLAfP3r0qBUaGmqFhoZamZmZ9uN33nmnFRgYaB09etRjW44dO2bUvY033tadn8dFbGysBcB66623vG6fHA/cti8rK8uqVq2aFRQUZC1cuNBoO3TokFW+fHmrXLlyRp+9Fv0r53xRsGBBY7suXbpktWnTxgJghYWFWV999ZXxOm99y7Isa+/evUY/zPHpp59aAKzRo0cbjw8fPtwCYD388MPG+Lh//36rVKlSHuO8Zf3ffhwzZozx+Llz56yEhATLz8/PWrNmjf14iRIlrAoVKlhnz5712C7dx4iIiCh/Mc6CiIjoKkpOTgYARERE+HxuznO8RQN07twZ7du3z9U6MzMzMXnyZISGhuK1114z2urWrYsePXrkajlS06ZNPaYh9+rVC/7+/lixYoXxeJkyZYxvp8l1x8fHY8GCBcjKysrVegsVKuTxWGBgoNfl51bOPilZsiSCg4Nz/bqsrCx89dVXKFq0KEaNGmVEf9SoUQPPPPMMMjMz8cUXX3i8NiYmxus3lKV3330XRYoUyfX2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IUPw/fffo2XLlrAsCzt27MAvv/yCrVu32jdP3bYvICAAP/zwAxISEnD33XcjNjYWMTExKFy4MA4cOICVK1di9+7dSE5Otm9qXsv+lR/uuusuNG3aFD/88ANiY2PRrFkzHD16FLNnz0ZUVJSdLS8NHjwY06dPxzfffINt27bZx+rUqVPRokULr+ed8ePHY8eOHfjf//1ffPnll2jWrBnKli2Lw4cPY8uWLVi5ciUmT56MKlWq4Ny5c2jTpg0iIyPRqFEjVK5cGefPn8e8efOwZcsWdOrUCbVr175WbxEREdFfj0VERETXxPLly60ePXpYkZGRVnBwsFWkSBErOjraeuGFF6wDBw54fc3EiRMtANbEiRMdlwvAiouL83j84MGDVo8ePaxSpUpZwcHBVt26da1JkyZZ3377rQXAGjt2rPH8uLg4S18aLFiwwAJgDR061Ou6K1eubFWuXNl4LCsry3r33Xet2rVrW8HBwVbZsmWtv/3tb9bevXutxx9/3AJg7dmzx37+nj17LADW448/bj+2efNm67nnnrPq169vlSpVygoMDLQqV65sde3a1Vq6dKmxvuzsbKtEiRJWZGSklZWV5fg+eXPp0iVr6tSp1v33329VqFDBCgoKsgoVKmRFRUVZvXv39liXZVnWyZMnrcGDB1vVq1e3AgMDrdDQUKtNmzbW3LlzPZ7r6/2zLO/vobZ//37rwQcftMLCwqzg4GCrQYMG1vfff++4/Jx9ef78eevVV1+1IiMjrcDAQKtKlSrWsGHDrPPnz3us4+jRo9YjjzxilSlTxipQoIDX5a5fv956/PHHrUqVKlmBgYFWWFiYFR0dbfXp08eaP3++xzKTkpKshIQEq2jRolbRokWt1q1bW4mJidbQoUMtANaCBQtc/+4cZ8+etYYMGWJVq1bNCgoKsipWrGj179/fSk1Nzbd+a1mWlZycbPXs2dM4ZiZOnJir/eht/d6OyxwzZ860AFgNGjQwHs/Ozra++OILKz4+3goLC7MCAgKs8uXLW02bNrXefPNNa//+/R7LSkxMtLp06WKVLl3aCggIsMLDw62EhATr22+/9Xju5MmTraZNm1pFixa1goKCrNtuu80aOXKkde7cOY/nuvVNb/vwgw8+sO677z6rSpUqVqFChaywsDArJibGGjNmjJWenm68/uLFi9Yrr7xiValSxfL39/d4v67GcWFZlpWammoNHjzYqlmzphUUFGSFhoZadevWtYYMGWKdPXs219tnWX8eM3//+9+t6Ohoq1ChQlaRIkWs6tWrW127drW+/PJLj/Hoavcvt/OF2zq8jcGWZVnHjx+3+vXrZ1WuXNkKCgqyqlatar3yyivW2bNnHffPyZMnrYEDB1rh4eFWYGCgFRUVZb3zzjvW8uXLLQDWoEGDPF5z4cIF61//+pfVpEkTKyQkxAoMDLQiIiKs+Ph4a+zYsVZqaqplWZaVmZlpjRkzxmrfvr0VERFhBQUFWaVKlbIaNWpkffDBB9aFCxdy9f4RERGuG5/dAAAgAElEQVTR5fGzLDUfiIiIiG5pr776Kt566y3MmTPH/gbkzWz9+vWoW7cu/v3vf6N///7Xe3NuCC1btsSiRYs8pn0TEV0Pn3zyCfr06YMPP/wQTz/99PXeHCIiIroMzEQmIiK6RR0+fNjjsQ0bNuD9999HiRIlrvgH/G4UixYtQtmyZe3MVyIiuj68nXcOHDiAESNGwN/fH/fcc8912CoiIiLKD8xEJiIiukU1aNAA1atXR506dVCkSBHs2LEDP/30E7Kzs/Hhhx8iODj4em9ivhg4cCAGDhx4vTeDiOgvr2vXrsjKykL9+vVRvHhx7N27Fz/++CMyMjIwatQoVKhQ4XpvIhEREV0m3kQmIiK6RT399NOYPn06Jk+ejNOnT6N48eJISEjAiy++iJYtW17vzSMiolvMY489hi+//BLff/890tLSULRoUTRq1AgDBgxAly5drvfmERER0RVgJjIREREREREREREROWImMhERERERERERERE54k1kIiIiIiIiIiIiInLEm8hERERERERERERE5Ig3kYmIiIiIiIiIiIjIEW8iExEREREREREREZEj3kQmIiIiIiIiIiIiIke8iUxEREREREREREREjngTmYiIiIiIiIiIiIgc8SYyERERERERERERETniTWQiIiIiIiIiIiIicsSbyERERERERERERETkiDeRiYiIiIiIiIiIiMgRbyITERERERERERERkSPeRCYiIiIiIiIiIiIiR/7XcmV+fn7XcnWUB5ZlXe9NcHUj9p1ixYrZ5YYNGxpt8+fPv+zl3nnnnUb9zJkzdnn79u2XvdyrhX3H9zr1e9S6dWu7/Mwzzxhta9euNerlypWzyzt37jTaihYtatTD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uVGXOcI651h+ngXMc4POVta/HVK8eHG7XKxYMaNN9x3dR+VnRP35XObBA2b+v87h13nQ+jMYEV0f8nyRl/OQpvPUV6xYYZf1Z/XVq1cbdX3ekZ/P//Wvfxlt9913X663yS0D+bHHHjPqDz30kFGXY6X+bYzc4DeRiYiIiIiIiIiIiMgRbyITERERERERERERkSPGWbjQ06XkV8b1FJcHHnjAqOspnMHBwXZZT7XRUQhyvbotOjraqB84cMAunzx50mjT00b/quT0I01ODQfMaU9u03sB4M0337TLAQEBRlu7du2Met26de1ynTp1jDbdH/SUAhmFMWXKFKMtJiYGTvT2679VbzNdPTo6QvYlX8fpggULHNv++OMPoy7jTAD36cFuURd049DHrZzS72tallvcxblz54y6nLIOAGfPnrXLnEp+bcmIAP1ep6enG/WgoCC7rCOtdN+RY41erh4rZF+S6/D23NOnTxt1OfVYTw/X09/l36OnGevpwfLayO3cR3mj+40eG2Rf0OcrfR0xbtw4x/Xo6d+6f8r9q8cct0gFyl/y8wrg+V7LY7ps2bJGm44dkNEoOq5An3PkPtfr1Pvfre/oMTIuLs6or1mzxi7rc6ZbxB15Jz/TPPzww0abnuIt3189dugYHXn94haxo+u+Ptvoa195nvF1rSP74Zw5c4w2HXnYqlUru/zll1+6bhP5JscPHYWi78nIyK0NGzYYbU8//bRRl/vm8OHDRpvud/o+i6TvGekxyo0ed/ISsfBX4fYe+Xr/3PaFHkvkcawjKf75z38a9bffftsur1+/3miLjIw06rqPbt682S63bdvWaNNROKNGjbLLOgJXj1lNmza1yzryVD933bp1dvnQoUPIK34TmYiIiIiIiIiIiIgc8SYyERERERERERERETniTWQiIiIiIiIiIiIicnRLhOa6ZaHojBq3DEmd8+eWuda3b1+jfuTIEaOucwBlNorOGzt69KhRl9uhc1xkTiVg5jPpXDudYyjzWPRybmXh4eGObW65ar7yuoYMGeK4XP1cuY9vu+02542FZ1+Smc66X2lu/dktEygvfZ/yl+5nOrNI56tLe/fuNerNmjUz6m75frqP0o0pNTXVqLud33S2l9t4ofOSdV+Rr9VZWXnJeqO8K1q0qF3WWaA6k09m/82YMcNxOYDZd2S2NuB5vSDreozS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\n",
   1016       "text/plain": [
   1017        "<Figure size 1440x432 with 30 Axes>"
   1018       ]
   1019      },
   1020      "metadata": {},
   1021      "output_type": "display_data"
   1022     }
   1023    ],
   1024    "source": [
   1025     "fig, axes = plt.subplots(ncols=n_classes, nrows=3, figsize=(20, 6))\n",
   1026     "for i in range(n_classes):\n",
   1027     "    axes[0, i].imshow(X_test[i].reshape(image_size, image_size), cmap='gray')\n",
   1028     "    axes[0, i].axis('off')\n",
   1029     "    \n",
   1030     "    axes[1, i].imshow(X_test_noisy[i].reshape(image_size, image_size), cmap='gray')\n",
   1031     "    axes[1, i].axis('off')\n",
   1032     "\n",
   1033     "    axes[2, i].imshow(reconstructed_images[i].reshape(image_size, image_size) , cmap='gray')\n",
   1034     "    axes[2, i].axis('off')\n",
   1035     "fig.suptitle('Originals, Corrupted and Reconstructed Images', fontsize=20)\n",
   1036     "fig.tight_layout()\n",
   1037     "fig.subplots_adjust(top=.9)\n",
   1038     "fig.savefig('figures/autoencoder_denoising', dpi=300)"
   1039    ]
   1040   }
   1041  ],
   1042  "metadata": {
   1043   "kernelspec": {
   1044    "display_name": "Python 3",
   1045    "language": "python",
   1046    "name": "python3"
   1047   },
   1048   "language_info": {
   1049    "codemirror_mode": {
   1050     "name": "ipython",
   1051     "version": 3
   1052    },
   1053    "file_extension": ".py",
   1054    "mimetype": "text/x-python",
   1055    "name": "python",
   1056    "nbconvert_exporter": "python",
   1057    "pygments_lexer": "ipython3",
   1058    "version": "3.6.8"
   1059   },
   1060   "toc": {
   1061    "base_numbering": 1,
   1062    "nav_menu": {},
   1063    "number_sections": true,
   1064    "sideBar": true,
   1065    "skip_h1_title": true,
   1066    "title_cell": "Table of Contents",
   1067    "title_sidebar": "Contents",
   1068    "toc_cell": false,
   1069    "toc_position": {},
   1070    "toc_section_display": true,
   1071    "toc_window_display": true
   1072   }
   1073  },
   1074  "nbformat": 4,
   1075  "nbformat_minor": 2
   1076 }