{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# CNN for MNIST digits" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import warnings\n", "warnings.simplefilter(action='ignore', category=FutureWarning)\n", "import h5py\n", "warnings.resetwarnings()\n", "warnings.simplefilter(action='ignore', category=ImportWarning)\n", "warnings.simplefilter(action='ignore', category=RuntimeWarning)\n", "warnings.simplefilter(action='ignore', category=DeprecationWarning)\n", "warnings.simplefilter(action='ignore', category=ResourceWarning)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Using TensorFlow backend.\n" ] } ], "source": [ "from keras import models\n", "from keras import layers\n", "from keras.utils.np_utils import to_categorical, normalize" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "from keras.datasets import mnist" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "(train_data, train_labels), (test_data, test_labels) = mnist.load_data()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAADRCAYAAACZ6CZ9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAGgNJREFUeJzt3Xu81VP+x/HXEbmnpEkMISWXKUyR9KgGuSYSpZGU66DEYzKGTO4qhpmEyhiXMvNoGiTMNDRESeYRMzweKMKoyWVSbk0hsX9/9Pus7/qes885e5/z3fu79t7v5z99H+u722f17Zyz9metz/qsqkwmg4iISGg2S7sDIiIi2WiAEhGRIGmAEhGRIGmAEhGRIGmAEhGRIGmAEhGRIGmAEhGRIGmAEhGRIGmAEhGRIG2ez4urqqpUduL/ZTKZqsa+h55nRM8zcaszmUyrxryBnmdMo58n6Jn6cvmZVwQlUp6Wp92BMqPnmQINUCIiEiQNUCIiEiQNUCIiEiQNUCIiEiQNUCIiEiQNUCIiEiQNUCIiEiQNUCIiEqS8KklIefvxj38MwIgRI1zb0KFDAZg2bRoAkyZNcvf++c9/FrF3IlJpFEGJiEiQqjKZ3EtDpVFHqkmTJgDssMMOtb7G/8S/zTbbALDPPvsAcPHFF7t7v/71rwEYPHiwa/v6668BGD9+PADXXXddTv0ql9pxBx54oLt+9tlnAWjWrFmtr//iiy/cdcuWLRPrR7k8z8Y48sgjAfjDH/7g2nr16gXAW2+9le/bvZLJZLo0pj+l9DyvvvpqIP7zu9lmmz5/9+7d27U9//zzDf0SjX6eUFrPtNBUi09EREpWamtQu+++u7tu2rQpAN27dwegR48e7l7z5s0BGDBgQF7vv3LlSgDuuOMO19a/f38A1q5d69pee+01oFGfrErSIYccAsAjjzzi2ixK9aNqe1YbNmwA4lFTt27dgPhalL0uZD179gSif8usWbPS7I7TtWtXABYvXpxyT0rHsGHDALjiiisA+P7772u8Jp9ZIgmLIigREQmSBigREQlS0af4bFHeFuSh7gSIfFmIb4um//vf/9w9W3z+6KOPXNtnn30GNGgRumRY4gjAwQcfDMBDDz0EQJs2ber8u8uWLQPglltuAWDGjBnu3sKFC4HoWQOMGzcugR4Xli2at2/fHkh3is8W8gH23HNPANq2bevaqqoanTtS1uxZbbXVVin3JFyHHnooAEOGDAGixBuA/fffv8brR48eDcCHH34IxJdc7PfGP/7xj8J0thpFUCIiEqSiR1ArVqwAYM2aNa4tnwjKH7k///xzAH7yk5+4Nluknz59eqP6WU6mTp3qrv0U+1xYxLXddtsB8WQSi0Q6derUyB4Wl20+XrRoUco9iUew5513HhB9SgVYunRp0fsUuqOOOspdjxw5MnbPf159+/YF4L///W9xOhaQQYMGueuJEycCsNNOOwHxqPy5554DoFWr6DT7W2+9NfZe/uvtdaeffnqyHa6FIigREQmSBigREQlS0af4Pv30UwAuv/xy12ah+L/+9S8gvnfJvPrqqwD06dPHta1btw6IL/SNGjUq4R6XLqutd8IJJ7i26ovu/pTdE088AUQVNyBaKLX/G0sqATjiiCOyvmfo/MSEtN1777012iwxReJssf7+++93bdWXB/zpqeXLlxenYwHYfPNNv8q7dNlU7OJ3v/udu2dJUvPnzwfghhtucPdeeOEFALbcckvXNnPmTACOPvroGl/n5ZdfTrLb9QrnJ1VERMSTWiWJxx57zF1byrlVLejcubO7d8455wDRp3qLmnxvvPGGuz7//POT72yJsVT+uXPnAvHaerarfs6cOUA8acLST/20cfuE/8knnwBR5Q2IUvr9CM2SKkKrdO4ncrRu3TrFnsRlSxCy/zeJO+usswDYZZddatyzxX6rul9pLIU8W0Ru30+WOPHll1/WeI2fVFE9crKqPAAPPvhg4zubB0VQIiISpCDOg6o+ovsVs42l4P7pT39ybdnqblWqDh06uGtb37NP56tXr3b3bJOyfRLyNzL/5S9/if2Zq6233tpd//znPwfgjDPOyOs9Cu344493135/02JRnG3O9X3wwQfF7k6wLDUa4OyzzwbiP/e21eTGG28sbscC4K8lXXXVVUA0Q3L33Xe7ezYjki1yMmPGjKn13iWXXOKubSalWBRBiYhIkDRAiYhIkIKY4qvu2muvddeWKm0L+P4u8qeffrqo/QqRpYf6qeE2nWVJJ1Y5AaI00UJNc/nHqITEDrD0+ck1xWb/X37Cxttvvw3Ej4OpVHvssQcQPw4mm0mTJgEwb968QncpGGPHjgWiaT2IKug89dRTQHT8CMBXX30V+/t+3UJL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6/37/ustIe3dd991baNHj06kn9koghIRkSBpgBIRkSAFMcXXv39/AM4999x6X+uHln369AHiSRJ77713wr0rfdtss4273n333Wt9XdeuXYF4EomSKmDy5MkAPPbYYzXu2R6QXBfumzVrBkQ1EG3/lM//Oi+//HJ+nS0z/l6yrbbaKsWelK577rkHgPbt2wOw3377uXuW4FCXq666yl23bNkSgPPOO8+1vfbaa4n0MxtFUCIiEqQgIih/Z35177//PgCLFy8G4pUk/MjJ+LXlZJMPP/zQXT/wwAMAXHvttTVeZ22ff/65a7vzzjsL2bWSsHHjRiD791u+LKGnRYsWtb5m5cqV7rpS60dm06VLFwBeeumllHtSWtavXw9E0WiukeiBBx4IQNu2bV2bJf4UK5pVBCUiIkEKIoKy+czzzz8fgKefftrde+edd4Aonbc+rVu3Trh35eWGG24AskdQUhh+dXL7Xvc3nFc3duzYgvcpVBatfvHFF0C0BQWgXbt2qfSpFNnPOcCPfvQjAJYsWQLUv2a07bbbAtFslb+GbdHrww8/nFxn66AISkREgqQBSkREghTEFJ8t4icx7WRHcEjdrOJBvofqSd2sZiTAL3/5SyC+9cGvYVbdq6++CkSp65XIEnQWLFgAQN++fdPsTsnZbbfdgHgauE2bjhgxAogfv5ONHfJqyWt+klWxD41UBCUiIkEKIoLKhR02aAt4tbEFQfPiiy+660WLFiXfsRJlkVO+h+pVIjss88wzzwTgqKOOqvW1PXr0cNd1PVs7gNCiLIC//vWvAHz11VcN7qtUJquRN2vWLCBed3TSpEkAPP/887X+fb+enh3MaW666aakupk3RVAiIhKkoCIoS2f0S3Fcc801QPZK0nWto9i86fDhw13bd999l1xnpazZJ1KAxx9/HKi7TFS+bI3FytBI/azMTqXbfPNNv7aHDBni2qpX0/d/J9q6/JVXXglEa0wAO+64IxAvlmAV5KdNmwbA1KlTk/0H5EERlIiIBEkDlIiIBCm1KT4/3faggw4C4JFHHgGgTZs27p4tGNuUnZ/ocOyxxwLxnc7GwuBTTjnFtU2cOBGADRs2NP4fIBXDpjxyOTyvvgMLjaVPH3fcca5tzpw5De1iRejXr1/aXQiCVSa59957XZsl5Nj3nFXggaiGof150kknuXu77rorEP+da2noZ599duJ9z5ciKBERCVLRI6imTZsCUfQD8Oijj8Zec91117nrZ599FoCFCxcC0aKef89f0DatWrUCYNy4ca5txYoVQPy8nUqtFl1XgokdEQ2VW83czmsC6N27NxAtSj/11FPu3tdff13ve51zzjnueuTIkQn1sLzNmzcP0EZdM2jQIHd9//33A/EN3bbB+ac//SkAn332mbt32223AdCrVy8giqQgmhXwt0RYirpV77fvf4ifx1cMiqBERCRIGqBERCRIVflUEqiqqmpQ2QE/IeL6668H4PLLL6/xOlskth37EIWuNmVnu+0BDj74YCCe9HDLLbcA0bSfvyBo/v73v7vrCRMmAPGQ2FhttGwymUz9K+b1aOjzTILtCavv/79Tp04AvPnmmwXtT6k/z7r4R0asWbMmdu/EE0901wknSbySyWS61P+y2qX5PAcMGADAn//8Z9dmCVP+Psnly5cXq0uNfp7Q8GdqyxkQHSB44403ujab9svGnpftZ/LrlWab4jN//OMfARg6dGhDulyvXH7mFUGJiEiQCpok0aRJEyB+eJbVfFq3bp1rs3pkM2bMAOJHjtuCni3WW0o6wLJlywC48MILXZstrjZr1gyA7t27u3tWadpPV507d26sz/6x3nvuuWe9/8ZSNWXKFAAuuOCCOl9nh0heeumlBe9TubJj3iV3VoHbZ5/2t9xyy2J3J3WzZ89215ZU5v+uqoslPWRLJhs8eDAQTwoyK1euzLufSVMEJSIiQSpoBGWfvv1KuevXrwfin9ztiPdu3boB8fp5tpHRjsi2NSyI5l2zfZKwatF/+9vfXJtd26cGiNIyzWWXXZbDv6z0LV26NO0uBMNfIz366KOB+Jx/Q6uL2/exbRCX3FnE4H+fduzYEYhH8xdddFFxO5aSfL+H/HVPq7Nns0p+qvjMmTMT6F3hKIISEZEgaYASEZEgFTTN/KOPPgKiFHGIKjf4obsdQugfjV2dHQfvV4ZI8/iMckmLfvvtt911u3btaty3ihP2f1OoneRpPE87XHDMmDGurU+fPkA8QSaXxWircOIfC2MHxW2//fY1Xm/Thn7CjiX4JKSk08zNb3/7W3dtU6atW7d2bblU8khIqmnm+bKjNSBKUrMae127dnX30kyEUJq5iIiUrIImSXz88cdAPIKyFNHOnTvXeL1twp0/f75rs7p577//PqBDB5P2xhtvuOu99tqrxv26KnKXOtu6kC399he/+IW7Xrt2bb3vZZGXbR6H7Jsfn3vuOQAmT54MJB41lTV7njqNoHa2iffcc891bfbc7HDMENLHc6UISkREgqQBSkREglTQKT47tuHkk092bTYFsmrVKtd23333AVE9PIXwxWNhP8TrwlU6vzpJQ9n3+BNPPOHaRo0aBRR1cb9s2D4ev77mrFmz0upOkKwyjk31ATz00EMAXHPNNan0qTEUQYmISJAKGkHZ4vL06dNdm38t6fOrlC9ZsgSAfffdN63uFNWwYcOA+CGCZ511Vl7vYWn3ViFlwYIF7p5Fp9nqnEluBg4c6K5ti4p9n0pNVl3Hr3/q1/ErNYqgREQkSEU5D6oclctG3VCk+Tz96tgWVfln7bRo0QKItjz4FfDt06ltqQhIWWzUtRMOIIrs/c3NlXIeVDnSRl0RESlZGqBERCRImuJrIE3xJUvPM3FlMcUXEE3xJUxTfCIiUrI0QImISJA0QImISJA0QImISJA0QImISJA0QImISJDyrcW3Gija1u2Ata3/JTnR89xEzzN5STxTPc+IvkeTldPzzGsflIiISLFoik9ERIKkAUpERIKkAUpERIKkAUpERIKkAUpERIKkAUpERIKkAUpERIKkAUpERIKkAUpERIL0f7aUYtWtUB+9AAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for i in range(10):\n", " plt.subplot(2,5,i+1)\n", " plt.imshow(train_data[i], cmap='gray')\n", " plt.xticks([])\n", " plt.yticks([])\n", "plt.tight_layout()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "model = models.Sequential()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "model.add(layers.Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1)))\n", "model.add(layers.MaxPooling2D((2,2)))\n", "model.add(layers.Conv2D(64, (3,3), activation='relu'))\n", "model.add(layers.MaxPooling2D((2,2)))\n", "model.add(layers.Conv2D(64, (3,3), activation='relu'))\n", "model.add(layers.Flatten())\n", "model.add(layers.Dense(64, activation='relu'))\n", "model.add(layers.Dense(10, activation='softmax'))" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "conv2d_1 (Conv2D) (None, 26, 26, 32) 320 \n", "_________________________________________________________________\n", "max_pooling2d_1 (MaxPooling2 (None, 13, 13, 32) 0 \n", "_________________________________________________________________\n", "conv2d_2 (Conv2D) (None, 11, 11, 64) 18496 \n", "_________________________________________________________________\n", "max_pooling2d_2 (MaxPooling2 (None, 5, 5, 64) 0 \n", "_________________________________________________________________\n", "conv2d_3 (Conv2D) (None, 3, 3, 64) 36928 \n", "_________________________________________________________________\n", "flatten_1 (Flatten) (None, 576) 0 \n", "_________________________________________________________________\n", "dense_1 (Dense) (None, 64) 36928 \n", "_________________________________________________________________\n", "dense_2 (Dense) (None, 10) 650 \n", "=================================================================\n", "Total params: 93,322\n", "Trainable params: 93,322\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] } ], "source": [ "model.summary()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "model.compile('rmsprop', 'categorical_crossentropy', ['accuracy'])" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "train_data = train_data.reshape((-1,28,28,1)).astype('float32')/255\n", "test_data = test_data.reshape((-1,28,28,1)).astype('float32')/255" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "train_labels = to_categorical(train_labels)\n", "test_labels = to_categorical(test_labels)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/5\n", "60000/60000 [==============================] - 11s 178us/step - loss: 0.1705 - acc: 0.9469\n", "Epoch 2/5\n", "60000/60000 [==============================] - 4s 71us/step - loss: 0.0480 - acc: 0.9856\n", "Epoch 3/5\n", "60000/60000 [==============================] - 4s 70us/step - loss: 0.0326 - acc: 0.9904\n", "Epoch 4/5\n", "60000/60000 [==============================] - 4s 70us/step - loss: 0.0251 - acc: 0.9921\n", "Epoch 5/5\n", "60000/60000 [==============================] - 4s 70us/step - loss: 0.0191 - acc: 0.9941\n", "CPU times: user 31 s, sys: 14.7 s, total: 45.7 s\n", "Wall time: 27.8 s\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%time\n", "model.fit(train_data, train_labels, batch_size=64, epochs=5)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "10000/10000 [==============================] - 1s 63us/step\n" ] }, { "data": { "text/plain": [ "[0.03488868531197204, 0.9897]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.evaluate(test_data, test_labels)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "pred = np.argmax(model.predict(test_data[:10]), 1)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([7, 2, 1, 0, 4, 1, 4, 9, 5, 9])" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pred" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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QthaE9Rcc7J38M899xwAbdq0ifZ1794dgLZt20Zp/fr1A+CGG26IL7ONzF577RVt//LLLwB8+eWXSWXHa9tssw0A/fv3B7LxAujUqRMAxx9/fJQ2atSoMubOf3vvvTcAjz32WJS24447FnXOI488Mtr+8MMPAfjiiy+KOmddqQYlIiJeUg0q5Tp3DpvFTzzxxGr73n//fQB69OgRpS1evBiAb7/9FoCmTZtG+2bMmAHAnnvuGaVtvvnmMee48enYsWO0/d133wHw+OOPJ5Ud72y5ZXYO1vvuuy/BnKTfUUcdBcD6668f2zltywrA2WefDUDfvn1jO39NVIMSEREvqYASEREvlaWJz31obx9+zp8/P0r78ccfARg3bhwACxcujPZ98skn5chiatmHysZke2zapj1b3V+wYMFaX3/xxRdH27/+9a+r7Z88eXIs+WyMdt99dwAGDhwYpWlmjqwLLrgAgBNOOCFK23fffWt93cEHHxxtr7NOeI89e/ZsAF5++eU4s5ga664bfpUfe+yxsZ/bdu8HGDx4MJAdDgDZZutSUA1KRES8VJYa1E033RRt19Tl0Q7KW7lyZZRmawNxsF173fy8+eabsZ0/CU8++SQA7dq1i9Js/JYuXVrr692Hneutt17MuWvcdtllFyD3btMdDtDY3XrrrUBuV/K66NWrV7VtO2C3T58+0T73zr/SHXrooQDst99+QO53XLE23XTTaNu2slRVVUVpqkGJiEijowJKRES8VJYmPtsxArLLPdgRyQC77rorkB0F3a1bt2hf165dgezI5R122KHG9/r5558B+Prrr4FsJwKXO69c2pv4rPrOSXbJJZcAufPEWTNnziy4LfUzdOhQIPdvUynXWzGefvppINvBoa6WLFkCZMfwAbRq1QqA1q1bA/DGG29E+5o0aVJUPn1nO+EAPPTQQ0B2Hs3rr78+tvfp2bNnbOeqL9WgRETES2WpQb344osFt61nn30253f3oZwdhW8feO6zzz41vpftsj5nzhwgt6a22WabAbmzdTc2dh6za665BsidSWLRokUADBs2LEr7/vvvy5i79HM7AdlZPuy1CKV9oOyzQw45JNreeeedgWzniJo6SYwePTranjJlCgDLly+P0g477DAArrjiimqvPe+884DsQpyVZvjw4dG27Yhz9NFHA7m1zIay35fu366+HVqKpRqUiIh4ycu5+L755pto+6WXXsrZV6gGVshJJ50E5NbG3n33XaBxd/W1d/VuzcmycZk2bVpZ81RJ3LtNyz4PbYxsjXL8+PFR2hZbbLHW4+3zuokTJwJw9dVXR/sK1ebt8b///e+B3Hn9bFfrDTbYIEr7+9//DsDq1avr/p/wjJ34wB2Uayc0iPMZp62VurWmqVOnArBs2bLY3qcmqkGJiIiXVECJiIiXvGziK0bLli0BuOOOO4Dcrqy2Y0BdZlioJE888US07S4+BnD//fdH2+5DV2mYDh06VEuLc1R/2tg54mpq1nOblO3MJnZZmNrYJj67oOYtt9wS7bOzHbjxnzRpEpDujlJ2yXt3Ngf7fRcH2yxrFytds2ZNtO+6664DytdEqhqUiIh4qeJqUOeffz6QfVjqdrj4+OOPE8lTUuwg5f333z9KswuZ2TtUe0cE8XRNbazsgPKzzjorSnvrrbcAeP755xPJk+/sA327CB7UveaUz9aM7F0/1D4kJU023njjaNtea644u9LbDie21usO1cnvtFZqqkGJiIiXKqIGdcABB0Tbl112Wc4+d62Z9957r2x58oHtqlto2fYHH3wQSHdbvE+OOOIIIDu4EbID0O3g8cas0LRGXbp0ie38dj00930KvedVV10FwOmnnx7be5eDu4T7dtttB2SnN4pb27Ztc35P8ntTNSgREfGSCigREfFSRTTxuSOq7aJ7dsaJ6dOnJ5KnJPXo0QPIzg7vsiPBr7zyynJmqeLtueeeAARBEKU9+uijSWXHG+eeey5Q+jncunfvDsBee+0VpRWa68828aWNu4jr22+/DWRXhoBs03JDh9DY4TmQnanCevXVVxt0zjioBiUiIl5KdQ2qWbNmQHYGX4BVq1YB2RpCmufcqg+3I8Tll18OFF7C3d59qUt5PLbeemsADjroICB3KMPjjz+eSJ58Yms2cXLn27NLkNtrvhB3LsS0fh/88MMP0bbt2GTnGwWYPHkykDtQeW3cdaTatGkD5M7C77YCQPlnMHepBiUiIl5SASUiIl5KdROfXbbcfTBqx568/vrrieQpKRdffHG0nT+C3p2LT50j4nXmmWcC2YfMzzzzTIK5aRzcxQntzDGFzJ07F4AzzjgjSvv8889Llq9ysZ9hO/YL4LjjjgPqNjbKna3DNufVNFfi2LFjG5LNWKgGJSIiXkpdDcreKQD86U9/AmDFihVRmp2xvLEZPHjwWvcNHDgw2lbniHi1atUq53d37keJ19NPPw1kl4yvzQcffAAk2026FD766CMAevfuHaV17NgRgHbt2tX6+kLDH+67775o253PEHI7aJSbalAiIuKl1NSgbDfqv/3tb1FakyZNgOydFcCMGTPKm7EUcOeHq0s32+XLl1c73nZZd2dVtjbZZJNou6aanF1X5tJLL43SCi3jnSbHH398zu9PPvlkQjnxU6E58qxjjjmmWtpdd90FwLbbblttnz1HXbs9l6KLu6/s8BH7b3199tlna93ndksv97x8qkGJiIiXVECJiIiXvG/is814tvt469ato312RLXtLCGFvfPOO/U6/pFHHom2FyxYAMBWW20FQJ8+fYrOz8KFC6PtESNGFH2+cjvwwAOjbTuThBRmF9IrtOz9U089BRRusqupGa+mfaNHj65vFoXcLuvuNmi5DRERkWq8r0HZxbM6depUbZ99IK9F93I7ivTs2bOoc51yyil1Ou7nn38GCt/R2iW47bLerldeeaWI3CXvxBNPjLZtDd8u7/7yyy8nkidfPfbYY0B2UD3kzqXXEO7cenY5crtMua3xS/248+/lz8WXJNWgRETESyqgRETES1428bmj86dMmZKzz20qsA9ZBXr16hVtDx06FCi83Ia12267AbV3ehgzZgyQndfMNXHiRCA7sr3SVVVVAbkLZFp2dL4d6yWhefPmAdC3b98o7YQTTgBg0KBBDTqn27Fm1KhRReROrA022KBaWpIzSFiqQYmIiJdMfR6IGWPK8vTMvUMaNmxYzr5999032i70AL5cgiAwtR9Vs3LFMw3SEE9bI502bVqUtmjRIgBOO+00wKuZMWYFQdC5mBOUOp52oVHbwQGysz/YTjZ2ZolMfoDsHHtQ1tnJi44n+PuZd4d+rLtu2LB27bXXAnDbbbeV5D3r8plXDUpERLzkVQ3KDoB0u0w3b9485xjVoCqT4hk772tQKVPRNSh3Dkm7bPxLL71U0vdUDUpERFJLBZSIiHjJq27mBx10EFC9WQ+ys0VowT0RkXj5ujSJalAiIuIlr2pQhcyePRuAww8/HIClS5cmmR0RESkT1aBERMRLKqBERMRLXo2DShON24mX4hk7jYOKV0WPg0qCxkGJiEhq1beTxGJgXikykjKtaj+kThTPkOIZ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WJRm73RtjdTO1wfw6aefxpL3pNg59gYPHlzjcfazbOd3tP82hL0up06dCuR2YKl0bi3GHRxdGzsQFwrXoOyabvbvaFctgMJd3EtJNSgREfGSCigREfGS950k8sc/udXa3/zmNwC8+eab5c6Wdw/1G8odtzNhwgQgd9l2O1PFv//975LmIw3xtONOTjvttCjNXo+2ebTQDBGFxrDY2T3cxR5jHmNW9k4SdnzNXnvtFaXZ/++662afJth53wo12zeU/R5zl4awMxzExLtOEvVll+lw4+L+Xax+/foB2fF/paJOEiIiklpedpLYfvvto20eMvpjAAAED0lEQVT3bhVyu5MmUXOqNHbhPJfbLbrUNac0sV3Ia1qqvBB37jNbS7U1KFtDhWzX9rQuYmgfoLufy5122qnacYcffjgA6623HpBb66lpzs2a2K7/nTp1atDrK5ld2HD48OFA4VqT253f7dSTNNWgRETES17WoNxZkfPbqWuaSVrqz61B2XW1br755qSyU/EefvhhIFuD6tOnT7Rv4MCBAFxzzTXlz1gZvfjiizm/u/NI2hqUnZ3brrMF2cHNF154YZSW38IiIbf7uP08N2/evNpx9pmpO2Dczp/oA9WgRETESyqgRETES1428bnT9Vt2ES13sT5pOFuldxcls8slqGNE6dh56G666SYAevbsGe278sorARg/fnyUNmfOnDLmLhlTpkyJtkeMGAFkH+T3798/2teuXTsgd/nzfFoYMdS9e/dou0WLFjn7bFM+ZJuaX3vttfJkrJ5UgxIRES95WYOy85S57Iy8y5cvL3d2KpKtQbkDtSdPnlztOHv3ZRfds38HKY6dJd4O8AUYOXIkANdff32UdvrppwO5XdUrzYcffhht204k7oKRltsl37Jd2+21W5856SqR/bzaQbmFjBs3Ltq2cxj6SjUoERHxkgooERHxkldNfHZkubsEgWWXLli9enVZ89SY2OYSOxcXwEUXXQRkR5rHPF9co+cufTBgwAAAevXqFaXZMVHvvPNOeTNWRm7zpR3jZMfsdO6cnf6uZcuWAMydOzdKs3N1urNRNEY2Xh988AGQ/S512WvIHUfmO9WgRETES17VoGwXXHcur9133x3IXYZcSsPO2XXOOedEaffccw8A1157bSJ5qnTuQpB2tnS3hmAXQHRrtZXsq6++ArLdpG0nEYCuXbsCcPXVV0dpdmhEY3fYYYcB2XlMC61SYVtDbGtUGqgGJSIiXvJyPahtt9022rZrl8yaNQuAUaNGlSMLtUrD+kU1OfDAA4Hced9efvllAO68884o7ZtvvgFg1apVJc1P2uMZJ3fg6n777QdAly5dgOwzhjoo+3pQFc7r9aBmz54NQIcOHarts8MXbG3cF1oPSkREUksFlIiIeMnLJr40UJNUvBTPrI022ijatk03gwYNAmDSpEl1PY2a+OLldRPfF198AWQ7SbidR+xyJgsWLCjFWzeYmvhERCS1vOpmLiKwYsWKaLt169YJ5kTS4pZbbsn51x0W4lvNqT5UgxIRES+pgBIRES+pk0QD6aF+vBTP2KmTRLy87iSRRuokISIiqVXfThKLgXmlyEjKtIrpPIpnSPGMXxwxVTyzdI3Gq07xrFcTn4iISLmoiU9ERLykAkpERLykAkpERLykAkpERLykAkpERLykAkpERLykAkpERLykAkpERLykAkpERLz0/wGS9g/We7JJ9QAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for i in range(10):\n", " plt.subplot(2,5,i+1)\n", " plt.imshow(test_data[i].squeeze(), cmap='gray')\n", " plt.xticks([])\n", " plt.yticks([])\n", " plt.title(\"pred=%d\" % pred[i], fontsize=14)\n", "plt.tight_layout()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }