Skip to content

Instantly share code, notes, and snippets.

@ka4tik
Created June 22, 2016 15:46
Show Gist options
  • Save ka4tik/b04d0fbe66603f2238118dbb59f0486c to your computer and use it in GitHub Desktop.
Save ka4tik/b04d0fbe66603f2238118dbb59f0486c to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "5hIbr52I7Z7U"
},
"source": [
"Deep Learning\n",
"=============\n",
"\n",
"Assignment 1\n",
"------------\n",
"\n",
"The objective of this assignment is to learn about simple data curation practices, and familiarize you with some of the data we'll be reusing later.\n",
"\n",
"This notebook uses the [notMNIST](http://yaroslavvb.blogspot.com/2011/09/notmnist-dataset.html) dataset to be used with python experiments. This dataset is designed to look like the classic [MNIST](http://yann.lecun.com/exdb/mnist/) dataset, while looking a little more like real data: it's a harder task, and the data is a lot less 'clean' than MNIST."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"cellView": "both",
"colab": {
"autoexec": {
"startup": false,
"wait_interval": 0
}
},
"colab_type": "code",
"collapsed": false,
"id": "apJbCsBHl-2A"
},
"outputs": [],
"source": [
"# These are all the modules we'll be using later. Make sure you can import them\n",
"# before proceeding further.\n",
"from __future__ import print_function\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import os\n",
"import sys\n",
"import tarfile\n",
"from IPython.display import display, Image\n",
"from scipy import ndimage\n",
"from sklearn.linear_model import LogisticRegression\n",
"from six.moves.urllib.request import urlretrieve\n",
"from six.moves import cPickle as pickle\n",
"\n",
"# Config the matlotlib backend as plotting inline in IPython\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "jNWGtZaXn-5j"
},
"source": [
"First, we'll download the dataset to our local machine. The data consists of characters rendered in a variety of fonts on a 28x28 image. The labels are limited to 'A' through 'J' (10 classes). The training set has about 500k and the testset 19000 labelled examples. Given these sizes, it should be possible to train models quickly on any machine."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"cellView": "both",
"colab": {
"autoexec": {
"startup": false,
"wait_interval": 0
},
"output_extras": [
{
"item_id": 1
}
]
},
"colab_type": "code",
"collapsed": false,
"executionInfo": {
"elapsed": 186058,
"status": "ok",
"timestamp": 1444485672507,
"user": {
"color": "#1FA15D",
"displayName": "Vincent Vanhoucke",
"isAnonymous": false,
"isMe": true,
"permissionId": "05076109866853157986",
"photoUrl": "//lh6.googleusercontent.com/-cCJa7dTDcgQ/AAAAAAAAAAI/AAAAAAAACgw/r2EZ_8oYer4/s50-c-k-no/photo.jpg",
"sessionId": "2a0a5e044bb03b66",
"userId": "102167687554210253930"
},
"user_tz": 420
},
"id": "EYRJ4ICW6-da",
"outputId": "0d0f85df-155f-4a89-8e7e-ee32df36ec8d"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Found and verified notMNIST_large.tar.gz\n",
"Found and verified notMNIST_small.tar.gz\n"
]
}
],
"source": [
"url = 'http://commondatastorage.googleapis.com/books1000/'\n",
"last_percent_reported = None\n",
"\n",
"def download_progress_hook(count, blockSize, totalSize):\n",
" \"\"\"A hook to report the progress of a download. This is mostly intended for users with\n",
" slow internet connections. Reports every 1% change in download progress.\n",
" \"\"\"\n",
" global last_percent_reported\n",
" percent = int(count * blockSize * 100 / totalSize)\n",
"\n",
" if last_percent_reported != percent:\n",
" if percent % 5 == 0:\n",
" sys.stdout.write(\"%s%%\" % percent)\n",
" sys.stdout.flush()\n",
" else:\n",
" sys.stdout.write(\".\")\n",
" sys.stdout.flush()\n",
" \n",
" last_percent_reported = percent\n",
" \n",
"def maybe_download(filename, expected_bytes, force=False):\n",
" \"\"\"Download a file if not present, and make sure it's the right size.\"\"\"\n",
" if force or not os.path.exists(filename):\n",
" print('Attempting to download:', filename) \n",
" filename, _ = urlretrieve(url + filename, filename, reporthook=download_progress_hook)\n",
" print('\\nDownload Complete!')\n",
" statinfo = os.stat(filename)\n",
" if statinfo.st_size == expected_bytes:\n",
" print('Found and verified', filename)\n",
" else:\n",
" raise Exception(\n",
" 'Failed to verify ' + filename + '. Can you get to it with a browser?')\n",
" return filename\n",
"\n",
"train_filename = maybe_download('notMNIST_large.tar.gz', 247336696)\n",
"test_filename = maybe_download('notMNIST_small.tar.gz', 8458043)"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "cC3p0oEyF8QT"
},
"source": [
"Extract the dataset from the compressed .tar.gz file.\n",
"This should give you a set of directories, labelled A through J."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"cellView": "both",
"colab": {
"autoexec": {
"startup": false,
"wait_interval": 0
},
"output_extras": [
{
"item_id": 1
}
]
},
"colab_type": "code",
"collapsed": false,
"executionInfo": {
"elapsed": 186055,
"status": "ok",
"timestamp": 1444485672525,
"user": {
"color": "#1FA15D",
"displayName": "Vincent Vanhoucke",
"isAnonymous": false,
"isMe": true,
"permissionId": "05076109866853157986",
"photoUrl": "//lh6.googleusercontent.com/-cCJa7dTDcgQ/AAAAAAAAAAI/AAAAAAAACgw/r2EZ_8oYer4/s50-c-k-no/photo.jpg",
"sessionId": "2a0a5e044bb03b66",
"userId": "102167687554210253930"
},
"user_tz": 420
},
"id": "H8CBE-WZ8nmj",
"outputId": "ef6c790c-2513-4b09-962e-27c79390c762"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"notMNIST_large already present - Skipping extraction of notMNIST_large.tar.gz.\n",
"['notMNIST_large/A', 'notMNIST_large/B', 'notMNIST_large/C', 'notMNIST_large/D', 'notMNIST_large/E', 'notMNIST_large/F', 'notMNIST_large/G', 'notMNIST_large/H', 'notMNIST_large/I', 'notMNIST_large/J']\n",
"notMNIST_small already present - Skipping extraction of notMNIST_small.tar.gz.\n",
"['notMNIST_small/A', 'notMNIST_small/B', 'notMNIST_small/C', 'notMNIST_small/D', 'notMNIST_small/E', 'notMNIST_small/F', 'notMNIST_small/G', 'notMNIST_small/H', 'notMNIST_small/I', 'notMNIST_small/J']\n"
]
}
],
"source": [
"num_classes = 10\n",
"np.random.seed(133)\n",
"\n",
"def maybe_extract(filename, force=False):\n",
" root = os.path.splitext(os.path.splitext(filename)[0])[0] # remove .tar.gz\n",
" if os.path.isdir(root) and not force:\n",
" # You may override by setting force=True.\n",
" print('%s already present - Skipping extraction of %s.' % (root, filename))\n",
" else:\n",
" print('Extracting data for %s. This may take a while. Please wait.' % root)\n",
" tar = tarfile.open(filename)\n",
" sys.stdout.flush()\n",
" tar.extractall()\n",
" tar.close()\n",
" data_folders = [\n",
" os.path.join(root, d) for d in sorted(os.listdir(root))\n",
" if os.path.isdir(os.path.join(root, d))]\n",
" if len(data_folders) != num_classes:\n",
" raise Exception(\n",
" 'Expected %d folders, one per class. Found %d instead.' % (\n",
" num_classes, len(data_folders)))\n",
" print(data_folders)\n",
" return data_folders\n",
" \n",
"train_folders = maybe_extract(train_filename)\n",
"test_folders = maybe_extract(test_filename)"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "4riXK3IoHgx6"
},
"source": [
"---\n",
"Problem 1\n",
"---------\n",
"\n",
"Let's take a peek at some of the data to make sure it looks sensible. Each exemplar should be an image of a character A through J rendered in a different font. Display a sample of the images that we just downloaded. Hint: you can use the package IPython.display.\n",
"\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAAAAABXZoBIAAABs0lEQVR4nG2SPWhUQRRGz9yZ3XVN\nNNikiMFoE0RQJCIKFrEwICgWFmksBMVouSCYUhAEQUQsNJBSEGws0gkWIYKNP6QKSyxUxEITSCIm\n2X3Z9+az2M2SfZuvPdwzM98dyMWxf2Z+8d9iwOUROMpf1dCvHhyWh/K1BSLFMnRDyw6O4CmWd9N6\nXiuN2hjuniNwXXOJ1Dixi5ShjY9nG4o6g++GMxoZqCnVaBcMTOgBg8tq6GIeGsNbn0r0/dSWruI7\nTxXPCxOJrW8C+3LvDKpcmJwPyjYRvXnpcc0ZzphVonudWtlUdieaYBXltEGT5ypVH3GsQafWc1pv\nCWZW4KnqmsYTWsxlhem1W8QIxlJLuw19ev/kIzvVAPzKARw9O6Xno6LaSfUOa026bO/Uyo2aE4BL\nXhyLvozag090bbtM440SfXatbXvG9IrgmynyTIkWSk1o9H3/09/+FoG7SvStFxfAWXx8eHzJZ+3r\n/caxp7QOPnhua5Ziu6siY8q0OkgBR+lhqpc7VmscqUn1Q1gYvXT5aMZ4vfr+i0UArgz0G5QqP5ap\nKqZRSnWTABhDf5ttZPrwH46PvqEx0zkkAAAAAElFTkSuQmCC\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAAAAABXZoBIAAACA0lEQVR4nD2Sz0tVURDHP+ec+0xL\nHiJlPRIh5GmR/W4TkWKLwIqgSIKEaFMLl7UN2rXKRWBU9AcE0UqoaF1uamFFUFaLeCs3FlKo13vO\nfFvc+5zdnJk58/0xEC59lKkdhVqDeJ95APDsXZNJMpNtqHWYEIAAQOCBoqQoxagP/dQ8zbMDeMAz\nXA4qRqXZrWT0Ps21fgsHGXdVSKb7e45MHcJnHFhUSklTBOC9kkx5AwfBO94qN0V978Kzs4krd4fM\nJ/P8JDhCap7HM9hTok6kaODoKnPG8dQxx2bU4vQVlTTqwOUST74bh68xGUvsSeeAyarYoCN4rhVW\n8tIrHEwoSTLdJND3SMkkybR+FA8nVP0zd+/ZsmIpc9QTAjC0rqpZsqLSP+oOHUDvchuBJKVYRJNM\nf8fIoNaq3ltff/2ObetM/yZwuM8j5klh7iKd9Z7G0P5jI3XAfH4VWFCSki5sWnijsnAxI6sD8ukH\nOJxzIfVXTb0ZjT4coDUkBI5hBMhFz/Hu5MpzKcUtGifxgFjKOFOd0hYA74tdL/qtLH5h2zclyZQO\n4l1wTLSZWRzltCry+6h5ms9lSZIs10OYUZRsQ/MBts+sKiVJioVed8K8kmLUwgBMryjmJkvRTLOZ\nc6xIUprtJnB9ZaMSL70bxzvIpdU3o3iPY8ep2y+Xij+fHo85goP/WjOKkXVPmtcAAAAASUVORK5C\nYII=\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAAAAABXZoBIAAABuklEQVR4nG3ST0uUURzF8e/v3vtI\nIdPCMcqalhMaUtBATAYlGbXIqCCwFkU7oWWLhDa9ggiiVxAEQkHBQEEWWJsgIdTsDy6CQGtsKFGE\nZnxmntNiJtKeudvPPefC5RgA+ESWPzxU7Mp0EC/Pvn0ztQQYgLnG1uGrJzqWJ6bKP7bsLpzKqTJ5\n/3kMYJ7BWen9cESr58JXKRkAcOZvJ0pueswH770Pjty04qOAWfRA9fUreG+tpEX0/tQRwMIjVXWd\n6C8BRIxpADy3VNVD/EbDkft1DDhUT1Tbj2PTMUpngZJqGsdvNhzn+qF/VXWdT2Hzxkim7tdmUFqM\nUETML7TBBNwujJV1SxmA2wOs4tNJwAUgtGkFcItAlzXa9roy0L2tbRD3CVN+L22SZu5J4hNOt0NE\nNKdYHzMpdQyNuvge1ugbTf2fuBEwnqqmSu9/GhhZ244jv6CaZrKEDebJlicAx77PqurVzn87sWDu\nsS43b/W8VqwvJzF8aA6sc1zl7lZHuLakRM8Gm9s0jk9Ld1rLcSQ7Ll08GPH95bvFleyBM32NudLd\nijVfMZcoFIrFQk+n8fvb/IvJDzUTfwBCr6AIE1mGhgAAAABJRU5ErkJggg==\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAAAAABXZoBIAAABc0lEQVR4nG2RvWpVURCFv9l7jtdE\nUBBBgiSomEoMSBD8eQvxEdJa+xIidj6AhRZaW1gqBAmBlMaEWEgKTYh4iZDknj3L4sSTc++5U232\nt9fM2mtgsoz57xFS0dPUg4mH1wsRJQbeg3Afx0h8nQZ/bJdE+NaXPpTtro2MOP96b8rIxUNJkt5Y\nT2ncGhxlKNW2OtASgHPTHahYowNVAArvLgDw+yPW6nRxuTkd/wFke7+6Rp5rrDaqtq1F9WhU5/Zt\nyT/r5BgC4NJSVXVtbyn7KRJ/396oz1Def0U4l18s1AZEKd2YhpsEPNHUOrqKOXdOIndnqfGzcQDO\nlXOTCQLweZTCuHYvOhHG8HT960OTzbxcqtuYkJ6tduQPJoys5EHOOWcD/HaUZP+lIm0qBASAkxKE\nNVFEXl2PMws2mCdm59qLg/0Mstgt0Kzs/XJpGpuqSoaClQ9e45bj7uP+N2cBXIrFkI0RWb2DwIER\niTFa0qdvFvAP5sLCkDHy/8IAAAAASUVORK5CYII=\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAAAAABXZoBIAAABDUlEQVR4nJ2SLVIDQRCFv56dTSYg\niIqhCgSOAyC5ARbLEbgJPgKDJefABE8VXCAOit9sstsPQbZgkmJFxk193f1evW4T/7/Qwbph9L8l\n+hUJgHVpxifwwYEMQLPXYlVsRwaktMOJlpJcX+fsppRSSuXeh+o6zglUreSCeRMAaV5QEA3DVtAC\nwR0wuE9OFKI1JWc5PKs0eJguT4G47vDwplZ5PY2LHBppfEXPqcsGbL3TRgBBFKCNsVIW6JqmZb+4\nwRxv7WdQbxXlkIBBkUNZdTmJx7cvGs1Qs9H5/B7v9gHwi6g8PgpCEIDKcZ88Phz31RDHiYnw2W/N\n9uj/6DQpELDHjmV3n8nWB7b9UX8DYAltNiD4DHgAAAAASUVORK5CYII=\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAAAAABXZoBIAAABg0lEQVR4nHWQPWsUURiFn/uxs7ts\nsiJmsVgLkRXXIGxIFZIQYhrJH7A0pWirhdqJtZWFvY0gWgWCKdNoIVgaCASDYiUmCyZh9mPusRjG\nyQ6Tc+HC4eE9nPfF+bNyqQzVN3dxlKrW+6D3WP98QX8tBkz6mtbEJ51Z0a3F/ktl9c7ZoY9fO7db\nBNFp/QTDO8WjVLFe4Kg+7GsctA4u4p4SSZKCRvNUnGXuuwZ6BliWFTLYv4zBeG4eSG8BSy+Hhxcw\nUGnTO9ReAyw3cviniXGsfrY80GnPlq05c7XG6836Ygl03FKAp6wUYy/iiPZ+1PG8Oi7A33Xobml3\nCsuVR34ysn6/tbQQYUH8ejkBDX6x2XYyqfUlsbM72p3CAIW2tor7thFHIXWFPQIhOthulEMg4VNi\nzoOwj86DYn87NhkuHD4fsYCZGMt/LDCdM9+YgMbRzgxMX8PnNazEWgbN2KygkAddur5xnBVSUP/x\nUrfxH24dDQencTwYDEejcZIEjYdPsrb/ACD3241srG3KAAAAAElFTkSuQmCC\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAAAAABXZoBIAAABSElEQVR4nLWSMSxDURSG/3Puw6sw\nkIo2HSyd2BoRiZBOdmwiBgOJ2W5iYJB0MJqkq1iQaGcTiYGEEFsXUyOt9r13zzG05b3qs/mnm/Pd\n7+ack0swKljYGnUJnYj3cvwIJksEndlZYa/SbFOyw2munhaeWUCz554GxRy+TaL8pWjtZBI4sPpZ\nzKEr+bJaP4eS6NUIDFMoxmBRP3TeqRMsIBr2LGMIfVBmgKT7VcBCAed3HYCglLVc6Q2B2iviTAAM\nSCyU1oX4RE0TlaPQxpqkmf1U0F6xNGWgEIH92Qmv1YQkUtZchKDgba59ZJm6cU0Q1y05BvTnKP8F\nFSDTow4AzBZNv2uLZGBVwNwwmF5mn5yfGPWTa4OEBtJ776q3q27oayK9W1F9WE8Q6fj2Zgr3152l\nU5BcGtO7o7M6gQ2QOaxqKKJPGy7I4AvDsH+VmdAM+QAAAABJRU5ErkJggg==\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAAAAABXZoBIAAABb0lEQVR4nGWRTU4bQRCFv6ru/BkT\nYMaOPQiRRRZZ5xy5Q+7BDVhwipwh2xwBskVCimARhrE8hmTGQRY9XVkAYdrUsj69V1WvcHy+ODs/\nniD8L4Fv5Wl56IUP+8GHO5La/jjNXprChI5q2UfCzibGLxUmQL1KYfYWT62RDGOOsz7eeRNdmGun\nOcIcTW3paOfKMEOZkQgZYywfYZXAyC48Kh1VegkToLn1DF93blUnM6FAmOEZY9z+JCRDp0CJpwD4\ntOorze8hD1DY/s563cMpYDG9RBxw+WAr7pkSrvAURPf1YBCfuu7my1F01uDZwji9dN0T9CEStW7w\n4yGs5e5CQaRu8PkQoSb2bAMZxqJF8w08i360EsmBxZ3qaGDSXidr2oscqHE6ItDepB8bjFBmoCOM\n5jqxZZCjlJjuAs0fea6sMJ0i/F572JZGocT8OyLlWnAFUUIF+h7HLEHCHiJdhfmzq27jJFnW+Puj\nfVUt4R+ZVJCmYZMzuwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAAAAABXZoBIAAABJElEQVR4nMXQwUoCURgF4HP+0bIQ\nScqNm6KEKEhjYGwX1LKdz+QTtOtF2gfRTqQIhYjCIEok2gQaOHNPCzPHZlp3th/n3sNPxEMScAKy\npe36QYVxYCSAuXLVr1VLywCnIAngSmXfD9ZXCUgECVIOQG5t16/vbGUBSTDwu+ktbu4F1VphAYBz\ntOlfzBfLdT8oFwHIEWR8YPNcklwURs7pV5A/Ou3KJUGSAPCw+ZpqAmksHp+NwvQmzLDRuEwpZwA4\n2NNL9qFRQHroLZ08J5o2QUWjoRIVm909+d4PKlmcYVr+AzN/0+R8aXGQWQpKIgx4+5hHQYIZMO53\nry46MZSTkdC432m124PPuUE0he+Ptzft3sAB9OKDhvet69ZdLwRAj04R8AXcltw2XSBaEQAAAABJ\nRU5ErkJggg==\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAAAAABXZoBIAAAAbUlEQVR4nO2QMQ6AMAwDnSoDAzMv\n6P+/ghBf4BvELC20JcrAjCerJ9tKgUcHjZ0SAoVQG29G6TItnMeaFq5LMcI8BWsbT5Jt8m5N9t60\n0X2/84cA1KP1Tc2BVn5edwcKMxIAYbTp1dbVMPn9zguLcSb0ckFtMwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import os, random\n",
"dir_name = \"notMNIST_large\"\n",
"folder_names = [\"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\"]\n",
"for folder in folder_names:\n",
" im_name = random.choice(os.listdir(dir_name + \"/\" + folder))\n",
" im_file = dir_name + \"/\" + folder + \"/\" + im_name\n",
" display(Image(filename=im_file))"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "PBdkjESPK8tw"
},
"source": [
"Now let's load the data in a more manageable format. Since, depending on your computer setup you might not be able to fit it all in memory, we'll load each class into a separate dataset, store them on disk and curate them independently. Later we'll merge them into a single dataset of manageable size.\n",
"\n",
"We'll convert the entire dataset into a 3D array (image index, x, y) of floating point values, normalized to have approximately zero mean and standard deviation ~0.5 to make training easier down the road. \n",
"\n",
"A few images might not be readable, we'll just skip them."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"cellView": "both",
"colab": {
"autoexec": {
"startup": false,
"wait_interval": 0
},
"output_extras": [
{
"item_id": 30
}
]
},
"colab_type": "code",
"collapsed": false,
"executionInfo": {
"elapsed": 399874,
"status": "ok",
"timestamp": 1444485886378,
"user": {
"color": "#1FA15D",
"displayName": "Vincent Vanhoucke",
"isAnonymous": false,
"isMe": true,
"permissionId": "05076109866853157986",
"photoUrl": "//lh6.googleusercontent.com/-cCJa7dTDcgQ/AAAAAAAAAAI/AAAAAAAACgw/r2EZ_8oYer4/s50-c-k-no/photo.jpg",
"sessionId": "2a0a5e044bb03b66",
"userId": "102167687554210253930"
},
"user_tz": 420
},
"id": "h7q0XhG3MJdf",
"outputId": "92c391bb-86ff-431d-9ada-315568a19e59"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"notMNIST_large/A.pickle already present - Skipping pickling.\n",
"notMNIST_large/B.pickle already present - Skipping pickling.\n",
"notMNIST_large/C.pickle already present - Skipping pickling.\n",
"notMNIST_large/D.pickle already present - Skipping pickling.\n",
"notMNIST_large/E.pickle already present - Skipping pickling.\n",
"notMNIST_large/F.pickle already present - Skipping pickling.\n",
"notMNIST_large/G.pickle already present - Skipping pickling.\n",
"notMNIST_large/H.pickle already present - Skipping pickling.\n",
"notMNIST_large/I.pickle already present - Skipping pickling.\n",
"notMNIST_large/J.pickle already present - Skipping pickling.\n",
"notMNIST_small/A.pickle already present - Skipping pickling.\n",
"notMNIST_small/B.pickle already present - Skipping pickling.\n",
"notMNIST_small/C.pickle already present - Skipping pickling.\n",
"notMNIST_small/D.pickle already present - Skipping pickling.\n",
"notMNIST_small/E.pickle already present - Skipping pickling.\n",
"notMNIST_small/F.pickle already present - Skipping pickling.\n",
"notMNIST_small/G.pickle already present - Skipping pickling.\n",
"notMNIST_small/H.pickle already present - Skipping pickling.\n",
"notMNIST_small/I.pickle already present - Skipping pickling.\n",
"notMNIST_small/J.pickle already present - Skipping pickling.\n"
]
}
],
"source": [
"image_size = 28 # Pixel width and height.\n",
"pixel_depth = 255.0 # Number of levels per pixel.\n",
"\n",
"def load_letter(folder, min_num_images):\n",
" \"\"\"Load the data for a single letter label.\"\"\"\n",
" image_files = os.listdir(folder)\n",
" dataset = np.ndarray(shape=(len(image_files), image_size, image_size),\n",
" dtype=np.float32)\n",
" print(folder)\n",
" num_images = 0\n",
" for image in image_files:\n",
" image_file = os.path.join(folder, image)\n",
" try:\n",
" image_data = (ndimage.imread(image_file).astype(float) - \n",
" pixel_depth / 2) / pixel_depth\n",
" if image_data.shape != (image_size, image_size):\n",
" raise Exception('Unexpected image shape: %s' % str(image_data.shape))\n",
" dataset[num_images, :, :] = image_data\n",
" num_images = num_images + 1\n",
" except IOError as e:\n",
" print('Could not read:', image_file, ':', e, '- it\\'s ok, skipping.')\n",
" \n",
" dataset = dataset[0:num_images, :, :]\n",
" if num_images < min_num_images:\n",
" raise Exception('Many fewer images than expected: %d < %d' %\n",
" (num_images, min_num_images))\n",
" \n",
" print('Full dataset tensor:', dataset.shape)\n",
" print('Mean:', np.mean(dataset))\n",
" print('Standard deviation:', np.std(dataset))\n",
" return dataset\n",
" \n",
"def maybe_pickle(data_folders, min_num_images_per_class, force=False):\n",
" dataset_names = []\n",
" for folder in data_folders:\n",
" set_filename = folder + '.pickle'\n",
" dataset_names.append(set_filename)\n",
" if os.path.exists(set_filename) and not force:\n",
" # You may override by setting force=True.\n",
" print('%s already present - Skipping pickling.' % set_filename)\n",
" else:\n",
" print('Pickling %s.' % set_filename)\n",
" dataset = load_letter(folder, min_num_images_per_class)\n",
" try:\n",
" with open(set_filename, 'wb') as f:\n",
" pickle.dump(dataset, f, pickle.HIGHEST_PROTOCOL)\n",
" except Exception as e:\n",
" print('Unable to save data to', set_filename, ':', e)\n",
" \n",
" return dataset_names\n",
"\n",
"train_datasets = maybe_pickle(train_folders, 45000)\n",
"test_datasets = maybe_pickle(test_folders, 1800)"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "vUdbskYE2d87"
},
"source": [
"---\n",
"Problem 2\n",
"---------\n",
"\n",
"Let's verify that the data still looks good. Displaying a sample of the labels and images from the ndarray. Hint: you can use matplotlib.pyplot.\n",
"\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"notMNIST_large/A.pickle\n",
"notMNIST_large/B.pickle\n",
"notMNIST_large/C.pickle\n",
"notMNIST_large/D.pickle\n",
"notMNIST_large/E.pickle\n",
"notMNIST_large/F.pickle\n",
"notMNIST_large/G.pickle\n",
"notMNIST_large/H.pickle\n",
"notMNIST_large/I.pickle\n",
"notMNIST_large/J.pickle\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x116b4bac8>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\nAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1104df5c0>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\ntr5oAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1105384e0>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAP4AAAD8CAYAAABXXhlaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnUusLNtZmL+/3t376evkXgs79iFCkFFkEcUTR+IiCFiR\nIkcMHMcMDIkQg5AgMeExsYgyAAaWyICJMcggLAJIjo0UGRuh48hEBAvsYMAPpPgYbOyLlfiefXp3\nV9frz6Cq9l67dlX3fnb32fV/0tJaVdVVvXbt+upfa1VVl6gqhmGMC2/bFTAMY/OY+IYxQkx8wxgh\nJr5hjBAT3zBGiIlvGCPkVuKLyNtE5PMi8kUR+cm7qpRhGPeL3PQ6voh4wBeB7wH+FvgU8E5V/Xzn\nc3ajgGFsCVWVvvnBLbb5FuCvVPXLACLym8Dbgc93P/gep/wYePkWX3rfPMbqdxseU0cCr0m+U26b\nl5WTys50fAjHr2/StzjlJi2qhCdfPa7T3x7z5KtH59NfPeZkNqE+rP0mBU7+34F/CRTNN5dOuc23\nGacec7f/3Z8dXHKbpv7rgb9xpr/SzDMMY8exwT3DGCG3aep/FXijM/2GZt4lHjvl5BZfuAkebbsC\na3i07Qqs4dG2K7CSb992Bdbw6JbrP2nSem4j/qeAbxORNwFfA94J/Ju+D758iy/ZNI+2XYE1PNp2\nBdbwrduuwEq+Y9sVWMOjO1jf3cYnBj95Y/FVtRSRHwM+Rt1leL+qfu6m2zMMY3PcJuKjqh9l90+j\nhmF0sME9wxghJr5hjBAT3zBGiIlvGCPExDeMEWLiG8YIMfENY4SY+IYxQkx8wxghJr5hjBAT3zBG\niIlvGCPExDeMEWLiG8YIMfENY4SY+IYxQkx8wxghJr5hjBAT3zBGiIlvPGB63x7VmS898x4+Jr4x\nAly5h8pu/vC51a/sGsbuskrqIemFschv4hsjYOgksCr6P2ysqW88YPqivEkPFvGNB0dX3r7m+6o+\n/zjkN/GNkdCVet1A38PGmvrGA2Rd5B639GDiG8YoMfGNB4g26SrLu+VxYH18YyR0Twbjlt/ENx4Y\nXXH7ov+Q8OtaCg+HW4kvIk+Ap0AF5Kr6lruolGHcDUMR3l02vmgPt4/4FfCyqn7zLipjGPdDV+y+\nfFzy31Z8wQYIjZ1kSPK2PCT/OMS/rbQKfFxEPiUiP3IXFTKMu2dVn767fBzcNuK/VVW/JiJ/n/oE\n8DlV/WT3Q4+d8qMmGcYgQ+NxqwbmL+Hegus1yXdWHCo/z/J/qUnruZX4qvq1Jv+GiHwIeAtwSfyX\nb/MlxnhpPawG8r7gfUn2AAidHGrRC6BsymUz7fN8i/+PmtTyePCTNxZfRKaAp6ozEdkDvg/42Ztu\nzzCA/i73OvkvuepG+IBz6UPqk4IrvCt92Wz44XObiP8S8CER0WY7v6GqH7ubahmjZujyeuWkQend\niO9zLn8IRM38Ntq3yT0JmPgrUdUvAW++w7oYxkX6hO9K33sCcMV3I37kzC8HkolvGNuj28TvNvO7\n/fx2nd6I3zbzW/GHpC/paUI8SEx8Y/dY1cxfG+3h8uBeQC19K36FiW8Yu0jfwN7aaN/iDu51+/jd\nZn73JGDiG/eFJ82xKU4C8QRFUO0kPKfcsKO/DN29au51EjTuaqOcXpwmgWWsLKMmhU3ylaWnLInI\nvYBSPFRARPEpCSUnZklMiOABgjTN/vOcplau7BV64QTwcMSfr1hm4t+QVa9kGLpJFABfIPSQyIPI\nb/I6SeRTiU9V+pRlQFHVeVn6FGVAWQVU2pw0WsO6OX1fysaO5zPx5Vx2ccpoI7lCVYE65Uoh2VM4\nKuCohIMS9guYlsikRJKSZRmwCBPyMEADwfdLIi9jKnMOBXxyhAUeCR4J0uR1OUYa8fVM+rYJUTbl\nhyP+qlt5TPwbsO71DG0rVHrKeILEHkwCZOomH6YBeCFFHlEUEXkekeURWVsuIkr1L4bTbj509tmw\n+K3s3ZxW+LLJK6jKJq8gmZZwnMNhhuznyF6GTHNkkiFxTl4IiygiD0OqQPD8kthbMhU4pCBkiU+E\nT4xPjOeUfSIEH3WE75ZNfGMlMpBg+O5SoD76I7+W/TBEDiPkMMRrcvVjdJlQZhOyZUKaTUidvNCg\n/q+1XdduLlyUvffutvtDaCSX87IrP630ZZ1rcXE6mRRwlCKHKXKwhP0UmaZIkiLJkiqrWEQ+Weih\nAXXE95fseQWHkpIQEBAREBIQ4Td5PR3i4aFoI7yeiX9eHgcm/g3pCt8Ntt2rwefiCxJ5yF6AHEZ4\nL8TIC/FZLsEEXUwp0z2ydI90scc8rdPpYo9Cw8t3obq5R/+I9wZvQ29ld8VvE1UjewGaO+UmJUmO\nHM+RwzlyMEf25sh0jkzmSDwHyVmESh4o6iueXxJ5JVNRcpQCr1E8ICR0lK+nPaTRvJW9WxoHJv4N\n6Dbvz/qyzfyK84tGcLmpT+Qh0wDvMKylfzHBe3GCvJggwR46P6SYH5DPD0jnh8znBzw7PWA2PySr\nonpwuh2k7uZ94rsj4vdNK3hX+DYva+HJG/Hzi9NJvESOZnA4Qw5myP4zZDrDm8RIEuKRMo9y8rCg\nCnI8vyD2CqZSa68oUdPYj84a+MHZtIdcivcX5R8HJv4N6ZPeHVtz5Xdb3+IJ0jb1j+qI7704wfuW\naZ3CA3R2TDk7Ipsdk86OOZ0dM5sc83R2xLJKasFj+vN20HroXvdNICDNTrkgfXvvTAaa9eeTMEWO\nT5DDp8jBCbI3QaYJMgmR2CfQgGW4IAtTNCjw/YrIW6KS4kuKUBKfDeXVw3pxkxK8s/+Jdnr2VSP9\nWNQ38a/JUN/evVzVUnU+A5xFfNo+/gsx8mJSS//GfSQ6RE+OKU9eIH/2AunJC8xPXsuz5AWeRi+Q\nlhNIqEXvy92If6UHWu6YTt9HnPLZbfLL86TLi9PLcIEcfRM53EP2p3j7MbIXIhMfLxGiSigjKIOS\nKljiefWovu/NiZkRkJEgTBAS6ORydl68KP35Ff1xaG/i34oh8ZUe4ZuyiqC+TxWEEMVUyQSZ7FHu\nHSD7ByzjI9LykLQ4JM0PWKYHpOEeqT8l9aakmnQu4cnlS3qt7B71NTJ33n3j1mWofheSXpwWIZaM\nUHJCKQgo8CnxqBAqEmj+mOYMInXjPaAgYEnIkgmcpcQpT7j4DF7VUzbxjZV0+/lDl/bolBWhqAK0\nitBiAsUemh+i2TG6PCbVQ04WB8zmCfNZQPpMyU9yyqcL9JsnUKQQi9O8l4v5WcRv7ohRdaK9biji\ny2Xx23kVdXTPFDI3r8saZhTMySVn6Slz3ycIE7xoH2JIlh5epnh5iV/keEWKV4V4Vd1/h/NznPvQ\nbc75fXzu7Tpd+cfxiI6Jfyu6N+6sOhm0qAqlBhRlRFkmlMUeZX5AmR1TLl9gUR0wW0x4dppw2oif\nneQUT+dUrypkQS15JM2AnkDoTHs4smt/+T65MJTvlh3xc61NzPS8nNdljQtKWZJ7GamvBKGPH8UQ\nQ5UEpJlHmJUEeU5QLAnLOUEVEaiPNHc29onfyt+9UbfqzLOIbwzSjeZ9Eb/vcwCKR1H55FVEVk7I\n8z2y/JA8OyZbvkBa7jNfBJzOQ+anAekMspOc8qmi38wh85vLd43wQScXasFRR3Yn3TsD1/HaUT6l\nlrxwkjOtSUXpleR+yTJQvCiAGMokoJgkJJlPlOXEeUpULCjLhLgMEfUJOhG/lbqV3h1f7N6hb019\n40qsat6vaupXTcTPqoi0nJAWeyzzA9LsiDR7LWkxJV1AegrpTM+a+sWrGfoqkDaS+00eeOdlv5HO\nlZ7KKW9A/u61PLzL4peN6KVCWTllpZpA6QtZIHiRQOxTJQHFRMhSIckDJtmSPF8wKU7RMsGrIvwq\nQHua+gUXr7wI/eKP6xEdE/9OGDoJ9Db1EQoNyMqYtEiYF3vM80Pm2THz5QukMiWb53Wa5eTPCrKn\nOeXTHH01h4XW/WbfO8/dsnSEv5RvoK3vCl8/fcTZNT5tJK+q87xqTgCVolOPMgjJoxDiqJZ+GpIt\nIsI0ZFIE5NmcMp+h+RQpY/wqJFT/7CEm92JGK7/7v7Cn8U38W9EVvE/8LqpCWZ1H/Hmxx7P8gFl2\nzLPlCyyZUCwWlKdzilOlfJZTnA3uzWFegtfI5DUyed75PKG+8b1t7J6VXfnvc6e4Q/dN/dpp8Zrx\nhsq5Ub/NFbRClwFFNG369CHF1Mc/TfD3JwTplGUZUmanaH6CFFOCIiEs62cY+iK+G+lp8u4Pb43v\n93dM/BvR15S/arNf8SjUb8RPOC32eJYfcpId83T5WpYaUy18dK7oLEefKXqSUz2do6+ewGnOeRT1\nQPzzaXEffC0vngAuPMh+n7jiN08PufJDUy+nfk6uWUTZDOTJVPH2fGQ/Rub7SHpIUkVodoLk+wTF\nlLBMiKuQsgrOIn63j9/S/uVtK6DsKZv4xpUYEpyeaWgOSvUo1SevwmaQLyYtJyyKKUuNIF9CvoDM\nqy9zLUtIc1gsYZFx+Yl398l36L9Kvanhq+6F+u5T+W39Bq6mB4qmObosYamUmVdfySgiKBJQJSkT\nsiomr0IKDSjVp0Iu/GXuCUC4eBIYivYF1tQ3NsFQ36DvskDvyt3k3juoA9Objvjd6b66DPyht9o/\n/Ztx5/VtzsQ3NsOqQYJu+dJKbrlPLHqmN3nPbp/8rvR9+g1s7lr7Z/U5Ykj6oXGZh4iJvw2GjrJr\nH4VDw4vrIv990ko+JH/bCF9x7ePO9s/l1YbyazYinntM/G2zLqJdecW+x4Q2LT2sbua3de19fKmf\nG++f4SjvLutu1pr6xmZYEfiG3ehr5nc/vKt9/LYerfztOtdo6vctc2b1faQ7r7vMmvrGZugLQauO\nwrXyuyeAXe/jd3+tYKCTfqv9c/3NXWEzDwYTf9t0I9raMa++w7fb1N/1Pv4a6bubu9b+Wb/VVdKP\npanf7RQa22YsIeem2P65Eyzibxt18m5yl19aoW8l93aVzq26G71zr82rzvwb/CTQtffP+q12V1+x\nqQeLib8t+o6+oYN7cAPuym2/uXvTalf+TfXx+6Tv1veK9t5o/wxvbmjzAzV5kJj422bdwdw7f0j6\nVq6hSL8J8d16wOWTgFu/Kyh3zf0ztLg7r7vsBueS55q1fXwReb+IvCIif+bMe42IfExEviAivyci\nR/dbzQfOjSN+t5nf90BOd/q+07rvH6rHXe+f/gjfPc2MMdrD1Qb3fhX4/s68nwJ+X1W/A/gD4Kfv\numIPnr6D99pN2ZvIt6m0qh5X+EPvZP+cr9a3yXWR/3lPq1jb1FfVT4rImzqz3w58V1P+APCY+mRg\nXIV1B3Pf8ksb6B6q7g0x66S7T9b18eGy/Fys1633T7/cfasMnRQeOjft47+oqq8AqOrXReTFO6zT\neLhKyFm5cl+kh93v43frMlCnW+2f/s2481adHB46dzW4t3KfPXbKj5pk9LDqaOzdw0PxasiUTXCV\nBmhXwWtumhX5Fbbc9+0PQfonTboKNxX/FRF5SVVfEZHXAX+36sMv3/BLDMO4Oo+4GFQ/seKzV71z\nr3sX5EeAH2rK7wY+fMXtGIaxA1zlct4Hgf8JfLuI/LWI/DDwc8A/F5EvAN/TTBuG8ZxwlVH9dw0s\n+t47rothGBvCHtIxjBFi4hvGCDHxDWOEmPiGMUJMfMMYISa+YYwQE98wRoiJbxgjxMQ3jBFi4hvG\nCDHxDWOEmPiGMUJMfMMYISa+YYwQE98wRoiJbxgjxMQ3jBFi4hvGCDHxDWOEmPiGMUJMfMMYISa+\nYYwQE98wRoiJbxgjxMQ3jBFi4hvGCDHxDWOEmPiGMUJMfMMYISa+YYwQE98wRsha8UXk/SLyioj8\nmTPvPSLyFRH50ya97X6raRjGXXKViP+rwPf3zH+vqn5nkz56x/UyDOMeWSu+qn4S+GbPIrn76hiG\nsQlu08f/MRH5jIj8sogc3VmNDMO4d4IbrvdLwH9SVRWR/wy8F/h3Qx9+7JQfNckwjLvlSZOuwo3E\nV9VvOJPvA3531edfvsmXGIZxLR5xMah+YsVnr9rUF5w+vYi8zln2A8CfX3E7hmHsAGsjvoh8kDpo\nv1ZE/hp4D/DdIvJmoKJuXfzoPdbRMIw7Zq34qvquntm/eg91MQxjQ9ide4YxQkx8wxghJr5hjBAT\n3zBGiIlvGCPExDeMEWLiG8YIMfENY4SY+IYxQkx8wxghJr5hjJCbPo9v3BeyJh/8sPRM9y27b2RN\ngot1uWa9rrF/hrbc9+1j+zkpE3+brPLWzQdX7ia3AacD03qrKq+nrUebutN9dRn4Q2+1f/o3487r\n29x9751dwcTfNkMBsa98aSW33CcWPdObEH+V/K70Q62Ans1da/+sPkcMSb/JdtG2MfG3wdBRdu2j\ncKgpvS7y3yet5EPyKxel7/lD72z/XF5tKB9bk9/E3zbrItqVV3QjfsumpYfVzfy2rhVXtvfG+2c4\nyrvLupu1pr6xGVYEvmE3+pr53Q/vah+/rUcrf7vONZr6fcucWX0f6c7rLrOmvrEZ+kLQqqNwrfzu\nCWDX+/gVF+Uf6KTfav9cf3NX2MyDwcTfNt2ItnbMq+/w7Tb1d72Pv0b67uautX/Wb3WV9GNp6tsN\nPLvGWELOTbH9cydYxN826uTd5C6/tELfSm0UrZykPdP3iRs/q858tz7dP3SAa++f9Vvtrr5iUw8W\nE39b9B19Qwf34Abcldt+szvdJ/+m+vh90nfre0V7b7R/hjc3tPmBmjxITPxts+5g7p0/JH0r11Ck\n34T4bj3g8knArd8VlLvm/hla3J3XXXaDc8lzjYm/C9w44vc182F1M/++D+1V0rfDZ9cM3TeM+EMR\n3l02xmgPJv726Dt4r92UHVph1/v4V/hD72T/nK+2Lh+b/Cb+Nlh3MK8KVZdm9kX8oWb+LvTxYW1T\n/9b7Z1jy7irW1Dc2z7rO5rWa+q3csPt9/G5dBup0q/3Tvxl33qqTw0PHxL8lfcdmd5mLAJ4ovpQE\nXkEgOZG3JPZSEm+BSEUVZGhQoGGFhqCxh8YBmsRQNjfCSHNjjPgXp4Fz2Usuyr+piO/euON3ppv6\naVM/rZzpCuIIiQMk8pAIJFQkLJEgR/wlsaRE/pLQywi8nEAKfKnw0LW3Nrn3LvoD5bHIb+LfgD7B\n+4JStwwgKL4URF5G4i8owlOq6BlEr+LFByxJKKZzyr2Ucr+gOBDKRUixmFKmoFEJXiO6J03unefA\nmeTqyK4bFl+8TrlJSl0XraBqctWzsuwF+MdT/KMI/8DD3y8Ipin+xMNPKpLylIPoKXvhjEkwJ25O\nAr4UIHpJ9sBJYVPD0kk+UDhlE99Yyaqu56qWqEhF4LXip1TBKYTP8KNXCeMpqUzJJjn5NCfbL8nm\nQpaGkEKVBWiitfC+5+Qe+NKcAKCWvmlOqyv+JmJao14r/lnLpNFRqSUvG9kvlBWZevhHIdFhSHgg\nhPsl4d6ScFIRJhmTfMY0OmEvnDEN5sR+Sujn+F6JNH9bK77fpFb6sFlWcln+ttztlDxUTPw74Fri\nNxE/9DMm/gIJTvHDE8JoQhwnpN6SdKKke0o6B+8AWEZUyxDJFRKBQGrRg0Z4d1pwZNdOeUPii5yL\nflZuTgIVUDaylwqFUy4VmUBwLISHQnwgxHslyTQlnmbEyZzEmzGJTkjCZ0yCOUmQNhG/Fr/bxHfF\nj+gXvxXexHcQkTcAvwa8RL1f3qeq/0VEXgP8V+BNwBPgHar69B7rulOsa953P9fiiRJISeRlSJDi\nBacE4TPiKGESR6T+kvkkIJwGePsBLAOqLKDIfaQIIPNr0UNxcs6nPc4ld2U/K9830pFdGhObcgUU\nWqdcz8tNkqTCP64ID0uSg5LJfslkr2Q6KZkkJYk8I4qeEoczojbie03El/rvc0cXuhHfo194dzRk\nDFwl4hfAT6jqZ0RkH/gTEfkY8MPA76vqL4jITwI/DfzUPdZ1Z7jJpaG2LFT4XkHkLfH9BUFwShzG\nlFFIGXssgoxwMsGbJrBMGulDlkWClAlkAUSN8JE0oaydxrlr15W/ma42IL4reVf6Ntzm1NKfpfNp\nLy7wj5aER0vig4rJfsn+NGVvsmQ/WRJzQhidEIQzwnBO4PTxu039bh+/3T19Ub6dZ338BlX9OvD1\npjwTkc8BbwDeDnxX87EPAI8ZifgtQ6IPRX8AEa1Hov0M9RdoOEPDEI18NIYkLPCnBSzrPn2eCcsi\nxC8nSHUARVSLHuPkQNyI79OM4TnCqzNvE0jT8jgT35lXAhmQaSevyxJm+MenRIcV8UHGdL9gb2/J\n4eSUw2RGrCd40VP8cIYXzPH8FN/P8aSO+N1mfl/Eb/v03WsfJv4AIvIIeDPwR8BLqvoK1CcHEXnx\nzmu3w6y7rDwkv6B4XoHnZYifIsEpXujXl67ikklUwgTKZUCeJywLYVGFBNUUj0MoEkiohU8a8c+m\nufycjlJH+lUDD3eJa14rvvs4fgEsu0nPyhKm+EcV4eGS5ECY7JXsT5ccTmYcJa+SVE8hOoFwBsEc\n8VPwMvDOtXUjflf89rzYvdjZlk38Dk0z/3eAH28if99VrV4eO+VHTXoIuC6tuy+t/byo4pUlXpHj\n50u8ZYCf+ngLwTutoIDJwiddBiyyiKSIScqYWCfELNF25N6VqZu3FfKcvFvJ+8KtizO43/vbHB5o\nZzqRJVNJmcqCPTnlQGYcyAmHcsIxT4nkKSUzKllQklNK2YjrUxI19y9Kc01fmmqc/9xGK/7lOxz0\nuRf/Lyj5C0pnTjH42SuJLyIBtfS/rqofbma/IiIvqeorIvI64O+G1n/5Kl/ynDB0GW+V+BdOAJVC\nVsG8QE8y9P8FVEkzYAdo5CEzH38G0awimWVMZyn5sznV7BlJlTjN+568L+IPNUvuA2dM78JVPedO\nXl1y1rzXTj4JU454yrGccOQ95Sg44Th8ylH0lKPkhGA5I8tTlnmOFkpe+iyrmKyqWOIhlCR4zBFi\nPBK8Jq+nfeRM8nPZz6efZ/H/Hud9b4Df5kuDn71qxP8V4C9V9RedeR8Bfgj4eeDdwId71nuwdKV3\nb1Rt5/VdOddK0axC5wV6klMly/oyHEChaKjIHPx5SXiak8xT8vmCcj6D06dkVVxLHnF+jcrNXfGH\n0n3SHdDvTFOB5nUic8pNnsRLjmXGsTfjOHjGcTjjKHrGcTLjKJ3hZQvmWUGVF+SFUpU+WRUxV49T\njVCUCJ8In7jJ3bLXiF/Lrs3/6uL0w+EW4ovIW4EfBD4rIp+mPnR+hlr43xKRfwt8GXjHndT1OUA5\nf8DUlb77iExvP79SyMpG/AwCqU8YRYWmJVVQImmJn+ZEiyVJOqdczCDdw1vsUWh4sdMadHLpfOkm\npW8QGUhNnTQHLZzkTCdJzrF3ylEw5ziccxTNOUrmHE3mHE3nsMzQTMkLZVEqZemTVbX0JygFHiEB\nEQHhWQrPyh7SaK5nwivVWfn5buxfnauM6v8h57czd/neu63O84N7eLTSu+IP+tZEfOYFVeDV948X\nSpWWyKxAgwJZ5gTLJVE2p1o+Q7MJ3jIhyCYUVVD/19pRK7fs91Sir3yPnI3nda7mea74JVRFnWtZ\nC1815WRScOSnHIcpR1HKUZxyPEk5mi45SlOqvCTPfRa5j1d4VKXPsvKZq8cJPhlBR/voQi54jvJV\np2ziG2u4NGjHeueA+iyRlTCvrzpXRYWkJTLL4dUM9ZdInuLnc8IiRvMIL48I84i4iCjVv/jsi98p\ndyN+X36PnEk/kKON5JWTV83JoIJkWnIc5hzFGcdxxvEk52iacbSXcbzMyXNYZDFhHiFF3ET8iHkV\nc6IRi7NGfew08OvcI0aa9ple6OmrM23iGwO4TX237Irv5hfKbcSnqO9WS0t0ViCRB5FH5flIGeCX\nAVEZ4JU+YVWXyzKgUukfyXdG0vu/eGD6jmkv159VyZ1uxdezW/Nr8Z3pZFlxHJUcxyVHScHRtORo\nr+B4UXKUlmSlzyyviHIPr4jqPn4ZM9cpJ0w5ZYKQNMN6SSP7+XQb8c+H9sqz6ed/eO/qmPg3pM+t\nrvi9NKP62krv1e1gaXIVQVQIVPDVI1BBVVD16rzdjvTk0vmuLRzD3St2PrXwFx7K1eaSWpNXTp7k\ncJwox5OK4z3leF85nitHC+VoWZFWMZPMIywipGj7+DFz3eNEDzlhD2ECTJAmcSGvb9/R3nv3xnPT\nrol/h1zJM+X8oZSBdV2HhwZXdpVe8emI76Tu9fQ4gCSFZNmkrD4ZJAUkJWglhFWBX1WIgqpQqE+m\nISkxKQk0kp+nqVN279vre1THxDeM7SFO6r6Mx10GPa0d97TSPhzQjn66D+GO9/k8E9/YPbpCu/Ir\nl+XvdnEu3ElRNCnn4p36Q8n6+IaxPbpit/JXXI787joXbqtqZXbFLzDxTXxj1+ncy382r+/EcIYr\nfsHFvoJwWXb3ZGDiG8Z26JO6r78/2Mzvi/hu/2Eo6heY+IaxDfr6990+vtvUd9c5w71OUPR8YCja\n2+CeYWyfoT7+tZr6ffdTdoV3yya+YWyHvkG7PsEHm/pt3p4AhPMTAQwP7I2nqe+t/4hhPO/0XfDv\nlt384WMR33igrJJ6SPreJsSDxMQ3RsDQSWBV9H/YWFPfeMAMDRTAmKUHi/jGg6Mrb1/zfVWffxzy\nm/jGSFh1SWB8Ud+a+sYDZF3kHrf0YOIbxigx8Y0HyLofzdzSL5HuENbHN0bCpTccMGb5TXzjgdH3\n66JDvzjaJ7+JbxjPOUMR3l02vmgPJr4xCta9aGB88pv4xgNl1dtE+kS3pr5hPDCuI/84sMt5xgNm\nSOShvv54MPENY4SY+IYxQtaKLyJvEJE/EJG/EJHPish/aOa/R0S+IiJ/2qS33X91DcO4C64yuFcA\nP6GqnxGRfeBPROTjzbL3qup77696hmHcB2vFV9WvA19vyjMR+Rzw+mbxeB5nMowHxLX6+CLyCHgz\n8L+aWT8mIp8RkV8WkaM7rpthGPfElcVvmvm/A/y4qs6AXwL+oaq+mbpFYE1+w3hOuNINPCISUEv/\n66r6YQBGHa1NAAADlUlEQVRV/YbzkfcBvzu0/mOn/KhJhmHcNU+atJ6r3rn3K8BfquovtjNE5HVN\n/x/gB4A/H1r55St+iWEYt+ERF8PqJwY/uVZ8EXkr8IPAZ0Xk09S3OP0M8C4ReTP1K0qeAD960+oa\nhrFZrjKq/4eA37Poo3dfHcMwNoHduWcYI8TEN4wRYuIbxggx8Q1jhJj4hjFCTHzDGCEmvmGMEBPf\nMEaIiW8YI8TEN4wRYuIbxggx8Q1jhGxc/Ceb/sJr8mTbFVjDk21XYA1f2nYFVvKFbVdgDU829k0m\nfocn267AGp5suwJreLLtCqzki9uuwBqebOybrKlvGCPExDeMESKq9/vOMBEZ10vJDGOHUNXen8C/\nd/ENw9g9rKlvGCPExDeMEbIx8UXkbSLyeRH5ooj85Ka+96qIyBMR+d8i8mkR+eMdqM/7ReQVEfkz\nZ95rRORjIvIFEfm9bb69aKB+O/Mi1Z6Xvf7HZv5O7MNtv4x2I318EfGoL6J+D/C3wKeAd6rq5+/9\ny6+IiPwf4J+o6je3XRcAEflnwAz4NVX9x828nwf+r6r+QnPyfI2q/tQO1e89wLNdeJGqiLwOeJ37\nslfg7cAPswP7cEX9/jUb2IebivhvAf5KVb+sqjnwm9R/5C4h7FDXR1U/CXRPQm8HPtCUPwD8q41W\nymGgfrAjL1JV1a+r6mea8gz4HPAGdmQfDtRvYy+j3dSB/nrgb5zpr3D+R+4KCnxcRD4lIj+y7coM\n8KKqvgJnbzF+ccv16WPnXqTqvOz1j4CXdm0fbuNltDsT4XaAt6rqdwL/Avj3TVN219m1a7E79yLV\nnpe9dvfZVvfhtl5Guynxvwq80Zl+QzNvZ1DVrzX5N4APUXdPdo1XROQlOOsj/t2W63MBVf2Gng8a\nvQ/4p9usT9/LXtmhfTj0MtpN7MNNif8p4NtE5E0iEgHvBD6yoe9ei4hMmzMvIrIHfB8rXgK6QYSL\n/b2PAD/UlN8NfLi7woa5UL9GpJaVL1LdEJde9spu7cPel9E6y+9tH27szr3mssQvUp9s3q+qP7eR\nL74CIvKt1FFeqd8n+Bvbrp+IfJD6RcOvBV4B3gP8N+C3gX8AfBl4h6q+ukP1+27qvurZi1Tb/vQW\n6vdW4H8An6X+v7Yve/1j4LfY8j5cUb93sYF9aLfsGsYIscE9wxghJr5hjBAT3zBGiIlvGCPExDeM\nEWLiG8YIMfENY4SY+IYxQv4/hPAw1gVAujgAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11056ed68>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\nN0jAa7qaAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x116ba07b8>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\nAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x116be5f98>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n1zuDgkv9SwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x116c404a8>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x116c7fb00>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAP4AAAD8CAYAAABXXhlaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAACt9JREFUeJzt3U+InIUZx/HfT5dSVAhBTFJMdVpKLRQkWBooKXRFq6GX\niAdr40FtEQ9aBS/+uQShB+1B8NKLRklFESvYxItGCZsSizVUU6Pmj9BONJqsaUlLc9P69DBvdHYz\ns+9k5/0nz/cDQ2beeXfeJ2O++77v7OLriBCAXM5pewAAzSN8ICHCBxIifCAhwgcSInwgoanCt73R\n9kHbh23fW9VQAOrl5f4c3/Y5kg5LukrSx5L2SroxIg4uWo9fFABaEhEetXxmitdcL+n9iDgiSbaf\nlbRJ0sEzV90ydH9O0uwUm63bnJhvGnPq7nxz6u5sUvXzPTj2mWkO9S+W9OHQ46PFMgAdx4d7QELT\nHOp/JOmSocdri2UjzA3d//oUm2xCr+0BSvTaHqBEr+0BltBre4ASvSm/vl/cyk3z4d65kg5p8OHe\nMUlvSPpFRBxYtF4sPMcH0IwHq/9wLyL+Z/tOSTs1OGXYujh6AN00zaG+IuIlSZdVNAuAhvDhHpAQ\n4QMJET6QEOEDCRE+kBDhAwkRPpAQ4QMJET6QEOEDCRE+kBDhAwkRPpAQ4QMJET6QEOEDCRE+kBDh\nAwkRPpAQ4QMJET6QEOEDCRE+kBDhAwkRPpAQ4QMJET6QEOEDCRE+kBDhAwkRPpDQzDRfbLsv6T+S\nPpf0aUSsr2IoAPWaKnwNgp+NiJNVDAOgGdMe6ruC1wDQsGmjDUmv2N5r+7YqBgJQv2kP9TdExDHb\nF2nwDeBAROw5c7W5ofu94gagWv3iVm6q8CPiWPHnCdsvSFovaUT4s9NsBsBEelq4U909ds1lH+rb\nPs/2BcX98yVdI+md5b4egOZMs8dfLekF21G8ztMRsbOasQDUadnhR8Q/JK2rcBYADeFHcUBChA8k\nRPhAQoQPJET4QEKEDyRE+EBChA8kRPhAQoQPJET4QEKEDyRE+EBChA8kRPhAQoQPJET4QEKEDyRE\n+EBChA8kRPhAQoQPJET4QEKEDyRE+EBChA8kRPhAQoQPJET4QEKEDyRE+EBCpeHb3mp73vbbQ8tW\n2t5p+5Dtl22vqHdMAFWaZI//pKRrFy27T9KrEXGZpF2S7q96MAD1KQ0/IvZIOrlo8SZJ24r72yRd\nV/FcAGq03HP8VRExL0kRcVzSqupGAlC3mYpeJ5Z+em7ofq+4AahWv7iVW27487ZXR8S87TWSPll6\n9dllbgbA5HpauFPdPXbNSQ/1XdxO2yHpluL+zZK2TzoagPZN8uO8ZyT9WdJ3bX9g+1ZJD0n6qe1D\nkq4qHgP4iig91I+IzWOeurriWQA0hN/cAxIifCAhwgcSInwgIcIHEiJ8ICHCBxIifCAhwgcSInwg\nIcIHEiJ8ICHCBxIifCAhwgcSInwgIcIHEiJ8ICHCBxIifCAhwgcSInwgIcIHEiJ8ICHCBxIifCAh\nwgcSInwgIcIHEiJ8ICHCBxIqDd/2Vtvztt8eWrbF9lHbbxa3jfWOCaBKk+zxn5R07Yjlj0TEFcXt\npYrnAlCj0vAjYo+kkyOecvXjAGjCNOf4d9reZ/tx2ysqmwhA7RwR5SvZl0p6MSIuLx5fJOmfERG2\nfyPpGxHxqzFfG9JPhpb0ihuAavWL22m7FREjj8xnlvPyEXFi6OFjkl5c+itml7MZAGelp4U71d1j\n15z0UN8aOqe3vWboueslvTPxbABaV7rHt/2MBrvsC21/IGmLpCttr5P0uQbHFrfXOCOAipWGHxGb\nRyx+soZZADSE39wDEiJ8ICHCBxIifCAhwgcSInwgIcIHEiJ8ICHCBxIifCAhwgcSInwgIcIHEiJ8\nICHCBxIifCAhwgcSInwgIcIHEiJ8ICHCBxIifCAhwgcSInwgIcIHEiJ8ICHCBxIifCAhwgcSInwg\nIcIHEioN3/Za27tsv2t7v+27iuUrbe+0fcj2y7ZX1D8ugCpMssf/TNI9EfF9ST+SdIft70m6T9Kr\nEXGZpF2S7q9vTABVKg0/Io5HxL7i/ilJByStlbRJ0rZitW2SrqtrSADVOqtzfNs9SeskvS5pdUTM\nS4NvDpJWVT0cgHrMTLqi7QskPS/p7og4ZTsWrbL48ZC5ofu94gagWv3iVm6i8G3PaBD9UxGxvVg8\nb3t1RMzbXiPpk/GvMDvRMACm0dPCnerusWtOeqj/hKT3IuLRoWU7JN1S3L9Z0vbFXwSgm0r3+LY3\nSLpJ0n7bb2lwSP+ApIclPWf7l5KOSLqhzkEBVKc0/Ih4TdK5Y56+utpxADSB39wDEiJ8ICHCBxIi\nfCAhwgcSInwgIcIHEiJ8ICHCBxIifCAhwgcSInwgIcIHEiJ8ICHCBxIifCAhwgcSInwgIcIHEiJ8\nICHCBxIifCAhwgcSInwgIcIHEiJ8ICHCBxIifCAhwgcSInwgodLwba+1vcv2u7b32/51sXyL7aO2\n3yxuG+sfF0AVZiZY5zNJ90TEPtsXSPqr7VeK5x6JiEfqGw9AHUrDj4jjko4X90/ZPiDp4uJp1zgb\ngJqc1Tm+7Z6kdZL+Uiy60/Y+24/bXlHxbABqMnH4xWH+85LujohTkn4n6dsRsU6DIwIO+YGviEnO\n8WV7RoPon4qI7ZIUESeGVnlM0ovjX2Fu6H6vuAGoVr+4lZsofElPSHovIh49vcD2muL8X5Kul/TO\n+C+fnXAzAJavp4U71d1j1ywN3/YGSTdJ2m/7LUkh6QFJm22vk/S5Bt9mbl/uuACaNcmn+q9JOnfE\nUy9VPw6AJvCbe0BChA8kRPhAQoQPJET4QEKEDyRE+EBChA8kRPhAQoQPJET4QEKEDyTUQvj95jd5\nVvptD1Ci3/YAJfptD7CEftsDlOg3tiXCP0O/7QFK9NseoES/7QGW0G97gBL9xrbEoT6QEOEDCTki\n6t2AXe8GAIwVESP/F/i1hw+gezjUBxIifCChxsK3vdH2QduHbd/b1HYnZbtv+2+237L9Rgfm2Wp7\n3vbbQ8tW2t5p+5Dtl9u8etGY+TpzIdURF3u9q1jeifew7YvRNnKOb/scSYclXSXpY0l7Jd0YEQdr\n3/iEbP9d0g8i4mTbs0iS7R9LOiXp9xFxebHsYUn/iojfFt88V0bEfR2ab4uk/3bhQqq210haM3yx\nV0mbJN2qDryHS8z3czXwHja1x18v6f2IOBIRn0p6VoO/ZJdYHTr1iYg9khZ/E9okaVtxf5uk6xod\nasiY+aSOXEg1Io5HxL7i/ilJByStVUfewzHzNXYx2qb+oV8s6cOhx0f15V+yK0LSK7b32r6t7WHG\nWBUR89IXVzFe1fI8o3TuQqpDF3t9XdLqrr2HbVyMtjN7uA7YEBFXSPqZpDuKQ9mu69rPYjt3IdUR\nF3td/J61+h62dTHapsL/SNIlQ4/XFss6IyKOFX+ekPSCBqcnXTNve7X0xTniJy3Ps0BEnIgvPzR6\nTNIP25xn1MVe1aH3cNzFaJt4D5sKf6+k79i+1PbXJN0oaUdD2y5l+7ziO69sny/pGi15EdDGWAvP\n93ZIuqW4f7Ok7Yu/oGEL5itCOq3kQqqNOONir+rWezjyYrRDz9f2Hjb2m3vFjyUe1eCbzdaIeKiR\nDU/A9rc02MuHBtcTfLrt+Ww/o8Flhi+UNC9pi6Q/SvqDpG9KOiLphoj4d4fmu1KDc9UvLqR6+ny6\nhfk2SPqTpP0a/Hc9fbHXNyQ9p5bfwyXm26wG3kN+ZRdIiA/3gIQIH0iI8IGECB9IiPCBhAgfSIjw\ngYQIH0jo/yCR0j+aoIHgAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x116cdb0f0>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x116d1c390>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"for pickle_file in train_datasets:\n",
" print(pickle_file)\n",
" data = pickle.load(open(pickle_file,'rb'))\n",
" plt.figure()\n",
" plt.imshow(data[12])\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "cYznx5jUwzoO"
},
"source": [
"---\n",
"Problem 3\n",
"---------\n",
"Another check: we expect the data to be balanced across classes. Verify that.\n",
"\n",
"---"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "LA7M7K22ynCt"
},
"source": [
"Merge and prune the training data as needed. Depending on your computer setup, you might not be able to fit it all in memory, and you can tune `train_size` as needed. The labels will be stored into a separate array of integers 0 through 9.\n",
"\n",
"Also create a validation dataset for hyperparameter tuning."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"cellView": "both",
"colab": {
"autoexec": {
"startup": false,
"wait_interval": 0
},
"output_extras": [
{
"item_id": 1
}
]
},
"colab_type": "code",
"collapsed": false,
"executionInfo": {
"elapsed": 411281,
"status": "ok",
"timestamp": 1444485897869,
"user": {
"color": "#1FA15D",
"displayName": "Vincent Vanhoucke",
"isAnonymous": false,
"isMe": true,
"permissionId": "05076109866853157986",
"photoUrl": "//lh6.googleusercontent.com/-cCJa7dTDcgQ/AAAAAAAAAAI/AAAAAAAACgw/r2EZ_8oYer4/s50-c-k-no/photo.jpg",
"sessionId": "2a0a5e044bb03b66",
"userId": "102167687554210253930"
},
"user_tz": 420
},
"id": "s3mWgZLpyuzq",
"outputId": "8af66da6-902d-4719-bedc-7c9fb7ae7948"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Training: (200000, 28, 28) (200000,)\n",
"Validation: (10000, 28, 28) (10000,)\n",
"Testing: (10000, 28, 28) (10000,)\n"
]
}
],
"source": [
"def make_arrays(nb_rows, img_size):\n",
" if nb_rows:\n",
" dataset = np.ndarray((nb_rows, img_size, img_size), dtype=np.float32)\n",
" labels = np.ndarray(nb_rows, dtype=np.int32)\n",
" else:\n",
" dataset, labels = None, None\n",
" return dataset, labels\n",
"\n",
"def merge_datasets(pickle_files, train_size, valid_size=0):\n",
" num_classes = len(pickle_files)\n",
" valid_dataset, valid_labels = make_arrays(valid_size, image_size)\n",
" train_dataset, train_labels = make_arrays(train_size, image_size)\n",
" vsize_per_class = valid_size // num_classes\n",
" tsize_per_class = train_size // num_classes\n",
" \n",
" start_v, start_t = 0, 0\n",
" end_v, end_t = vsize_per_class, tsize_per_class\n",
" end_l = vsize_per_class+tsize_per_class\n",
" for label, pickle_file in enumerate(pickle_files): \n",
" try:\n",
" with open(pickle_file, 'rb') as f:\n",
" letter_set = pickle.load(f)\n",
" # let's shuffle the letters to have random validation and training set\n",
" np.random.shuffle(letter_set)\n",
" if valid_dataset is not None:\n",
" valid_letter = letter_set[:vsize_per_class, :, :]\n",
" valid_dataset[start_v:end_v, :, :] = valid_letter\n",
" valid_labels[start_v:end_v] = label\n",
" start_v += vsize_per_class\n",
" end_v += vsize_per_class\n",
" \n",
" train_letter = letter_set[vsize_per_class:end_l, :, :]\n",
" train_dataset[start_t:end_t, :, :] = train_letter\n",
" train_labels[start_t:end_t] = label\n",
" start_t += tsize_per_class\n",
" end_t += tsize_per_class\n",
" except Exception as e:\n",
" print('Unable to process data from', pickle_file, ':', e)\n",
" raise\n",
" \n",
" return valid_dataset, valid_labels, train_dataset, train_labels\n",
" \n",
" \n",
"train_size = 200000\n",
"valid_size = 10000\n",
"test_size = 10000\n",
"\n",
"valid_dataset, valid_labels, train_dataset, train_labels = merge_datasets(\n",
" train_datasets, train_size, valid_size)\n",
"_, _, test_dataset, test_labels = merge_datasets(test_datasets, test_size)\n",
"\n",
"print('Training:', train_dataset.shape, train_labels.shape)\n",
"print('Validation:', valid_dataset.shape, valid_labels.shape)\n",
"print('Testing:', test_dataset.shape, test_labels.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "GPTCnjIcyuKN"
},
"source": [
"Next, we'll randomize the data. It's important to have the labels well shuffled for the training and test distributions to match."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"cellView": "both",
"colab": {
"autoexec": {
"startup": false,
"wait_interval": 0
}
},
"colab_type": "code",
"collapsed": true,
"id": "6WZ2l2tN2zOL"
},
"outputs": [],
"source": [
"def randomize(dataset, labels):\n",
" permutation = np.random.permutation(labels.shape[0])\n",
" shuffled_dataset = dataset[permutation,:,:]\n",
" shuffled_labels = labels[permutation]\n",
" return shuffled_dataset, shuffled_labels\n",
"train_dataset, train_labels = randomize(train_dataset, train_labels)\n",
"test_dataset, test_labels = randomize(test_dataset, test_labels)\n",
"valid_dataset, valid_labels = randomize(valid_dataset, valid_labels)"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "puDUTe6t6USl"
},
"source": [
"---\n",
"Problem 4\n",
"---------\n",
"Convince yourself that the data is still good after shuffling!\n",
"\n",
"---"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "tIQJaJuwg5Hw"
},
"source": [
"Finally, let's save the data for later reuse:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"cellView": "both",
"colab": {
"autoexec": {
"startup": false,
"wait_interval": 0
}
},
"colab_type": "code",
"collapsed": true,
"id": "QiR_rETzem6C"
},
"outputs": [],
"source": [
"pickle_file = 'notMNIST.pickle'\n",
"\n",
"try:\n",
" f = open(pickle_file, 'wb')\n",
" save = {\n",
" 'train_dataset': train_dataset,\n",
" 'train_labels': train_labels,\n",
" 'valid_dataset': valid_dataset,\n",
" 'valid_labels': valid_labels,\n",
" 'test_dataset': test_dataset,\n",
" 'test_labels': test_labels,\n",
" }\n",
" pickle.dump(save, f, pickle.HIGHEST_PROTOCOL)\n",
" f.close()\n",
"except Exception as e:\n",
" print('Unable to save data to', pickle_file, ':', e)\n",
" raise"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"cellView": "both",
"colab": {
"autoexec": {
"startup": false,
"wait_interval": 0
},
"output_extras": [
{
"item_id": 1
}
]
},
"colab_type": "code",
"collapsed": false,
"executionInfo": {
"elapsed": 413065,
"status": "ok",
"timestamp": 1444485899688,
"user": {
"color": "#1FA15D",
"displayName": "Vincent Vanhoucke",
"isAnonymous": false,
"isMe": true,
"permissionId": "05076109866853157986",
"photoUrl": "//lh6.googleusercontent.com/-cCJa7dTDcgQ/AAAAAAAAAAI/AAAAAAAACgw/r2EZ_8oYer4/s50-c-k-no/photo.jpg",
"sessionId": "2a0a5e044bb03b66",
"userId": "102167687554210253930"
},
"user_tz": 420
},
"id": "hQbLjrW_iT39",
"outputId": "b440efc6-5ee1-4cbc-d02d-93db44ebd956"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Compressed pickle size: 690800512\n"
]
}
],
"source": [
"import os\n",
"statinfo = os.stat(pickle_file)\n",
"print('Compressed pickle size:', statinfo.st_size)\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "gE_cRAQB33lk"
},
"source": [
"---\n",
"Problem 5\n",
"---------\n",
"\n",
"By construction, this dataset might contain a lot of overlapping samples, including training data that's also contained in the validation and test set! Overlap between training and test can skew the results if you expect to use your model in an environment where there is never an overlap, but are actually ok if you expect to see training samples recur when you use it.\n",
"Measure how much overlap there is between training, validation and test samples.\n",
"\n",
"Optional questions:\n",
"- What about near duplicates between datasets? (images that are almost identical)\n",
"- Create a sanitized validation and test set, and compare your accuracy on those in subsequent assignments.\n",
"---\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "L8oww1s4JMQx"
},
"source": [
"---\n",
"Problem 6\n",
"---------\n",
"\n",
"Let's get an idea of what an off-the-shelf classifier can give you on this data. It's always good to check that there is something to learn, and that it's a problem that is not so trivial that a canned solution solves it.\n",
"\n",
"Train a simple model on this data using 50, 100, 1000 and 5000 training samples. Hint: you can use the LogisticRegression model from sklearn.linear_model.\n",
"\n",
"Optional question: train an off-the-shelf model on all the data!\n",
"\n",
"---"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"KNN score: 0.864400\n",
"LogisticRegression score: 0.852600\n"
]
}
],
"source": [
"from sklearn import datasets, neighbors, linear_model\n",
"\n",
"knn = neighbors.KNeighborsClassifier()\n",
"logistic = linear_model.LogisticRegression()\n",
"\n",
"train_dataset_flatten = list()\n",
"for data in train_dataset:\n",
" train_dataset_flatten.append(data.flatten())\n",
"test_dataset_flatten = list()\n",
"for data in test_dataset:\n",
" test_dataset_flatten.append(data.flatten())\n",
"\n",
"toUse = 5000;\n",
"train_dataset_flatten = train_dataset_flatten[:toUse];\n",
"train_labels = train_labels.tolist()[:toUse]\n",
"test_dataset_flatten = test_dataset_flatten[:toUse];\n",
"test_labels = test_labels.tolist()[:toUse]\n",
"\n",
"print('KNN score: %f' % knn.fit(train_dataset_flatten, train_labels).score(test_dataset_flatten, test_labels))\n",
"print('LogisticRegression score: %f'\n",
" % logistic.fit(train_dataset_flatten, train_labels).score(test_dataset_flatten, test_labels))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"colab": {
"default_view": {},
"name": "1_notmnist.ipynb",
"provenance": [],
"version": "0.3.2",
"views": {}
},
"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.5.1"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment