{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Make sure you can import them before proceeding further.\n", "from __future__ import print_function\n", "import imageio\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import os\n", "import sys\n", "import tarfile\n", "import gzip\n", "import struct\n", "import time\n", "from IPython.display import display, Image\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 matplotlib backend as plotting inline in IPython\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#MNIST urls\n", "url_base = 'http://yann.lecun.com/exdb/mnist/'\n", "training_set_images = 'train-images-idx3-ubyte.gz' #size in bytes 9912422\n", "training_set_labels = 'train-labels-idx1-ubyte.gz' #size in bytes 28881\n", "test_set_images = 't10k-images-idx3-ubyte.gz' #size in bytes 1648877\n", "test_set_labels = 't10k-labels-idx1-ubyte.gz' #size in bytes 4542\n", "last_percent_reported = None\n", "# Change me to store data elsewhere\n", "data_root = 'D:\\\\1_Workspaces\\\\UNDER_VCS\\\\github\\\\1_ML_NN\\\\python_with_math\\\\data'" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "\"\"\"A hook to report the progress of a download. This is mostly intended for users with\n", " slow internet connections. Reports every 5% change in download progress.\n", "\"\"\"\n", "def download_progress_hook(count, blockSize, totalSize): \n", " global last_percent_reported\n", " percent = int(count * blockSize * 100 / totalSize)\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" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def maybe_download(filename, expected_bytes, force=False):\n", " \"\"\"Download a file if not present, and make sure it's the right size.\"\"\"\n", " dest_filename = os.path.join(data_root, filename)\n", " if force or not os.path.exists(dest_filename):\n", " print('Attempting to download:', filename) \n", " filename, _ = urlretrieve(url_base + filename, dest_filename, reporthook=download_progress_hook)\n", " print('\\nDownload Complete!')\n", " statinfo = os.stat(dest_filename)\n", " if statinfo.st_size == expected_bytes:\n", " print('Found and verified', dest_filename)\n", " else:\n", " raise Exception(\n", " 'Failed to verify ' + dest_filename + '. Can you get to it with a browser?')\n", " return dest_filename" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found and verified D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\train-images-idx3-ubyte.gz\n", "Found and verified D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\train-labels-idx1-ubyte.gz\n", "Found and verified D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\t10k-images-idx3-ubyte.gz\n", "Found and verified D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\t10k-labels-idx1-ubyte.gz\n" ] } ], "source": [ "train_filename_images = maybe_download(training_set_images, 9912422)\n", "train_filename_labels = maybe_download(training_set_labels, 28881)\n", "test_filename_images = maybe_download(test_set_images, 1648877)\n", "test_filename_labels = maybe_download(test_set_labels, 4542)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# read labels to an array\n", "def make_labels_array_from_file(file_gzipped):\n", " # it sets byte stream from LABELS FOR TRAINING to a right position\n", " gzipFile_TrainLabels = gzip.open(file_gzipped)\n", " magicNumberLabels = int.from_bytes(gzipFile_TrainLabels.read(4), byteorder='big') #2049\n", " numberOfLabels = int.from_bytes(gzipFile_TrainLabels.read(4), byteorder='big') #60000\n", " print ('magicNumberLabels = ', magicNumberLabels, '\\t','numberOfLabels = ', numberOfLabels)\n", " labels = np.ndarray(shape=(numberOfLabels, 1), dtype=np.int32)\n", " for i in range (numberOfLabels):\n", " #read label\n", " #label = 0\n", " label = int.from_bytes(gzipFile_TrainLabels.read(1), byteorder='big')\n", " labels[i, :] = label\n", " gzipFile_TrainLabels.close() \n", " return labels" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "magicNumberLabels = 2049 \t numberOfLabels = 60000\n", "time spent for creating array of labels to train = 0.17951607704162598 s\n", "\n", "\n", "magicNumberLabels = 2049 \t numberOfLabels = 10000\n", "time spent for creating array of labels to train = 0.029078006744384766 s\n" ] } ], "source": [ "start_l = time.time()\n", "labels_train = make_labels_array_from_file(train_filename_labels)\n", "end_l = time.time()\n", "print('time spent for creating array of labels to train = ', end_l - start_l, ' s')\n", "print('\\n')\n", "start_l2 = time.time()\n", "labels_test = make_labels_array_from_file(test_filename_labels)\n", "end_l2 = time.time()\n", "print('time spent for creating array of labels to train = ', end_l2 - start_l2, ' s')" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "labels_train.shape = (60000, 1)\n", "[5]\n", "[0]\n", "[4]\n", "[1]\n", "[9]\n", "labels_test.shape = (10000, 1)\n", "[7]\n", "[2]\n", "[1]\n", "[0]\n", "[4]\n" ] } ], "source": [ "# check arrays\n", "print ('labels_train.shape = ', labels_train.shape)\n", "for i in range (5):\n", " print (labels_train[i])\n", "print ('labels_test.shape = ', labels_test.shape)\n", "for i in range (5):\n", " print (labels_test[i])" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "NUMBER_FEATURES = 784; #square 28*28 as from data set -> array 784 items\n", "# read images to an array\n", "def make_images_array_from_file(file_gzipped):\n", " #it sets byte stream from IMAGES FOR TRAINING to a right position\n", " gzipFile_TrainImages = gzip.open(file_gzipped)\n", " magicNumberImages = int.from_bytes(gzipFile_TrainImages.read(4), byteorder='big') #2051\n", " numberOfImages = int.from_bytes(gzipFile_TrainImages.read(4), byteorder='big') #60000\n", " numberOfRows = int.from_bytes(gzipFile_TrainImages.read(4), byteorder='big') #28\n", " numberOfColumns = int.from_bytes(gzipFile_TrainImages.read(4), byteorder='big') #28\n", " print (magicNumberImages, '\\t',numberOfImages, '\\t', numberOfRows, '\\t', numberOfColumns)\n", " # then, it reads the rest of the file to an array \n", " \n", " #it creates n-dim array with picture as 784 features and an appropriate label\n", " datasetMnist = np.ndarray(shape=(numberOfImages, NUMBER_FEATURES), dtype=np.int32) #it creates a 2d array of 32-bit integers\n", " \n", " for i in range (numberOfImages):\n", " #read and create array for 784 features\n", " imagePixelsAsFeatures = np.ndarray(shape=(NUMBER_FEATURES), dtype=np.int32)\n", " for index in range(NUMBER_FEATURES):\n", " imagePixelsAsFeatures[index] = int.from_bytes(gzipFile_TrainImages.read(1), byteorder='big') \n", " # put label and features to a dataset\n", " datasetMnist[i, :] = imagePixelsAsFeatures \n", " gzipFile_TrainImages.close()\n", " return datasetMnist " ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2051 \t 60000 \t 28 \t 28\n", "time spent for creating array of images to train = 96.95532011985779 s\n", "\n", "\n", "2051 \t 10000 \t 28 \t 28\n", "time spent for creating array of images to test = 16.453774452209473 s\n" ] } ], "source": [ "start_i = time.time()\n", "images_train = make_images_array_from_file(train_filename_images)\n", "end_i = time.time()\n", "print('time spent for creating array of images to train = ', end_i - start_i, ' s')\n", "print ('\\n')\n", "start_i = time.time()\n", "images_test = make_images_array_from_file(test_filename_images)\n", "end_i = time.time()\n", "print('time spent for creating array of images to test = ', end_i - start_i, ' s')" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(60000, 784)\n", "[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 3 18 18 18 126 136 175 26 166 255\n", " 247 127 0 0 0 0 0 0 0 0 0 0 0 0 30 36 94 154\n", " 170 253 253 253 253 253 225 172 253 242 195 64 0 0 0 0 0 0\n", " 0 0 0 0 0 49 238 253 253 253 253 253 253 253 253 251 93 82\n", " 82 56 39 0 0 0 0 0 0 0 0 0 0 0 0 18 219 253\n", " 253 253 253 253 198 182 247 241 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 80 156 107 253 253 205 11 0 43 154\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 14 1 154 253 90 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 139 253 190 2 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 11 190 253 70 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 35 241\n", " 225 160 108 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 81 240 253 253 119 25 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 45 186 253 253 150 27 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 16 93 252 253 187\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 249 253 249 64 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 46 130 183 253\n", " 253 207 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 39 148 229 253 253 253 250 182 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 24 114 221 253 253 253\n", " 253 201 78 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 23 66 213 253 253 253 253 198 81 2 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 18 171 219 253 253 253 253 195\n", " 80 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 55 172 226 253 253 253 253 244 133 11 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 136 253 253 253 212 135 132 16\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0]\n" ] } ], "source": [ "# check array\n", "print (images_train.shape)\n", "image_five = images_train[0]\n", "print (image_five)\n", "# for i in range (10):\n", "# print (images_train[i])" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0]\n", " [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0]\n", " [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0]\n", " [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0]\n", " [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0]\n", " [ 0 0 0 0 0 0 0 0 0 0 0 0 3 18 18 18 126 136\n", " 175 26 166 255 247 127 0 0 0 0]\n", " [ 0 0 0 0 0 0 0 0 30 36 94 154 170 253 253 253 253 253\n", " 225 172 253 242 195 64 0 0 0 0]\n", " [ 0 0 0 0 0 0 0 49 238 253 253 253 253 253 253 253 253 251\n", " 93 82 82 56 39 0 0 0 0 0]\n", " [ 0 0 0 0 0 0 0 18 219 253 253 253 253 253 198 182 247 241\n", " 0 0 0 0 0 0 0 0 0 0]\n", " [ 0 0 0 0 0 0 0 0 80 156 107 253 253 205 11 0 43 154\n", " 0 0 0 0 0 0 0 0 0 0]\n", " [ 0 0 0 0 0 0 0 0 0 14 1 154 253 90 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0]\n", " [ 0 0 0 0 0 0 0 0 0 0 0 139 253 190 2 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0]\n", " [ 0 0 0 0 0 0 0 0 0 0 0 11 190 253 70 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0]\n", " [ 0 0 0 0 0 0 0 0 0 0 0 0 35 241 225 160 108 1\n", " 0 0 0 0 0 0 0 0 0 0]\n", " [ 0 0 0 0 0 0 0 0 0 0 0 0 0 81 240 253 253 119\n", " 25 0 0 0 0 0 0 0 0 0]\n", " [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 45 186 253 253\n", " 150 27 0 0 0 0 0 0 0 0]\n", " [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 93 252\n", " 253 187 0 0 0 0 0 0 0 0]\n", " [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 249\n", " 253 249 64 0 0 0 0 0 0 0]\n", " [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 46 130 183 253\n", " 253 207 2 0 0 0 0 0 0 0]\n", " [ 0 0 0 0 0 0 0 0 0 0 0 0 39 148 229 253 253 253\n", " 250 182 0 0 0 0 0 0 0 0]\n", " [ 0 0 0 0 0 0 0 0 0 0 24 114 221 253 253 253 253 201\n", " 78 0 0 0 0 0 0 0 0 0]\n", " [ 0 0 0 0 0 0 0 0 23 66 213 253 253 253 253 198 81 2\n", " 0 0 0 0 0 0 0 0 0 0]\n", " [ 0 0 0 0 0 0 18 171 219 253 253 253 253 195 80 9 0 0\n", " 0 0 0 0 0 0 0 0 0 0]\n", " [ 0 0 0 0 55 172 226 253 253 253 253 244 133 11 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0]\n", " [ 0 0 0 0 136 253 253 253 212 135 132 16 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0]\n", " [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0]\n", " [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0]\n", " [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0]]\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "image_five_reshaped = images_train[0].reshape(28, 28)\n", "print (image_five_reshaped)\n", "plt.imshow(image_five_reshaped)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "image_from_test_reshaped = images_test[0].reshape(28, 28)\n", "plt.imshow(image_from_test_reshaped)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[7]\n" ] } ], "source": [ "print(labels_test[0])" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Other_IT\\Anaconda\\lib\\site-packages\\imageio\\core\\util.py:104: UserWarning: Conversion from int32 to uint8, range [0, 255]\n", " 'range [{2}, {3}]'.format(dtype_str, out_type.__name__, mi, ma))\n" ] } ], "source": [ "#save a images\n", "imageio.imwrite(data_root + '\\\\extracted_from_mnist\\\\image_five' + '.png', image_five_reshaped[:])\n", "imageio.imwrite(data_root + '\\\\extracted_from_mnist\\\\image_seven' + '.png', image_from_test_reshaped[:])" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#TODO dump the arrays to a file?\n", "#now we have:\n", "#labels_train\n", "#labels_test\n", "#images_train\n", "#images_test\n", "#image_five\n", "#image_five_reshaped\n", "#image_from_test_reshaped\n", "#it's time to create an train NN!\n", "\n", "log_regr = LogisticRegression(solver='sag', multi_class='ovr', n_jobs=1)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Other_IT\\Anaconda\\lib\\site-packages\\sklearn\\utils\\validation.py:526: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", " y = column_or_1d(y, warn=True)\n", "C:\\Other_IT\\Anaconda\\lib\\site-packages\\sklearn\\linear_model\\sag.py:286: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n", " \"the coef_ did not converge\", ConvergenceWarning)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "time spent for training NN = 525.9357647895813 s\n" ] } ], "source": [ "# it can get lots of time to rain Neural Network\n", "start_lr = time.time()\n", "log_regr.fit(images_train,labels_train)\n", "end_lr = time.time()\n", "print ('time spent for training NN = ', end_lr - start_lr, ' s') \n", "# DataConversionWarning A column-vector y was passed when a 1d array was expected. \n", "# Please change the shape of y to (n_samples, ), for example using ravel().\n", "# y = column_or_1d(y, warn=True)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.9182\n" ] } ], "source": [ "score = log_regr.score(images_test,labels_test)\n", "print(score) # 0.9182 for LogisticRegression(solver='sag', multi_class='ovr', n_jobs=1)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Saving model to a file ... \n", "Model saved.\n" ] } ], "source": [ "#dump model to a file\n", "print ('Saving model to a file ... ')\n", "filename_for_log_regr = data_root + '\\\\finalized_model_log_regr_MNIST_60K_solver_sag_ovr.sav'\n", "pickle.dump(log_regr, open(filename_for_log_regr, 'wb'))\n", "print ('Model saved.')" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#check it with detection on real images\n", "def detect_digit_from_image(image_name_in_dataroot):\n", " my_gray = data_root + image_name_in_dataroot\n", " my_gray_data = imageio.imread(my_gray)\n", " plt.imshow(my_gray_data)\n", " print(my_gray_data.shape)\n", " nx_img, ny_img = my_gray_data.shape\n", " reshaped_my_gray_data = my_gray_data.reshape(nx_img*ny_img)\n", " print (reshaped_my_gray_data.shape)\n", " reshaped_2d_array = reshaped_my_gray_data.reshape(-784, 784)\n", " predicted = log_regr.predict(reshaped_2d_array)\n", " print (predicted)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(28, 28)\n", "(784,)\n", "[5]\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# PREDICT image with 5\n", "detect_digit_from_image('\\\\extracted_from_mnist\\\\image_five' + '.png') # 5" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(28, 28)\n", "(784,)\n", "[7]\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP8AAAD8CAYAAAC4nHJkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAADaVJREFUeJzt3X+MHPV5x/HPJ/b5iA9oMQTXNQ4ODUF1aHCki0kErRwR\nUiBBJkpCsVTLlShGLY2gitoiV1EttUopCkFuk0ZyghuDCNAGEFbipoJTWwuVOj6QsQHTmlCnsWt8\ngGltApxt/PSPG0cXuP3esb9mz8/7JZ1ud56ZnUfj+3hm97u7X0eEAOTzrrobAFAPwg8kRfiBpAg/\nkBThB5Ii/EBShB9IivADSRF+IKmZ3dzZLPfHSRro5i6BVN7QT3U4Rj2VdVsKv+3LJK2VNEPStyLi\nltL6J2lAF/qSVnYJoGBLDE153aYv+23PkPR1SZdLWiRpue1FzT4egO5q5Tn/EknPRcTzEXFY0r2S\nlrWnLQCd1kr450v6ybj7e6plP8f2KtvDtoePaLSF3QFop46/2h8R6yJiMCIG+9Tf6d0BmKJWwr9X\n0oJx98+qlgGYBloJ/1ZJ59p+n+1Zkq6RtLE9bQHotKaH+iLiqO0/kPRPGhvqWx8RT7etMwAd1dI4\nf0RskrSpTb0A6CLe3gskRfiBpAg/kBThB5Ii/EBShB9IivADSRF+ICnCDyRF+IGkCD+QFOEHkiL8\nQFKEH0iK8ANJEX4gKcIPJEX4gaQIP5AU4QeSIvxAUoQfSIrwA0kRfiApwg8kRfiBpAg/kBThB5Ii\n/EBSLc3Sa3u3pEOS3pR0NCIG29EUgM5rKfyVj0fES214HABdxGU/kFSr4Q9Jj9h+3PaqdjQEoDta\nvey/OCL22j5T0sO2n42IzeNXqP5TWCVJJ2l2i7sD0C4tnfkjYm/1e0TSg5KWTLDOuogYjIjBPvW3\nsjsAbdR0+G0P2D7l+G1Jn5T0VLsaA9BZrVz2z5X0oO3jj/OdiPhBW7oC0HFNhz8inpd0QRt7AdBF\nDPUBSRF+ICnCDyRF+IGkCD+QFOEHkmrHp/pSePm6jzWsvXfFc8Vtnx2ZW6wfHu0r1uffU67P3vNq\nw9qxbc8Ut0VenPmBpAg/kBThB5Ii/EBShB9IivADSRF+ICnG+afoj//oOw1rnx14pbzxr7S486Xl\n8u6jrzWsrX3x4y3ufPr64cjZDWsDt/1CcduZQ4+3u52ew5kfSIrwA0kRfiApwg8kRfiBpAg/kBTh\nB5JyRHRtZ6d6TlzoS7q2v3b66ecubFh76UPl/0NP21k+xq/8qov1WR/632L91vMfaFi79N2vF7f9\n/msnF+ufmt34uwJa9XocLta3jA4U60tPOtL0vt///euL9Q+s2tr0Y9dpSwzpYBwo/0FVOPMDSRF+\nICnCDyRF+IGkCD+QFOEHkiL8QFKTfp7f9npJn5Y0EhHnV8vmSLpP0kJJuyVdHRGTfKh9ehv47pZC\nrbXHPrW1zfU3v7S0Ye0vLlpY3ve/luccuHXp+5voaGpmvn6sWB/Yvq9YP33z/cX6r81qPN/B7N3l\nuRAymMqZ/9uSLnvLspslDUXEuZKGqvsAppFJwx8RmyUdeMviZZI2VLc3SLqqzX0B6LBmn/PPjYjj\n12QvSCrPRwWg57T8gl+MfTig4ZvXba+yPWx7+IhGW90dgDZpNvz7bc+TpOr3SKMVI2JdRAxGxGCf\n+pvcHYB2azb8GyWtrG6vlPRQe9oB0C2Tht/2PZIek3Se7T22r5V0i6RLbe+S9InqPoBpZNJx/ohY\n3qA0PT+YfwI6+sL+hrWB+xvXJOnNSR574LsvN9FRe+z/3Y8V6x+cVf7z/cqB8xrWFv7d88Vtjxar\nJwbe4QckRfiBpAg/kBThB5Ii/EBShB9Iiim6UZuZZy8o1r+2+mvFep9nFOv/sPYTDWun73usuG0G\nnPmBpAg/kBThB5Ii/EBShB9IivADSRF+ICnG+VGbZ/9wfrH+kf7yTNNPHy5PPz7nmdfecU+ZcOYH\nkiL8QFKEH0iK8ANJEX4gKcIPJEX4gaQY50dHjX7qIw1rT3zu9km2Ls/w9Hs33lisv/vffjjJ4+fG\nmR9IivADSRF+ICnCDyRF+IGkCD+QFOEHkpp0nN/2ekmfljQSEedXy9ZIuk7Si9VqqyNiU6eaxPT1\n35c3Pr+c7PI4/vL/urRYn/2DJ4v1KFYxlTP/tyVdNsHy2yNicfVD8IFpZtLwR8RmSQe60AuALmrl\nOf8XbG+3vd72aW3rCEBXNBv+b0g6R9JiSfsk3dZoRdurbA/bHj6i0SZ3B6Ddmgp/ROyPiDcj4pik\nb0paUlh3XUQMRsRg3yQf1ADQPU2F3/a8cXc/I+mp9rQDoFumMtR3j6Slks6wvUfSn0laanuxxkZT\ndku6voM9AuiAScMfEcsnWHxHB3rBNPSuU04p1lf8+qMNawePvVHcduTL5xTr/aNbi3WU8Q4/ICnC\nDyRF+IGkCD+QFOEHkiL8QFJ8dTdasmvNB4v1753xtw1ry3Z9trht/yaG8jqJMz+QFOEHkiL8QFKE\nH0iK8ANJEX4gKcIPJMU4P4r+77c/Wqxv/62/LtZ/dPRIw9qrf3VWcdt+7SvW0RrO/EBShB9IivAD\nSRF+ICnCDyRF+IGkCD+QFOP8yc2c/8vF+k1fuq9Y73f5T+iaJ1c0rL3nH/m8fp048wNJEX4gKcIP\nJEX4gaQIP5AU4QeSIvxAUpOO89teIOlOSXMlhaR1EbHW9hxJ90laKGm3pKsj4pXOtYpmeGb5n/iC\n7+0p1j9/8svF+t2HzizW536p8fnlWHFLdNpUzvxHJX0xIhZJ+qikG2wvknSzpKGIOFfSUHUfwDQx\nafgjYl9EPFHdPiRpp6T5kpZJ2lCttkHSVZ1qEkD7vaPn/LYXSvqwpC2S5kbE8e9ZekFjTwsATBNT\nDr/tkyXdL+mmiDg4vhYRobHXAybabpXtYdvDRzTaUrMA2mdK4bfdp7Hg3x0RD1SL99ueV9XnSRqZ\naNuIWBcRgxEx2Kf+dvQMoA0mDb9tS7pD0s6I+Oq40kZJK6vbKyU91P72AHTKVD7Se5GkFZJ22N5W\nLVst6RZJf2/7Wkk/lnR1Z1pESy44r1j+8zPvaunhv/7lzxfrv/jkYy09Pjpn0vBHxKOS3KB8SXvb\nAdAtvMMPSIrwA0kRfiApwg8kRfiBpAg/kBRf3X0CmLHoAw1rq+5t7b1Xi9bfUKwvvOvfW3p81Icz\nP5AU4QeSIvxAUoQfSIrwA0kRfiApwg8kxTj/CeDZ3z+tYe3K2Qcb1qbirH85XF4hJvz2NkwDnPmB\npAg/kBThB5Ii/EBShB9IivADSRF+ICnG+aeBN65cUqwPXXlboTq7vc3ghMGZH0iK8ANJEX4gKcIP\nJEX4gaQIP5AU4QeSmnSc3/YCSXdKmispJK2LiLW210i6TtKL1aqrI2JTpxrN7H8umlGsv3dm82P5\ndx86s1jvO1j+PD+f5p++pvImn6OSvhgRT9g+RdLjth+uardHxFc61x6ATpk0/BGxT9K+6vYh2zsl\nze90YwA66x0957e9UNKHJW2pFn3B9nbb621P+F1StlfZHrY9fESjLTULoH2mHH7bJ0u6X9JNEXFQ\n0jcknSNpscauDCZ8g3lErIuIwYgY7FN/G1oG0A5TCr/tPo0F/+6IeECSImJ/RLwZEcckfVNS+dMn\nAHrKpOG3bUl3SNoZEV8dt3zeuNU+I+mp9rcHoFOm8mr/RZJWSNphe1u1bLWk5bYXa2y0Z7ek6zvS\nIVryly8vKtYf+82FxXrs29HGbtBLpvJq/6OSPEGJMX1gGuMdfkBShB9IivADSRF+ICnCDyRF+IGk\nHF2cYvlUz4kLfUnX9gdksyWGdDAOTDQ0/zac+YGkCD+QFOEHkiL8QFKEH0iK8ANJEX4gqa6O89t+\nUdKPxy06Q9JLXWvgnenV3nq1L4nemtXO3s6OiPdMZcWuhv9tO7eHI2KwtgYKerW3Xu1Lordm1dUb\nl/1AUoQfSKru8K+ref8lvdpbr/Yl0Vuzaumt1uf8AOpT95kfQE1qCb/ty2z/h+3nbN9cRw+N2N5t\ne4ftbbaHa+5lve0R20+NWzbH9sO2d1W/J5wmrabe1tjeWx27bbavqKm3Bbb/2fYztp+2fWO1vNZj\nV+irluPW9ct+2zMk/aekSyXtkbRV0vKIeKarjTRge7ekwYiofUzY9m9IelXSnRFxfrXsVkkHIuKW\n6j/O0yLiT3qktzWSXq175uZqQpl542eWlnSVpN9Rjceu0NfVquG41XHmXyLpuYh4PiIOS7pX0rIa\n+uh5EbFZ0oG3LF4maUN1e4PG/ni6rkFvPSEi9kXEE9XtQ5KOzyxd67Er9FWLOsI/X9JPxt3fo96a\n8jskPWL7cdur6m5mAnOradMl6QVJc+tsZgKTztzcTW+ZWbpnjl0zM163Gy/4vd3FEbFY0uWSbqgu\nb3tSjD1n66XhminN3NwtE8ws/TN1HrtmZ7xutzrCv1fSgnH3z6qW9YSI2Fv9HpH0oHpv9uH9xydJ\nrX6P1NzPz/TSzM0TzSytHjh2vTTjdR3h3yrpXNvvsz1L0jWSNtbQx9vYHqheiJHtAUmfVO/NPrxR\n0srq9kpJD9XYy8/plZmbG80srZqPXc/NeB0RXf+RdIXGXvH/kaQ/raOHBn2dI+nJ6ufpunuTdI/G\nLgOPaOy1kWslnS5pSNIuSY9ImtNDvd0laYek7RoL2ryaertYY5f02yVtq36uqPvYFfqq5bjxDj8g\nKV7wA5Ii/EBShB9IivADSRF+ICnCDyRF+IGkCD+Q1P8DC8wZVCobNIoAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# PREDICT image with 7\n", "detect_digit_from_image('\\\\extracted_from_mnist\\\\image_seven' + '.png') # 7" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(28, 28)\n", "(784,)\n", "[8]\n" ] }, { "data": { "image/png": "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\nTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# PREDICT image with 8\n", "detect_digit_from_image('\\\\my_digits\\\\image_eight_2' + '.bmp') # 8" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(28, 28)\n", "(784,)\n", "[3]\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# PREDICT image with 8 again\n", "detect_digit_from_image('\\\\my_digits\\\\image_eight' + '.bmp') # 3 - it is a case with when logistic regression failures" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "YOU'VE DONE! LET'S DO SOME TRAIN WITH TENSORFLOW!\n" ] } ], "source": [ "print (\"YOU'VE DONE! LET'S DO SOME TRAIN WITH TENSORFLOW!\")" ] }, { "cell_type": "code", "execution_count": null, "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.0" } }, "nbformat": 4, "nbformat_minor": 2 }