Great Deal! Get Instant $10 FREE in Account on First Order + 10% Cashback on Every Order Order Now

{"nbformat":4,"nbformat_minor":0,"metadata":{"kernelspec":{"name":"python3","display_name":"Python...

1 answer below »
{"nbformat":4,"nbformat_minor":0,"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"codemi
or_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.5.2"},"colab":{"name":"introduction-to-convnets.ipynb","provenance":[],"collapsed_sections":[]},"accelerator":"GPU"},"cells":[{"cell_type":"code","metadata":{"id":"5l62FySf_Lm0","colab":{"base_uri":"https:
localhost:8080/"},"executionInfo":{"status":"ok","timestamp": XXXXXXXXXX,"user_tz":480,"elapsed":1899,"user":{"displayName":"Alex Thomo","photoUrl":"","userId":" XXXXXXXXXX"}},"outputId":"f68b016a-d035-4ba2-8691-a1b4e3ed80e4"},"source":["import tensorflow as tf\n","from tensorflow import keras\n","\n","# Helper li
aries\n","import numpy as np\n","import matplotlib.pyplot as plt\n","\n","print(tf.__version__)"],"execution_count":1,"outputs":[{"output_type":"stream","text":["2.3.0\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"QtEOBrYMtBdf"},"source":["Modified by Alex Thomo to run on new TensorFlow."]},{"cell_type":"markdown","metadata":{"collapsed":true,"id":"dJnXlEGt_Lm7"},"source":["# Introduction to convnets\n","\n","This notebook contains the code sample found in Chapter 5, Section 1 of [Deep Learning with Python](https:
www.manning.com
ooks/deep-learning-with-python?a_aid=keras&a_bid=76564dff). Note that the original text features far more content, in particular further explanations and figures: in this notebook, you will only find source code and related comments.\n","\n","----\n","\n","First, let's take a practical look at a very simple convnet example. We will use our convnet to classify MNIST digits, a task that you've already been \n","through in Chapter 2, using a densely-connected network (our test accuracy then was 97.8%). Even though our convnet will be very basic, its \n","accuracy will still blow out of the water that of the densely-connected model from Chapter 2.\n","\n","The following lines of code below show you what a basic convnet looks like. It's a stack of `Conv2D` and `MaxPooling2D` layers."]},{"cell_type":"code","metadata":{"id":"e9wJ6oym_Lm9","executionInfo":{"status":"ok","timestamp": XXXXXXXXXX,"user_tz":480,"elapsed":5815,"user":{"displayName":"Alex Thomo","photoUrl":"","userId":" XXXXXXXXXX"}}},"source":["model = keras.models.Sequential()\n","model.add(keras.layers.Conv2D(32, (3, 3), activation='relu'))\n","model.add(keras.layers.MaxPooling2D((2, 2)))\n","model.add(keras.layers.Conv2D(64, (3, 3), activation='relu'))\n","model.add(keras.layers.MaxPooling2D((2, 2)))\n","model.add(keras.layers.Conv2D(64, (3, 3), activation='relu'))\n","model.add(keras.layers.Flatten())\n","model.add(keras.layers.Dense(64, activation='relu'))\n","model.add(keras.layers.Dense(10, activation='softmax'))"],"execution_count":2,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"aGrXpwq3_LnF"},"source":["We are going to do 10-way classification, so we use a final layer with 10 outputs and a softmax activation."]},{"cell_type":"markdown","metadata":{"id":"pOO0w2FX_LnJ"},"source":["Now, let's train our convnet on the MNIST digits."]},{"cell_type":"code","metadata":{"id":"gPKZfJDk_LnJ","colab":{"base_uri":"https:
localhost:8080/"},"executionInfo":{"status":"ok","timestamp": XXXXXXXXXX,"user_tz":480,"elapsed":914,"user":{"displayName":"Alex Thomo","photoUrl":"","userId":" XXXXXXXXXX"}},"outputId":"7901d6be-3403-46d7-ecf9-f19faf38cf7a"},"source":["from keras.datasets import mnist\n","from keras.utils import to_categorical\n","\n","(train_images, train_labels), (test_images, test_labels) = mnist.load_data()\n","\n","print(train_images.shape)\n","train_images = train_images.reshape((60000, 28, 28, 1))\n","train_images = train_images.astype('float32') / 255\n","print(train_images.shape)\n","\n","test_images = test_images.reshape((10000, 28, 28, 1))\n","test_images = test_images.astype('float32') / 255\n","\n","train_labels = to_categorical(train_labels)\n","test_labels = to_categorical(test_labels)"],"execution_count":3,"outputs":[{"output_type":"stream","text":["Downloading data from https:
storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz\n"," XXXXXXXXXX/ XXXXXXXXXX [==============================] - 0s 0us/step\n","(60000, 28, 28)\n","(60000, 28, 28, 1)\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"EsObBjdp_LnM","colab":{"base_uri":"https:
localhost:8080/"},"executionInfo":{"status":"ok","timestamp": XXXXXXXXXX,"user_tz":480,"elapsed":4491,"user":{"displayName":"Alex Thomo","photoUrl":"","userId":" XXXXXXXXXX"}},"outputId":"e973e327-248c-45fc-c275-967bda65718b"},"source":["model.compile(optimizer='rmsprop',\n"," XXXXXXXXXXloss='categorical_crossentropy',\n"," XXXXXXXXXXmetrics=['accuracy'])\n","\n","model.fit(train_images, train_labels, epochs=5, batch_size=64)"],"execution_count":6,"outputs":[{"output_type":"stream","text":["938/938 [==============================] - 4s 4ms/step - loss: XXXXXXXXXXaccuracy: XXXXXXXXXXn"],"name":"stdout"},{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{"tags":[]},"execution_count":6}]},{"cell_type":"markdown","metadata":{"id":"veHRAiFm_LnO"},"source":["Let's evaluate the model on the test data:"]},{"cell_type":"code","metadata":{"id":"7z9891Bz_LnP","colab":{"base_uri":"https:
localhost:8080/"},"executionInfo":{"status":"ok","timestamp": XXXXXXXXXX,"user_tz":480,"elapsed":1308,"user":{"displayName":"Alex Thomo","photoUrl":"","userId":" XXXXXXXXXX"}},"outputId":"d42d20a7-3751-4fdf-ff5c-faa8d5d79fae"},"source":["test_loss, test_acc = model.evaluate(test_images, test_labels)"],"execution_count":5,"outputs":[{"output_type":"stream","text":["313/313 [==============================] - 1s 3ms/step - loss: XXXXXXXXXXaccuracy: XXXXXXXXXXn"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"SIF3U5TO_LnV","colab":{"base_uri":"https:
localhost:8080/"},"executionInfo":{"status":"ok","timestamp": XXXXXXXXXX,"user_tz":480,"elapsed":266,"user":{"displayName":"Alex Thomo","photoUrl":"","userId":" XXXXXXXXXX"}},"outputId":"56f81049-19af-4fe5-90df-98c0859501c3"},"source":["test_acc"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":[" XXXXXXXXXX"]},"metadata":{"tags":[]},"execution_count":6}]},{"cell_type":"markdown","metadata":{"id":"jak_EdQ0_LnZ"},"source":["While our densely-connected network from Chapter 2 had a test accuracy of 97.8%, our basic convnet has a test accuracy of 99.3%: we \n","decreased our e
or rate by 68% (relative). Not bad! "]},{"cell_type":"code","metadata":{"id":"oB8G83C-shjJ","colab":{"base_uri":"https:
localhost:8080/"},"executionInfo":{"status":"ok","timestamp": XXXXXXXXXX,"user_tz":480,"elapsed":287,"user":{"displayName":"Alex Thomo","photoUrl":"","userId":" XXXXXXXXXX"}},"outputId":"3cdd4dea-e68c-4476-bfb9-8988a77dceb8"},"source":["# Recall our model\n","# model = keras.models.Sequential()\n","# model.add(keras.layers.Conv2D(32, (3, 3), activation='relu'))\n","# model.add(keras.layers.MaxPooling2D((2, 2)))\n","# model.add(keras.layers.Conv2D(64, (3, 3), activation='relu'))\n","# model.add(keras.layers.MaxPooling2D((2, 2)))\n","# model.add(keras.layers.Conv2D(64, (3, 3), activation='relu'))\n","# model.add(keras.layers.Flatten())\n","# model.add(keras.layers.Dense(64, activation='relu'))\n","# model.add(keras.layers.Dense(10, activation='softmax'))\n","\n","model.summary()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Model: \"sequential\"\n","_________________________________________________________________\n","Layer (type XXXXXXXXXXOutput Shape XXXXXXXXXXParam # \n","=================================================================\n","conv2d (Conv2D XXXXXXXXXXNone, 26, 26, XXXXXXXXXX XXXXXXXXXXn","_________________________________________________________________\n","max_pooling2d (MaxPooling2D) (None, 13, 13, XXXXXXXXXX XXXXXXXXXXn","_________________________________________________________________\n","conv2d_1 (Conv2D XXXXXXXXXXNone, 11, 11, XXXXXXXXXX \n","_________________________________________________________________\n","max_pooling2d_1 (MaxPooling2 (None, 5, 5, XXXXXXXXXX XXXXXXXXXXn","_________________________________________________________________\n","conv2d_2 (Conv2D XXXXXXXXXXNone, 3, 3, XXXXXXXXXX \n","_________________________________________________________________\n","flatten (Flatten XXXXXXXXXXNone, XXXXXXXXXX XXXXXXXXXXn","_________________________________________________________________\n","dense (Dense XXXXXXXXXXNone, XXXXXXXXXX XXXXXXXXXXn","_________________________________________________________________\n","dense_1 (Dense XXXXXXXXXXNone, XXXXXXXXXX XXXXXXXXXXn","=================================================================\n","Total params: 93,322\n","Trainable params: 93,322\n","Non-trainable params: 0\n","_________________________________________________________________\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"collapsed":true,"id":"HJPoZsHA_LnC"},"source":["You can see above that the output of every `Conv2D` and `MaxPooling2D` layer is a 3D tensor of shape `(height, width, channels)`. The width \n","and height dimensions tend to shrink as we go deeper in the network. The number of channels is controlled by the first argument passed to \n","the `Conv2D` layers (e.g. 32 or 64).\n","\n","The next step would be to feed our last output tensor (of shape `(3, 3, 64)`) into a densely-connected classifier network like those you are \n","already familiar with: a stack of `Dense` layers. These classifiers process vectors, which are 1D, whereas our cu
ent output is a 3D tensor. \n","So first, we will have to flatten our 3D outputs to 1D, and then add a few `Dense` layers on top:"]}]}

{"nbformat":4,"nbformat_minor":0,"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemi
or_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.5.2"},"colab":{"name":"first-look-at-a-neural-network-keras.ipynb","provenance":[],"collapsed_sections":[]}},"cells":[{"cell_type":"code","metadata":{"id":"HAnXfIuguAXs","colab":{"base_uri":"https:
localhost:8080/"},"executionInfo":{"status":"ok","timestamp": XXXXXXXXXX,"user_tz":480,"elapsed":2363,"user":{"displayName":"Alex Thomo","photoUrl":"","userId":" XXXXXXXXXX"}},"outputId":"2ecb6b36-bd5a-46d6-b844-88314ae29b29"},"source":["import tensorflow as tf\n","from tensorflow import keras\n","\n","# Helper li
aries\n","import numpy as np\n","import matplotlib.pyplot as plt\n","\n","print(tf.__version__)"],"execution_count":1,"outputs":[{"output_type":"stream","text":["2.3.0\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"OLgDAmVquAXy"},"source":["# A first look at a neural network\n","\n","This notebook contains the code samples found in Chapter 2, Section 1 of [Deep Learning with Python](https:
www.manning.com
ooks/deep-learning-with-python?a_aid=keras&a_bid=76564dff). Note that the original text features far more content, in particular further explanations and figures: in this notebook, you will only find source code and related comments.\n","\n","----\n","\n","We will now take a look at a first concrete example of a neural network, which makes use of the Python li
ary Keras to learn to classify \n","hand-written digits. Unless you already have experience with Keras or similar li
aries, you will not understand everything about this \n","first example right away. You probably haven't even installed Keras yet. Don't wo
y, that is perfectly fine. In the next chapter, we will \n","review each element in our example and explain them in detail. So don't wo
y if some steps seem a
itrary or look like magic to you! \n","We've got to start somewhere.\n","\n","The problem we are trying to solve here is to classify grayscale images of handwritten digits (28 pixels by 28 pixels), into their 10 \n","categories (0 to 9). The dataset we will use is the MNIST dataset, a classic dataset in the machine learning community, which has been \n","around for almost as long as the field itself and has been very intensively studied. It's a set of 60,000 training images, plus 10,000 test \n","images, assembled by the National Institute of Standards and Technology (the NIST in MNIST) in the 1980s. You can think of \"solving\" MNIST \n","as the \"Hello World\" of deep learning -- it's what you do to verify that your algorithms are working as expected. As you become a machine \n","learning practitioner, you will see MNIST come up over and over again, in scientific papers, blog posts, and so on."]},{"cell_type":"markdown","metadata":{"id":"gp3RbBo_uAXz"},"source":["The MNIST dataset comes pre-loaded in Keras, in the form of a set of four Numpy a
ays:"]},{"cell_type":"code","metadata":{"id":"dXB2yCgtuAX1","colab":{"base_uri":"https:
localhost:8080/"},"executionInfo":{"status":"ok","timestamp": XXXXXXXXXX,"user_tz":480,"elapsed":2717,"user":{"displayName":"Alex Thomo","photoUrl":"","userId":" XXXXXXXXXX"}},"outputId":"f66567cb-eae3-49ac-af5e-30515188ed92"},"source":["from keras.datasets import mnist\n","\n","(train_images, train_labels), (test_images, test_labels) = mnist.load_data()"],"execution_count":2,"outputs":[{"output_type":"stream","text":["Downloading data from https:
storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz\n"," XXXXXXXXXX/ XXXXXXXXXX [==============================] - 0s 0us/step\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"kVmXluk2uAX5"},"source":["`train_images` and `train_labels` form the \"training set\", the data that the model will learn from. The model will then be tested on the \n","\"test set\", `test_images` and `test_labels`. Our images are encoded as Numpy a
ays, and the labels are simply an a
ay of digits, ranging \n","from 0 to 9. There is a one-to-one co
espondence between the images and the labels.\n","\n","Let's have a look at the training data:"]},{"cell_type":"code","metadata":{"id":"6jeVMLgUwjUe","colab":{"base_uri":"https:
localhost:8080/","height":578},"executionInfo":{"status":"ok","timestamp": XXXXXXXXXX,"user_tz":480,"elapsed":3604,"user":{"displayName":"Alex Thomo","photoUrl":"","userId":" XXXXXXXXXX"}},"outputId":"047df0f4-3fcc-4cb5-
6a-59e5656925d9"},"source":["plt.figure(figsize=(10,10))\n","for i in range(25):\n"," plt.subplot(5,5,i+1)\n"," plt.xticks([])\n"," plt.yticks([])\n"," plt.imshow(train_images[i], cmap=plt.cm.binary)\n","plt.show()"],"execution_count":3,"outputs":[{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAj0AAAIxCAYAAACmUwl6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3deaCNVd
8XUyD5kyj6cihKREoUzRaI4oQjJkLCSERCHNlKLBmKlBInemMvQYMo8ZGo5I5gwhwvn98+t7f9d1n73b+5w9nbPer78+677Wvs56uuxz1nOtKS4xMdEAAACkdVdFuwEAAACRQKcHAAA4gU4PAABwAp0eAADgBDo9AADACXR6AACAE9IHUzlv3ryJ8fHxYWoKkpKQkGCOHTsWF+r78iyjY8OGDccSExPzhfq+PM/I47uZtoTju8mzjA5/zzKoTk98fLxZv359aFqFgFSuXDks9+VZRkdcXNy+cNyX5xl5fDfTlnB8N3mW0eHvWTK8BQAAnECnBwAAOIFODwAAcAKdHgAA4AQ6PQAAwAl0egAAgBPo9AAAACfQ6QEAAE6g0wMAAJxApwcAADghqGMogFizYcMGq/z2229Lnjx5suS2bdta9Xr06CH5lltuCVPrAACxhDc9AADACXR6AACAE+j0AAAAJ6SpOT2XL1+2yqdOnQroc3oeyLlz5yTv3r3bqvfOO+9I7tu3r+QZM2ZY9TJnziy5f
+1rXnn38+oDbBt82bN0u+++67rWunT5+WHBcXJ3nKlClWvblz50o+ceJEqJuIKFq6dKnkRx991Lq2fPlyyaVLl45Ym+Dbiy++aJWHDBkiOTExUfKyZcusejVr1gxru5A28aYHAAA4gU4PAABwQswO
3666+SL168aF1btWqV5O+++07yyZMnrXqffvppitpQrFgxq6yXOc+ZM0fy1VdfbdWrWLGiZF7Bhsb3338vuVmzZpK9Q5h6SCtHjhySM2bMaNU7duyY5NWrV0u+9dZ
Xrez6UlK1assMrHjx+X3KRJk0g3J2TWrVsnuXLlylFsCXyZNGmS5FGjRlnX0qVLJ1lPWdDfbSC5eNMDAACcQKcHAAA4IWaGtzZt2mSV69SpIznQVVihoF+telcVZMuWTbJeFVK4cGGrXu7cuSWzQiRweuXcxo0
WutW7eWfPDgwYDuV6pUKcn9+vWzrj388MOSq1evLtn7zAcOHBjQz0qNvKth9u7dKzm1DW9duXJF8i+
CJZD5MbY68GQvTs27dP8oULF6LYEretXbvWKk+dOlWyHv7evn27z3u89tprkr1/C1euXCm5TZs2kqtWrRp8Y0OENz0AAMAJdHoAAIAT6PQAAAAnxMycnhIlSljlvHnzSg7FnB49hqjn3BhjzLfffitZL1HWY5AIv86dO0uePn16iu+nT2D/888
Wt6KwE9t2Xbtm0p
mphT6F3hhjqlWrFqWWpNzvv/8uecKECZK93+EyZcpErE2wLVmyRPKYMWN81tPPaP78+ZILFCgQnoY5ZtasWZJ79eplXTt69KhkPf+tVq1aVj295Yc+ncBL30N/ZubMmYE3OMR40wMAAJxApwcAADghZoa38uTJY5VfeeUVyfPmzbOuVapUSXLPnj193vPmm2+WrF+t6qXnxtjL8fy9dkXo6SEo/S
39Ji/ar1wQcftK7pV616+aT+N2OMPcSphzddWtKsl3mndk888USS/7vetgCRpXfLN8aYdu3aSdYHA3s988wzkr3THhCYS5cuWWW9S3nHjh0lnz171qqnh/0HDx4suUaNGlY9vc1AixYtJC9cuNBnm2Jld3Te9AAAACfQ6QEAAE6g0wMAAJwQM3N6vBo3bixZH0lhjH2q+datWyV/8MEHVj09v8M7j0crX768ZL3cFaG3efNmq3z33XdL1uP83hOV77
fskzZsyQ7D1K4aWXXpKs53nky5fPqlexYsUkf9ZXX31l1dPHYdxyyy0mtdPfl8OHD0exJaF18uTJJP/3evXqRbgl+Id3SwRfx8d4l0M/9thj4WqSM6ZNm2aVO3TokGS9+vXrW2W9nD1Hjhw+76
+ZvHU6xYMclt27b1WS+SeNMDAACcQKcHAAA4IWaHtzR
9ly5szp85oe7mrZsqXkq66irxdJe
skTx69Gjrmt5tWw9BFSpUyKqnX41mz55dsnfJurccLH3SuzHGvPrqq5JDsUt0tC1YsEDy+fPno9iSlPEOzSUkJCRZr0iRIhFoDf6hd9398MMPrWvp0qWTnCtXLsmDBg0Kf8McoP87jhgxwrqmh/C7desm+cUXX7Tq+ftbq+lpBP7oLWC8Uwyih
+AADACXR6AACAE1LF8JY/Q4cOlax39zXGXtmjd2T2zlhHaOndOo2xV9F5V0fp16lTpkyR7N29M1pDMfv374/Kzw2X3bt3+7xWrly5CLYkZbyHHB46dEhy6dKlJeuVnggPPbTYtGnTgD7To0cPyd7VuQjMsGHDrLIe0sqUKZN17Z577pH88ssvS86SJYvP+
111+SFy1aZF3bt2+fZL2Lvd7F2RhjGjVq5PP+0cKbHgAA4AQ6PQAAwAl0egAAgBNS/ZwevdPy+++
13TO+jqk2Vr165t1dPzR/RyPu+uwAiM3sXYmP+dx6PNnTtXsj7hF5F32223RbsJ/3P69tdffy1Z7zLrnWOg6aW7emk0wkM/o23btvmsV7duXcm9evUKa5vSKr3z+Lhx46xr+u+VnsNjjDFffPFFQPf/8ccfJT/66KOS169f7/MzzZs3l9yvX7+Afk408aYHAAA4gU4PAABwQqof3tKuv/56qzxp0iTJ7du3l6yXRnvLZ8+elew9+M67SzCS1rt3b6uslzR6DxeMhSEt3b5grqU1J06cCPozW7ZsscpXrlyRvHTpUskHDhyw6l28eFHyxx9/nOTnjbGX1FatWlWyd0nu33
Ldm73QFCyztU0r9
yTr3XnnnVZZH0Dqbyd9+Ka/N0ePHvVZT++EbIwxR44ckTxx4kTJenqBMcbs2LFD8pkzZyR7p3roUw1at24t2d/B3rGCNz0AAMAJdHoAAIAT0tTwlleTJk0klyxZUnKfPn2senq35gEDBkjWu04aY8xzzz0nmYMMbfPnz5e8efNm65p+NdqwYcOItSlQun3e17g333xzpJsTVnq4yPt/a+fOnSV7Dyz0xTu8pYcDM2TIIDlr1qxWvbJly0p+/PHHJd96661WPT0cWqBAAclFixa16ukdu8uUKRNI0xGE5Oy6fN1111ll/fyQPBkzZpScP39+65oewoqPj7euBboSWf9d07vlHzx40KqXN29eyQ0aNAjo3rGCNz0AAMAJdHoAAIAT6PQAAAAnpOk5PVqFChUkz54927o2b948ye3atZP83nvvWfX27t0refHixSFuYeqm51ToZZXG2GPPDz/8cMTapHlPfh86dGiS9fSuscYYM2rUqHA1KSr0Lq4lSpSwrq1atSro+xUvXtwq61OVb7zxRsm333570Pf2mjBhgmQ9f8GY/50/gtDSJ3OnS5cuoM/4WsqO5NM7jHu3DnjwwQclHz9+3Lqm57Tq76j+e2eMMXny5JHcsmVLyd45PfpaasObHgAA4AQ6PQAAwAnODG9p3kMI27RpI/mJJ56QrHd5NcaYFStWSF62bJlk7y7DsGXOnFlyJHe11kNaL774onVt9OjRkosVKybZu51B9uzZw9S66Hv22Wej3YSg6B2evR566KEItsQNeuuJhQsXBvQZvSVF6dKlQ94m/JfeodwY/zs0B0
jVu+fLlk75L31DyczJseAADgBDo9AADACc4Mb23dulXyp59+al1bt26dZO+QlqZXo9x1110hbF3aFsldmPUreT2ENWvWLKueXsHw+eefh79hCKvGjRtHuwlpTv369SX/8ccfPuvpYRZ9qChSH70K199O9azeAgAAiHF0egAAgBPo9AAAACekqTk9u3fvtspjx46VrOdtHDp0KKD7pU9v/+fRy62vuor+oqZP19bZGHvn0LfeeiukP/f111+3ysOHD5d86tQpya1bt7bqTZkyJaTtANKaY8eOSfa3C3O3bt0kp+UtHlxwzz33RLsJYcdfbgAA4AQ6PQAAwAmpcnhLD09Nnz5d8ttvv23VS0hICPret912m+TnnnvOuhbJpdepj
ljfp59ezZ07r2+OOPS77mmmskr1mzxqo3depUyVu2bJG8f/9+q54+RPPee++V3LVrV
ByBV04cB33HHHVFsSerVvn17q6yHqS9fvuzzc9WqVQtbmxBZge68nZrxpgcAADiBTg8AAHBCzA5vHT58WPKOHTusa927d5e8a9euoO/tPaitX79+kvVOvazQCo1Lly5Jfuedd6xrenfsnDlzSt6zZ09A9/a+Wq9Tp47kYcOGBdVOpF5XrlyJdhNSJb2D+eLFi61repg6U6ZMkr1DxQUKFAhT6xBpP/30U7SbEHb8VQcAAE6g0wMAAJxApwcAADghqnN6Tpw4Iblz587WNT3WnNxxxurVq0vu06ePZO+uk1myZEnW/fFfeplwlSpVrGvff/+9z8/p5ex6HpdX3rx5JesTfkO9wzNSp9WrV0tu165d9BqSypw8eVKyv+9f4cKFJ
22mthbROi584775Ts3Vk
eBNDwAAcAKdHgAA4ISwD2+tXbvWKo8ePVryunXrJB84cCBZ98+aNatk726/ekflbNmyJev+CEzRokUl68NdjTFm/PjxkvWBoP706tXLKj/55JOSS5UqlZwmAgD8qFChgmT9e9Y7xUSX8+XLF/6GhRBvegAAgBPo9AAAACfQ6QEAAE4I+5yeOXPm+C37cuONN0pu0KCBdS1dunSS+
tKzlXrlzJaSJCrFChQlZ56NChSWYgGPfdd5/k2bNnR7ElaUeZMmUke490WblyZaSbgxgycOBAyR06dPB57e2335as/27HKt70AAAAJ9DpAQAATgj78NaoUaP8lgEgEHqnZXZdDo2CBQtKXr58eRRbgljTtGlTyTNnzrSuLV68WLKesjBx4kSrXixuFcObHgAA4AQ6PQAAwAlRPXAUAADEnhw5ckj2rpbUpx2MGzdOsnd1biyu5uJNDwAAcAKdHgAA4AQ6PQAAwAnM6QEAAD7p+T3GGDN27Ngkc2rAmx4AAOAEOj0AAMAJcYmJiYFXjos7aozZF77mIAklEhMT84X6pjzLqOF5ph08y7Ql5M+TZxk1Pp9lUJ0eAACA1IrhLQAA4AQ6PQAAwAl0egAAgBPo9AAAACfQ6QEAAE6g0wMAAJxApwcAADiBTg8AAHACnR4AAOAEOj0AAMAJdHoAAIAT6PQAAAAn0OkBAABOoNMDAACcQKcHAAA4gU4PAABwAp0eAADghPTBVM6bN29ifHx8mJqCpCQkJJhjx47Fhfq+PMvo2LBhw7HExMR8ob4vzzPy+G6mLeH4bvIso8Pfswyq0xMfH2/Wr18fmlYhIJUrVw7LfXmW0REXF7cvHPfleUYe3820JRzfTZ5ldPh7lgxvAQAAJ9DpAQAATqDTAwAAnECnBwAAOIFODwAAcAKdHgAA4AQ6PQAAwAl0egAAgBPo9AAAACfQ6QEAAE6g0wMAAJwQ1NlbQKT06tXLKo8ZM0Zy+fLlJc+fP9+qV6JEifA2DAAQUnXq1PF57Ztvvgnpz+JNDwAAcAKdHgAA4AQ6PQAAwAlOzuk5c+aMVf7zzz8lf/XVV5KPHDli1evTp4/kTJkyhal17kpISJA8depU61pcXJzknTt3St61a5dVjzk9sWPPnj2SL168aF1buXKl5K5du0rWzzm5GjduLHnmzJnWtYwZM6b4/q77+++
fKqVaskDxgwIMn/HdCefvppq7x69WrJjz32WFh/Nm96AACAE+j0AAAAJ6Tp4a1ffvlF8ujRoyXrV2nGGLNt27aA7nfo0CHJegk1QiNfvnySa9asaV2bO3dupJuDAGzfvt0qT548WfInn3wi+cqVK1a93377TbIe0grF8Jb+t9KlSxfr2ptvvik5R44cKf5ZLjp16pRVrlWrluSCBQtK1r8vvdfgnv79+0t+7733rGsZMmSQXLdu3bC2gzc9AADACXR6AACAE1L98JZevaNfXRtjzLRp0ySfP39ecmJiolWvePHikq+++mrJepWQMcbMnj1bsl5xUqZMmWCbjSRky5ZNMquwUoeBAwdaZb36MRbo4TZjjHn88ccl16hRI9LNSfP0kBbDW9DWrFkj2buaU38XW7RoEdZ28KYHAAA4gU4PAABwAp0eAADghFQxp8e7RPLZZ5+VPGvWLMmnT58O6H433HCDVV64cKFkPdbonatz9OhRyceOHQvoZyFwJ0+elLxly5YotgSBqlevnlX2Nacnf/78VrlDhw6S9XL2q67y/f+H6R1+ly9fHlQ7AfyvFStWWOWXXnpJ8owZMyTnyZMnWffX99Bbw5QsWdKq9+q
y
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
8zM8
yx55syZPutVrlxZcp06dZLbRCAm6e+IXkJsjDGZMmWSvHHjRslnzpyx6k2bNk1y7dq1rWtFihQJuk0FCxaU3KhRI+ua/j4iNuidlY2xfwevXbvW5+dGjRolWT/Xa665JoStw79JTEyU3KpVK+vaggULJOv5skWLFg1/wyKENz0AAMAJdHoAAIATUuXwVvPmzSUPGTJEs
hrUA1a9ZMsvf1f/369VN8fyCahg0bJvmVV15J8f3+85
pPge2ogRI6xyuXLlJLds2VKy97X8tddeG9J2wDe9m7Ixxnz11VcBfU4PkXiHRRE558+fl/zdd99Z1/RQ9tdffy35iSeeCH/DIoQ3PQAAwAl0egAAgBNS5fBWnjx5JL/wwguSe/fubdXT
GKFy8u+ddff/V575MnT0rW
eMYXg
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
z55ps+r+ldmMuXLx9oE5HKpU
319X+t+bMYEPb91www0hbVNqFxcXF/RnvMP8+h56dZh3hZ4+APraa6+V7N0lOmfOnEG3CQgUb3oAAIAT6PQAAAAn0OkBAABOiOqcnuPHj0tu3769dU0vT9XLG5NLL6meMGFCQJ9p2rRpin+uK/Rp98OHD7eu9ejRI8nspedb6OWtxhgTHx8veeTIkZK9Jzkj/PR36f3337eulSlTRnKLFi1C+nMvX74secuWLQF9JkOGDFa5atWqIW1TatOwYUO
OfbeXdQ1rsm6
eessIr8mTJ0v2LkXPly+f5Oeff15ykSJF/q3ZiLILFy5Euwkhw5seAADgBDo9AADACVEd3tJDHfPmzbOu6eEN7+tPXS5ZsqTkDRs2+LyHfo17+vRpn23q3bu35MKFC/usB9uAAQMke4cUNm7cKHnp0qU+76F3V
u6qwPG9TPHOF36NAhq3zvvfdK9h5g6d3xN6UOHz4sWe/U+8033wT0ee8BtHfeeWdoGpZKeXeZz5Ytm+SzZ89a16pXry45OUvbvUPPzZs3l3z
fcHfT9Ez4IFC6yyv2kKsY43PQAAwAl0egAAgBNiZnjrl19+sa6tWbNGcq1ataxreiWPfn3t3dnT3yoDTa840QdbZs6cOaDPw9a3b99oNwEh5D300TukpenvcenSpSVnyZLF52fOnz8vWQ9DG2MPafkbltauvvpqyWPGjAnoM6649dZ
fL06dMl6
WxhizbNmygO7Ztm1byTfddJPkSpUqWfW8B5Ai+goUKGCVy5UrJ3nHjh2Rbk5E8KYHAAA4gU4PAABwAp0eAADghKjO6bnjjjuSzMYY89hjj0nu2rWrdS0hISHJHKjcuXNb5R9++CHoewCuqFu3rlWeNWuWz7p6HofOuXLl8vkZvcx906ZNyWmiNY9nzpw5kplH4t+DDz6YZIYbvFsY+Jp7t3jxYqvMknUAAIAYR6cHAAA4IarDW5p3uaQ+4OzPP
0+Tn9OnzGjBk+6+XMmVPykiVLktNEwEl33323VW7VqpVkf9+55A5V+aJ3+vYuo2/WrJlk1w8VBZLr5ptvlrx+/XrJ/v4Gpza86QEAAE6g0wMAAJxApwcAADghZub0eGXKlEnyM888E9Bn9JbqAELj2muvtcoTJ06U3LBhQ+uaPv38hhtukPzll1/6vL8+BsarTp06kvWxFt4jDgCk3HPPPSd5+
tklu0aBGN5oQFb3oAAIAT6PQAAAAnxOzwFoDYpIeeW7ZsaV3zlv/Rt2/fsLYJQMrFx8dLXr16dfQaEka86QEAAE6g0wMAAJxApwcAADiBTg8AAHACnR4AAOAEOj0AAMAJdHoAAIAT6PQAAAAn0OkBAABOiEtMTAy8clzcUWPMvvA1B0kokZiYmC/UN+VZRg3PM+3gWaYtIX+ePMuo8fksg+r0AAAApFYMbwEAACfQ6QEAAE6g0wMAAJxApwcAADiBTg8AAHACnR4AAOAEOj0AAMAJdHoAAIAT6PQAAAAn0OkBAABOoNMDAACcQKcHAAA4gU4PAABwAp0eAADgBDo9AADACXR6AACAE+j0AAAAJ6QPpnLevHkT4+Pjw9QUJCUhIcEcO3YsLtT35VlGx4YNG44lJibmC/V9eZ6Rx3czbQnHd5NnGR3+nmVQnZ74+Hizfv360LQKAalcuXJY7suzjI64uLh94bgvzzPy+G6mLeH4bvIso8Pfs2R4CwAAOIFODwAAcAKdHgAA4AQ6PQAAwAl0egAAgBPo9AAAACfQ6QEAAE6g0wMAAJwQ1OaEAAAkx88
yx5wIABkufMmWPV27p1q+QyZcqEv2FwCm96AACAE+j0AAAAJzC8BQAIuVWrVlnle++9V3LevHkld+vWzapXoECB8DYMTuNNDwAAcAKdHgAA4AQ6PQAAwAnM6UHMmDp1quSFCxda17Zs2SJ59+7dPu9x++23S543b57knDlzhqKJiFFnz56VXKtWLcm
fabVU/PM4mPjw93s5wzf/58yc2bN7eudenSRfJLL70kOWvWrOFvGPD/8aYHAAA4gU4PAABwAsNbiKhjx45Z5SeeeELyl19+KTlXrlxWvWrVqkkuUaKE5OXLl1v1Vq5cKVkPdf3www/JbDEi6eDBg1b56NGjSdbLnTu3Vf72228lr1+/XrJ3R99
kmpU2Ex969eyW3aNFCcs2aNa16r732muS
uL/30Z08C8PAAA4gU4PAABwgpPDW/o1qzHGXLx4UbIeBpk2bZrPe+jX5jt37gxh69K2e+65xyonJCRIfvbZZyU/88wzVr08efIkeb9du3ZZ5SpVqkjes2eP5GHDhln1hgwZEliDkWzbtm2TPHbsWOvavn37kvyMfmb+6vXv398q+xq+LFy4sFXW33Ukz19
WWVO3bsKPmmm26SPHv2bKseQ1qx78SJE5JnzZolecSIEVY976rIf7z44otWeeDAgSFsXWjwrxAAADiBTg8AAHACnR4AAOCENDWnx7t8Wc8pWLFiheQ5c+ZY9a5cuZLk/eLi4nz+rB9
FFy2bJlrWssj7YtXrxY8qZNm6xrDz/8sOSRI0cGfW/vkuSnnnpK8vDhwyVPnDjRqsecnvDTy8g/+OCDgD6TKVMmq9ymTRvJS5culTxq1KiA7te+fXurzJL1lBs8eLBVXrt2rWS9fD1HjhwRaxOSZ/Xq1Va5d+/ekvVz9f4t9PW30ftvQ/978P4Ojhbe9AAAACfQ6QEAAE6I2eGt33
XXKrVq2saz
HOSnzl16pRV/vPPPyUnJiZKrly5slVvw4YNQbfv8uXLks+dOxf0513y999/Sy5VqpR1rWXLliH9WQ899JBkPbzlXWZ7+vRpybyGD52hQ4dKHj16tM967dq1k5wvXz7Jffv2terpa5s3b5bs3fpA79ycP39+yfrfA5LvwoULkr1beegDXosWLRqpJiGZ9K74nTp1sq7p7Vf096hx48ZWvUaNGkmeMmWKZO82BWvWrJGst4vImDFjsM0OGd70AAAAJ9DpAQAATqDTAwAAnBAzc3qWLFlilfXW5
++muK76+XkefNm9e6psc49SnP3uWu+/fvT/LeN954Y4
l5bVqVNHsnfJetasWUP6s7xLnv9x6NAhqzx9+nTJXbp0CWkbXHb27FnJ58+flxwfH2/Ve+mllyQXKlTI5/301hB6K/wjR45Y9bJlyyb5+eefl5w5c+YAWo1/o+dn6bmSxtjPErGvYcOGkr1HKOm5cgsWLAjofiVLlpTs/Tt+4MAByfpvcMWKFQN
BjwpgcAADiBTg8AAHBCzAxveZe3BjqkpYczvPeoWrWq5NKlS/u8h96l9a233pLsazjLGPt1/dSpUwNqq6siOcRw3XXXSS5XrpzkHTt2WPW8p3kjNPQS8f/85z+Sva/R9Snp48aNk+zddkLvEDt
nzJefLkseoNGjRIcteuXYNtNv7FokWLJFevXt26dsstt0S6OUiBLFmy+Lyml6KHwtVXXy3ZO60kWnjTAwAAnECnBwAAOCGqw1v6laneufHfFC9eXLIeWqpRo0aK26Rnm/ujXwPGyms7GJMhQ4YkMyLj5ptvlnzHHXdI9g5v6cND9YG0Tz/9tFVv3759Sf4cvfOzMcb06NEj6LbCv5UrV0rWv5+3bt2arPstW7ZMsv6dWb58+WTdD8mjTyfQ2RhjcufOLVnvYq9XURpjzOTJkyXrEw0KFixo1dOrZIsUKZLMFocWb3oAAIAT6PQAAAAn0OkBAABOiOqcntdee02y3snVy7tEUu+4mpx5PH/88YdV1ktrV6xYEVA7HnjggaB/LsJPnwbtPVld42T18NBbSOjlql565/OmTZtK9s4xiIuLk/zEE09I9p76jND7+OOPJZctW1ay3hbCa9KkSZL1dgPG2L939TYWr7zyilWve/fuQbcVgdPz6/T3yxhjXn/9dcn67/P69et93m/WrFmS9ZYVsYo3PQAAwAl0egAAgBOiOrzVqVMnyUePHrWu5cqVS7Je9mbM/y6LC9Z7771nlfVurpp3KeXs2bND1gaER0JCguRdu3b5rHfvvfcGdD99GO2WLVusa6tXr5bcvHlzyf52/3aJ95DR5NDDyH379pVcrFixFN8
n300UeS9e9g76G+Fy9elPzCCy9InjBhglXP12GW7dq1s+rpAywD/Z4icHo389OnT1vX1q1bJ1kPNXuHwfQBv6ntwG3e9AAAACfQ6QEAAE6I6vBWs2bNkszhMG/ePMnDhg3zWU/v4tu5c2frGkNasUGv0PLuoP1
d/Ad2jS5cukvWBiZs2
LqnThxQrL3EFy9AkzvWKpXsLjm8uXLkvWOvt5VWb48+OCDVll
xFe27dvt8p
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
skezdemXWrFmST5486fP+Y8aMkXz
fdLLlmyZPCNjVG86QEAAE6g0wMAAJwQ9gNHvTPzq1WrJtnf8NbWrVsl79+/37oW6PCWnok+fvx4n/U++eSTgO6HwHiHjp566imfdfUKKz2kNXbs2IB+1k033WSV9cpBf6uCHnroIcn6cNN169YF9HORtE8
VTy7t27JX/77bdWvTx58gR0v+nTp0tes2aNZO9qPIa3YkPv3r0Dqqd3Xfbuxg/f9N/CDh06WNf08JaX/juspwR4D2LWpykcOHAg2e2MZbzpAQAArXNWEgAAB+FJREFUTqDTAwAAnECnBwAAOCHsc3q89JyeyZMnB/SZ1atXW+W
75Z8qpVq5LMxtjL+4YPHx5UO5NStmxZyeE++T01GzZsmFU+e/asz7oDBw6UPGDAgIDuX6NGDcn33XefdU3vru1P9uzZJXt3f0by6e906dKlJevvvT+HDh2yyk8
Tky5cvS
uJBvoc0fode3aVbLensKrYsWKkvXWJXz/Aqf/Bul5r8b4nyObI0cOycWLFw9pm/z9fo9FvOkBAABOoNMDAACcEPHhLX146LJlyyTrpale3bp181v2JTExUbKv3UCDsXPnTsn6Na536aCL9O6geljRGHtY4sqVKyn+WaHeHVT/O9FtRfC+/vpryXpIOUOGDD4/ow9/9e6cffToUcldunSR3L9
xS1E8nn3e1X/y70Dk9qnTp1kpwvX77QN8wxmTJlssrly5cP6f31thAFCxa0runnPHfuXMl6y5BYxZseAADgBDo9AADACREf3tL69OkjecaMGWH9WaEY3tL07rCuDm/pAwX1sMQff/xh1fN1qGg06SG4CxcuSI7FtsYyfRCsV6NGjXxeW7hwoeTOnTtL3rdvn1WvVKlSkkeOHClZr0ZBZH300UdW+ffff0+ynl5pZIz/fw+IPfrkg/j4eOuaHt6qXbt2pJoUErzpAQAATqDTAwAAnECnBwAAOCGqc3rCTc8H0HN67
fqterly5JL/wwgvhb1ga0bNnT8n69N/UQJ8GzsnqyZc/f36
HfXbdGihWTvNgZ6Kbp36a2mt6fQJ0Ujst58803JH374oXXN13zJJUuWWOXChQuHvmGIukKFCkW7CUHhTQ8AAHACnR4AAOCEVDm8pZfSFStWTHLfvn2teq1atQrofps2bZLM8FbojR49OtpNMLt27bLK/fr1S7Ked2kmhyH6V6FCBas8fvx4yXoYRB8SbIz93dSHh956661WPb2cHZGlh6w/+OADyd5dy9On/++fEb3jPsNZbvAOccc63vQAAAAn0OkBAABOiOrw1vXXXy+5bdu21rWff/5Zsndnz65du0r2vl6PlEWLFkn27kCcO3fuSDcnpunhyEjSQ1re3WCPHTsmuUCBApL1qi7vNfy7xx57LMmsD3U1xpinnnpK8uHDhyV/9tlnVj2GFyPnxx9/tMoNGjSQvHv3bp+fe
ppyW
PLLoW8YUmzv3r2SvX+vtCxZskjWv7f16QnGGPPMM89I1isxdTbGmHPnzkkeNGiQ5ObNm1v1GjZs6LNNocabHgAA4AQ6PQAAwAl0egAAgBOiOqdHn5TsPbk31h04cEDyxYsXo9iS6NHzNLzLWLV27dpJ1vM8QsG706++/xdffOHzc3o+2fz58yWXLl06hK3DP5YvX26Vx44dK1mP9d92220RaxNs3m0d/M3j0fTcH0SO9+/OTz/9JPn999+3
333nuSz58/7/OeGTNmlJwtWzbJ/uYB6fk5+fLl89nGU6dOSS5YsKBVjzk9AAAAIUanBwAAOCFV7sgcavrAUX142u+
x7Q5wcMGGCVJ0yYIFnvVprW6GGJrVu3Sj59+rTPz9SuXdsq68MK9bJy7zCT3tVZD6tduHDBqqcPD9WvZwcOHGjVa9q0qc+fhdDz7o5epEgRyb52x0Zk+RvC0GrVqmWVy5UrF4bWICl6e4devXpZ12bNmhX0
zDTPr3cfny5SVXrFgx6Hv7492iJpJ40wMAAJxApwcAADgh7Y69BOHaa6+VrHeEbdKkiVVPv1rUJk+ebJX1ypS0PLxVt25dyZ9
lkPXRkjD3c5V3Fky5dOskrV64M6OfqlWL688YYc9ddd0nWr1BDvWoM/279+vWSjx8
l0bM2aM5OzZs0esTfBt8ODBAdXTO+Ibww70kTR9+nTJwQxnPfDAA5L1wdzVq1e36mXIkCEFrUsdeNMDAACcQKcHAAA4gU4PAABwQtqdcJJMVatWlTx37lzrmt551HuarKbnMtSsWTOErYtd+v9OvXzdGHsJ
Dhw1P8s/QySz2Hxxhjxo8fLzlnzpwp/lkIzl9
SW5Y8eOkvUSdWOMadOmTcTaBN+2b98u+ezZsz7rDR06VHKzZs3C2ST4oeeZTpw40bpWuHBhyQ8
LB1rX379uFtWCrCmx4AAOAEOj0AAMAJDG/54T388PXXX5f8yiuvSH7wwQetepUrVw5vw2KcdyjjhRdekHzddddZ1/R/R33AYZkyZax6zzzzTJL3qFGjRsoai5DSr9y3bNmSZDbG3i0b0bN27VrJZ86c8VkvU6ZMkvWuvYis+Ph4yd5pBAgMb3oAAIAT6PQAAAAn0OkBAABOYE5PEB555JEkMwLnPV03mqftIvT08RL6ZOayZctGozn4Fx06dJA8bNgw69q5c+ck169fP2JtAsKJNz0AAMAJdHoAAIATGN4CEDJ
PGH5CFDhkhOn55fNbFu37590W4CEHa86QEAAE6g0wMAAJzAO2cAIXPo0KFoNwEAfOJNDwAAcAKdHgAA4AQ6PQAAwAl0egAAgBPo9AAAACfQ6QEAAE6IS0xMDLxyXNxRYwzbdkZWicTExHyhvinPMmp4nmkHzzJtCfnz5FlGjc9nGVSnBwAAILVieAsAADiBTg8AAHACnR4AAOAEOj0AAMAJdHoAAIAT6PQAAAAn0OkBAABOoNMDAACcQKcHAAA44f8BZOwS1fvAslYAAAAASUVORK5CYII=\n","text/plain":["
"]},"metadata":{"tags":[]}}]},{"cell_type":"code","metadata":{"id":"AmY7XIJnuAX6","colab":{"base_uri":"https:
localhost:8080/"},"executionInfo":{"status":"ok","timestamp": XXXXXXXXXX,"user_tz":480,"elapsed":3599,"user":{"displayName":"Alex Thomo","photoUrl":"","userId":" XXXXXXXXXX"}},"outputId":"4f42057b-afbe-4937-cc65-b7c56652b19b"},"source":["train_images.shape"],"execution_count":4,"outputs":[{"output_type":"execute_result","data":{"text/plain":["(60000, 28, 28)"]},"metadata":{"tags":[]},"execution_count":4}]},{"cell_type":"code","metadata":{"id":"_COZI0zZuAX8","colab":{"base_uri":"https:
localhost:8080/"},"executionInfo":{"status":"ok","timestamp": XXXXXXXXXX,"user_tz":480,"elapsed":3595,"user":{"displayName":"Alex Thomo","photoUrl":"","userId":" XXXXXXXXXX"}},"outputId":"a4fd72a5-b1c3-45f0-b989-46642336dcec"},"source":["len(train_labels)"],"execution_count":5,"outputs":[{"output_type":"execute_result","data":{"text/plain":["60000"]},"metadata":{"tags":[]},"execution_count":5}]},{"cell_type":"code","metadata":{"id":"MNevOEkouAX_","colab":{"base_uri":"https:
localhost:8080/"},"executionInfo":{"status":"ok","timestamp": XXXXXXXXXX,"user_tz":480,"elapsed":3588,"user":{"displayName":"Alex Thomo","photoUrl":"","userId":" XXXXXXXXXX"}},"outputId":"108f01a4-0163-4fa8-9a20-4fb2cfb5c309"},"source":["train_labels"],"execution_count":6,"outputs":[{"output_type":"execute_result","data":{"text/plain":["a
ay([5, 0, 4, ..., 5, 6, 8], dtype=uint8)"]},"metadata":{"tags":[]},"execution_count":6}]},{"cell_type":"markdown","metadata":{"id":"-7Lxf63puAYB"},"source":["Let's have a look at the test data:"]},{"cell_type":"code","metadata":{"id":"_H1C9T7puAYC","colab":{"base_uri":"https:
localhost:8080/"},"executionInfo":{"status":"ok","timestamp": XXXXXXXXXX,"user_tz":480,"elapsed":3585,"user":{"displayName":"Alex Thomo","photoUrl":"","userId":" XXXXXXXXXX"}},"outputId":"aa6d8562-1c28-4dce-9d8a-5dd0753a9169"},"source":["test_images.shape"],"execution_count":7,"outputs":[{"output_type":"execute_result","data":{"text/plain":["(10000, 28, 28)"]},"metadata":{"tags":[]},"execution_count":7}]},{"cell_type":"code","metadata":{"id":"KO_klX0RuAYF","colab":{"base_uri":"https:
localhost:8080/"},"executionInfo":{"status":"ok","timestamp": XXXXXXXXXX,"user_tz":480,"elapsed":3581,"user":{"displayName":"Alex Thomo","photoUrl":"","userId":" XXXXXXXXXX"}},"outputId":"af4656be-26b8-4dce-d622-399b3712463c"},"source":["len(test_labels)"],"execution_count":8,"outputs":[{"output_type":"execute_result","data":{"text/plain":["10000"]},"metadata":{"tags":[]},"execution_count":8}]},{"cell_type":"code","metadata":{"id":"dzruk1ifuAYI","colab":{"base_uri":"https:
localhost:8080/"},"executionInfo":{"status":"ok","timestamp": XXXXXXXXXX,"user_tz":480,"elapsed":3577,"user":{"displayName":"Alex Thomo","photoUrl":"","userId":" XXXXXXXXXX"}},"outputId":"186133a7-1d23-4ffa-ac91-e66975643f83"},"source":["test_labels"],"execution_count":9,"outputs":[{"output_type":"execute_result","data":{"text/plain":["a
ay([7, 2, 1, ..., 4, 5, 6], dtype=uint8)"]},"metadata":{"tags":[]}
Answered Same Day Nov 22, 2021

Solution

Vicky answered on Nov 24 2021
159 Votes
SOLUTION.PDF

Answer To This Question Is Available To Download

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here