{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "#### Get multiple threads going" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import os\n", "os.environ['MKL_NUM_THREADS'] = '8'\n", "os.environ['GOTO_NUM_THREADS'] = '8'\n", "os.environ['OMP_NUM_THREADS'] = '8'\n", "os.environ['openmp'] = 'True'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Import some libraries" ] }, { "cell_type": "code", "execution_count": 112, "metadata": {}, "outputs": [], "source": [ "import keras\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import matplotlib as mpl\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay\n", "from keras.models import Sequential, load_model\n", "from keras import Input\n", "from keras.layers.core import Dense, Activation, Flatten, Dropout\n", "from keras.layers.convolutional import Conv2D, MaxPooling2D\n", "\n", "mpl.rcParams.update({'font.size': 16})" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Define some short helper functions" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# Returns an one-hot encoded array of integer 0-9\n", "# 3 -> [0,0,0,1,0,0,0,0,0,0]\n", "def onehot(ARRAY):\n", " return np.eye(10)[ARRAY].astype(np.uint8)\n", "\n", "# Reshapes the data from the MNIST csv\n", "# Returns a 2D representation (28x28)px of the raw MNIST data\n", "def squareup(ARRAY):\n", " return ARRAY.reshape(28,28)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Load the data" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Input:\n", "Shape:(42000, 28, 28, 1)\n", "[[0. 0. 0. 0. 0.]\n", " [0. 0. 0. 0. 0.]\n", " [0. 0. 0. 0. 0.]\n", " [0. 0. 0. 0. 0.]\n", " [0. 0. 0. 0. 0.]]\n", "\n", "Output:\n", "Shape:(42000,)\n", "[1 0 1 4 0]\n", "\n" ] } ], "source": [ "# Try to load processed data first\n", "try:\n", " with open('./input/inputs.npy',\"rb\") as f:\n", " inputs = np.load(f)\n", " with open('./input/outputs.npy',\"rb\") as f:\n", " outputs = np.load(f)\n", " \n", "# Load data an process if not available \n", "except:\n", " data = np.genfromtxt('./input/train.csv', delimiter=',',skip_header=1,dtype=np.uint8)\n", " temp_inputs = data[:,1:]\n", " inputs = np.zeros((temp_inputs.shape[0],28,28,1))\n", " # Convert linear data from MNIST to 2D image\n", " for i in range(len(temp_inputs)):\n", " inputs[i,:28,:28,0] = squareup(temp_inputs[i])\n", " outputs = data[:,0]\n", " del temp_inputs, data\n", " # Save for faster loading next time\n", " np.save('./input/inputs.npy',inputs)\n", " np.save('./input/outputs.npy',outputs)\n", "print(f'Input:\\nShape:{inputs.shape}\\n{inputs[0,:5,:5,0]}\\n')\n", "print(f'Output:\\nShape:{outputs.shape}\\n{outputs[:5]}\\n')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### View some MNIST handwritten digits" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=(4,4))\n", "for i in range(1,10):\n", " plt.subplot(f'33{i}')\n", " plt.tick_params(left=False,\n", " labelleft=False,\n", " bottom=False,\n", " labelbottom=False\n", " )\n", " plt.imshow(inputs[i*(np.round(np.random.random()*100)).astype(int),:29,:29,0], cmap='gray_r')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Prepare the data to be modeled" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(33600, 28, 28, 1)\n", "(33600, 10)\n" ] } ], "source": [ "inputs = inputs/255.0 #Normalize\n", "X_train, X_test, y_train, y_test = train_test_split(inputs,outputs,test_size = 0.2)\n", "\n", "\n", "y_train_hot = onehot(y_train)\n", "y_test_hot = onehot(y_test)\n", "\n", "print(X_train.shape)\n", "print(y_train_hot.shape)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "X_train = inputs\n", "y_train_hot = onehot(outputs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Assemble a convolutional neural network" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "# Let's be civil and try to load the model first\n", "model_filename = './convolutional.h5'\n", "\n", "try:\n", " with open(model_filename,\"rb\") as f:\n", " model = load_model(model_filename)\n", "\n", "# If that doesnt work, come back later when the model is built.\n", "except: \n", " model = Sequential()\n", " model.add(Conv2D(32, kernel_size=(3, 3), activation=\"relu\"))\n", " model.add(Conv2D(64, (3, 3), activation='relu'))\n", " model.add(MaxPooling2D((2, 2)))\n", " model.add(Flatten(data_format=None))\n", " model.add(Dense(units=64))\n", " model.add(Activation(\"relu\"))\n", " model.add(Dropout(0.5))\n", " model.add(Dense(units=10))\n", " model.add(Activation(\"softmax\"))\n", " model.compile(loss='categorical_crossentropy',\n", " optimizer='RMSprop',\n", " metrics=['accuracy'])\n", " model.fit(X_train, y_train_hot, \n", " epochs=16, \n", " batch_size=420,\n", " )\n", " model.save(model_filename)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Evaluate model performance" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "8400/8400 [==============================] - 26s 3ms/step\n" ] }, { "data": { "text/plain": [ "[0.007829443202354014, 0.9977380812168122]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.evaluate(X_test, y_test_hot, batch_size=840)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Use model to evaluate new images" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "out = model.predict(X_test)\n", "len(out)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### View the model output for 9 random data" ] }, { "cell_type": "code", "execution_count": 135, "metadata": { "scrolled": false }, "outputs": [ { "data": { "image/png": "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AAAAiBANAAAAEWIRYImNHTvWy9Zff30vGzBgQFNMB5GaPn26l/Xp08fLPv7445If+5133vGyF154wctYCFu5Qgv5Qu9xaBFgaOGpJDnnip1WWWRd/Ni7d+9MWVPiDAAAABGiAQAAIEI0AAAARIgGAACACLEIsAmw2AmNKXSFv4MOOsjL5syZ42UdOnTwstCtqp944gkvmz17dnA+3377rZfNmzcvuC2av0IW8pX6OOVeJJdF1tcnlF188cVe1pRXSuQMAAAAEaIBAAAgQjQAAABEiAYAAIAIsQiwxKZOneplX331lZfNnDkzuH9NTU2JZ4Rq8d133wXzSy+91MtmzZqVaczTTjvNyy666CIvGzdunJflW6z0yiuveNm9997rZf369cswQzSlUi/4Cy3iCy18y7dtc7PPPvt4Weg1yyp09cSmxBkAAAAiRAMAAECEaAAAAIgQDQAAABFiEWBGCxYs8LI//vGPXvb22297WadOnRplTqheoQV/V111VXDb++67L9OYd911l5cdffTRmfYN3Ur44YcfDm4bWgT45ptvetnixYu9LHTrbDSdrLe2zSq04K8SFvtJpX8tQsp9lVjOAAAAECEaAAAAIkQDAABAhGgAAACIEA0AAAAR4lMAAXfccYeXhS63+tFHH2Ua77rrrvMyLvmL+rzzzjteduGFFwa3XXfddb3s0EMP9bLjjjuu+InV8c9//jPzttOmTfOy0KcXTjrppKLmhOIUc9nfSl3xn29lf+iyv8UIvT75LqfdVDgDAABAhGgAAACIEA0AAAARogEAACBC0S8CvPzyy73sd7/7nZdtsskmXnbQQQd52ZNPPullrVq1auDsEIPQotOrr7468/5/+MMfvOyXv/xlUXNqCkOHDvUyFgE2nVJf4rfcC9qyCH3NxSx8zKdSXh/OAAAAECEaAAAAIkQDAABAhGgAAACIUDSLAM8444xgfuutt3rZtttu62V33323l3344YdeFloECNSaOXOml4UWooZqa+DAgcExy7XgL9+9zCdOnJhp/1WrVpVyOihQqe9tXwlCX3NjvA7NccFfCGcAAACIEA0AAAARogEAACBCNAAAAESoKhcBjhw50stuvvnm4LbHHHOMl4UWBoau5vfAAw80YHaIxdixY73s6KOP9rLFixd72Yknnuhlf/7zn0szsRI54IADgnnWqxh+73v8+6OcirkC3gsvvOBloYVvhSyGK/XCuca4wl/I888/3yTHaQx8BwIAECEaAAAAIkQDAABAhGgAAACIUFUuArzhhhu8LN9Vx958800vO+644zIdZ8yYMZm2O/jggzNtl0/r1q29LHS7ybPOOquo46C0Jk2a5GWhBX+hxXShq/uttdZapZkYIMk552X77LOPl2W9el5T3Wq3nEI/d3v37t30EykRzgAAABAhGgAAACJEAwAAQIRoAAAAiFBVLgIMLYbLd8vUOXPmZMpCWrb0X76VK1d6Wd++fb2sQ4cOmY6Rz7ffflvU/iitRx991MuuuuqqTPuee+65XrbrrrsWPSegUKFFbqHbPoeuBFjsbXVDi+myHju0XWMsQKyU2/xmxRkAAAAiRAMAAECEaAAAAIgQDQAAABGqykWAoVuuhrJiHXvssV42atQoL8t6xUBUriuuuMLLli1bVoaZNJ18t9hG5QotxKuEK901xuK80ILIasMZAAAAIkQDAABAhGgAAACIEA0AAAARogEAACBCVfkpgHLaeuutyz0FlEHWy0dXqjfffNPLpk6dWtSYnTp1Kmp/oDFVwqcfisUZAAAAIkQDAABAhGgAAACIEA0AAAARYhFgEd577z0v23HHHcswE6B0pk2b5mWHH364l82YMSPzmD/4wQ+87Le//W1hEwMUvuzvJZdc0uDx8i32YxEgAACoSjQAAABEiAYAAIAI0QAAABAhFgEW4Z133vGynj17lmEmqGRffvmll3388cclP87555+fabtRo0Z52eLFizMfZ+edd/ayxx57zMtCCwOBNXnhhRdKOl6vXr1KOl4l4QwAAAARogEAACBCNAAAAESIBgAAgAixCLDE9t1333JPAWVw5JFHetmdd97pZaHFdEcddVSjzCmXc87LzCzTvmuttZaX7bDDDsFtQwv+Nt9880zHAdYktGhv/PjxmfYNXd0vdGXBWHAGAACACNEAAAAQIRoAAAAiRAMAAECEWAQIlMCf/vQnLzv99NO9bPTo0V42bNgwL5s+fXppJtYA3bt397LQrXuPOOKIppgOsJpibv178cUXl3AmlY8zAAAARIgGAACACNEAAAAQIRoAAAAixCLAIoQWSwG1tt56ay8777zzMmUAwkJX88t6JcDQAsLQeLHgDAAAABGiAQAAIEI0AAAARIgGAACACLEIsAiDBg3yskmT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v93Lfv3rX3tZ165dMx0HQBw4AwAAQIRoAAAAiBANAAAAEaIBAAAgQiwCBJrQX//61wbv27t372AeWgTYuXNnL5s/f76XzZ0718sOOeQQLzOzDDMsTOi1aNeunZdtvPHGJT82Si/0fr766qtlmEni3HPP9bKNNtqoDDNpvjgDAABAhGgAAACIEA0AAAARogEAACBC0SwCXLVqVTBfuHBhpv1fe+01L7vhhhu87OWXX/ay0EKrAw88MHicPffc08t+8IMfeNl+++2XaTtUjy+++CKYf/vtt152//33e1lokdYjjzziZaErDma9WmEhQrdB7t+/v5f17dvXy4499tiSzyc2ixcv9rI777zTy+67775M43300Ude9sknnxQ+sRJ58sknvWzttdf2st///vfB/ffdd9+Sz6m54QwAAAARogEAACBCNAAAAESIBgAAgAhV5SLAyZMne9nQoUOD2xZzZbbQ1dG22GILL9tggw28bOrUqcExn332WS9bsWKFl/3whz/0sqeeeirTfFCZWrVqFcw32WQTLwstbPrwww9LPqdSGz16tJe9+eabXsYiwOKF6in0M23vvff2smXLlnlZ1gV/nTp1Cua77rqrlz3//PNeFlr0GvLPf/4z03bjxo0L5nvttZeXhRYRVjLOAAAAECEaAAAAIkQDAABAhGgAAACIUMUvAlywYIGX7b///l62zjrrBPc/7rjjMh3nJz/5iZftscceXrbjjjtmGi+ft956y8uuvPJKLwtdnSt05ap//OMfXta2bdsGzg7Fcs55WejKeyH5rh4ZuvXv+++/72WPPfaYl22++eZe1r17dy+75ZZbvGz33XcPzuf444/3sn/9619elvW1CH0thx9+uJfddtttwfmEbjGMsNCtoEOv65IlS7xszJgxmY7RrVu3YB664uOIESO8LHRb65Avv/zSyy677DIvu+KKK4L7n3POOV7GIkAAAFDxaAAAAIgQDQAAABGiAQAAIEIVvwgwtNBj2LBhXtarV6/g/qHbBJdzkVxoEWGPHj28LLQIsHXr1l7Ggr+mEVrkFlo89dVXX3lZ1lvt5ruaZVaHHXZYg/c99dRTM2977733etmECRO8bNCgQV6W9bUIXcHz5JNPDm4burogpDfeeMPLOnTo4GWbbbZZpvHOPPPMoueU64QTTvCypUuXetmiRYu8LLRQFKvjDAAAABGiAQAAIEI0AAAARIgGAACACNEAAAAQoYr/FEDXrl0zZZXs1ltv9bLQvbzPPvvsppgOAmbNmuVlN910UxlmUn477bRTpmz99df3snwr+bMYO3Zsg/eN0Y9+9KNyT2GNFi9e7GWDBw/2smK+10KXeZektdZaq8FjVgrOAAAAECEaAAAAIkQDAABAhGgAAACIUMUvAqw2L730kpe99957Xrb11lt72c9//vNGmRPQGDp27FjuKaAZueeee7zsb3/7W6btsgpdEv7OO+8MbrvBBhs0+DiVgjMAAABEiAYAAIAI0QAAABAhGgAAACLEIiLkAZoAABxWSURBVMAyefLJJ4P5Kaec4mXt27f3sscff7zkcwKa0m677eZlhx56qJdxhb/K9dlnn3nZuHHjgtueccYZXrZgwYKSzuf111/3sldeeSW4behKlR06dCjpfMqNMwAAAESIBgAAgAjRAAAAECEaAAAAIsQiwCYwceJELxs4cGBwW+eclw0fPtzLunXrVvzEUDKTJ0/2spUrV5ZhJpWjXbt2XjZ69GgvC131cvr06Y0yJzTcpEmTvKx///5eNnv27KaYTlBoUeFxxx0X3HaLLbbwsiFDhmQ6TuiqrC1atMi0b1PiDAAAABGiAQAAIEI0AAAARIgGAACACLEIsMSGDRvmZaeffrqXLVu2LLj/tGnTvKxr167FTwyN6uKLL/ayYhb9hK4IGYOHH37Yy7766isva44LqmJ3//33e1k5F/xdd911XrbJJpt42U033RTcP7R4+8QTT8x07BkzZnhZ1gWETYkzAAAARIgGAACACNEAAAAQIRoAAAAixCLAIlx//fVeds0113jZzjvv7GX5Fp506dKl+Imh4vXt27fcU2h0ixYt8rK//vWvXrZw4cKmmA6KFLqy4zbbbONlvXv3Du5/4YUXlnQ+oVv3hhaPHnLIIcH9lyxZ4mW33367lw0dOtTLrrzySi8LLfy+6KKLvCx0G+LGwhkAAAAiRAMAAECEaAAAAIgQDQAAABFiEWBGDz30kJf96le/8rLNN9/cy5566ikva926dWkmhqo0duxYLzvwwAPLMJPGc84553jZvffeW4aZoBR++9vfZsqam0033TTztnvvvbeXha7aeccdd3hZ1oWB1157beb5FIszAAAARIgGAACACNEAAAAQIRoAAAAiRAMAAECE+BRAwMiRI71s8ODBXrbHHnt42d133+1lrPivfqHLgV5yySUNHu/Pf/6zl+VbrRw6djk99thjXha6hOoTTzzhZaFLtWZVzOsNZLHffvtlykaMGOFlK1as8LLrrrvOy/gUAAAAaFQ0AAAARIgGAACACNEAAAAQoegXAU6cONHLQpf4DS3kGzZsmJd169atNBNDRenevbuXrVy5sqTHuPTSS4P5//3f/3lZ6FKkHTt2bPCxQ4sSx4wZ0+DxJMk552Wh12yDDTbwsquuusrLTj755KLmgzjNnDkzmM+fP9/LRo0a5WU333yzl4Uu8Ruy1VZbZdqusXAGAACACNEAAAAQIRoAAAAiRAMAAECEolkE+OSTTwbzI444wstCCzjGjRvnZT/84Q+LnxiqwnbbbedlvXv39rIJEyY0+Bj5FhWGrp5XzIK40HFCxyjmqn2FHKdTp05exoK/5mf8+PFetv3223tZu3btmmA20rx587xs+PDhXha68qskvfHGGyWdT8+ePTMfu6lwBgAAgAjRAAAAECEaAAAAIkQDAABAhKpyEeBDDz3kZb/5zW+C22655ZZeFrqt6C677FL8xFC1tthiCy978MEHvezwww/3sldffbVR5tTcbb311l52yimneFlooS6an9CVIYcMGeJlG264YRPMRlq0aJGXhRYqNobQouC77rrLy8p95VjOAAAAECEaAAAAIkQDAABAhGgAAACIUMUvApw9e7aXDRo0yMvy3Z4xtFArdMUmoFBt27b1stGjR3vZ5Zdf7mWPPfaYl82YMaM0E2tkP/rRj7ysV69eXnbttdc2xXTQRGpqarwsdLv10BX68lm+fLmXTZ48uaB51dWhQwcv69KlS4PHk6Tf//73XrbHHnt42dprr13UcRoDZwAAAIgQDQAAABGiAQAAIEI0AAAARKiiFgFOnTrVy4466igva9OmjZfdeeedwTFZ8IemFLoVamgx3MCBA71s7ty5wTFvu+02Lxs7dmwDZpdf6Ap9ffv2DW7buXNnL9t2221LOh80P6HF16GsEAsWLPCya665psHj9ejRw8sOPfTQBo9X6TgDAABAhGgAAACIEA0AAAARogEAACBCzXYR4GeffeZl/fr187JPP/3Uyy677DIvY7EfKkn37t0zb3vQQQc14kyA8mndurWXDR06tAwzqU6cAQAAIEI0AAAARIgGAACACNEAAAAQ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NAAAAESIBgAAgAjRAAAAECEaAAAAIkQDAABAhGgAAACIEA0AAAARogEAACBCLcs9AQCld/XVV3vZqlWrSnqM/fbbL5h3797dy/74xz962dChQ71s44039rJx48Z5WdeuXbNMEUA9OAMAAECEaAAAAIgQDQAAABGiAQAAIEIsAgSaoYULF3rZwIEDg9u++uqrXvbll1+WfE65Nthgg2C+7rrrelnW+cyfP9/L3n33XS9jEWDlCtW2JA0ZMsTLHn74YS/76KOPMh2nc+fOXjZ48GAvO/bYY4P7b7jhhpmOU8k4AwAAQIRoAAAAiBANAAAAEaIBAAAgQlW5CPCbb77xspkzZwa3HTlypJf961//8rK5c+d62U9/+lMvM7NMxw4tbsln/fXX97LQVdTOPvvszGOi+bj//vu97MILL/SyDz/8sCmmk9m3335bUJ7Fpptu6mXt27dv8HhoOitXrvSyl19+2cuOO+644P6zZs0q6Xxmz57tZaeffrqXPfLII8H9f//733vZ7rvvXvzEmhHOAAAAECEaAAAAIkQDAABAhGgAAACIUEUtApw3b56XnX/++V42YcIELwtdTaxYkyZN8rLQIsCQrNtJ0uLFi70stHiRRYCV6ZZbbvGyYhf89ezZ08tCCwtbt26dabzHH3/cyz744IPgtoUscM110003eVmPHj0aPB6azt///ncv69WrV+b9Q1eQ/M1vfuNlvXv3zjTeJZdc4mWh/zeEbjctha9e+corr3jZeuutl2k+zRFnAAAAiBANAAAAEaIBAAAgQjQAAABEqKIWAZ544oleNnbsWC9zznlZIYvuslpnnXW8LOsClU8//TSYv/XWW8VMCRE6+uijveyee+7xsu99r+H9/uTJk71s1KhRDR5Pkvr27etlBxxwQFFjommEbumb77a6ubp06RLMn376aS/r1q1bYROrI3TL6H333dfLZsyYEdz/9ddf97JzzjnHy84666xMx26OOAMAAECEaAAAAIgQDQAAABGiAQAAIEIVtQiwmNtFhm4zKkmHHHKIl4VuV9muXTsva9GihZdtt912meYTuoKhlH0R4Pbbb59pOzR/oSugFWL69OletmTJEi9r1apVpvGmTZvmZTfffHOm4+YTuiLcvffe62UbbbRR5jFRPvfdd5+XhW57HrpKXuhqelLpb/tcU1PjZUOGDPGy448/PvOYoStVhl6LF1980ct22GGHzMdpKpwBAAAgQjQAAABEiAYAAIAI0QAAABAhGgAAACJUUZ8CCN23+YYbbsi076BBg4J5vk8HlNL48eO97Nprr828/8EHH+xld9xxRzFTQjMydOhQL3vmmWcy7z9p0iQvu+CCC7zsuuuu87Ibb7zRy6655hovC63wzmefffbxstB93VnxX7muvPLKTNsddthhXlbq1f6FCNVm//79g9s+9NBDmcacN2+el4UuI8ynAAAAQLNAAwAAQIRoAAAAiBANAAAAEaqoRYBt2rTxstClHcvpu+++87JLLrnEy5YvXx7cP3S51osvvtjLir18LJqP3Xff3cv69evnZY8++mjmMUOLY2+55RYvC9Wrcy7TMfr06RPMn3rqKS8LXTYbleH+++/3sqyXZR84cGCpp1OUH/zgB142YsSI4LZZFwFWMs4AAAAQIRoAAAAiRAMAAECEaAAAAIhQRS0CrAShq6iF7g1tZsH9x44d62U9evQofmJotr73Pb8Pv/POO71sr732Cu4fusreqlWrvCzfwtMsQvd1Dx1XYsFftVm5cqWXhRaKbrDBBl621VZbNcqcSqlly/D/BrfccksvmzFjRmNPp0lxBgAAgAjRAAAAECEaAAAAIkQDAABAhFgEWIRly5Z52XPPPZdp3+9///vBfOeddy5qTqgOodtUn3LKKcFtb7rpJi8r9WKlAQMGeNm2225b0mOgsm244YZets0225RhJoVZsWJFMM/6PbTWWmt5We/evYuZUpPhDAAAABGiAQAAIEI0AAAARIgGAACACLEIsAgvv/yylz377LOZ9t1vv/2C+cYbb1zUnFC9Pvnkk2Ce9fa9xQjdMnXSpEnBbZ955hkv69ixY6mnhGYmtJhu4cKFXrbRRhs1xXSCQldlveyyy4oa8/rrr/eyzTffvKgxmwpnAAAAiBANAAAAEaIBAAAgQjQAAABEiEWARTjssMMavO9uu+1Wwpmg2nz++ededvDBBwe3nTlzZqYxO3To4GX9+vXzskceeSTTfN55553gcQ444AAvmzhxopeFbjGMyjV37lwvO/LII73sgQceCO5fzG2kx4wZ42WjRo3ysieeeMLLvvvuu8zH2WSTTbzswAMPzLx/c8MZAAAAIkQDAABAhGgAAACIEA0AAAARYhFgRosWLfKyb7/91svMzMtCC61++ctflmZiqHjLly/3spEjR3rZ9OnTM4/ZsqX/rT1lyhQvC92WeujQoV520EEHedlrr70WPPbbb7/tZQ8++KCXHXPMMV4WurUqyuunP/1ppix0lb1x48Z5WZs2bUozsQZo3bq1l4V+ZkvS/Pnzvax9+/ZetuWWWxY/sTLhDAAAABGiAQAAIEI0AAAARIgGAACACNEAAAAQIT4FkNGll17qZaHVo6Hs1FNPbZQ5oTr06dPHyyZMmFDUmKNHj/ay0Ir/kHbt2nnZeeed52VXX311cP/QZX9POOEEL7vqqqu87Omnn/ayTp06BY+DptG5c2cvC63uD2WDBw/2snyXkF61alWm+Wy77bZetu6663pZqGZDl6kOZZI0adKkTPOpZJwBAAAgQjQAAABEiAYAAIAI0QAAABAhFgEGfPLJJ152++23Z9p3ww039LJyXvoS1e93v/udl/Xt27ekx+jfv7+X5bsPeuhyqyGhxWBz5szxMhYBNj+hSzb/13/9V6YsdElqSXLOZTr2Lrvs4mUtWrTItG9Ivu8VFgECAICqRAMAAECEaAAAAIgQDQAAABFiEWDAs88+62Whe0OHhBaU7LrrrkXPCdUhVFtZFxsdddRRwfzMM8/0snz3OC+lZ555pqj9QwvEdtppp6LGRPPXvXv3ck9hNW3bti33FMqGMwAAAESIBgAAgAjRAAAAECEaAAAAIsQiwIB8V6rK4qCDDirhTFBtFi9e7GVLly7NtO+DDz4YzLfeemsvO/bYY72sW7dumY4TsmzZMi97+eWXGzyeJO24445eFrqtK9CYpk+fXu4plA1nAAAAiBANAAAAEaIBAAAgQjQAAABEiEWAAePHj/ey0K0qs96+EqgVul10TU2Nl82cOdPLVq1aFRxz6NChXnb33Xd72fbbb7/mCeaxZMkSL3vuuecy77/xxht72RlnnNHg+QClwiJAAAAQFRoAAAAiRAMAAECEaAAAAIhQ9IsAv/nmGy8LXfUsdHvV1q1be9mee+5ZmomhKvXu3dvLJk6c6GWhRXwXXnhhcMzQlQRDiwhDWVM56aSTvGzzzTcvw0yA1eW7BfXYsWObeCZNjzMAAABEiAYAAIAI0QAAABAhGgAAACIU/SLAv/zlL142derUTPuGbl265ZZbFj0nxKVdu3Ze9utf/9rLQrfPlaQ33njDy84//3wvW7FiRQNml1+/fv2C+U9+8hMv+9WvflXSYwOlUshtrefPn+9lX3zxhZdtttlmRc2pqXAGAACACNEAAAAQIRoAAAAiRAMAAECEaAAAAIhQ9J8C6Natm5eF7l0eWv0JNKUDDjggc37OOec09nSAqnDeeecF8+eff97LQpeO51MAAACgotAAAAAQIRoAAAAiRAMAAECEol8EuM8++3jZEUcc4WXDhg1riukAAJpQvsW1zrkmnknT4wwAAAARogEAACBCNAAAAESIBgAAgAhFvwgw5Pbbb8+UAQBQqTgDAABAhGgAAACIEA0AAAARogEAACBCVt/VjsxsrqRZTTcdVJktnHPtyjkBahhFKnsNS9Qxihas43obAAAAUJ34FQAAABGiAQAAIEI0AAAARIgGAACACNEAAAAQof8PFUFrWgjRqJ8AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=(9,9))\n", "for i in range(1,10):\n", " K = np.round(np.random.random()*len(submit)).astype(int)\n", " plt.subplot(f'33{i}')\n", " plt.tick_params(left=False,\n", " labelleft=False,\n", " bottom=False,\n", " labelbottom=False\n", " )\n", " plt.imshow(test_inputs[K,:29,:29,0],cmap='gray_r')\n", " plt.title(f'Modeled as {submit[K].argmax()}')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Model Performance " ] }, { "cell_type": "code", "execution_count": 127, "metadata": {}, "outputs": [ { "data": { "image/png": "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UsltV4/AHWZfvJp1qwp48PeDw25eB28sLOb5x8qYuFc9EMw6cM+vhnHKF9cwdb8t26z/r/sG0tpiXXYl+P21I9hUncse+21m0LBmNqzN5+E7B7HkpX5885fLezWWnvjSj95l1gk13HH9MBq25LDbvu9Xn9e/lx/ZbgVRugbTFceYIJ5xxTGm9mYeWw3ApOTvzf0Or6W6Ko+aqjwWzi8Ns2k9EsfzFceYpHeF+sQuMzsX+DVpPuygN5/YBTB0dBPnz1nFPrM2YQYL/lPKTZeN7vWnumT6xK7KJUXccMkYKpcU09xkVExs4ITPreeo01Mnqed/dAqegJv/tSTl+888XM6ffzOUysVFbNmUy8ChLUzYo55TL1zbZfeE7enNJ3bd9uxrjBibej7Y3183nD9cN6LXjt3bwroGe1McY4J4xhXHmNo8vOrllMtffrqES06e2Met2TnieL7Ciikbntg1fI9BfsYdHwuzCVy/zx9D/xwyEUoSa2YnJ//zCOB84IvAOmCduz/e1Xa9ncSGJdMkNgp6M4kVERHZmbIliT399qPCbAI37HtX6J9DJsLqTtD5IQc3Jl8fBw7t26aIiIiISNSEksR6HJ8BKCIiItJDwRO7NN4+E/q0RERERCRylMSKiIiISORoii0RERGRLNCKeltmQpVYEREREYkcVWJFREREQuZAQuPeM6JKrIiIiIhEjpJYEREREYkcdScQERERCZ3mic2UPi0RERERiRxVYkVERESyQEJTbGVElVgRERERiRwlsSIiIiISOepOICIiIhIyd2jVPLEZUSVWRERERCJHSayIiIiIRI66E4iIiIhkAc0Tmxl9WiIiIiISOarEioiIiITMMRIa2JURJbFZ4KhR08Nuwk530RuLw25Cr7hh4m5hN0FERERQdwIRERERiSBVYkVERESygB47mxlVYkVEREQkclSJFREREQmZgwZ2ZUiVWBERERGJHCWxIiIiIhI56k4gIiIikgX0xK7M6NMSERERkchRJVZEREQkbK4ndmVKlVgRERERiRwlsSIiIiISOepOICIiIhIyR0/sypQqsSIiIiISOarEioiIiGQBDezKjCqxIiIiIhI5SmJFREREJHLUnUBEREQkZI66E2RKlVgRERERiRxVYkVERESygCqxmVElVkREREQiR5XYdoaOauILc1ax76xNYPDSk2XcdPko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Qed106o87jtuNH0GNzP52xuCmx3MK+LVGwfQf2wjX/n7inZHEzqT3psd6P9gb8qKmx0MHOl7HxvuzQ5euTNaNzsIq4i9Hvg2sIu7r+vq89JZxAIMHtHAtOmrmTS1CjN444USZlw2gnWron27uzjmFcecIJ55xTEniGdeYeXUnSIWYPlzfZh7ywA2LC6guSGHspENTDy1komnVpKTC+88UMb8e/tTuTyfhs05FO3UzC4H13DgheVbC9gtNiwu4JU/D2Td60XUbsylZFgTY4+o5hPf3kBRvxQXnk1KZxEL+j/Ym7KmiD0m5CL2LhWxHb+hWT6wGpjt7sen8tx0F7EiIpJ53S1is126i1jpPSpiA1ErYjO+OoG7NwK6d5yIiIhIkhHNi6vCFOodu0REREREukNFrIiIiIhETth37BIRERERgBAuto8ydWJFREREJHLUiRURERHJArqwKzXqxIqIiIhI5KiIFREREZHI0TiBiIiISNg8+ZAuUydWRERERCJHnVgRERGRLGCJsCOIFnViRURERCRyVMSKiIiISORonEBEREQkG+jCrpSoEysiIiIikaMiVkREREQiR+MEIiIiIllAt51NjTqxIiIiIhI56sSKiIiIhM0BVys2FerEioiIiEjkqBMrIiKhunH8hLBDSItvLno/7BB63a0TxoYdgshWKmJFREREsoAu7EqNxglEREREJHLUiRURERHJBurEpkSdWBERERGJHBWxIiIiIhI5GicQERERCZmhC7tSpU6siIiIiESOOrEiIiIiYXPXHbtSpE6siIiIiESOilgRERERiRyNE4iIiIhkAV3YlRp1YkVEREQkctSJFREREckG6sSmRJ1YEREREYkcFbEiIiIiEjkaJxARERHJArqwKzXqxIqIiIhI5KiIFREREZHI0TiBiIiISNgcSGieIBUqYlsYPLyB86ev5oCpVWDw+vOlzLh8OB99UBB2aD0Sx7zimBPEM6845gTxzCuOOUH08lr3WiFzb9iJDe8W0FxvlI1uZK+vbWLCydXt7v/CLwey8P4ydjuhmsN+/9EOX/fNGf149Q8DGHJAHcfdtyZd4fdI1I6VhEvjBEmFxQl+97eljBxXzzXfH8U1F41ixNh6rn5gKYXFzWGH121xzCuOOUE884pjThDPvOKYE0Qvrw0L8nn060PxJphy5XqOuGEdg/ap5/mf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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, axes = plt.subplots(figsize=(12, 12))\n", "c_mat = confusion_matrix(y_test_hot.argmax(axis=1),out.argmax(axis=1))\n", "disp = ConfusionMatrixDisplay(confusion_matrix = c_mat,display_labels=list(range(0,10)))\n", "disp.plot(values_format='d',ax=axes)\n", "plt.title('CNN model for MNIST dataset')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create a submission for Kaggle.com " ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [], "source": [ "data = np.genfromtxt('./input/test.csv', delimiter=',',skip_header=1,dtype=np.uint8)\n", "temp_inputs = data\n", "test_inputs = np.zeros((temp_inputs.shape[0],28,28,1))\n", "# Convert linear data from MNIST to 2D image\n", "for i in range(len(temp_inputs)):\n", " test_inputs[i,:28,:28,0] = squareup(temp_inputs[i])\n", "outputs = data[:,0]\n", "del temp_inputs, data" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [], "source": [ "# Normalize\n", "test_inputs=test_inputs/255.0\n", "submit = model.predict(test_inputs)" ] }, { "cell_type": "code", "execution_count": 77, "metadata": { "scrolled": true }, "outputs": [], "source": [ "submit_values = np.zeros((len(submit),2),dtype=int)\n", "for i in range(len(submit)):\n", " submit_values[i,0] = i+1\n", " submit_values[i,1] = submit[i].argmax()\n", "submit_values[0:5]" ] }, { "cell_type": "code", "execution_count": 93, "metadata": {}, "outputs": [], "source": [ "np.savetxt('./submission.csv',\n", " submit_values,\n", " delimiter = ',',\n", " newline='\\n',\n", " header='ImageId,Label',\n", " fmt='%d')" ] }, { "cell_type": "markdown", "metadata": {}, "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.8.6" } }, "nbformat": 4, "nbformat_minor": 4 }