Commit a9cae3d7 authored by William Stonewall Monroe's avatar William Stonewall Monroe
Browse files

Added some comments

parent 5fdb6c78
%% Cell type:markdown id: tags:
# First lets get our data!
%% Cell type:code id: tags:
``` python
from keras.datasets import mnist
import numpy as np
(x_train, _), (x_test, _) = mnist.load_data()
x_train = x_train.astype('float32') / 255.
x_test = x_test.astype('float32') / 255.
x_train = np.reshape(x_train, (len(x_train), 28, 28, 1)) # adapt this if using `channels_first` image data format
x_test = np.reshape(x_test, (len(x_test), 28, 28, 1)) # adapt this if using `channels_first` image data format
noise_factor = 0.5
x_train_noisy = x_train + noise_factor * np.random.normal(loc=0.0, scale=1.0, size=x_train.shape)
x_test_noisy = x_test + noise_factor * np.random.normal(loc=0.0, scale=1.0, size=x_test.shape)
x_train_noisy = np.clip(x_train_noisy, 0., 1.)
x_test_noisy = np.clip(x_test_noisy, 0., 1.)
```
%%%% Output: stream
Using TensorFlow backend.
%% Cell type:markdown id: tags:
# Let's look at some of our data
%% Cell type:code id: tags:
``` python
# use Matplotlib (don't ask)
import matplotlib.pyplot as plt ##wsm
n = 10
plt.figure(figsize=(20, 2))
for i in range(1,n): ##wsm changed from for i in range(n):
ax = plt.subplot(1, n, i)
plt.imshow(x_test_noisy[i].reshape(28, 28))
plt.gray()
ax.get_xaxis().set_visible(False)
ax.get_yaxis().set_visible(False)
plt.show()
```
%%%% Output: display_data
![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA/8AAABzCAYAAADOmLJoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJztnXmgVWX5/ZfIKAIOyJBDAg6hgT+ENDXNodTU0kzTyIavZqHmkJaYU5pDqSVqliNaZqbmlKJmDlmJmCEKKqGiYkqggBoIDoDn94ff/bqede9+2feyL327rs9fz+Hd55x9997vdHjWs1ZqNBowxhhjjDHGGGNM+6XDf/oEjDHGGGOMMcYY07Z482+MMcYYY4wxxrRzvPk3xhhjjDHGGGPaOd78G2OMMcYYY4wx7Rxv/o0xxhhjjDHGmHaON//GGGOMMcYYY0w7x5t/Y4wxxhhjjDGmnePNvzHGGGOMMcYY087x5t8YY4wxxhhjjGnndGzJwSuttFKjrG2ttdZK8Zw5c0o/Y5VVVknxokWLQtuqq66a4jfeeKP0M3r06JHiBQsWlB7XrVu3FL/55puhrU+fPil+5ZVXKp3vRhttFNoee+yx0vf17NkzxWuuuWaKn3/++dL3rL322uH1zJkzU9xoNFYqfWML4Hu43nrrhbZ//vOflT5jjTXWKG176623UtyrV6/QNmvWrGbfw88OUP789O/fP7zu0OH9367mzZtXeh7Dhw9P8SOPPNLsZy+L3HPLdO/ePbzmZ3Du3LlzG43GWvqe1tCzZ89Gcd2ee+650LbJJpuk+KmnngptHTu+3+U/+tGPplivS6dOnVK8ePHi0vPge6LXha/Zhz70odLv6tevX4q13/N9XH311VPctWvXcNzSpUtT/K9//Su08f1/7bXXUqzXjeG/HwCWLFkCAGg0Gm3SF1vLuuuum+IXX3yx9Di+BgDwwgsvpHju3Lml7+NnaerUqSnmMRjIj8M8rvMzwn0DABYuXJhiHZt4TNCxvAx+1oE4Dr/88su19cXW3kceK/hvz6H3kftSly5dUtxoxFN69913U8z9SMda7s9l4zUAfOQjH0nxtGnTQhtf96Lf1Ekxbs2cOROvvvpq7X1x2LBhoe3RRx+t9Bk8H/H1XhaDBg1KMa8P+H4C8blfaaX3/2y91wwflzt25ZVXDq95PM09c0znzp1Lv5uvDdCkD9fWF7t169Yo1h0vv/xyaNtggw1SPH369NDGa6/Zs2enWM87NxfyPPbqq6+Wvid3vxheZ/HnAfHZePvtt1PM8wGQnxN4Pfv00083++8A8Prrr6c4t1b+vzQv5ii7dkB8hvn51eNaA8+DQJzj+P7++9//Dsfl5ruysbZv377hOJ7juW8DQO/evfm4FT4v6jzNf8fAgQNTrOfN+xXtU2V7ydw4x+j6ktehOTbbbLMUP/vss6Ett6etuvfl4z784Q+HthkzZgB471ldvHjxMvviSlUHIiB/M7/97W+n+MILLyz9jNxG7BOf+ESKH3jggdLP2GmnnVJ87733lh7HN2Ly5Mmh7Tvf+U6Kx4wZU/oZI0aMKP0u3dwyu+yyS4oPOOCAFH/lK18pfc9ZZ50VXo8ePTrFdQ6sxaB20UUXhTa+h7lFG/892nl4Etljjz1C26mnntrs540aNSq8vvjii5s97sQTTwyvuSP8+te/Dm1PPvlkivkZ18VQVfg5mDhxYulxH//4x8PrTTfdNMVjx459pNFojND3tIZBgwY1fvzjHwMAvvjFL4Y2/lHqk5/8ZGjjgZ4XQHpdeLOum2nmBz/4QYr1uvA1O+WUU0q/i5/zhx56KLTxxmLvvfdOMW8+gDhgnnDCCaGN7//vfve7FOt1Y/SHpmIB9NZbb+Hdd9/9P7PIOe+881J81FFHlR6n4/y3vvWtFF966aWl73v88cdTPGTIkBTvsMMO4bg//elPpZ/B4/qkSZNSrJus8ePHp/iSSy4JbTxW5X50ZXQB9LWvfS3FZ599dm19sbX3ceutt07xgw8+WOk9eh+5L2288cYp1sUq/7iw3377pVjnau6nHCvcT3XMq/ofAa2lWFTtueeeePzxx2vvi/pDlv7QVUbVH4iVm266KcVf//rXU7z++uuH46ZMmZJi3qS88847pZ9ddRHLPwgB8UfS3DPH8EJdj9MfxflvAVBbX+zXr1+jWGP95Cc/CW233XZbij/72c+Gth/96EcpPvvss1PM9xSI/yGjfP/730/xb37zmxTrjxBVN5Jf+tKXUvzb3/42tHFf5x/4zz///HDckUceWfr5vJ7lNfX9998fjrvxxhtT/LOf/az08/4vbf5zP0DmfgTiDTn/B4Bu5FqDrsV47L3mmmtSfPvtt4fjpK8EZOOe4mOOOSYc98tf/jLF+h9lvBa45JJLVvi8mPvPP16vzZ8/Pxx36KGHplj7VNleUvds+kNLAf+nBxD7WNkPBkC8tnvuuWdoy+1pq+59t9tuuxTrPunAAw8E8N6a7Y033lhmX2zp//ynyUR/jcpt+I877rgU//znPy897lOf+lSKdXHPv3LwpvKuu+4Kx02YMCHF3GH112ve8OsvcryR4A2NPjg777xzinfcccfQtsUWW6SYHwh+DwD88Y9/TDFnIwDAIYccAgC44YYbUCfFZH7ttdeGf7/gggtS/Le//S208QN/9dVXl342n+vYsWNDG2/+edNYttlX9Accnsxz5Db8PDnyRgoAfvjDH6aYzzeHbl71dV0899xzafOqk8X/+3//r/R9PNj9z//8T+lxvOHnH4WA2Nd5UtH/yeX/xeJ7z4saoOmPXmVwn9Jz58H68MMPD21l9//MM88Mr48//vgU5/7Xsy7WXXddHHvssQCa9hXe4PL/WANxPMn9jzszYMCA8Lr4lVjhH0WB2O95It53330rfS8Q7wdvPHmzr/CCBIiLTr2/ZeiimzfbdbLuuuviu9/9LoCmi+3cD4/84zRv/nVO4w1bbizjBZDeX/5B7IknnkjxrrvuGo7jxTD/UAMAm2++eYr5x9Xc/zbyQls//6STTkrxaaedhjJ0M1LMU7n/hWwpq666avqxcquttgptV1xxRYo1I+gzn/lMinURW8bll18eXvOPJ7w+0v8o4DUMr0v0mTjnnHNS/L3vfS+03XzzzSnmH6a/+tWvhuN43tL/0d99991TPG7cuNLz+E8wb948/OpXvwIAHHzwwaFNN/wM//jBP3zoe6666qoU6xqVx8eqWZSM/o+7/nDDaEZfgf7IwutN/RGHN/y/+MUvUrz99tuXnkfuR6K24LDDDguveUOla1QeT/785z+n+O9//3s4LvcjOd+31sw5Cq9TeBwBgG233TbFuQ0f/9CuP7KXZe399Kc/Da/5xy3+kQoAbr311tLvrgv+kQKI562ZxN/4xjdSzPeRn1Egn13F15P3d2WbfYWzHIE4p+l8x/sEXauVoeMKz5O5Z+Evf/lLivWHvpbuNaz5N8YYY4wxxhhj2jne/BtjjDHGGGOMMe0cb/6NMcYYY4wxxph2TosL/hXVElUHzBrAT3/606GNCy9xQZtCJ1nABVqqVphtLaxVvu6660Iba/BY6816VSBWDWUtGNC6yr+F/regqDL80EMPYf78+bUI6rp169Yo9CV6n3KFD5myYjOKanS4QAffa9YoAlGry3Ug7rnnnkrnl2Po0KHhNWuAtFAcayK52KDql1jrp4jmt7ZiKh06dGiU1d+oWgG+rdlrr71SzNWUc3U/tFAWv6+1+sKiMCIQ64/k0ArNrPVti8JGqqVk/adqG3ns4vG0tbC+jfsbEJ/fLbfcMsU55w0tjKrV4Au0iNLvf//7FB999NGhjQtQvvTSSylW/R0X5FKtONcjufDCC2vri3379m18+ctfBpAfQ7V2yz777NPscaypBqIGUGsylBXl4wJCQJy7eOwdOXJkOI61oVXRZ5f1nFpduY7iq/J5tfdFdkEBYrVzrRvBVbp5fuLikkBcH+y2226hjXXa119/faXz5WKq3DeAWC9Ex8yqNUJycD/VolatpE2KjGkdCa6ToPMiry+55oPWNuFxWXW7/GzznKNOHqeffnrmL3ifonYB0LQ4M/e5O++8M8WsPwaAk08+udJ35dw7cn22WKf/4x//wMKFC2vvi7om5mKMyjrrrJNiHtf0Payv1to+rMP/wx/+kGJe8wL5dW8ZOraq9r4KWgfk3HPPTTHXHKlapLMZVkjBP641o7W7eK3F94rnfSDWtsrp3XO1ZbiOG+8F1HmNiyLr/PyFL3whxbxv1fvL9Vd03OTnbrXVVksxzz1ALGyuz0JRZH7ChAn497//vcwb7v/5N8YYY4wxxhhj2jne/BtjjDHGGGOMMe2cFlv9Ff6ZajPAqAVKmTeo+rAymubPKT1sA/W5z30uHMe2Fd/85jdTzGlYQEyX1XRMtd0qUHlADrb4YLssTtlV1J4j5yfZWhqNRrKO0hRVTlXklDMgppGybdv+++8fjmOPTk7zB2LKJFs3ato6k0v1v/LKK1Ocs61ji7iHH344tHH6DT8vSs67OufH21b2R41Go/S61fGdLH1prV3hLbfckmL2rFbLRrY84/cA9VgJsV0Mp8lpajmjll5twaBBg1KfZ4kE0DTVn+GxiyUz6kc+atSoFGvKIaePDR48OMVqu8NpZ3xv2DIMAD7/+c+Xni/DtmGDBg2q9B4gWk/y85jz3VZfZZU51cUrr7ySxlJNs+U03Kqpouw1DcR0xLI0fyD2sSFDhoQ29h1n6y59Llj2oePI3XffneLceKip/gzfO053V5tVtWljCrldzt9+edBrx2O6puXz38NrDF1vcBquWrNWhW2keH2kMgJeA11yySWhjd/HKa8qveO5kFNegThnskRCbcdmz56dYl6/AU1TeNsCTvcF4jPF0gUgSiX4vPW5ZLmA2npx+jJfl5w8gJ81tuAEgMsuuyzFem35ueN0YpXL5uC16CqrrJLiwkK4QOdrphirVMK1PAwePDjNTwcccEDl9/EzxfeQvdH1M9Xmjq23GR27WyNH1TRwnk95/te1LK9zed4GysdAHbvZPk/HZ7babqv1Kj9fQJRU5NZabA2rsPxW7Rw/9rGPpZglnGrBecQRR6SY74euK3jdkpNU9OzZM8W8xwGiXEDtXhlex2naP1/H5ZB2APD//BtjjDHGGGOMMe0eb/6NMcYYY4wxxph2jjf/xhhjjDHGGGNMO6dFVn8dO3ZsFDoxtrgBot2B6mZYQ3/TTTelWC1QJk2alGLVXJTZjej5z5s3L8WqyWLYWkHtk/hv2X777VOs1lFMoaMvYF0l21XkNCysRwaAgQMHAgCOOeYYTJ8+vXYblRx8LwBg8803T3FV3bTCFm+sY2ILHuXwww9P8QsvvBDaWPM+evTo0ja2HLzrrrvCcXxvdtppp9Cm9joFauu46qqrplivx4wZM/hlm9ioqH0dW0s++OCDoY1twxi1i2KNNet7AeDCCy9M8RlnnJHiKVOmhONYt851FxTWbql1G2sxc+T6WJl+lTWVQNSEFn1Pz/GJJ56ozdKoa9eujUIX9vTTT4c21o7Nnz8/tLGG8ZVXXknxgAEDwnFsAaX6+qoaTe47XPOE6ygo+l0777xzirlPaY2TP/3pTykeN25cpfNT+1W+Hvx5QJN5o7a+2LNnz0ZhvVbY7RTkrCXZ7og1kAprItWCkv9+1gOqpanOcc19NhAtjmTsCvM19w+2Zl0WPLfeeOONKVaNfGFzCzSttVPUCnjzzTexdOnS2udFtcPTWhplcJ0U7YtsB7tkyZLQxrUa9JpXgdcaQNO1CHPYYYelmOdjnmeBWKdJbSO5rgVroXXu42e1qBVVINdghdiLvf322ylmm+Ycqs1li2u1/OLnuTXo+oNrJnG/AWLdl1wdqarwPS5bIyyLumw3e/bs2ShsZfVceC5R/TZbpHGfUN0010soLFoLuDYKw31bP4P3IAceeGA4jvui1oMqs+zVOYNtddVWmmu2cD0YXb/naifxPHzMMcfU1hd79OjRKOz49D5yPR5dS9RhVV1mR6pzVZ8+fVLMtu68TwViHYycfSbbIWvdJh47uI4PEGs57LHHHimuug4CgL/+9a8A3qvvMG3aNFv9GWOMMcYYY4wxH3S8+TfGGGOMMcYYY9o5LUr7r5oyrrCFAqcLamoio/ZinMLJqTScqgHENBG1WmByf3eZZcJpp50WXquVTBU0fYjTmI455pjQtuGGGwJ4T2KxePHiWlKqNtpoo0aR7qcp4Tkbqbrh+8bWga3lyCOPDK/ZoodTlzntcVmwDcgFF1yQYrVs4dQrtaj6y1/+kuKnnnqqTdIbc88yW54AUWJRJqVZFp/5zGdSzKnlOXLnyNKaYcOGhTZOzzzrrLNSzPaKQNOUuipoSifb4bC1C/B+Susvf/lLzJo1q5a+2KdPn0aRts1SimXBEgeWa/CzpmyyySbhNdsrcpp+VXu85bWZAYCvfOUr4bXaGDGc9jpr1qwU6xjGdOvWLbwWa8za+uLQoUMbRXqezjlstcYWtUCcT1hmo3Ijvlc5260cnKLMVnP6XHCK/fPPPx/aOD09N3fn4DRbTtPlFHQg2l1p2i7bTNaVaszjqUrIitRVoOm4wymlnGqqqfJ8HFuzKdyv1PKLnxceL1RuxWMyS9IA4I033ij9buaoo45KMY/3QFNpSxlsH/jd7343tLFEYMyYMbX1xe7duzeKZ1qlBkzOvpafc7aMA+La89prrw1tbF2dkzJuvPHGKa5q/8npxECUMLD0R9cmjI4/48ePT/Hjjz+eYpVG8ppG07CL+eGhhx7C/Pnza+mLa6+9duOQQw4B0HQM5+dILcWnTZtW6fPZAlctrXO202WwTEglQmxnqjLnsjWRXmOWJ7J1bEtgmfMyZB0rRIJTyOSApn2Fr+HIkSNTrLalPGeceOKJoY2tGFkqscMOO4TjWG7GY7T2e4YtUoHYn3kdpHsSXqvwngQArrjiihSzBCRnHawU67iXXnoJb731ltP+jTHGGGOMMcaYDzre/BtjjDHGGGOMMe2cFqX9DxkypFGk8B9wwAGhjdOotDr4nDlzUszp05p2y5X6X3rppUrntNVWW4XXc+fOTTFXPedKyEBMc1L23nvvFHMKFFclB5pWG61Ckc5UsGjRohRvs802oa24VtOnT8ebb75ZS0rVuuuu2yhS7lpSqb8MTSXT1ByGK2Zef/31KS6qVBZwihKn9uRS9jU9jK/ryiuvnGJ+JoCYxnnNNdeEtqqpzHz+Kt145513UvzYY4/VllK18sorN4qKtvy3ArHSba7yM6eH3nPPPaGNHQ24/ypcJZorRAOxiiunk2u65NZbb53iIUOGhDauinrQQQelmN0iAOCjH/1oijUNNldZtgxNf+f31ZVq3L9//0aR2rvOOuuENq7A+9xzz4W2qnINli7wc6iwXID7HhBTj7lC99VXXx2O43GtzCVD4VR3II7J3GeBmMbHfVZT09kdQp/9E044IcVnnHFGm6Q33nrrraGN06w5hREoT31UxwtOA9VUZk5J5+up17YqnOKr6d4sEeBUR04RB6JThVbx5/7N92fq1Kml53TssceG12effXaK6+qLnTt3bvTt2xdAfu2h6yVeV/D8re4KLLt45JFHQhs76XCFaJVWsESQ7wU7mCwLlmBy9WmVf7BjU2skki2k1rT/wYMHA4hrQSBeP11zsBylNXJOhfu2ppKzJOT8889PMacdA7H6v54TV5VnGZiuP1iSePHFF4c2dk9iCVZOfpWjTglOMc6pM0YOvq7PPPNMinU/wk43uTT/nKsYS3f4u9j9CGjar6qQcxbIwc+0zuO77bZbilWqydKgN954Y4Wk/TM8l+hrnU8Z3o/pdWd3A95DqKSC7yuPD3fffXc4jivwT5gwIbSxjI73P3vttVc4Tvt32Xlw2r9+xuc///kUs4sV8P4adcaMGU77N8YYY4wxxhhjjDf/xhhjjDHGGGNMu8ebf2OMMcYYY4wxpp3TIs1/9+7dG4W29uGHH26rcwLQVJPPOt4bbrghxWrdwPZsjOoXWSenelumtZq2Mp2x2vewrQXrv/S769JTrbLKKo1CU8P62JZw3HHHpVivN1uPVUUtW1gzys+Z2q/ldMx33HFHilnvxNodACgsupqDdbNV/y7VuPK1Qo3axm7dujUKS6Kcxc0WW2wRXvP1ZOso1RT2798/xWrJxppb1jbedNNN4TiuB8H2bI8++mg47oknnkgxa/e1jfXCatHD9QByOkG+HqrLVRuvMurqi+utt16j0DNz7YT//Y4U6xjEloT33XdfilXjOn/+/BSrFpRrCvB3aQ0Vvs6qzSsjZwPIbVr/JFcroDXj8DK0ym2ibdRaFDzeb7fddqGNay2wRZdquLkWjsKWqVxfgLXjQLR3YsshrrcBAL/5zW9SrDUKyjSldei+9TP43uk58vnX1RdHjBjRKOouqOafNZ5ctwaIemvWzubm1hkzZoTXbA/JVmbcR3Pkrp2OcWPGjEkxW3yyDhqIFp+s/wfiPLx48eIUq76Z6zhoDY+lS5fyyxWiM86NqWuuuWaKef7gmjNA7N9sPw1E7S/XwdBxc9999232/DbddNPwmvXJq6++emjj+8g2qMp6662XYq1RxTaDfI5cawAA7r333tLPL2zURo8ejWeffbY2C9x99tkHQNM5gdcUM2fODG28luO6Bbp+YR0118DIofWM+NlW27aqsGUpa7kLi+8Crimg8LPKtoJsBQnEZ0vtIPlZmjRpUpv0RX4OgXy9NLb+5vlNrdbZWlXtArmGB6+DbrvttmWeNxBr6QDvWTyXtfF8rTr85UX3t9OnT0+x1i8ors9FF12EmTNnWvNvjDHGGGOMMcZ80PHm3xhjjDHGGGOMaee0KO2f0zg4LRiIab25tM/Wwmn/bIHDqXYAsNlmmzXbxlKB5t7HlJ2vpg/16tUrxRdeeGHp5332s59NcS7t5Gtf+1p4zSm3ddqoFPHAgQNDG1uK3XjjjaGNU8s4hU/S9zB8+PAUq6URw6mObDmTgy3sgGgVlXvmytLblP322y+85tRZTtVkSxkgpoXq9RBqS6laY401GoU1id5HtvdR2C6RLVDYugaIqf25/stWOT/5yU9CG0sJ+P6cc8454Tj+bn1m+HnKnQen33JqlMLPkPZFTiNkuxWlLfqiUqQ9Ak1lDFVTFXPwM8LSFJZZAE2tF8tgWUynTp1CG/dvHuOefPLJcNzYsWNTzOM4EFNPNS21KmzFNn78+DZJb1Qr0euuuy7FOVkJp5Or1R+nf7P1LADssssulc6R00pZWqOplNxP2e4TAM4999xmP0NtpUaNGlXpnDidnG2WlJdffjm8LuReu+22G6ZMmVJ7X9RrwuNYTjbGqaE//OEPw3Es6dPPkPOodL658Y5TRTU1PWdfxkyaNCnFalHF14NlCpr2X9WiDCso7Z/ZaKONwmu2Cp48eXKl71IrRk7X5nGA07uBuH7gZ6awmixg6SjfD6A8nT+3RuK0cCBK5diCW2GLwFzfrmte7N69e6OQgurYcsUVV6R4wIABoY0tiXk/ctZZZ4Xj+HqpxIdTyXMyEZbT8Lio8Dyrqfi8xuC/RWVB3IdVNlwVnid0DmGL65EjR9bWF/v3798o5nu+H0Dc26yxxhqhjW362OJXpVQqc6yCSh7OPPPMZo9TGVSXLl1SnJOJ5+D3qaSO19s832+//fbhOJYTsZQPeF9WOGnSJCxYsMBp/8YYY4wxxhhjzAcdb/6NMcYYY4wxxph2jjf/xhhjjDHGGGNMO6dja9+oGg4mp1tjrb1q6C+77LIUq85VdaQFbG8ERF3TH/7whxTnLG9Y6w4AvXv3TjHrSlR7yHpn1Wbcf//9Ka5qL6Fan8LKjS3nlpdVV10Vm2++OYBoNaWoxozJ6dpzOn8mp/Pn68X1Es4777xwHNu+5OB6D7naAKzPBaK+7M4770zxggULwnF8PVT3+Pzzz6eYn5flpV+/fklvee2114Y2to1TixrWGBbPAQBccskl4TjVLpfBGsMTTzwxtHFtiLvvvjvFqkPt169finVMYHIaVbWSYfg54fMVG8bw7Kqu/uijjwbQVCO4PKy++upJ01ZYJhWwBlDbymwsW0KZJara2DBcq0FrRHC9DB5bFdb66Xdx7Yo+ffqENtb7vf766ylWa53rr78+xVtuuWVoGz9+fOl51QXbCgHRckjh+WnXXXet9PlVdY5as4L7PWuQczaCX/3qV0tfs4ZUx2HWzfK4CcT+zXNMzopSPyNXj6MO2L4OyGt/2aaW5xmt78D3mm30gOo1ElinznVsDj300HAcj6c61vLfcsIJJ6RY11vDhg1L8RlnnBHa9LkoUDs/1tHXOfe1ltx9XGuttZp9D9cmAuIYpdeW6zxwHSC1cOYxoljjAU3XH2wbrM/MAQcckGK252SNv6K1LMr+ZmXHHXdMsdYjKax+9VosD4sWLUpjg65D2dKN6+IA5XsStULkehkK9yu1B2d4jmPrS60vwBx88MHhtVrdFujamG0Fuf4CEPcMajPNqM6fufXWW0vblod33303PY9aP4ZfF3bHBax/5/mOdfdAvn4J14jjfRvXEMjRsWPcGrdW589wTalcnRbeOypsz6rjbTFWad2mMvw//8YYY4wxxhhjTDvHm39jjDHGGGOMMaad0yKrP7ZuUMs0tovQVCm2cOLU4NNPPz0c17NnzxSrjYraGpRR9vdoOhSn/3784x8PbWzxxp+nKZJsxXLqqaeGNk5JWnPNNUs/48orr0xxzsajLhuVNdZYo1GkbGq6eI5FixalmO1Xqqb5K5xyrpIOtgjKSUguuuiiFGtqF6eLbbHFFilWWxFG7X84jW///fdPsaY8s/XYMtJ3a7NR6dKlS6OwV2N5AhDt1F588cXSz7jppptSvPfee4c2TslWC0ROZdY0wCrk7qlasRx//PEpZskQp9sCMV2vtbCsRG0LixSrWbNm4e23366lLw4aNKhRpAnuu+++oY3HD7Up5fQ+lS6UwTZ3QBxPOSVcx6CcrWcZmt5YWLMBTexLw3EsYWBpAxCfGU71v/TSS0vPQ8daHofRRvZibIEHRFsplQSwRG1fKKjtAAAgAElEQVThwoWVvoslaUCcP1gixTaeQLzfv/3tb1OsaaoPPvhgin/xi1+UngfPfSrV+cEPflD6vrqpa17s27dvoxjnVCrFtsZqo8ppt9yPVMLHkhOVhnGaPq9TdJzkNH2ed/meAU2fM4bnwocffjjF2he57emnnw5tZdIsnSc0jZ3hcebKK6+srS+us846jUL2ppayOYlLmdRQqToe8vVUCdMrr7ySYk7x1bk6J4ErS/tny1AgyqAUltqwzEYlBjzm8Nih1LlGLdZUOvdVhZ9ffuaBOA+ojIolTJwirrJItp5dkej8wn2OLTi33nrrcJyOERlq64tDhw5tFPO4rhN79OiRYpXRlqXz6xjF8laVgLBV34EHHlh6joWcE4hjLz8/QEzTV9mZypELtK/krH5ZFsX9jfddQJTXqIUo23VW6Yv+n39jjDHGGGOMMaad482/McYYY4wxxhjTzmlR2v8qq6zSKNL9ORUOAC6//PIUDx8+PLSNGzcuxUV1UAD49a9/HY7LpTlVhT+T0300pZurXWuaH6eGv/baaynOXStNceN0HK7Wrem9VakrpYpTVJXRo0enWNNBP//5z6eYU9u12vbHPvaxFE+ePDm0cRVlTjnTyvJl1cL1+eA0cE3T5pRaRiuictq0Vh/nyu58jpxqq3zuc58Lrx9//PEUDx06tE1SjT/xiU+ENk7x5SrTQLx3hVsA0PT6cQXbt99+O7RxKtIqq6ySYr2P/D6WeUybNg1V4QqvuUrGjN7HDTfcMMVc6VelDjxenHzyyaGtkPWMGDECEydOrKUvrrbaao3CJYQrpAMxVZTTRBVOA2QpExDTdfXz+TnVtLsyNt100xQ/+eSTld6j5MZQTiU/6KCDQhtXHNc0ZIb7vVazllTs2vpi165dG0Vao1bxbWu4anJZFXYA+OMf/5jinXfeOcXsnAAAvXr1Kv2MnFynDJYDArGqfO58OUVyRaQad+rUqbH66qsDAObMmZP7vvCaU0BzkhaW3WgKLv+tLKdUORendHPaf67SujpecL9nSZWO3Tw/631iGQ9Xss+N/+qSwlXbUWNfXHXVVRubbbYZAGDttdcObeyaxCnDQJS4sDMUr3sUnXf/+te/pvjGG29MscoP2DGAU/35/cuC1y3cP7RSfNU+y6nwhx12WGhj+aNSPLt33XUX5s2bV0tf7Ny5c6Nv374AYio7kHd44v7H8hyupA7E9YGuX8uqrvNaE2jqMlbAYysQx92q6PqFnW5aC8uOVAIo1NYX+/fv3yjkPSz9BuI+rRh3C3gdxpJsXROwRFT3Btw3eZ2n/aHq3my11VYr/Yy99tqr2eN0X3n77benmGU7QBzrc7IjRvslr1md9m+MMcYYY4wxxhhv/o0xxhhjjDHGmPaON//GGGOMMcYYY0w7p0Waf9YZT5gwIbRttdVWpe9jfZJqrpkjjzwyxawlU1jfwZpHIGrtWJuhGh3W8FTVRa233nrhNds4VUX1La+++mqKuR4C8L4dxsSJE7FgwYJa9FQbbrhho7i2/N1APTUX2Abu6quvDm1l1/mee+4Jr9lihVEtFGu8Cp1fc7Au+oknnig9bv311w+v1a6pQLXVVbXoqFFP1alTp0ZRm0I14d/+9rdTzPcDyPdT5pZbbkkx2yAB0cqNdVdsgwQA//jHP1I8c+bMSt/LFjBA1Fzy/VaGDRuW4kcffTS0DR48OMU8PhR6+wLWxbHtKBB1um1Rf4PvGQBceOGFKVbNImt8c+M3W1Ly2ApE650yyyeF9YtqrclaTNUqF5aUQNTB6fXn8UFrtLC2mu2f9Hlha6tCN1rA9TeGDBlSq854yJAhAKJNqaKaQtYb5uDxUfsR2yNyjQO1ry07Lx3j2KY3Ny/yc6faZ+5HXBMEAO67774U8/XgPgpU18quiFo4bEuntS7UEqpA+xH3Me2zhxxySIrZLlDnFa5TxP1B7crUqo3hdZDqmJmqayIe/7W+AGthtfbDyJEj+WWb1MLRtRbXb1Jd7bnnnptirhGjsF7/ueeeC218X7lfDRgwoPQ4rrujtsl8r/7+97+HNu4fPO/q2ol1wPoZXN+D+59adfL8r1a8vJ6qqy+OGDGiUdSE0OeQrV3vvPPO0KbWZ3Re4TXb9o0aNar0PLgGDdeBAIAzzzwzxTwG8DMPxHWUUmZp11q43999992hjdcXvLbQ715ppZXapC8qu+++e4pZC9/M+ZR+Pq8Hc/VjuG6UPr9q0V6gtny5ujO8puFni+dBINY52XHHHUPbiSeemGKub6SWvbNnz06xzj133XVXiq35N8YYY4wxxhhjjDf/xhhjjDHGGGNMe6fVaf8Kp2B87WtfC20XXXRRijnNpiXWQWxVxWnHL7/8cul72OqFbV4UTavdY489UszpegrbtHAaLQB06PD+7ypsI3PeeeeF43K2Z0Vq32233Ya5c+fWklLVvXv3RpHipemCS5cuTbGmcKuFTBmcyqop9mUpNjk4dU9lCscee2yK1f6rY8eOKWbbnZbAKeebbLJJiqdMmRKO47Q4/RslhW6FpFTlYBsVThsaOnRoOI5Tw7bddtvSz3vmmWdSrOmSZWlt2u+7deuW4jfffDO0sTUfSxhUIsMpk5q2yN/H71OLu6eeeirFnOoLvN8fbrnlFsyZM6fNU41ZusCSBoVtmTRFLDe2l4293/jGN8Jrtud89tlnU6zXmN+nY8Vll13W7HF6Dtw2aNCg0Mb2lZz6rjZIuedMUh9r64vDhw9vFLIQlQTVAY9zZ599dulxRx11VIr5mgNRHsBj2SmnnFL6eYWUoSAnmaoKj+csMdAxtXfv3ilWWVPRh6dOnYqFCxe2eaox2++p1djRRx+dYp4vNIWbLVc5ZRiIVnAXX3xxinP3htc9Km+pyv77759itSpmCzS2PgainSVLcHJwCjUQx9rZs2f/x+dFXgPmrBOZXGow2yGybS4Q5zROQz7wwANLv4ttHgFg1qxZKeZzV/svfpb1PFjGyjKVPffcs/Q8lELW89Zbb2Hp0qW19MWePXs2inUKW0cD0W6W1x5AtB/n+ZNTsRXt6ywtzVnscd/kmMc0IEqDWeIBRFkPp46rtIj/Zn52gOrWsnwNcnaJ+A+sUVXix+sAnvt0n8YSMrVPZckxX2eVNvO+ga8Lp9cDQL9+/Zr9PCDO+bwXUGkRW5/q/qpTp04pzq1hqkoinPZvjDHGGGOMMcYYb/6NMcYYY4wxxpj2TqvT/rmCOhBTsjXFntP0OdX22muvLf0urVrKFY+5UqSmsHB6I1ch5tRiIKZ26XlwOhxXiNXqsVxp+oADDghtLHWog7oqqfbq1atRVIKeOnVqaHvppZeW+/M5bYpTzIHozMApPFohle8pP2d6jbfZZpsUa2r6TjvtlGKu0KvpsFwd/Pjjjw9tfI78vpNOOikcd9ppp6VYU5g41eeFF16oLaWqa9eujSLFjFMogZgOxNWjgZhexGn0mubO92rhwoWhjasG5yQBueqzDLsC6D3m8WnSpEkp1ur4nDanVZj5/nPleU6dXBZFWuSYMWPw4osvtnna/5prrpniefPmhTbuH/Pnz0+xVqTla8cp4UCslMxp9Hqvq8LjHY+ZAPCjH/2o2fM99NBDSz+jtZXxc3CK5AYbbNAm6Y0qV2CphFbg5/RBTlPNpfNpZX2WQ/C4xGOSwnM1p5kDwJ///OcUc/Vghe+H3qscLItS6QjDaf8qIymqyk+fPh1vvvlmLX2xc+fOjcItQdcvnC7NkgmgPDVYxyCu7lzmIgPkpTrDhw9PscoKGE6V1ZR9dl5ieWZV16QcY8aMCa95jNlll11CG6/hPvKRj9TWFzt06NAo0nA1zfqOO+5I8VlnnRXaeL3JKfaccg3EZ1Yrh/McynOaptGz9IyrfOtxu+66a7PHAXEc4HFFXY+4On5VFi1aFF6zY4fO4zzHrwjnjarwGp6lOUBTKQHDY+j999+fYl3n8JzGKeHqQMDjM69RgCgB5nFXn82q8HqGJRCKjjGyJqqtLw4cOLBRyFBa4iTGkul333239DiWgvO+D4iy3xynn356irmPab9hGRSPI819dxksQ1dJAK8FeI2krje8PlPpK7sJOO3fGGOMMcYYY4wx3vwbY4wxxhhjjDHtHW/+jTHGGGOMMcaYdk6LNP+dOnVqFBoytd/JwVY0bFHDuhwgXwOAuffee1PMWjogWoWxZuovf/lL6ed97nOfC69vvfXWFLPmRLWNbCE3efLk0Mbaq6r2IUqhMz/99NMxY8aM2vVUfF5AtHJasmRJaGM9LlsVsd1hXXzmM59JMWvnVCPMdnSqzWP94Uc+8pHlPqdCZwoAf/vb30Ib6+9Y49UMK9xGhWsOANHahK28uH4CEHXgzz//fGgbOXJkillnrraYbB/E9RNYuwoAP/nJT1KszyTb+fA9Vg272i4xrN9ivTxbHQHRlketO/k5r0vb2L9//0ahE2VtOBBrURxyyCGhjes4sMZc+2yZvheIWjLV47YG1oW2tm4Aa4tZzwdEveS5556b4vPPPz8cx89LbszHCuqLPAfNmTMnnkBGt90auF4GWx3l0Pmf9b7du3cvfR9rpFUH3BIL3wKtE8H1dbQeSWFR+uyzz9am+ed7qPpq1oVWRTWn3DcPOuig0DZ27NhmP4O1rwqPY1zfBgCuvPLKFI8bN670M7hWDGuYAeChhx5q9jgg1j3gukG6tmEbQL2G/Pzcc889bdIX+/TpE9q41oWOlVVhLbWOPbw+5PpJr7/+ejiO6xjxvdLnnPuRPjNf+MIXUsw1bVRXrvavy4s+k7w+rmte7NGjR2PzzTcH0HSOzo1rbPfG49gbb7wRjuPaCmx3DERbbtZy33LLLeE4rkPC36u1aXh+VsteriPA6w2t3cPoeM3PCNejUD0425ezJSnQ5G9bIfPid77znWbPDYjjGddF0DUfozaAXNPtpptuSrH+7azf5/utlrps53fEEUeEtr/+9a8pztXA4toKXbp0CW1cB4afBd1f8f3Xvljss+fOnYvFixdb82+MMcYYY4wxxnzQ8ebfGGOMMcYYY4xp51TzQ/hflixZktL9Oe0IiCnwytChQ1PMKXUnn3xyOI5T/d55553QxulMmurPcLqaWvaUwWn+Cqd5sWQBiOnearHCcDocp48DTVPImULewNYPy0vfvn1TeiinZQPRpu6www4LbZz6zfIAtenjdBvl8ssvT/E3vvGN0uPYLoXv54ABA8JxbGmkEhJOh+K0OLaaAmIKnqZlcbo1p4OpjaPKEVY0LJMA4rOoqcVbb711ivneaVobo9Y4nHbNKWpqp8mpWIWNlr5fYcszIN5HTiPVtPwcnCLL9oba79kyqWfPnqGtLeQts2fPbpJu2xwqh2KbGJYHqEVTLrWVrcg43fQ3v/lNOI6lA9x3NLX7mmuuSbFahp5zzjkpZgmOyhk4bVZtr1hqNHr06BSrtVJO/pGzT2wruP+pVI6tRas8B0BTezy+J5wSq9eFxwi1I2VYvsE2XkCU1HEqbS61XOHx4sgjj0yx2ui2xmpueVhttdXSeKX3ic9Fx7jtttsuxSyl0fRrftb32Wef0MZp/zwv8nyp8PpIP2/ChAkp1mvH86laTzI8N+gzx5IcTvtXyRbLqNiqGYjp0Xrv60LvI18nvm8A8OMf/zjF1113XYo1jZfHDbYEBOK6YNSoUSlW+czcuXNTzGnheq/YHk1tC3kcZalhLs3/k5/8ZHjN9nJVUeu14p6rNGR56N69e7KJvuKKKyq/j9c2vAZii2Agyq84JRxoao1coPeaydmBM/pdnC7O5NL+2WZZ4blAn7mcFG9Fj7VAHB91rcXn06tXr0qfpzIH3ofsvffeLT4/XmMAsd+z7BWIa5/CfhuI+14g7l94PQxESSuv23Tdmbs/ha3iGWecUXoM4//5N8YYY4wxxhhj2jne/BtjjDHGGGOMMe0cb/6NMcYYY4wxxph2Tous/nLWDYcffniKWTMFRH0DWya0xOqo7DxVjzxx4sTKn7m8sJWUash23nnnFLMWUOG/S7UvCxYs4ONqsxf7+te/DqCpBQrr8LS+QR0U9i1AUx0Ww9eEbeCWLl0ajmM9stIa26u2QPRUtdmo9OnTp1FoGLUGQR3weU+bNi20sd4wp0Hq169fillDevHFF5d+F+vzAeCSSy6pdL6sjfrmN78Z2v7whz9U+gzW5eo1LWqc3HvvvXjttddqtxdTC5qbb745xao3ZG387NmzU6zjzG233ZZi7c9sg8V1R7QmSVUNMsPaeiBabLEOVy1WWY+cg/VxTz75ZGj79a9/nWKtC8Gff9xxx9XWFzt37twobHa03gHratWOiPWzPF9wPQbgPT16QW5+4+eCLVKBqN9nayp9Lri2C9ckAMrrEqjVHFvx5lh55ZVTfN9994U21SeXUde8yH1RxzQen9Ryje/v9OnTU6x6T67HoX8r6+a5P6t+mOtgcL0btmwF4tyn9ZF69+6dYn4OdPxhG12F526e01sCrxd/9rOf1dYX2SZOrT65D6g9Jd9j1uayBRcQ5wWtWVJ2nK6Hua4K2wVq/STWsCtl62G2UAOiVd7RRx8d2k466aQUFxp7INaUAYB11lknxTq+yTnVvkblWgx1wVp71mgD5bWE2CIZyNdNKYO14UBT7XgZPE/ynA7EsZfHDp0XmZwtHtrI6q9Tp06hbfHixSnm8QqI63Vey+nfxHW4tC4a19zg2iZs5wfE2nW5vTDXWOncuXNo43mX61L96le/Csep3XJr4LlDx/Zi3Js2bRoWLlxoqz9jjDHGGGOMMeaDjjf/xhhjjDHGGGNMO6dFaf8bbbRR44ILLgDQ1F4sx/e///0Uc9q/WshwmpumEhY2BgAwePDgFKt9BttkcAqGst9++6V41VVXDW1svcM2WJpGxmk7kydPDm2cvsypJppSyBYuaofDFoF1pVT16NGjUdizqNUIW/Xo38NWGpx6qumCbBW14YYbhrYiNRbIp8yxRRCnYbXEhqTsfNU6hu9v7vM5nW7MmDGhjVOaOK0SiClHN998c20pVT179mwUn63p3meddVaKVRqRS/FmcuPC6aefnmJ+TjbYYINwHKctcsohp5sCURa0/fbbh7aNN944xSwBOOWUU8JxnL6lKbcMy3P43uvrY445JrQV0ocHHngAr7/+ei19sXv37o1NNtkEQNN0Q077z8ESDJVn5GQMnGrH45pKa2bOnNns5/P3AjEV7sorrwxtPA5wWr4+L2z9dvvtt4e2s88+O8VsbaWWdvxa023F+rVN0hsVTtVmizSF50iVP+TsU1law9dPpTWavlwGj4Fs7QfEOf/+++9P8RFHHBGOK9YIzcF9nZ8Zfs5aQluk/bcElupx6qlacrE8Ue2ruM+xRdn48eMrncMee+wRXrN9nEqg+HlkmcLrr78ejmOpicJzGj+rat/L86KO65wC+9Zbb7VJX9R5mvuY2hJyKjTbpz777LOl35Wzm+W5VdehVe0W+R5w+j4ATJkyJcW5ubrqmomt19jCGojXSu2WCzvCyy+/HP/6179q74tqmXnaaaelmKVrQJSxPvzww6XH5eD1LEtT1AqZ5RqMppWznXDHjtFZncd1fv70+vM4oHOrWkAW8LoJiHPtVVdd1ex7/pcVMi9y/9f0eIbHELUhvuOOO1JcZtGo8P4EiHIs3huoLIilCGpzz88G76lUusayyQMPPLDS+aoEh2Ufuu5n6WCVedH/82+MMcYYY4wxxrRzvPk3xhhjjDHGGGPaOR2Xfcj7vPLKK6nCoqZscgqZwhVxc2lInMr02muvhTZO9eeUOq2IqikZZWhKaBmaZlN2Tpw+AjSt3F+gFa7POeecFOu1KdLKuIrn8vLmm2/i8ccfb/b7ciloc+fObfbftVJn1evPqWpaqZOv3dtvv51ilkEATVP3mLKq2JpuwxIPhVPOVF7CcDqspukcfPDBpe9bHvr27ZvSbVVqMG/evBTr35dL9We4CjhX5QZihWeuPqrPKVcH/9SnPpXibt26lX7v/vvvH17PmjUrxZz6rbKjXKo/wynuKuNh9LpttdVWAPIpli3l3XffTanVVdP8FU7v5nEWAE4++eQUa9p/mQMGy2WAmI6tqf4MV8M94YQTQtt5552XYnbv6NKlS+nn7b777uG1uGakWPslX8e2cCxpjgEDBiRZWpEGW8Cpidtss01o43Rvrviuaf78t2vFYE7h5IrU2s9ZtsR9hSVW2qb99Etf+hKaI5fmrxKGsjlGnzs+f/2MlrgEVaVbt24pVVbnmRw8d62//vopVocRriquVb45tVWleFXQCu8smfz5z38e2ngc4LlJ+zY/xyzVAYCPfvSjKeZ7o/M4p88X8qYCntfbCp4HAeCtt95KMUuHgHidcqn+LB360Ic+VHocu8/oGpJT1xmdW3icU1lG2XH6Gfz6rrvuCm3FnAYAc+bMSXFOvqfyoUMPPRRAXtK0POi6mt1i2EUGABYuXJhiTXtneG5X9w7ui7yW69+/fziuLO1fZWj8eXpvWLI1bNiwFD/66KPhOL6/Tz31VGjTZ7xApZWtlVXVhY5RfB/12WFpErtLsMMJkJcLlKHPE6+R+NlWZ4YlS5ak+Kc//Wlo4/XwtttuW/rdvPfQuZTl8CyTzMkZOM0feN91QOXjZfh//o0xxhhjjDHGmHaON//GGGOMMcYYY0w7x5t/Y4wxxhhjjDGmndMiq78NNtigUehuVdu9yy67pFi1RWWwDg4AXnjhhRRvscUWoY0tyupGLKCw9tprp3jBggUpVktARq3xTjzxxBSzPYPCOjnV/f7jH/8A8J62ZdasWbXbqKhNH98P1ukCUZ/L91o1TqeeemqKjz/++NDGuinWcg8cODAcV6a50xoFRx11VOn5sv6re/fuKdZaDHz91d6IdXaFngZoej9ZL8kaJSDq5x566KE2sVHZdNNNQ9uTTz5Z6TN69OiRYv3bWU+kNQW4/kOh+QOi9gmI4wDrh9lur7W0xPaxKqxHfuKJJ0Ib2witaHsxtnADot6Q+6XqaNmObZ999gltZTU8crA1G2v8gWhpNGHChNB25plnpvi5555LMY+RQLRpVd0pf1+HDu//Zq0aVLaAfP7550Mbj9GPPfZYm/TFddZZJ7TxeDB8+PDQxtr1spoGQOybqv3luhpsZaZwnRweX3WuztW4KSP3d6mdLx/L9W/Urm7cuHGl31dYKD3yyCNYsGBBLX2xd+/ejULjm9NZqlUU26qyNZiubU466aQU6/islnQFagn473//u9nj9L5zf1O9PmtcWfPNOn4A2HHHHZs9Doh/86hRo0rPl9Hxhp/BLbfcsra+2LVr10Zx7bkGA9DUGqtu+LnXPlEGX3edc6rCY4fWNPr2t7+dYtW3l9W2UFtBrr+ln1HYr7322mtYvHhx7fOi7k/YvlbtTMvQGjRsN8prSIXrGXF/aO68CoqaaAV8vXI1bnLwfKC1e/h6sFWxjuNss72MWji19cURI0Y0itpbavudqxHHcH0MHkOB+Jxq7RquLVRmh6iwVelll10W2tjiUvsA1+7ha8t1HICmtqsM27PyOkjnZ74GaglZjNNXXXUVZs+ebas/Y4wxxhhjjDHmg443/8YYY4wxxhhjTDunRWn/Xbp0aRRpjWzHAMTUtT59+oQ2tnXIweeitlVFqh+QtzZhOM2L08z1HNU27JJLLkkxp6mqjRvbxRx33HGl58FwSh4Q0+HUxqlIQ5k6dSoWLlxYS0pVhw4dGkX6EdtEAcAXv/jF0vexzOOZZ55JMVtUATHNU9N6y1K19e8urAiBmEqnKYycflg11Z3Ta4C8rQ/DNnNqOcL3dNq0aaFNrnFtKVWdO3duFOlrKlthNIXvhhtuSDFLa7QfsVWM2mmW3UdNs+S0a5ZK5FJMNVWb4RRTlZtwf1abR5aVcH/WtClOD9Qxgakr7X/gwIGNMos4RmUSZRaFnAIIxBREtlEFopUaW2Ap22+/fYpZRqB873vfSzHblwLxnvIzwlaaAHDuueemWMdTvvdl91PR+9ux4/vOtvfff3+taf9Fn9B0b5UllMHPc+7Zy8GyFZYDAPE+MtqX2T61kJ0VsH3dDjvskGJ9PtmuTscVlihdccUVKc5ZkLJsCwC+/OUvA3jP5nHOnDltLsHhv0HlMzfeeGOK+Xqp3RI/p5p+zpZluk5heF5kKYhKTRgdEzgtlVNlVTLEz8uFF15Y6fM1JTnH7373uxTvu+++tfXFoUOHNm6//XYATec+lh1qWj6vUTklWedzXduWwVLA/fbbL7SxNLJuVMrJVqhqMchjRGE5CzS1GuW+nmNFyOF4HaHrcbZP49RphfvRkCFDKp2TWgfyteQxU9Pbc7AEp1gHAE2vd27eLYMlAEBcY6sMYvz48fyytr64xhprNAqJ8LXXXlvHRwZ4Lqm6/s/tF3m9xHJWII4XajXLsoJ77703xbpfueWWW1Ks6zEeD3ns0PGn6nqsSl/0//wbY4wxxhhjjDHtHG/+jTHGGGOMMcaYdo43/8YYY4wxxhhjTDunRZr/lVZaqbHyyisDiPYGimoWVZ9bxuqrr55i1UqyfpxtpfQ41nmxVo3tSoCmOnOG38cadrY/A6L1jv6Nu+++e4oLDRqQt+pgPTbwvs5+xIgRmDhxYu16Kj4vIJ6zahbZKoR1UgcccEA47uqrr650HmztxNpPIFqxMC2xd/vQhz6U4pwmnu+vXg++Vx/72MdSfNhhh4XjWPepWiHWdaFGPVVOF8eaMdUgs41Vv379UjxiRDwt1v1xvwSi7R33K7ZDAcr1+6xvA4BvfetbKb7mmmtCG2tR+dyfeuqpZj97ecjpqQoN+i9/+cvabDc7duzYKOxDy2y8gKZWNWxjw7Z3WpuBa5K0Ftawsf3e0UcfHY7jPsD2UkBTbX+B9pWcZrjMEku1hFx7Ru1h+RmfOHFim/RF1RtpF4sAAA+qSURBVK7zOaiWlscerrGxZMmSVp0Ha5X1+VV7ogIdU9nmVvXn7777boqr1l3IoWMOw3U7eO4Bom69LXTGamPMFpeqJea54Prrr08x26gCcc78/e9/H9r479G/tYzcuu2II45IsfY9fh+vPdjSGHjfwq059t9//xTzc8XWjUDUkStspXXwwQe3SV9kvTsA7L333pU+gy2/Lr/88tLjFi1aFF6rDWQVWBestphcB0ZrE3HdJdYPaz0Y7sNqa8e2qDz3aa0ERut3cQ2EtuiLd9xxR2jjcec73/lOaOM1OK+BdNzNwdpr1oB/9atfDcdxPRmeF7kOFRCvq84NXOuDx5GcPl5rOvDfnKvdU+zbAGCnnXYKbbwOvOqqq1bIGpXXgLJGDs8z2xzrfeT5iNdBSm6s5PUrW6Zy3Tf9DN4L6DnmajdVhdfAI0eOrPy+Ys5ZuHAhli5das2/McYYY4wxxhjzQcebf2OMMcYYY4wxpp3TorT/gQMHNgpbM7bVWBZsycFWHa2FrRDU0kjTYgo4nREAZs6cmWJOJQJiGiOntedS2k866aTwWm1VyuD0Ek5/Bt5Phz/11FMxY8aM2lOq1EJp4cKFKebUNwC47777UsypXyzBAGJKkVpA8XW+8sorU6zP4LBhw1LM8gD9rnHjxqVYU9U4jernP/85WkOZFYum51166aUp3muvvUKbpDKvkJQqtp5hOycAWGONNVLMacIKS3dysh2W/3BqGRD7AKfsqxUfp1tpahen97OEQZ9dttiZPHlyaGNpEKeCapo5p60efvjhKKMt0hs59Q6IFqBqFcXjEFugasrn0KFDU6zWMgxb/WyzzTahje1puB/dfffd4TiWZ3CatNIS6U4VNJWVrTU5rRKIqZoPPPDACumLN998c4rL5iZFLfbY1o3tyhS+/9tuu21oY3s5lq/p/eC+s9lmm4U2Hqdbex933XXXFLN14NixY8Nx3P80vVrOqZYHqmfPno3C+lTHlk6dOqWY5S05evXqFV7nZD1rrrlmiufNm1fp8/maqHXXgQcemGK1VWVJzqc+9akU67PJ6daa8sxjE1uKcSo6ENOQdcwXauuLAwYMaBTp7F//+tdDWyGxAoCtttoqtPF4lnvOOXVbU/F5LcdrB5VDcDo5j+VqXZeDpZJ8vxVeb6v8keV8bPOslr1V7UpXhNVfa2itDJlReSvLYnJ7KF4P6/qeZZKaSs6whav2de6bnMKuawa2dVaZlqyPa+uLffv2bRS2rCxVBOLYo2s+XtOw5bva1bJtt84fPIaPHj06xSyvA2LfYckHxy2B96a6R2a78H333Te08fqYue6668JrtlTWtX3xLNx+++2YO3eu0/6NMcYYY4wxxpgPOt78G2OMMcYYY4wx7ZwWV/sva8ul7j700EOtOLVq6PlzmtZjjz2WYq0szClqWqW8Kpy6opXNOa2M080uvvji0s9bZ511wuuXXnopxXWmVHXs2BFAvqp0ly5dwmuu3MuVNTW1hasha1X8svR7rdrKqT6TJk0qPUfmpz/9aXjds2fPFB988MGl7+O/UyuYc1XmqVOnVjoPhVPrXnvttdpSqgYPHtwoUpw1ZYz7gN5HrtT8q1/9KsUq88hVOeYUsocffjjF5557bjhOr2cVODUbiOn8nOo4ePDgcBxX09aUrVGjRjV7vtOmTQvHcX/QvsipcnX1xV69ejWKcYJToAFg0003TXFrnz1O36yauqlw/9t8881TzJICIPYxTcHjcZjRe83uBJoiySm1LF3R1H5OaedU92aorS+uttpqjeJvUccQTif+9Kc/3arP55TsjTfeOLSx7C2Xiv/iiy+mmJ9tfQ/P3SqlYrkXp4WrxI2r5bMECYguMuy4ozIS/i5dP7A8rS1SjTW19owzzqjjKxKajs4pn+x0M2fOnNLPYGcBTSHlubo1FeiXBV8PvlZa6ZrlcCxtAJpIOWrri507d24U1zDn8qNwajjLZ/hZA6KcQ6UcPGZzSrLKFRk+TmUEjLox8JjKUid2UVC4Kj0Q18CcksxrJyC6QiiFq9KcOXPwzjvv/J9J++dxUp2B+F6zpAqI61d2YtBnm100eA/CThtA7M/77LNPaOOxm6/xO++8E47jcUClfWWodIMljiqD4FT1adOm1Zr2X6w3L7jggtLjcnuI1sL3ZPjw4Sl+5JFHwnE8z/AaUl0tqsJycpWa5+A+zFIO7Xv8+SyPAIDTTz8dADB//nwsWbLEaf/GGGOMMcYYY8wHHW/+jTHGGGOMMcaYdo43/8YYY4wxxhhjTDun1Zp/tW445phj+LjSz2B7ArVuYI276tjYSmrChAkpViubu+66q9nvVb0Ta4lVb8g6xZxFDetcH3/88dBWtc4BfxdbdQDACy+8kOIVYaNS6LeApno5trc79dRTSz+fNYCFBoW+u/qJNsMOO+wQXvM1Z/shhZ+RJ554olXfzTpZtZfk54DtjZqhNj1Vly5dGsU5qXULw9pQIJ5rzn6KrW20L6677ropZp081wIAYm0I7kesHQei7u71118PbVwv44033ig9X66lwRp/hZ+T3r17hzauB6AatUL/N2LECEycOLGWvti1a9dGcS1ZpwvEOiSzZ88Obaz70vdVhWtB3HDDDSl++eWXw3FaC6IMrvegYzC/LtMLK6yVBICNNtooxayN1WvDNS14zgCi7R5q7Iv9+vVrFDo9HrOB2P9UD8paYK5/oPUUjj322BRr3RTWpe6+++4pVuvZMrSGgOpjl5cTTzwxvGY9J99HtdJiez0dw4q1xmWXXYZ//etftfTF3r17NwpLNrahVVQPPX/+/BRzbQa17lRbUaZHjx4pVm338qI1c9hmjvXDTz/9dKs+n9ePbPsHxFoGXN8BiPVmUGNfHDRoUKPQr6vGmuedJ598MrTpWFGQ+4zjjz8+tPF69v777690vnz9eP0FALNmzar0GVwzSedI1hKzthsARo4cmeJHH300xeecc044jud7pdgHnHfeeXjxxRdr6Yvrr79+oxg3cvWacnBdmK5du4Y2rtXF1weI4ynPfXvvvbeeY4pZe81WpkDcF33zm98Mbd26dUsx9z8+v2XB58t1ILQGVg6+39/73vfaxAJX6wzwfozrJwDxnudqWHDf4XpQQKyvw8+vWnFzXS/+Xp2D2XJPa6XxfpS/i/ezQJyftTYQ741yYwLvy7iWAfD+unDu3LlYvHixNf/GGGOMMcYYY8wHHW/+jTHGGGOMMcaYdk6L0/5XXnllAMDSpUtDG6ewaCohw+mbatfF6eTTp08PbZwm8sUvfjHFZ511Vjju2muvTfFxxx3H5156TnWgtlJsOZWD05zVdmS77bYD8F7q3oIFC2r5A/r169cobEs4lQWIsgNNH+P0m6qpWCq14HvKz915550XjuOUVU4X1JTXrbfeOsUPPvhgaPvsZz+b4ttuu630HHNp4PycLV68OMWSPtySa9MmKVWabsn2Z5qGzKlh3Gc17XGXXXZJ8Z133hna+N5xmluZ5GZZsPUVp4oCwGabbZbiyZMnV/o8tjUDytMWOQ0LAIYNG5ZilawwdUlw+vXr1yieb5ZIAMCPf/zj5f58Ti3Tv5XT49laU1MOOa1wzJgxKVZ7TmbLLbcMr/fYY48Uc98+5ZRTwnH6ujWwlVzOanLKlCm1phoX85BKZJiTTz45vOZnneVwajP03e9+N8VqBzZ+/PgU85zD/QZomspbBR4DgNi/eczJpcmfeeaZ4TU/1zfddFOK9bnj+Zrt1YA4Z9bVFwcOHNgozlVT5fnaVU37V9tTtj/M2ddyirJKyFiSkVtjcf/729/+Ftr69u2bYpb46Dpq9OjRpZ/PsGRBrVPZ6kqtlkVO2SbzYh2ofIMt31rTp1rChz/84RTrPD5w4MAUszSB5axAXI/wegmI0i9+7nS+z1GkbJ999tn45z//Wbs0Va1Cy2xjgbgu4X7aEikNj99sGazyMpYv8VxY2GgXcIr4xz/+8dDG0hOej//+97+H4+bNm5ditlgFoj0dW02qhJjTxVWizGn3l156aZv0Rf77gCi1VknU4YcfnuI999yTz63ydx900EEpZptgXQuytIafH90v5mTPPKby2KsWn62ZM1VaxM+krjWK/crdd9+NV1991Wn/xhhjjDHGGGPMBx1v/o0xxhhjjDHGmHaON//GGGOMMcYYY0w7p0Wa/z59+jQKXYHqr3Owlp0tMlRTyHpA1V+z7oX1SYccckg4jnWprBdSrRDbc7DmFchrrco48sgjw+vzzz+/2eP0evP1yH1XXdrGTp06NYr78cgjj4Q2/ruVMi2i6s1vvPHGFLMeUmHLjVtuuaX0ONZ75qzplC9/+cspZi2i/s1ssfXAAw9U/nymc+fOKX7nnXdyh9amp9pggw0aha6UdVHLgjX6rO1TjVNhXQZELSsQLUymTp2aYtX8cx/jOgRsr6KoVpktv3K2m4xq2lijxeOAjh2sTc9paleE7SbbSX7/+98PbWWaXr12/Lfq/WULItYK7rfffuG4ww47LMWsUWddHtDUrqeMNddcM8U8preEnK0j13lZRt2E2vpir169Gttssw2AvF5Wx1euTXH11VenWO32ctaq3E/Ztko/g+1A2XZJ7ad4vNU5jMc2tmlk+0Y9p4ULF4Y2rp2imkiG9ej33ntvaGOLsrr6YocOHRqFXpfPUeExAgDGjRuXYh4ntS4Mj9Gqf2ddMFtMcZ0AIPbF3PqL9a5jx44tPY77itrXssa5f//+oa2o+wTE2k9srwbEMX8Z1NYX11prrUZhy5bTCHPtKaB1Voe8dgOAGTNmtPgzuKaAWnfxs5WrWbXJJpukmOfjZcFrUbYh1fmTbQu5Bgzwfj2lqjrjKvC8qDr5KVOmpHjRokWhraotcA7W73PdDq5LBES7Xa7XoxZuvH5R+PrzmMb1BID4jDzzzDOhjedC1oNr39MaaoxY69XWF3v27Nkoxjq23gOivbDWQOFaVLzv4DpeQJzv1CqW5yetLVcFXhMpRS225j6f+5HW+PnhD3+Y4mK9ULDbbrulmM99lVVWCcextbPuJYv3jR07FrNmzbLm3xhjjDHGGGOM+aDjzb8xxhhjjDHGGNPOaanV3xwA1fLgTZ18uNForFXHB/ke/kfxffzvx/ewfeD7+N+P72H7wPfxvx/fw/aB7+N/P5XuYYs2/8YYY4wxxhhjjPnvw2n/xhhjjDHGGGNMO8ebf2OMMcYYY4wxpp3jzb8xxhhjjDHGGNPO8ebfGGOMMcYYY4xp53jzb4wxxhhjjDHGtHO8+TfGGGOMMcYYY9o53vwbY4wxxhhjjDHtHG/+jTHGGGOMMcaYdo43/8YYY4wxxhhjTDvn/wOFZsvNREmiAwAAAABJRU5ErkJggg==)
%% Cell type:markdown id: tags:
# Let's create our machine learning architecture
Here we're creating an Autoencoder architecture
%% Cell type:code id: tags:
``` python
from keras.layers import Input, Dense, Conv2D, MaxPooling2D, UpSampling2D
from keras.models import Model
from keras import backend as K
input_img = Input(shape=(28, 28, 1)) # adapt this if using `channels_first` image data format
x = Conv2D(32, (3, 3), activation='relu', padding='same')(input_img)
x = MaxPooling2D((2, 2), padding='same')(x)
x = Conv2D(32, (3, 3), activation='relu', padding='same')(x)
encoded = MaxPooling2D((2, 2), padding='same')(x)
# at this point the representation is (7, 7, 32)
x = Conv2D(32, (3, 3), activation='relu', padding='same')(encoded)
x = UpSampling2D((2, 2))(x)
x = Conv2D(32, (3, 3), activation='relu', padding='same')(x)
x = UpSampling2D((2, 2))(x)
decoded = Conv2D(1, (3, 3), activation='sigmoid', padding='same')(x)
autoencoder = Model(input_img, decoded)
autoencoder.compile(optimizer='adadelta', loss='binary_crossentropy')
```
%% Cell type:markdown id: tags:
# Let's Train our Model...
%% Cell type:code id: tags:
``` python
from keras.callbacks import TensorBoard
autoencoder.fit(x_train_noisy, x_train,
epochs=100,
batch_size=128,
shuffle=True,
validation_data=(x_test_noisy, x_test),
callbacks=[TensorBoard(log_dir='/data/scratch/wsmonroe', histogram_freq=0, write_graph=False)])
```
%%%% Output: stream
Train on 60000 samples, validate on 10000 samples
Epoch 1/100
60000/60000 [==============================] - 3s 45us/step - loss: 0.0966 - val_loss: 0.0957
Epoch 2/100
60000/60000 [==============================] - 3s 44us/step - loss: 0.0966 - val_loss: 0.0957
Epoch 3/100
60000/60000 [==============================] - 3s 45us/step - loss: 0.0965 - val_loss: 0.0959
Epoch 4/100
60000/60000 [==============================] - 3s 45us/step - loss: 0.0963 - val_loss: 0.0959
Epoch 5/100
60000/60000 [==============================] - 3s 45us/step - loss: 0.0962 - val_loss: 0.0955
Epoch 6/100
60000/60000 [==============================] - 3s 46us/step - loss: 0.0962 - val_loss: 0.0953
Epoch 7/100
60000/60000 [==============================] - 3s 45us/step - loss: 0.0962 - val_loss: 0.0953
Epoch 8/100
60000/60000 [==============================] - 3s 46us/step - loss: 0.0960 - val_loss: 0.0952
Epoch 9/100
60000/60000 [==============================] - 3s 45us/step - loss: 0.0959 - val_loss: 0.0958
Epoch 10/100
60000/60000 [==============================] - 3s 45us/step - loss: 0.0959 - val_loss: 0.0957
Epoch 11/100
60000/60000 [==============================] - 3s 46us/step - loss: 0.0958 - val_loss: 0.0961
Epoch 12/100
60000/60000 [==============================] - 3s 45us/step - loss: 0.0958 - val_loss: 0.0954
Epoch 13/100
60000/60000 [==============================] - 3s 46us/step - loss: 0.0957 - val_loss: 0.0952
Epoch 14/100
60000/60000 [==============================] - 3s 46us/step - loss: 0.0956 - val_loss: 0.0951
Epoch 15/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0956 - val_loss: 0.0948
Epoch 16/100
60000/60000 [==============================] - 3s 48us/step - loss: 0.0956 - val_loss: 0.0949
Epoch 17/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0954 - val_loss: 0.0949
Epoch 18/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0954 - val_loss: 0.0947
Epoch 19/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0953 - val_loss: 0.0947
Epoch 20/100
60000/60000 [==============================] - 3s 48us/step - loss: 0.0953 - val_loss: 0.0949
Epoch 21/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0953 - val_loss: 0.0959
Epoch 22/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0952 - val_loss: 0.0952
Epoch 23/100
60000/60000 [==============================] - 3s 46us/step - loss: 0.0952 - val_loss: 0.0958
Epoch 24/100
60000/60000 [==============================] - 3s 45us/step - loss: 0.0951 - val_loss: 0.0946
Epoch 25/100
60000/60000 [==============================] - 3s 46us/step - loss: 0.0952 - val_loss: 0.0947
Epoch 26/100
60000/60000 [==============================] - 3s 46us/step - loss: 0.0951 - val_loss: 0.0944
Epoch 27/100
60000/60000 [==============================] - 3s 46us/step - loss: 0.0950 - val_loss: 0.0945
Epoch 28/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0950 - val_loss: 0.0947
Epoch 29/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0949 - val_loss: 0.0947
Epoch 30/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0949 - val_loss: 0.0949
Epoch 31/100
60000/60000 [==============================] - 3s 48us/step - loss: 0.0948 - val_loss: 0.0954
Epoch 32/100
60000/60000 [==============================] - 3s 48us/step - loss: 0.0948 - val_loss: 0.0942
Epoch 33/100
60000/60000 [==============================] - 3s 48us/step - loss: 0.0948 - val_loss: 0.0954
Epoch 34/100
60000/60000 [==============================] - 3s 48us/step - loss: 0.0948 - val_loss: 0.0942
Epoch 35/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0948 - val_loss: 0.0950
Epoch 36/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0947 - val_loss: 0.0942
Epoch 37/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0947 - val_loss: 0.0945
Epoch 38/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0946 - val_loss: 0.0950
Epoch 39/100
60000/60000 [==============================] - 3s 48us/step - loss: 0.0946 - val_loss: 0.0944
Epoch 40/100
60000/60000 [==============================] - 3s 48us/step - loss: 0.0946 - val_loss: 0.0943
Epoch 41/100
60000/60000 [==============================] - 3s 46us/step - loss: 0.0945 - val_loss: 0.0947
Epoch 42/100
60000/60000 [==============================] - 3s 48us/step - loss: 0.0945 - val_loss: 0.0947
Epoch 43/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0945 - val_loss: 0.0952
Epoch 44/100
60000/60000 [==============================] - 3s 46us/step - loss: 0.0944 - val_loss: 0.0949
Epoch 45/100
60000/60000 [==============================] - 3s 45us/step - loss: 0.0944 - val_loss: 0.0940
Epoch 46/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0944 - val_loss: 0.0940
Epoch 47/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0944 - val_loss: 0.0946
Epoch 48/100
60000/60000 [==============================] - 3s 48us/step - loss: 0.0944 - val_loss: 0.0945
Epoch 49/100
60000/60000 [==============================] - 3s 46us/step - loss: 0.0943 - val_loss: 0.0945
Epoch 50/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0943 - val_loss: 0.0940
Epoch 51/100
60000/60000 [==============================] - 3s 45us/step - loss: 0.0943 - val_loss: 0.0950
Epoch 52/100
60000/60000 [==============================] - 3s 45us/step - loss: 0.0943 - val_loss: 0.0939
Epoch 53/100
60000/60000 [==============================] - 3s 46us/step - loss: 0.0942 - val_loss: 0.0950
Epoch 54/100
60000/60000 [==============================] - 3s 46us/step - loss: 0.0942 - val_loss: 0.0939
Epoch 55/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0942 - val_loss: 0.0940
Epoch 56/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0942 - val_loss: 0.0939
Epoch 57/100
60000/60000 [==============================] - 3s 48us/step - loss: 0.0942 - val_loss: 0.0941
Epoch 58/100
60000/60000 [==============================] - 3s 49us/step - loss: 0.0941 - val_loss: 0.0943
Epoch 59/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0941 - val_loss: 0.0948
Epoch 60/100
60000/60000 [==============================] - 3s 48us/step - loss: 0.0941 - val_loss: 0.0937
Epoch 61/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0940 - val_loss: 0.0937
Epoch 62/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0941 - val_loss: 0.0946
Epoch 63/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0940 - val_loss: 0.0944
Epoch 64/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0940 - val_loss: 0.0938
Epoch 65/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0940 - val_loss: 0.0938
Epoch 66/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0940 - val_loss: 0.0937
Epoch 67/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0939 - val_loss: 0.0937
Epoch 68/100
60000/60000 [==============================] - 3s 48us/step - loss: 0.0939 - val_loss: 0.0937
Epoch 69/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0939 - val_loss: 0.0944
Epoch 70/100
60000/60000 [==============================] - 3s 46us/step - loss: 0.0939 - val_loss: 0.0938
Epoch 71/100
60000/60000 [==============================] - 3s 46us/step - loss: 0.0940 - val_loss: 0.0940
Epoch 72/100
60000/60000 [==============================] - 3s 46us/step - loss: 0.0939 - val_loss: 0.0937
Epoch 73/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0939 - val_loss: 0.0941
Epoch 74/100
60000/60000 [==============================] - 3s 48us/step - loss: 0.0939 - val_loss: 0.0936
Epoch 75/100
60000/60000 [==============================] - 3s 48us/step - loss: 0.0938 - val_loss: 0.0936
Epoch 76/100
60000/60000 [==============================] - 3s 48us/step - loss: 0.0938 - val_loss: 0.0937
Epoch 77/100
%%%% Output: stream
60000/60000 [==============================] - 3s 50us/step - loss: 0.0939 - val_loss: 0.0936
Epoch 78/100
60000/60000 [==============================] - 3s 46us/step - loss: 0.0938 - val_loss: 0.0937
Epoch 79/100
60000/60000 [==============================] - 3s 45us/step - loss: 0.0938 - val_loss: 0.0935
Epoch 80/100
60000/60000 [==============================] - 3s 45us/step - loss: 0.0938 - val_loss: 0.0936
Epoch 81/100
60000/60000 [==============================] - 3s 46us/step - loss: 0.0937 - val_loss: 0.0935
Epoch 82/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0937 - val_loss: 0.0936
Epoch 83/100
60000/60000 [==============================] - 3s 48us/step - loss: 0.0937 - val_loss: 0.0935
Epoch 84/100
60000/60000 [==============================] - 3s 48us/step - loss: 0.0937 - val_loss: 0.0935
Epoch 85/100
60000/60000 [==============================] - 3s 46us/step - loss: 0.0937 - val_loss: 0.0936
Epoch 86/100
60000/60000 [==============================] - 3s 45us/step - loss: 0.0937 - val_loss: 0.0935
Epoch 87/100
60000/60000 [==============================] - 3s 45us/step - loss: 0.0936 - val_loss: 0.0944
Epoch 88/100
60000/60000 [==============================] - 3s 45us/step - loss: 0.0937 - val_loss: 0.0942
Epoch 89/100
60000/60000 [==============================] - 3s 45us/step - loss: 0.0936 - val_loss: 0.0934
Epoch 90/100
60000/60000 [==============================] - 3s 46us/step - loss: 0.0936 - val_loss: 0.0936
Epoch 91/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0936 - val_loss: 0.0935
Epoch 92/100
60000/60000 [==============================] - 3s 48us/step - loss: 0.0936 - val_loss: 0.0936
Epoch 93/100
60000/60000 [==============================] - 3s 48us/step - loss: 0.0936 - val_loss: 0.0940
Epoch 94/100
60000/60000 [==============================] - 3s 48us/step - loss: 0.0936 - val_loss: 0.0940
Epoch 95/100
60000/60000 [==============================] - 3s 46us/step - loss: 0.0935 - val_loss: 0.0934
Epoch 96/100
60000/60000 [==============================] - 3s 46us/step - loss: 0.0936 - val_loss: 0.0934
Epoch 97/100
60000/60000 [==============================] - 3s 46us/step - loss: 0.0936 - val_loss: 0.0944
Epoch 98/100
60000/60000 [==============================] - 3s 46us/step - loss: 0.0936 - val_loss: 0.0933
Epoch 99/100
60000/60000 [==============================] - 3s 46us/step - loss: 0.0935 - val_loss: 0.0936
Epoch 100/100
60000/60000 [==============================] - 3s 47us/step - loss: 0.0935 - val_loss: 0.0934
%%%% Output: execute_result
<keras.callbacks.History at 0x2aab68566470>
%% Cell type:markdown id: tags:
# How'd we do?
%% Cell type:code id: tags:
``` python
decoded_imgs = autoencoder.predict(x_test_noisy)
n = 10
plt.figure(figsize=(20, 4))
for i in range(1,n):
# display original
ax = plt.subplot(2, n, i)
plt.imshow(x_test_noisy[i].reshape(28, 28))
plt.gray()
ax.get_xaxis().set_visible(False)
ax.get_yaxis().set_visible(False)
# display reconstruction
ax = plt.subplot(2, n, i + n)
plt.imshow(decoded_imgs[i].reshape(28, 28))
plt.gray()
ax.get_xaxis().set_visible(False)
ax.get_yaxis().set_visible(False)
plt.show()
```
%%%% Output: display_data
![](data:image/png;base64,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5Dh6+BdCCCGEEEIIIXKc3zTtn1m9enWIR4wY4dref//9QvtxigymbjRu3DjEZ599tuuHqSArV650bVOnTg2xUqpKHk4bjTvnbEuFtmR169Z1bZj2hNeXPyPpe9NOrcwVMB3usMMOC/Hll1/u+iWlwyFogbPDDju4NkyDxTE8evRo14/troSH7/sHHnggxJh2jJZ6ZunYK2K6G9qvcgoepqDL2qrkwPm2Vq1aru3Pf/5ziDkVHFNO0XYO12PxKzzeevbsGWJMITXz1ls333xziJcuXer6pb0GJdnRoYyOxx7uxWQTtpm4cdWpUyfXD/cquG796U9/cv3werNUZPbs2YV+htgySWngKEXDVH+UHZt5GSPabrLd5Y8//hjir776yrXhNcT3LVy40PWbM2dOiFmWN3fu3BDj/MxjFu+R0rCXRQvSli1bhvjKK690/dCaEfcfaFNtlmxVjXMgSrNQamFm9uabb4b43//+t2tDeSV+RknKqvTLvxBCCCGEEEIIkePo4V8IIYQQQgghhMhx9PAvhBBCCCGEEELkOL8rzT/COqZffvklxKjZYb14nTp1QvzMM8+EmLWNqHsZNmyYa0P9hdj2xFlHse4GdVissURNKl5r1p6jXidJO1cadFJx8Dnbe++9Q9yrV68Qs9UfXi/UtE2fPt31QysptHsz8+P51VdfDfGNN97o+g0aNCjE0kAWhOe/Qw89NMSLFy8O8f333+/6pXHfx30G13dAfduECRNcG94/pXkspk3z5s3d64YNG4aYzzNqVl988cUQ49pc2PtKC7hu4bxl5rWlrOMcMmRIiFHvW9LnEWut9O/f37WhJee3337r2l577bUQqxbHZvB8omUmWt4yaBu20047ubYzzzwz9n233357iHH+Lq1jLwneT2LNhXPPPde1tWvXLsRLliwJMWu0+/XrF2KsY/P999+7flhviutj4NhBjTr3S9Lrl+brjde1du3arg3nMxyLWK+KPwOvB+8hk7T3WDdi++23DzHusczM9tlnnxCfeuqpru2pp54K8SuvvJLV924t+uVfCCGEEEIIIYTIcfTwL4QQQgghhBBC5Di/27R/Js52DVOtzMxOP/30ELdv3z728zBV58EHH3RtJZlqIYoPX+tDDjkkxGyx8uGHHxbaxmmKeC8phXEzmA61xx57uLa77747xJjqz9ILtIl7+eWXQ3znnXe6fmhRwymSjz/+eIgxdR2t6szM8vPzQ/z888+7ttJqR4XXg9MbUZKBNlKcwp0GeC+h7c7uu+/u+s2fPz/En3zyiWvTnJweeF906dLFteEcy6mPKKND+ynJbH4Fz+vOO+/s2nAMoLWfmZczlfRchSmqOA8ff/zxrh+uiywFKok54o8Ir3d77rlniC+55JIQs2wObYhxHkbrYjNvwYr7WjMvwRk4cGCIZbtZELTlMzO77LLLQswW4DNmzAgx7j1mzpzp+qEkAMdscfeQWt+2DMs3cD84YMAA19a5c+cQ4/jj54QpU6aEGKVsbCWN8hyWGNxyyy0hRhkdylnNvJUgzhVmXm6Caf8liX75F0IIIYQQQgghchw9/AshhBBCCCGEEDnOHybtH8H0j3r16rm2m2++OcRJFTSxGuSsWbPSPkSREnituRpukyZNQswViTG1LqlaKsJtca4DpYEqVaqEuEePHq4Nq5biGMP0fTOffn/vvfeGGNO7zfz1ef31110bpnY98sgjIcYUKjNfffebb75xbWPHjrXSAN+vDRo0CPGll17q2rCqOFYbLwnpC6a2Xn/99SGuVq2a6/fee++FmMezJDnpganfhx9+uGvDe4hdb0aOHBliTC8uzRWnkaT14scffyw0NvOSJRwrvGfBz8eUc5yDzfz15fRSlEt17Nix0O8187Kb4cOHuzY8rtJ87StVquReowMNyj4++ugj12/w4MEhxsrzPEe3bds2xOwe0a1btxCPGTMmxJMmTXL9SqvkDeVLF154oWtDCRzLJHAfgWOA0/JL63n9LeH9wl//+tcQd+rUybXhXDl37twQ8172/fffDzHKmVjKhnMsy4979+4dYqzwf8YZZ7h++LzCrgO4V9tWex398i+EEEIIIYQQQuQ4evgXQgghhBBCCCFyHD38CyGEEEIIIYQQOc4fUvOPmja26cMaAKidmDhxouuH2jdZFf22JOkGUWuDOjczr0tHPaqZ2eLFi0NcXA1NadYzomaRdcGoeULt2/jx412/++67L8QLFiwIMY83PM+srXvhhRdCvN9++4X4nHPOcf3QVuWxxx5zbUceeWSIWcecS7D2F23ctt9+e9f28MMPhxivTUnc8w0bNgwx6oy5RgRqYWVZVXKgfrhRo0ax/dhu8YcffgixajAks3z5cvca50bWiuP8lDRPoi4ULaXY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3PJrfcKuWeVU//ykeE3R0yf9lq7S0/jNYolRLjeqlHpaaypwPp7q90fXr1lc3zqW0/xZz71Hz1tmZrfddpvHej76+eefw7wvv/zSY/ZH/dLyqBtvvLHivC1btoTX+anx6Bu1Pm28O+9nFsu4pkyZ4vENN9wQ5j333HMeb9iwIYx9//33HutxP58DSjsO6P8vp9FrGe4zzzzjcT7faVmynse++OKLMO/gwYMe5+sevdbRMthBgwaFebmEC92XOy6cc845HmvXo7y/tRxSy2zMzH744QePG6mUil/+AQAAAAAoHDf/AAAAAAAUjpt/AAAAAAAK1681/7n+QuuChwwZEsa07khrZfKzAa655hqPtf4i181ofWyuPdV/p/U3uRZHayfz/0XfQz97rod99tlnPdYaLLN/aqhzC68SaI2wtlcxi9tVa7Joc9J3tJ2MWawRP+2008KYriVteaOt/czimtA1W632LdcXajsi/UyPP/54mKctrJpV3nbV6k57WseZa9v0/fNzG7SuTvf9H3/80aPPgEjrFC+//PIwpudW3XcrV64M8/IzAFA/9Jx57733eqyt/czitc3vv/9e8T00ps1mY9F9/MILL3h8ySWXhHl6rh49enQYq1TzX1qNf3fp9eauXbvCmG4jfVbZ/fffX/E9TjrppDCm60+3/zfffBPm5fa76L7hw4eH16+++qrHp556qsf5+Unt7e2dxmbx2rm77eX7A7/8AwAAAABQOG7+AQAAAAAoXF2l/WuKr7bcMDMbNmyYx9rmJqeYalqpvn9u3VAtPUNfa6yfz8zszz//7DQ2iy11/vrrL49zqqu2Xzlw4EAY+zvdp5HaR9RK91tLS0sY032l2zGn4qD3dHR0hNevvPKKxz/99FMYO++88zzWVLbcXkxTDjXWsg6zuMZy+umePXs8fv755z3etGlTmFdiO8yuysfT/Prfcv7554fXY8aM8ViPhbk1JHpGy9IeffTRMKbr77fffvN43rx5YZ7uH/SvfM2i5Vd33nmnx7mkUUs38nFdS7P0eiYfP0u85iiVpqQvXrw4jGkZbD4/V7rOxf/oGliyZEkYu/322z3WsrZTTjklzNN1Ve26R9dpW1tbmEd7zp7RltPz588PY2effbbHuq9yW8y1a9d6rO3HzRr3WMkv/wAAAAAAFI6bfwAAAAAACsfNPwAAAAAAhevXmv9cZ7R3716PZ82aFca2bNnisbYzya3ztH2G1pXnNn1aJ5dbyB08eNBjbYeycePGME/rkXMtf6UWdXme1vPkZwqUTPeTtqHK9u3b5zG1T30nt5P5/PPPPf7666/DmD5zQ9tMTZo0Kcw799xzPdZnA+R1r+2otLbKzGz27Nke79ixw+NmWiu1qla3Wa3+v9b2NDovv5+2fJw6dWoY0+ewfPzxxx7nmn/qTrtO60hHjRrlcW6fqvScpsdX1De9ntFjcK4l1trVM888M4zpc3O2b9/uMefWxqXXlx999FEYu+yyyzzW+n8zs+XLl3vM+bS63AL1scce81hbLY4dOzbM0zWrtedm8fkqr732msd6r2PGebE7dLs/+eSTHre2toZ5eh/y3XffeTxnzpww79tvv/X4l19+CWP6vLdGqv/nl38AAAAAAArHzT8AAAAAAIWrq7R/baHw1VdfhTFNVVy2bFlN76FpNTkdQ1Pj8nvo3O62QyFV52iVUo9z6qmWRmipRS7PYBv3npz2t3//fo8PHToUxrQFVXt7u8daKmBmNmLECI81/TTvR00/1fQqs5hSRTu/6vIxrtZjl65LTYMziynFmr5/3HHHhXmXXnqpxznlXFvLvfzyyx7n7wH+v3wM1fRGLa3J3wVtoanreciQIWGelv/k1qqVvk8ch/tG3q66D3Wd5rR/LcHRdWkW05d1XzdSuioiPS/m0tRFixZ5fNFFF4UxLR3Rtc534Wj5+mjz5s0e33PPPR7rNY+Z2eTJkz1+4oknKr7nm2++6TEtrbsunxf1uKfbPbeG1+PhtGnTPP7www/DPD1W5u9Co57/+OUfAAAAAIDCcfMPAAAAAEDh+jXtP9P0CU3Zz68PHz78r30m9A1NbdInupuZrVmzxuMVK1Z4nL8T6D05dUlTsmtNQ9P0brNYurN69eqa/zZ6R63bVdM8taTDLKbTaYeUY445JszTDilvvfVWGNMUyXXr1nX6d9E9mvKr5TNtbW1h3oQJEzzW1ODBgweHeR0dHR5XKx1gzfa9vI21FGvhwoUe33TTTWHep59+6nFei9u2bfOYJ/yXQb8n+dp41apVHuv6NTMbOnSox9pxh+/F0fJa1NRvPffla6CdO3d6rJ2RzMwuuOACj/W4i6479thjw+vp06d7rB3htIzULJYEfPDBBx43Q4kxv/wDAAAAAFA4bv4BAAAAACgcN/8AAAAAABRuQFdqGQYMGFBe4UODOHLkSOd98rqoXvah1hbn9htaa6q1VQXU3Ww6cuRIS2+8Ub3sx2ZU2lpUuWWOvtY1m9uL6evcLlDbr+a6035U3FqstK/Mjt4nf8vtM6u1wK1HJa/FanS95fOnrrFq7T/rSHFrsV7ocWDQoEFhTL8LWuPc3WN0s67FavSYfMUVV4Sxq666ymN9hoc+Q6AfNMxa1O92a2trGFu6dKnH+jyA/AyUqVOneqwtxuv0OFmzWtYiv/wDAAAAAFA4bv4BAAAAAChcXbX6Q/PQdMRaW8kB6Fs53U1fVyrHQX3QfVUtnR+NT/cn+xaV6DFb05rNYkp6o6c51yvdruvXrw9j2naTa+CeyS38tm7d6rG2v5w2bVqYV1Kqf1fxyz8AAAAAAIXj5h8AAAAAgMJx8w8AAAAAQOGo+QcAAACaRLPVOPe3/JwcnpvTM/o8i+3bt4exW265xWNtXaktLc2aew3wyz8AAAAAAIXj5h8AAAAAgMJ1Ne2/w8z29MUHQVX/6cX3Yh/2H/Zj42MfloH92PjYh2VgPzY+9mEZGnI/5laJTd46saZ9OKCZax4AAAAAAGgGpP0DAAAAAFA4bv4BAAAAACgcN/8AAAAAABSOm38AAAAAAArHzT8AAAAAAIXj5h8AAAAAgMJx8w8AAAAAQOG4+QcAAAAAoHDc/AMAAAAAULj/Ar+FkaBbOXlIAAAAAElFTkSuQmCC)
%% Cell type:code id: tags:
``` python
```
%% Cell type:code id: tags:
``` python
```
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment