Created
April 19, 2017 03:47
-
-
Save kkweon/32886e27f8740023eac36cbc4823d10e to your computer and use it in GitHub Desktop.
mnist.evaluation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"Using TensorFlow backend.\n" | |
] | |
} | |
], | |
"source": [ | |
"import numpy as np\n", | |
"from utils import load_mnist\n", | |
"from evaluation import load_models\n", | |
"\n", | |
"%load_ext autoreload\n", | |
"%autoreload 2" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Model loaded\n", | |
"Model loaded\n", | |
"Model loaded\n" | |
] | |
} | |
], | |
"source": [ | |
"models = load_models()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Extracting MNIST/train-images-idx3-ubyte.gz\n", | |
"Extracting MNIST/train-labels-idx1-ubyte.gz\n", | |
"Extracting MNIST/t10k-images-idx3-ubyte.gz\n", | |
"Extracting MNIST/t10k-labels-idx1-ubyte.gz\n" | |
] | |
} | |
], | |
"source": [ | |
"train, valid, test = load_mnist()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"(10000, 28, 28, 1) (10000, 10)\n" | |
] | |
} | |
], | |
"source": [ | |
"test_X = test[0]\n", | |
"test_y = test[1]\n", | |
"print(test_X.shape, test_y.shape)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Final Test Accuracy: 99.80000%\n" | |
] | |
} | |
], | |
"source": [ | |
"def evaluate_ensemble(X, y):\n", | |
" \"\"\"Runs multiple models and returns the accuracy\"\"\"\n", | |
" \n", | |
" def evaluate(X, y):\n", | |
" \"\"\"Returns an accuracy on single model\"\"\"\n", | |
" pred = np.argmax(X, 1)\n", | |
" true = np.argmax(y, 1)\n", | |
"\n", | |
" equal = (pred == true)\n", | |
"\n", | |
" return np.mean(equal)\n", | |
"\n", | |
" pred_list = []\n", | |
"\n", | |
" for idx, model in enumerate(models):\n", | |
" pred = model.predict(X)\n", | |
" pred_list.append(pred)\n", | |
"\n", | |
" pred_list = np.asarray(pred_list)\n", | |
" pred_mean = np.mean(pred_list, 0)\n", | |
"\n", | |
" return evaluate(pred_mean, y)\n", | |
"\n", | |
"\n", | |
"accuracy = evaluate_ensemble(test_X, test_y)\n", | |
"print(f\"Final Test Accuracy: {accuracy:>.5%}\")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"def pred(X, y):\n", | |
" \"\"\"Runs multiple models and returns the accuracy\"\"\"\n", | |
"\n", | |
" pred_list = []\n", | |
"\n", | |
" for idx, model in enumerate(models):\n", | |
" pred = model.predict(X)\n", | |
" pred_list.append(pred)\n", | |
"\n", | |
" pred_list = np.asarray(pred_list)\n", | |
" pred_mean = np.mean(pred_list, 0)\n", | |
"\n", | |
" return pred_mean\n", | |
"\n", | |
"\n", | |
"pred_X = pred(test_X, test_y)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"result = np.argmax(pred_X, 1) == np.argmax(test_y, 1)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"wrong_examples = test_X[result==False]\n", | |
"pred_labels = np.argmax(pred_X, 1)[result==False]\n", | |
"true_labels = np.argmax(test_y, 1)[result==False]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import matplotlib.pyplot as plt\n", | |
"%matplotlib inline" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"def imshow(img, pred_label, true_labels, ax):\n", | |
" img = img.reshape(28, 28)\n", | |
" ax.imshow(img, cmap='gray')\n", | |
" ax.set_title(f\"Pred: {pred_label} True: {true_labels}\")\n", | |
" ax.axis(\"off\")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": { | |
"scrolled": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\nyzvssEPaNpYvX+7lsP5C2czrA3Jp/vz5Xg7nj4SOP/74yLaOHTvWuB+33nprjdsAUgnn+QGlIHzv\neMYZZ3g51WLO4TypcMHe008/vdpjlDuuQAEAAABATAygAAAAACAmBlAAAAAAEFOtnAPVvHlzL190\n0UVezsV8p1R23nnnnLe51VZbeXn48OFeZg5U6Vu1alVkW3jvcIMGDby8ePHiGh/3rLPO8nK9erXy\ndIAc6dChg5dbtWqVcRup7rOvTufOnSPb6tevn1Eb7733XmTb+++/n1EbAFDJLr/88rTbXnnlFS9P\nmzbNy+FaU1J5z4viChQAAAAAxMQACgAAAABiYgAFAAAAADHVikkP4b35kydP9nI4J6pUpFq3Z/To\n0V4O101JNZ8GpW3NmjWRbYW4L3jcuHFeHjlyZGSfunXrVttGOBdr8ODBNe8YylI4xzOb82rjxo29\nHM79u+qqq7w8aNCgSBvOuYyOGa65tqltAIBNGzFihJcfeOABL48fPz7ymnJeK4orUAAAAAAQEwMo\nAAAAAIiJARQAAAAAxMQACgAAAABiskwn3NboYGZ5P1inTp0i2/74xz96uXv37vnuhswssi3d3/U7\n77zj5aOOOiqyz+eff16zjuWJcy76A1eAQtRsobRv397LV199tZdPOOGEyGvq1Kn+M5bPPvvMyy1b\ntsyuc0VAzebXjBkzvLzPPvvk/Bip6nPDhg0ZtbHffvtFtr3++utZ9ymfqNnyt2zZssi2Lbfc0st7\n7LGHl+fOnZvXPuVTpdasVLvqNhdSnZvD98UTJ070cviQiUKJU7dcgQIAAACAmBhAAQAAAEBMDKAA\nAAAAIKayX0i3c+fOXn7hhRci+2y11VaF6s6P4tyb/9///tfLN910k5dLdb4TylOzZs28HM4FfOml\nlyKvOeyww/LYI1Sy8N72fMy3jXNPPVBKUtVnIf6vAMV28803R7YNHDjQy/vvv3+1uZQW2uUKFAAA\nAADExAAKAAAAAGJiAAUAAAAAMZX9HKjw/shwPQUpN/cTP//8817+6KOPvNy/f38vx7k3/4477vDy\nuHHjatJFoFpr16718m233eblOXPmRF6Tbg7UsGHDatwvVKYbbrjByw8//HCRegIUT7j+Xv369SP7\nzJ8/38up1ooCyt1//vOfyLbweQHhWpInn3yyl5kDBQAAAABliAEUAAAAAMTEAAoAAAAAYir7OVDZ\nePrpp708a9YsL995552R1yxdutTL9er5f3XhHKhUwjkm48ePT/saIFemTp3q5X79+nk5Vd2nM3fu\n3Jp0CRVsypQpXj7yyCO9fMEFF6RtY6+99vLyzjvvXPOOBS699NLItp49e+b8OKidXnzxRS9vttlm\nkX2mTZvmZdaARG0RPi8gnBNVymuicQUKAAAAAGJiAAUAAAAAMTGAAgAAAICYGEABAAAAQExl/xCJ\nBx54wMvhgrepLFy40Mvff/992tdst912Xn7ppZeq3X/evHmRbcccc4yXwwdTAPm06667erlJkyYZ\nt/HYY495+fXXX8+4jebNm3u5YcOGXl6wYEHGbaL0rFy50ssvvPBCtTmVtm3bevm///1vzTsWaNq0\nac7bBDYK66uUJ8UDubT//vt7OdWD08L/D59++qmXJ02alPuO5QhXoAAAAAAgJgZQAAAAABATAygA\nAAAAiKns50B9++231eZcufDCC728yy67VLv/8OHDI9sWLVqU0z4BmQjn7YXz+uLYaaedvHzFFVd4\nOVwQUpIaNWrk5T333NPLffr08fJpp50WaWPGjBmZdBMV4rPPPsv7MTp16hTZtvfee3s5XGwdyKW/\n//3vxe4CUGPhnKeHHnrIy6nm/4UL6Ya//1999dUc9S73uAIFAAAAADExgAIAAACAmBhAAQAAAEBM\nZT8HKh9atWoV2davXz8vr1+/3stvvPGGl7mnGaXm0ksv9XK4hloc4dyQMC9btizymsWLF3t5woQJ\nXg7XA3r33Xcz7heQra233jrWNiAbZublVPNAwjnVU6dOzWufUFlOPfVUL4dzj1LNIR4xYkRGxwjn\nN0nSwIEDvZyu1sM1nqTymvMU4goUAAAAAMTEAAoAAAAAYmIABQAAAAAxMQdK0uabb+7l3/3ud5F9\ntt9+ey/Pnz/fywcccEDuOwbk0Jdffpn3Y7z22muRbY8++qiXw/WnLr/8ci8vX7489x0DgCJ45pln\nvNy1a9fIPs8++2yhuoMKNH36dC+H84pSzV8K50DXqeNfTwnXZwq/n2qfM88808tx5kCV05ynEFeg\nAAAAACAmBlAAAAAAEBMDKAAAAACIiQEUAAAAAMTEQyQk7bnnnl6+8MILI/t8++23Xu7WrVte+wTk\n2pIlS7z89NNPe/mHH36IvGbAgAFe/uyzz6o9xqxZsyLbRo0a5eU+ffp4uV49TkNILZyEHNboZptt\n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\nVpF9rrnmmhofp04d/7PsAQMGeHnUqFE1PgZQVf369b3co0cPL3fp0sXL4f+FfOnVq5eXx48f7+V1\n69YVpB+K7kXhAAAgAElEQVRxcAUKAAAAAGJiAAUAAAAAMTGAAgAAAICYzDlXuIOZFe5gNRDejyxJ\n3bp18/Kjjz7q5ZdfftnLxx13XKSNZcuW5aB3pck5Z8XuQz6US80ic9Qsyg01m18tW7b08owZM7zc\nvHnzjNv84IMPvNymTZvIPmb+P+uKFSu8fMYZZ3h58uTJGfejWCq1ZqXSqdtQ+B421fylK6+80sup\n6rIUjBw50suDBw+O7BP+f8nFuCZO3XIFCgAAAABiYgAFAAAAADExgAIAAACAmJgDlUL79u0j22bP\nnp1RG3379o1sGzduXNZ9KnWVep9zudQsMkfNlr5GjRp5+dprr/Xy7rvvHnlNuC7P9OnTvbx+/foc\n9a7wqNncatiwoZfDucwdOnTw8oYNGyJtjB071svPPfecl19//XUv77PPPpE2DjnkEC+///77Xp40\naZKXFy5cGGmjVFVqzUqle67dddddvTx37twi9aQwtt56ay9/9913NW6TOVAAAAAAkEMMoAAAAAAg\nJgZQAAAAABATAygAAAAAiKlesTtQio4//vi0+5x22mle3mOPPbz82GOP5bRPQK7tv//+afd59dVX\nq/3+tttu6+UjjjgibZuXXnqplz/77DMvDx8+PON+oDI0btzYy+GiiRdddFHaNn71q195+ayzzvLy\nvffem7aNtm3benmXXXbxcjiJ/6233krbJkpP/fr1vRw+NCL0ySefRLb95je/yeiY4cK6kvTQQw9l\n1AZQVb16/lv5k046qUg9KY7/9//+n5d/97vfFeS4XIECAAAAgJgYQAEAAABATAygAAAAACAmFtJV\ndLHGefPmRfb5/vvvvRzOH1m8eHHuO1ZGKnWxvFKt2Wwcd9xxXn7wwQfTvmbJkiVeNvP/mcM5BM2a\nNUvbZthGeA5avXp15DXPP/+8l7t37572OOlQs8XVoEGDyLYnn3zSy3Hm1KUzf/58L4fzmVLNe3nh\nhRe8vM0223h5xYoVXk5V92vWrMmon3FQs7kVzrn75ptvqt3/448/jmzbeeedc9qnSlOpNSuVzrn2\nwgsv9PJf/vKXnB/jiy++iGwbNWqUl48++mgvd+rUycvh+4V8qVOn5teGWEgXAAAAAHKIARQAAAAA\n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\nydxHH33k5ccff9zL4Zp7qdZRC4VrnG3YsCHL3uUfV6AAAAAAICYGUAAAAAAQEwMoAAAAAIjJspnD\nkPXBzAp3sCK7/fbbI9sGDBjg5SFDhnj5+uuvz2uf8sk5F52MUAFqU83GEa7Lc+yxx3o51fnk6aef\n9vLEiRNz37EsULOl7+WXX/bygQcemHEbK1as8HLHjh29PH/+/Mw7ViTUbOkL14AcNmyYl1u0aBF5\nTdOmTb2czfuycK2omTNnerlv375e/uSTTzI+RjYqtWal3NRtOI+zW7duXg7fJ0pS586da3rYiHCe\n3f3335/2NeH8vnI6l6YTp265AgUAAAAAMTGAAgAAAICYGEABAAAAQEwMoAAAAAAgJh4ikSdt27aN\nbJs+fbqXw0XIjjnmGC8vXrw49x3Lk0qdKFqbara2oWZLXy4eIhE688wzvVxOC1dSs+XvoIMOimxr\n3769l8P3Zf369fPyvvvuG2mjd+/eXg4X5y2WSq1ZqTB1W7du3ci2xo0be3ngwIFeXrJkiZdHjhyZ\n9jhhza1bty5uFysSD5EAAAAAgBxiAAUAAAAAMTGAAgAAAICYmANVQL///e+9fNxxx1X7/TfffDPv\nfcqVSr3PubbXbCWjZktfOPfjb3/7m5fr16+fto0ffvjBy0ceeaSX//Wvf2XXuSKgZlFuKrVmJeq2\nkjEHCgAAAAByiAEUAAAAAMTEAAoAAAAAYmIOFHKiUu9zpmYrFzVbfm6++WYvX3rppWlfc8stt3j5\nsssuy2mfComaRbmp1JqVqNtKxhwoAAAAAMghBlAAAAAAEBMDKAAAAACIiTlQyIlKvc+Zmq1c1CzK\nDTWLclOpNStRt5WMOVAAAAAAkEMMoAAAAAAgJgZQAAAAABATAygAAAAAiIkBFAAAAADExAAKAAAA\nAGJiAAUAAAAAMTGAAgAAAICYCrqQLgAAAACUM65AAQAAAEBMDKAAAAAAICYGUAAAAAAQEwMoAAAA\nAIiJARQAAAAAxMQACgAAAABiYgAFAAAAADExgJJkZjuZmTOzesXuCxAXdYtyQ82i3FCzKDfUbGGU\nzQDKzBaY2WozW2FmX5jZGDPbskh9GWdmi81smZnNM7NzNrHf4GR/V5jZ92a2vkp+pwj9rpf8T7Wy\nSj/uLHQ/apMSq9sLzex1M1tjZmOq2a+k6jbZp7pmNszMPjez5Wb2ppltVYy+VLoSq9ndzexFM/vO\nzD4ws+6b2K/karZK385Onnf7FbMflazEanYbM3s0+Xt2oZn12MR+JVeznGcLp8RqdkXwtd7Mbk+x\nXynW7N+T78M3mFmvQh67bAZQScc757aU1EnSPpKGhDtYQr5/rj9L2tk510hSN0lDzaxzuJNzbphz\nbstkn8+XNH1jds61S9H3Qn1a0K5KP84v0DFrs1Kp288kDZX0v9XtVKJ1e52kfSX9QlIjSf0k/VCA\n49ZWRa/ZZF09LulJSdtIOlfSODPbNdy3RGtWZratpCskzSnE8Wq5otds0kglzk3bSeopaZSZRWqw\nRGuW82xhlUTNVqm7LSX9VNJqSQ+n2K8Ua3Zmsi+zC3AsT7kNoCRJzrlPJU2W1F6SzOwlM7vOzKZJ\nWiVpZzNrnByZfm5mn5rZUDOrm9y/rpkNN7OvzexDScdmePz/OudWbYzJr59n+nPY/10RGmBmH0ia\na2ZtzMwF+02t+umlmZ1jZnPN7Fszm2xmLTM9NgqvBOp2knPuMUnf1OTnKHTdJt+EXiTpHOfcIpfw\nlnNuTU1+DqRX5JptK6mFpBHOufXOuRclTZPUO9Ofo4jn2hsk3SJpSaZ9RnaKWbNmtoWkkyVd5Zxb\n4ZybqsSHACVfs5xni6fY7w0CJ0v6UtLLmb6wGOdZ59xfk78bCl6nZTmASv7lHqPEyHOj3kp8QrmV\npIWSxkhaJ6mNpI6SukraeKtdf0nHJbfvI+mUoP1BZvZkmj7cYWarJM2V9Lmkp2vwI3VT4lOfPdPt\naGYnS7pc0gmSmkmaIemBKt+fbGaXpWnmFUvcgjjRzFpn321kohTqNscKVbcdlPhErKclbnV4z8zO\nq2nnkV4J1qwp+SYjSwU715rZAcnj3F2D/iJDRa7ZXSWtc87Nq7JttqTIp/MZ4Dxb4UrsPNtX0n3O\nOZd2z00r9Hva4nDOlcWXpAWSVkhaqkQx3SFp8+T3XpJ0TZV9t1NiNLp5lW1nSvpn8s8vSjq/yve6\nKnEVqV6Gfaor6SAlLrvWT7NvP0lTg231ksc9pMq2Nol/Fm+/qZL6Jf/8nKS+QRtrJO0Qo78m6WBJ\nP5G0taRRSpzc6xb737dSv0q0bodKGhNz31Ko2z7J4/1N0uaS9lbiKtrhxf73rcSvUqlZSfUlfajE\nLXD1k6/9QdKzaV5XCjVbT4k3Q/uG7fJV0TV7sKTFwbb+kl5K87pSqFnOswX8KpWaDfrUWtJ6ST+L\nsW/RazZo81VJvQr5b1huT+g40Tn3/Ca+t6jKn1sr8Qv3czPbuK1OlX1aBPsvzKYzzrn1kqZaYuLa\nBZL+kk07QV/SaS1ppJndVmXbBkk7Svq0uhe6RJVtvCz7g5ldLGmZEp+acY9+/pRU3eZQQepWiU9F\npcQvlNWSZpnZBCU+sftnBn1AfEWvWefcWjM7UdLtkv4g6XVJE1SzWzUKVbMXSXrNOfdahv1D9ope\ns0q8IW4UbGssaXkGbYQ4z1auUqjZqnorMSj6KMvXb1Somi2qchtAVafq5cZFSvySbeqcW5di388l\nVb3HslUNj11PWcyBqqJq31dKkpk1dP83z+qnVb6/SIn7q8fX4Hjhca3avZBPxazbmipU3b6V4ng1\nub0ANVOwmnXOvSXp0I3ZzF6RdG8mbYRNVvlzPmu2i6QDzKxbMm8jaU8z6+icuySL9lAzharZeZLq\nmdkuzrn3k9s6SKrJE8o4z9ZOxXhv0EeJh6TVVLHe0xZUWc6BSsc597mkKZJuNrNGZlbHzH5uZht/\nEU+QdLGZ7WhmW0saFLdtM2tuZmeY2ZbJiXtHKnEp9YUcdX9x8qtXsv1zlRihb3SnpCvNbPdkf5qY\n2Skp2knV9z3NrEOy3a0k3arEZeR51b8ShZDPupV+nODZQIlbT+uaWQPL3VNy8la3zrn3JE2XNMTM\nfmKJJ1qdpsTT2VBEBajZvZJ12jB5H/z2SswFyIW81aykXpL2UOI2qL2VuJ3vT8kvFFE+a9Y5t1LS\nJEnXmNkWZnaQEvNBxuao+5xna6F8n2elH+ds7qAUT9+roXyeZ5Ws1QZKXAion/x9UZCLAhU5gErq\no8Rcn3clfStpohK/fCVptKRnlZj/86YSJ7wfWeJZ95M30a5T4na9T5LtDpc00Dn3j1x0OnmbXX9J\ngyV9rcT9ozOqfP9hJZ7q9LCZLVPiU6Mjq/R9ipldsYnmt1PiP9oySfOV+M9y3CY+0UBx5KtupcRc\nvdVKnFx7Jf8ceWxqNvJct5J0erLNJZL+IWmQc+5fueg7aiyfNdtbiU9Xv1Tiqs6vXY6eCpbPmnXO\nLXXOLd74JWmtpO+cc9/lou+osXzW7AAl5hB9qcRk+AucczlZI4fzbK2Wz5qVEg+PmOScq8ntphEF\nqNkXlXgv8wsllmhZLenAXP4Mm2LJyVcAAAAAgDQq+QoUAAAAAOQUAygAAAAAiIkBFAAAAADExAAK\n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\njTWzlyR9I+n7ZraDmd1lZp+a2VIzu3pzo2BmzczsBjNbaWYfSDou3zGY2amSvpT0dEN/jnrd83lm\n9p6kRWb2QzNzwX4vmtngenmImS0ysy/S/0q0Z+Qpj5H0nHNujnPuO0nXSuogqUdDfwbEK3fdOuf+\nzzn3zeaY/vpBvj9HGeoWZVIBNTvTOfffkj5vzM9RATU7SNI059zahv8UiFHumg2cJOlvkl7I94Wl\nrlnn3Dzn3GTn3Crn3AZJ4yUdaGY75Dt25KcCavYKSVema2CTc25pekx5qYD32ZKqygYq/Yd7rKRX\n6m0+XdKvleqeP5Y0RdJ3kn4oqYukn0vafMvSUEl90tsPk9Q/OP5vzOx/spy/jaQrJQ1v/E8jKXU1\n4N8kHZxrRzM7SVKdpBMk7SppvqSp9b7/hJldmuf5D8pzfzRAues2vc9tZvaNpEWSPpX0eCN+pFLX\n7RxL3YI4w8z2bviwEasSarbASv5ea2atJfWTdHcDx4w8VFjNDpJ0j3PO5dxzy8r1+eBISUucc1/l\nPWLkpZw1m27CDpO0q5m9Z2ZLzOyPZrZdI36kpvHZwDlXFV+SPpK0RqmrPh9Luk3SdunvPadU97x5\n37aSvt38/fS20yQ9m/7vZySdU+97P1fqX+ObR45lgqTL0v/9O0n3RrxmsKQXg23N0+c9st62H6Z+\nLd5+L0oanP7vpyQNCo7xraQ9IsZwYPrP8EhJ2yj1rw6bJNWV+/dbq1+VVLf1XtdMqauO/ylp6xz7\nVkLdmqQj0jW7o6TbJb0mqVm5f7+1+FWhNXu1pCmR+5a9ZoNjninp3XL/Xmv5q0Jrdm9JGyV1iNi3\n0mp2L6Vunx1Q7t9trX5VSs1Kapfed6Gkf5G0i6SXJI3N8bqy16zK/Nmg2p7QcaJzbvYWvre43n/v\nLWlrSZ+a2eZtW9Xbp12w/8exAzCzQyQdpVSnXyiLc+/yD3tLutXMJtTbtklSe0lZL7k6594ws7OU\nKrK2Ss2HelvSkvyGizyVvW7rc85tlPSimf1K0rmSbm7IcVS6unX65y0w683sIqXmk+wn6a08xoB4\nFVWzBVSSmg0MUuq9FsVVaTV7ulIfMD9s4Os3K2nNmtluSs3Vm+CcS8zdQkFVQs1uvq34Fufcp5Jk\nZjcq9Q+sv83jOPU1ic8G1dZAZVP/EvlipTrYXVxqrk/oU0n177HcK4/z/FTSPpI+SRdyK0nNzOwA\n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\nbtZjTJ8+3cvz5s1L7BN+fsg1rnCtKSk51kKo1ZqVKqduS+H+++9PbAv/f7n77ru9fNlll3n5s88+\nK/zAiiSmbrkCBQAAAACRaKAAAAAAIBINFAAAAABEYh2oDMJ75CXp/PPPz/qaDz/80MuZ7i8O75/u\n06ePl2PmPIVzTsK1Hr777rucx0D1efbZZ738/PPPe/mYY44pyTi+/vprL99xxx1erpS5Imi6ttrK\n/3fBdu3aZd3/scceS2xbv359QceE6tStWzcvh2s+Scl5Q5deeqmXp02bVvBxhXNPpPznYhVjvhOq\nV4sWLbwcfqbo3bt3zmNMnTrVy9U056khuAIFAAAAAJFooAAAAAAgEg0UAAAAAESigQIAAACASCyk\nm8GBBx6Y2LZw4UIvDxs2zMvhYo3vvvtu4hgdOnTIaxyZFi775S9/mdcxSqVWF8ur1Jo9++yzvRw+\nXKRUXn75ZS/369cvsU+lTlamZmvTbrvt5uUVK1Z4OXzgz/777584xrffflv4gRUANds0hQ+veOml\nl3LuE77vjh8/PmsullqtWam667Zly5ZeDheNnjx5ct7HXLVqlZfD/mL27NmJ14QPXVm2bFne5y0G\nFtIFAAAAgAKigQIAAACASDRQAAAAABCJOVAZzJw5M7HtqKOO8nKbNm2yHmPgwIGJbffee2/W10yf\nPt3Lv//97xP7hHOxKkWt3udcqTW70047efm1115L7JNrAdFiCOdESdIvfvELLy9ZsqRUw8mKmq1N\n4QLljz76qJdvv/12L5933nlFH1OhULNN07hx47w8fPjwnK8JP09kWny3FGq1ZqXqrtuwPjLNX86X\nmf+rjukvws8u4YK94RzWUmEOFAAAAAAUEA0UAAAAAESigQIAAACASM3LPYBaccghh3j5lltuyfma\n8N7PU0891cubNm1q/MBQk8L1FjKtr3DSSSd5efvtt/fynDlzvLx69erEMbp27erlcO5V6NBDD01s\nGzJkiJd/97vfZT0G0BijR4/28po1a7x80003lXI4QE7dunXzcjjHacCAAXkfc8aMGY0aE6pXuMbT\nKaecktgnXPcp13yl+fPnJ7Y9/PDDXr7uuuu83KlTJy9PmTIlcYzws/PgwYO9fP3112cdVzlxBQoA\nAAAAItFAAQAAAEAkGigAAAAAiMQcqEitWrXy8tKlS7N+P9c6UZJ01VVXeZk5T2ioM888M7FtwoQJ\nXg7vi3799de9HM4VkaSDDjrIy+eff76Xw7Ujdtlll8QxRowY4eXPP//cyzHzBYFMOnbsmNgW3sv/\nwAMPePmdd94p6pjQtO25555eHjZsmJe7d++eeE2mbY01d+7cgh8TlSn8vFlXV+flUaNGJV6zfv16\nL7/wwgteDuczPfvss4ljbNy4Meu43nvvPS9/+OGHiX06d+7s5fbt22c9ZiXhChQAAAAARKKBAgAA\nAIBINFAAAAAAEIkGCgAAAAAiWa7Fswp6MrPSnawRMi30efbZZ3u5IRPd7rnnHi9fcMEFXv7666/z\nPmalcM5ZucdQDNVSs+XSq1cvL993332JfXbeeWcvL1u2zMvhpOtSoWZrU7jIdPiAlXDxx2pCzVae\ncBHcadOmeblc72+hxYsXe/nkk09O7DNv3ryCn7dWa1YqTd2Gf39K0rnnnps177777jmP++c//9nL\nAwcObMDosgsfKrVixYqcrzniiCO8PGfOnIKOKVZM3XIFCgAAAAAi0UABAAAAQCQaKAAAAACIxByo\nSOGCjeEcqHA+0wknnJA4RpcuXbz86quvFmh05Ver9zlXc82WQ7hoqST179/fy8yBKq5artnWrVt7\n+ZRTTknsE85JGTJkSFHHVErUbHlleq8K3/MKsShuOF9p/PjxXl66dGniNXvssYeXL774Yi/HvM8O\nHz4863kbolZrVipN3d56662Jbeecc05ex8i0eHj4eXTdunX5DSzCmDFjvHz55Zcn9lm4cKGXe/To\n4eUNGzYUfFwxmAMFAAAAAAVEAwUAAAAAkWigAAAAACBS83IPoFosWrQoa3788ce9vHbt2sQx1q9f\nX/iBAWW0zz77ePnwww8vz0DQJBxwwAFenjRpUmKffffdt1TDQY0J5wmNGzfOy5nWfyzGnKef/OQn\nWb8fI5y/FM6JyjTucFsh5kChcVq0aJFzn9tuu83L4VpKBx98cOI14dpRhfhdn3TSSV6uq6vL+ZpB\ngwZ5uVxznhqCK1AAAAAAEIkGCgAAAAAi0UABAAAAQCTmQDVQnz59vNysWTMvT58+PfGaN998s6hj\nAoptu+2283J4X327du1KORzUuM6dO+f9mpUrVxZhJKhF4ZyncM26cO5RuMZYQ8ydOzexrRRzR8M5\nLsxvql5m/hJFTz31lJfDtaMyffa87LLLvHz//fd7efny5V5u2bJl4hh33323l8P/f1avXu3lo48+\nOnGM8HkC1YQrUAAAAAAQiQYKAAAAACLRQAEAAABAJBooAAAAAIjEQyQa6Mc//rGXt9rK70Vnz55d\nyuEARbHtttt6+brrrvPyBRdckPcxv/jii0aNCU1HuFBz69atvfzuu+8mXvPdd98Vc0ioYZke8FDf\n8OHD8z7mjTfe6OVLLrkk72Og6dprr70S25xzXj700EO9PH/+fC8/8cQTiWOEr+natauXw4dGjB49\nOnGMjh07ejl86MqJJ57o5ZdffjlxjGrGFSgAAAAAiEQDBQAAAACRaKAAAAAAIBJzoCK1adPGyyNG\njMi6/6xZs4o5HDRxPXr08PLgwYMT+7zxxhtenjZtWtZjdujQIbEtXGzv2GOPjRzhP23cuNHLY8eO\nzfsYgCRNnDjRy717907ss2bNmlINB1UkXDRXSs7Z6N69u5dvuOGGnMcN500tWbLEyzfddFPsEIGE\niy66KLFt+vTpXs40P6m+cI6+JLVt29bLDz30UN5jC+f6X3XVVV6utTlPIa5AAQAAAEAkGigAAAAA\niEQDBQAAAACRLHyefFFPZla6kxVYOAfqq6++8vKUKVO8PHTo0MQxanl9EueclXsMxVCpNRver9y3\nb98yjSS3m2++2csXX3xxmUbio2Yrz3777eflu+66y8stWrTwcrgen5RcI6WWULNbFs5xCuczZRLW\nT651njJ9f/z48RGja7pqtWal8r3XDhkyxMtjxozx8h577JHzGGb+ryV83wzn8k2aNClxjKlTp3r5\ngw8+yHneahFTt1yBAgAAAIBINFAAAAAAEIkGCgAAAAAisQ5UgaxevdrLtTzfCeV32GGHlXsIkqRN\nmzZ5+eOPP07sc8cdd5RqOKgiw4YNS2z78ssvvdypUycvL1q0yMu1PN8J+Rk3bpyXw/WZBgwYkHhN\n+/btvRzOcWJ+EyrRnXfe6eWZM2d6+fTTT/fyQQcdlPOY69at8/Lll1/u5VWrVuUzxCaBK1AAAAAA\nEIkGCgAAAAAi0UABAAAAQCQaKAAAAACIxEK6kXItpPvRRx95+bTTTkscI3zQxCeffOLlNWvWNGKE\n5VWri+VVas2GD2sIJ0MXS/h+8Yc//MHLI0eOLMk4CoGaLa+ePXsmtj3zzDNeXr9+vZf79Onj5aee\neqrwA6tg1OyWNeSzTLjY7rx58xo7DARqtWal6nmvRf5YSBcAAAAACogGCgAAAAAi0UABAAAAQCTm\nQEXaZpttvDxjxgwvH3/88TmPsWHDBi/36tXLy3/5y18aOLryq9X7nCu1Zg855BAvH3fccTlf6q4Y\nSwAAAb9JREFU07FjRy+3bdvWyx06dEi8ZsqUKV5etmyZlydPnpzzvJWKmkW1oWa3bNq0aV4OF9IN\n/86WpMWLFzf2tMihVmtW4r22ljEHCgAAAAAKiAYKAAAAACLRQAEAAABAJOZANVCPHj28XFdX5+W+\nffsmXjNs2DAvT5gwofADK5Navc+5lmoWPmoW1YaaRbWp1ZqVqNtaxhwoAAAAACggGigAAAAAiEQD\nBQAAAACRmAOFgqjV+5yp2dpFzaLaULOoNrVasxJ1W8uYAwUAAAAABUQDBQAAAACRaKAAAAAAIBIN\nFAAAAABEooECAAAAgEg0UAAAAAAQiQYKAAAAACLRQAEAAABApJIupAsAAAAA1YwrUAAAAAAQiQYK\nAAAAACLRQAEAAABAJBooAAAAAIhEAwUAAAAAkWigAAAAACASDRQAAAAARKKBAgAAAIBINFAAAAAA\nEIkGCgAAAAAi0UABAAAAQCQaKAAAAACIRAMFAAAAAJFooAAAAAAgEg0UAAAAAESigQIAAACASDRQ\nAAAAABCJBgoAAAAAItFAAQAAAEAkGigAAAAAiEQDBQAAAACRaKAAAAAAIBINFAAAAABE+n8AmBPT\nBCdHpgAAAABJRU5ErkJggg==\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f314ad55e10>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"fig, axes = plt.subplots(nrows=4, ncols=5, figsize=(15, 10))\n", | |
"k = 0\n", | |
"for i in range(4):\n", | |
" for j in range(5):\n", | |
" imshow(wrong_examples[k], pred_labels[k], true_labels[k], axes[i, j])\n", | |
" k += 1\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": { | |
"collapsed": true | |
}, | |
"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.1" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment