{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "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 imageio\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 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": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found and verified D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\notMNIST_large.tar.gz\n", "Found and verified D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\notMNIST_small.tar.gz\n" ] } ], "source": [ "url = 'https://commondatastorage.googleapis.com/books1000/'\n", "last_percent_reported = None\n", "data_root = 'D:\\\\1_Workspaces\\\\UNDER_VCS\\\\github\\\\1_ML_NN\\\\python_with_math\\\\data' # Change me to store data elsewhere\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 5% 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", " 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 + 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\n", "\n", "train_filename = maybe_download('notMNIST_large.tar.gz', 247336696)\n", "test_filename = maybe_download('notMNIST_small.tar.gz', 8458043)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\notMNIST_large already present - Skipping extraction of D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\notMNIST_large.tar.gz.\n", "['D:\\\\1_Workspaces\\\\UNDER_VCS\\\\github\\\\1_ML_NN\\\\python_with_math\\\\data\\\\notMNIST_large\\\\A', 'D:\\\\1_Workspaces\\\\UNDER_VCS\\\\github\\\\1_ML_NN\\\\python_with_math\\\\data\\\\notMNIST_large\\\\B', 'D:\\\\1_Workspaces\\\\UNDER_VCS\\\\github\\\\1_ML_NN\\\\python_with_math\\\\data\\\\notMNIST_large\\\\C', 'D:\\\\1_Workspaces\\\\UNDER_VCS\\\\github\\\\1_ML_NN\\\\python_with_math\\\\data\\\\notMNIST_large\\\\D', 'D:\\\\1_Workspaces\\\\UNDER_VCS\\\\github\\\\1_ML_NN\\\\python_with_math\\\\data\\\\notMNIST_large\\\\E', 'D:\\\\1_Workspaces\\\\UNDER_VCS\\\\github\\\\1_ML_NN\\\\python_with_math\\\\data\\\\notMNIST_large\\\\F', 'D:\\\\1_Workspaces\\\\UNDER_VCS\\\\github\\\\1_ML_NN\\\\python_with_math\\\\data\\\\notMNIST_large\\\\G', 'D:\\\\1_Workspaces\\\\UNDER_VCS\\\\github\\\\1_ML_NN\\\\python_with_math\\\\data\\\\notMNIST_large\\\\H', 'D:\\\\1_Workspaces\\\\UNDER_VCS\\\\github\\\\1_ML_NN\\\\python_with_math\\\\data\\\\notMNIST_large\\\\I', 'D:\\\\1_Workspaces\\\\UNDER_VCS\\\\github\\\\1_ML_NN\\\\python_with_math\\\\data\\\\notMNIST_large\\\\J']\n", "D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\notMNIST_small already present - Skipping extraction of D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\notMNIST_small.tar.gz.\n", "['D:\\\\1_Workspaces\\\\UNDER_VCS\\\\github\\\\1_ML_NN\\\\python_with_math\\\\data\\\\notMNIST_small\\\\A', 'D:\\\\1_Workspaces\\\\UNDER_VCS\\\\github\\\\1_ML_NN\\\\python_with_math\\\\data\\\\notMNIST_small\\\\B', 'D:\\\\1_Workspaces\\\\UNDER_VCS\\\\github\\\\1_ML_NN\\\\python_with_math\\\\data\\\\notMNIST_small\\\\C', 'D:\\\\1_Workspaces\\\\UNDER_VCS\\\\github\\\\1_ML_NN\\\\python_with_math\\\\data\\\\notMNIST_small\\\\D', 'D:\\\\1_Workspaces\\\\UNDER_VCS\\\\github\\\\1_ML_NN\\\\python_with_math\\\\data\\\\notMNIST_small\\\\E', 'D:\\\\1_Workspaces\\\\UNDER_VCS\\\\github\\\\1_ML_NN\\\\python_with_math\\\\data\\\\notMNIST_small\\\\F', 'D:\\\\1_Workspaces\\\\UNDER_VCS\\\\github\\\\1_ML_NN\\\\python_with_math\\\\data\\\\notMNIST_small\\\\G', 'D:\\\\1_Workspaces\\\\UNDER_VCS\\\\github\\\\1_ML_NN\\\\python_with_math\\\\data\\\\notMNIST_small\\\\H', 'D:\\\\1_Workspaces\\\\UNDER_VCS\\\\github\\\\1_ML_NN\\\\python_with_math\\\\data\\\\notMNIST_small\\\\I', 'D:\\\\1_Workspaces\\\\UNDER_VCS\\\\github\\\\1_ML_NN\\\\python_with_math\\\\data\\\\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(data_root)\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": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAAAAABXZoBIAAABZ0lEQVR4nMWSPWuUQRSFn7u7UUHW\nZAV7wSqoYGVtYaMEbWxsBBGx8w9YqAj+AS3sREhtaxUNWlgIC4looRaSJiBidoWI2fed+1i82Q9k\nsfV0M885c5mZE0DYXj5/7uSxIwH48/vH9bUPdQhAh1NPh6YTpcPVM3QCIlq3fljqMqFZ6trB7Q4B\n7ftWddGcSLOufNgBblgVtZ4eW6s58iZxfLNrQLaqwR4AB5cWsgWwe5q7FjVdu9ADgN7FV6ZavEdf\ntfiyC0REAN11i2qfgerIFTrRJKPDiiPVndYigGyTza0x2UaApRb7fmY0Xoyhs9C/4Fz9Txj/gs6F\nwyZ3dC782uSvH8oYa/pCLxDaXn10YvLZkxmx/J42AIPdZi+/PPv0dnSgwXesUrNMa/Jro+liwuFV\n92pnC1YaZ0qw+KTOmWaaxSxa3IKI9pV3lTMavflsml4DokXv8uP+t33D740HC2efb+28vsQfU/It\nPYCuJtMAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Image(filename=data_root+'\\\\notMNIST_large\\\\A\\\\a2F6b28udHRm.png')" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAAAAABXZoBIAAAA0UlEQVR4nMWRzU0DQQyFv5l1VklA\n9BDKoAaulJCmkn7SRCQ64MaPtOudx2Em4EVoFXHh3TxP/vzGBjD2GhQ0aI8BmQWZgXmmlPBYyBhg\n3qqIyBTcwZ4gv+3Or9Est7vHmwJIGnVk3QWtOWqUZA5uzjTNsI63QNCRUjATXU3aaimY+iIsaHkJ\nlzHzmXPz15nV7LnziHvpK0EAw3ukgrb9t7kYqEw/nrt8VafS82kT75k/Hu6VaFc5sIodKw71KjUz\nFvE2phBIePxnamv4++L/w/wEH55ZPbAAdh4AAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Image(filename=data_root+'\\\\notMNIST_large\\\\A\\\\a3JvZWdlciAwNl81NS50dGY=.png')" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\notMNIST_large\\A.pickle already present - Skipping pickling.\n", "D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\notMNIST_large\\B.pickle already present - Skipping pickling.\n", "D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\notMNIST_large\\C.pickle already present - Skipping pickling.\n", "D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\notMNIST_large\\D.pickle already present - Skipping pickling.\n", "D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\notMNIST_large\\E.pickle already present - Skipping pickling.\n", "D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\notMNIST_large\\F.pickle already present - Skipping pickling.\n", "D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\notMNIST_large\\G.pickle already present - Skipping pickling.\n", "D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\notMNIST_large\\H.pickle already present - Skipping pickling.\n", "D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\notMNIST_large\\I.pickle already present - Skipping pickling.\n", "D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\notMNIST_large\\J.pickle already present - Skipping pickling.\n", "D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\notMNIST_small\\A.pickle already present - Skipping pickling.\n", "D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\notMNIST_small\\B.pickle already present - Skipping pickling.\n", "D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\notMNIST_small\\C.pickle already present - Skipping pickling.\n", "D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\notMNIST_small\\D.pickle already present - Skipping pickling.\n", "D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\notMNIST_small\\E.pickle already present - Skipping pickling.\n", "D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\notMNIST_small\\F.pickle already present - Skipping pickling.\n", "D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\notMNIST_small\\G.pickle already present - Skipping pickling.\n", "D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\notMNIST_small\\H.pickle already present - Skipping pickling.\n", "D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\notMNIST_small\\I.pickle already present - Skipping pickling.\n", "D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\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) ## it counts all files in the folder\n", " dataset = np.ndarray(shape=(len(image_files), image_size, image_size),\n", " dtype=np.float32) #it creates a 3d array\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 = (imageio.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, ValueError) 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: #for each letter's folder\n", " set_filename = folder + '.pickle' #create a file with appropriate letter's name\n", " dataset_names.append(set_filename) #add them to a returned set\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) #it loads a letter from folder to a 3D array\n", " try:\n", " with open(set_filename, 'wb') as f:\n", " pickle.dump(dataset, f, pickle.HIGHEST_PROTOCOL) #it dumps a 3D array to a file\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) # it creates 3D array for all letters in a train dataset\n", "test_datasets = maybe_pickle(test_folders, 1800)# it creates 3D array for all letters in a test dataset" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\notMNIST_large\\A.pickle\n", "============================================= adout an n-dimesional array for letter A ===============================\n", "3 \t (52909, 28, 28)\n", "============================================= point to print in a screen of image at index 0 =========================\n", "-0.484314\n", "============================================= array[0] of pixels of image at index 0 =================================\n", "[-0.5 -0.5 -0.5 -0.5 -0.48431373 -0.5\n", " -0.19019608 0.46862745 0.49215686 0.5 0.5 0.5 0.5\n", " 0.5 0.5 0.5 0.5 0.5 0.5\n", " 0.49215686 0.46862745 -0.19019608 -0.5 -0.48431373 -0.5 -0.5\n", " -0.5 -0.5 ]\n", "============================================= array[1] of pixels of image at index 0 =================================\n", "[-0.5 -0.5 -0.5 -0.48823529 -0.5 -0.30392158\n", " 0.43333334 0.5 0.49215686 0.5 0.5 0.5 0.5\n", " 0.5 0.5 0.5 0.5 0.5 0.5\n", " 0.49215686 0.5 0.43333334 -0.30392158 -0.5 -0.48823529\n", " -0.5 -0.5 -0.5 ]\n", "============================================= Image at index 0 =======================================================\n", "(28, 28) \n", " [[-0.5 -0.5 -0.5 -0.5 -0.48431373 -0.5\n", " -0.19019608 0.46862745 0.49215686 0.5 0.5 0.5 0.5\n", " 0.5 0.5 0.5 0.5 0.5 0.5\n", " 0.49215686 0.46862745 -0.19019608 -0.5 -0.48431373 -0.5 -0.5\n", " -0.5 -0.5 ]\n", " [-0.5 -0.5 -0.5 -0.48823529 -0.5 -0.30392158\n", " 0.43333334 0.5 0.49215686 0.5 0.5 0.5 0.5\n", " 0.5 0.5 0.5 0.5 0.5 0.5\n", " 0.49215686 0.5 0.43333334 -0.30392158 -0.5 -0.48823529\n", " -0.5 -0.5 -0.5 ]\n", " [-0.5 -0.5 -0.48823529 -0.5 -0.37843138 0.38627452\n", " 0.5 0.49215686 0.5 0.5 0.5 0.5 0.5\n", " 0.5 0.5 0.5 0.5 0.5 0.5 0.5\n", " 0.49215686 0.5 0.38627452 -0.37843138 -0.5 -0.48823529\n", " -0.5 -0.5 ]\n", " [-0.5 -0.49215686 -0.49607843 -0.43725491 0.31176472 0.5\n", " 0.48823529 0.5 0.5 0.5 0.5 0.5 0.5\n", " 0.5 0.5 0.5 0.5 0.5 0.5 0.5\n", " 0.5 0.48823529 0.5 0.31176472 -0.43725491 -0.49607843\n", " -0.49215686 -0.5 ]\n", " [-0.49607843 -0.49215686 -0.48431373 0.2254902 0.5 0.48431373\n", " 0.5 0.5 0.5 0.5 0.5 0.5 0.5\n", " 0.5 0.5 0.5 0.5 0.5 0.5 0.5\n", " 0.5 0.5 0.48431373 0.5 0.2254902 -0.48431373\n", " -0.49215686 -0.49607843]\n", " [-0.48431373 -0.5 0.12352941 0.5 0.48431373 0.5 0.5\n", " 0.5 0.5 0.5 0.5 0.5 0.5 0.5\n", " 0.5 0.5 0.5 0.5 0.5 0.5 0.5\n", " 0.5 0.5 0.48431373 0.5 0.12352941 -0.5\n", " -0.48431373]\n", " [-0.5 0.00980392 0.5 0.48431373 0.5 0.5 0.5\n", " 0.49607843 0.49215686 0.49215686 0.49215686 0.49215686 0.49215686\n", " 0.49215686 0.49215686 0.49215686 0.49215686 0.49215686 0.49215686\n", " 0.49215686 0.49607843 0.5 0.5 0.5 0.48431373\n", " 0.5 0.00980392 -0.5 ]\n", " [-0.06078431 0.5 0.48823529 0.5 0.5 0.5 0.5\n", " 0.5 0.5 0.5 0.5 0.5 0.5 0.5\n", " 0.5 0.5 0.5 0.5 0.5 0.5 0.5\n", " 0.5 0.5 0.5 0.5 0.48823529 0.5\n", " -0.06078431]\n", " [ 0.5 0.49607843 0.49607843 0.5 0.5 0.49607843\n", " 0.5 -0.14313726 -0.30784315 -0.29607844 -0.30784315 -0.30784315\n", " -0.30784315 -0.30784315 -0.30784315 -0.30784315 -0.30784315 -0.30784315\n", " -0.29607844 -0.30784315 -0.14313726 0.5 0.49607843 0.5 0.5\n", " 0.49607843 0.49607843 0.5 ]\n", " [ 0.5 0.5 0.5 0.5 0.5 0.49607843\n", " 0.5 -0.33529413 -0.5 -0.5 -0.5 -0.5 -0.5\n", " -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5\n", " -0.33529413 0.5 0.49607843 0.5 0.5 0.5 0.5\n", " 0.5 ]\n", " [ 0.5 0.5 0.5 0.5 0.5 0.49607843\n", " 0.5 -0.29215688 -0.49215686 -0.48039216 -0.49215686 -0.49215686\n", " -0.49215686 -0.49215686 -0.49215686 -0.49215686 -0.49215686 -0.49215686\n", " -0.48039216 -0.49215686 -0.29215688 0.5 0.49607843 0.5 0.5\n", " 0.5 0.5 0.5 ]\n", " [ 0.5 0.5 0.5 0.5 0.5 0.49607843\n", " 0.5 -0.30000001 -0.5 -0.48823529 -0.5 -0.5 -0.5\n", " -0.5 -0.5 -0.5 -0.5 -0.5 -0.48823529\n", " -0.5 -0.30000001 0.5 0.49607843 0.5 0.5 0.5\n", " 0.5 0.5 ]\n", " [ 0.5 0.5 0.5 0.5 0.5 0.49607843\n", " 0.5 -0.30000001 -0.5 -0.48823529 -0.5 -0.5 -0.5\n", " -0.5 -0.5 -0.5 -0.5 -0.5 -0.48823529\n", " -0.5 -0.30000001 0.5 0.49607843 0.5 0.5 0.5\n", " 0.5 0.5 ]\n", " [ 0.5 0.5 0.5 0.5 0.5 0.49607843\n", " 0.5 -0.29607844 -0.49607843 -0.48431373 -0.49607843 -0.49607843\n", " -0.49607843 -0.49607843 -0.49607843 -0.49607843 -0.49607843 -0.49607843\n", " -0.48431373 -0.49607843 -0.29607844 0.5 0.49607843 0.5 0.5\n", " 0.5 0.5 0.5 ]\n", " [ 0.49607843 0.5 0.5 0.5 0.5 0.49607843\n", " 0.5 -0.31960785 -0.5 -0.5 -0.5 -0.5 -0.5\n", " -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5\n", " -0.31960785 0.5 0.49607843 0.5 0.5 0.5 0.5\n", " 0.5 ]\n", " [ 0.5 0.49607843 0.5 0.5 0.5 0.49607843\n", " 0.5 -0.22156863 -0.40196079 -0.39019608 -0.40196079 -0.40196079\n", " -0.40196079 -0.40196079 -0.40196079 -0.40196079 -0.40196079 -0.40196079\n", " -0.39019608 -0.40588236 -0.2254902 0.5 0.49607843 0.5 0.5\n", " 0.5 0.5 0.5 ]\n", " [ 0.0372549 0.5 0.48823529 0.5 0.5 0.5 0.5\n", " 0.48039216 0.47647059 0.47647059 0.47647059 0.47647059 0.47647059\n", " 0.47647059 0.47647059 0.47647059 0.47647059 0.48039216 0.47647059\n", " 0.48431373 0.5 0.49607843 0.5 0.5 0.5 0.5\n", " 0.5 0.5 ]\n", " [-0.5 0.1 0.5 0.48431373 0.5 0.5 0.5\n", " 0.5 0.5 0.5 0.5 0.5 0.5 0.5\n", " 0.5 0.5 0.5 0.5 0.5 0.48039216\n", " 0.04509804 0.48431373 0.5 0.5 0.5 0.5 0.5\n", " 0.5 ]\n", " [-0.48823529 -0.48823529 0.21372549 0.5 0.48431373 0.5 0.5\n", " 0.49607843 0.49607843 0.49607843 0.49607843 0.49607843 0.49607843\n", " 0.49607843 0.49607843 0.49607843 0.49215686 0.48823529 0.5\n", " -0.16666667 -0.37450981 0.5 0.49607843 0.5 0.5 0.5\n", " 0.5 0.5 ]\n", " [-0.49215686 -0.49607843 -0.44509804 0.30392158 0.5 0.48823529\n", " 0.5 0.5 0.5 0.5 0.5 0.5 0.5\n", " 0.5 0.5 0.49607843 0.48823529 0.5 -0.07254902\n", " -0.5 -0.28431374 0.5 0.49607843 0.5 0.5 0.5\n", " 0.5 0.5 ]\n", " [-0.5 -0.49215686 -0.5 -0.38235295 0.37843138 0.5\n", " 0.49215686 0.5 0.5 0.5 0.5 0.5 0.5\n", " 0.5 0.49607843 0.48431373 0.5 -0.04509804 -0.5\n", " -0.49215686 -0.30000001 0.5 0.49607843 0.5 0.5 0.5\n", " 0.5 0.5 ]\n", " [-0.5 -0.5 -0.48823529 -0.5 -0.31176472 0.43725491\n", " 0.49607843 0.49215686 0.5 0.5 0.5 0.5 0.5\n", " 0.49607843 0.48823529 0.5 -0.00196078 -0.5 -0.47647059\n", " -0.5 -0.30000001 0.5 0.49607843 0.5 0.5 0.5\n", " 0.5 0.5 ]\n", " [-0.5 -0.5 -0.5 -0.48431373 -0.5 -0.22156863\n", " 0.48431373 0.5 0.49607843 0.5 0.5 0.5 0.5\n", " 0.49215686 0.5 0.0372549 -0.5 -0.48823529 -0.48823529\n", " -0.5 -0.30000001 0.48823529 0.49215686 0.5 0.5 0.5\n", " 0.5 0.5 ]\n", " [-0.5 -0.5 -0.5 -0.5 -0.48431373 -0.5\n", " -0.11960784 0.48431373 0.5 0.5 0.5 0.5 0.5\n", " 0.5 0.07647059 -0.5 -0.48431373 -0.49607843 -0.48823529\n", " -0.5 -0.29607844 0.5 0.5 0.48431373 0.49607843\n", " 0.5 0.5 0.5 ]\n", " [-0.5 -0.5 -0.5 -0.5 -0.5 -0.49215686\n", " -0.5 -0.37450981 -0.35490197 -0.35882354 -0.35490197 -0.35490197\n", " -0.35490197 -0.35490197 -0.5 -0.49607843 -0.49607843 -0.5\n", " -0.49607843 -0.49607843 -0.46470588 -0.00980392 0.4254902 0.5 0.5\n", " 0.48823529 0.5 0.5 ]\n", " [-0.5 -0.5 -0.5 -0.5 -0.5 -0.5\n", " -0.49607843 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5\n", " -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5\n", " -0.5 -0.5 -0.37450981 0.08039216 0.46862745 0.5 0.5\n", " 0.49215686]\n", " [-0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5\n", " -0.49215686 -0.49215686 -0.49215686 -0.49215686 -0.49215686 -0.49215686\n", " -0.49215686 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5\n", " -0.5 -0.48823529 -0.5 -0.5 -0.34313726 0.12352941\n", " 0.48039216 0.5 ]\n", " [-0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5\n", " -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5\n", " -0.5 -0.5 -0.5 -0.5 -0.5 -0.5 -0.5\n", " -0.5 -0.49215686 -0.48823529 -0.5 -0.5 -0.24509804\n", " 0.24509804]]\n", "============================================= Full set of images =====================================================\n" ] } ], "source": [ "# it shows an inside structure of the dataset\n", "a_picle_filename = train_datasets[0]\n", "print (a_picle_filename)\n", "input = open(a_picle_filename, 'rb')\n", "_3Darray_A = pickle.load(input)\n", "input.close()\n", "print ('============================================= adout an n-dimesional array for letter A ===============================')\n", "print (_3Darray_A.ndim, '\\t', _3Darray_A.shape)\n", "print ('============================================= point to print in a screen of image at index 0 =========================')\n", "print (_3Darray_A[0][0][4])\n", "print ('============================================= array[0] of pixels of image at index 0 =================================')\n", "print (_3Darray_A[0][0])\n", "print ('============================================= array[1] of pixels of image at index 0 =================================')\n", "print (_3Darray_A[0][1])\n", "print ('============================================= Image at index 0 =======================================================')\n", "print (_3Darray_A[0].shape, '\\n', _3Darray_A[0]) #28 * 28 features\n", "print ('============================================= Full set of images =====================================================')\n", "#print (_3Darray_A)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 = (28, 28)\n", "1 = (28, 28)\n", "2 = (28, 28)\n", "3 = (28, 28)\n", "4 = (28, 28)\n", "5 = (28, 28)\n", "6 = (28, 28)\n", "7 = (28, 28)\n", "8 = (28, 28)\n", "9 = (28, 28)\n", "D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\notMNIST_large\\B.pickle\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "C:\\Other_IT\\Anaconda\\lib\\site-packages\\imageio\\core\\util.py:104: UserWarning: Conversion from float32 to uint8, range [-0.5, 0.5]\n", " 'range [{2}, {3}]'.format(dtype_str, out_type.__name__, mi, ma))\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "0 = (28, 28)\n", "1 = (28, 28)\n", "2 = (28, 28)\n", "3 = (28, 28)\n", "4 = (28, 28)\n", "5 = (28, 28)\n", "6 = (28, 28)\n", "7 = (28, 28)\n", "8 = (28, 28)\n", "9 = (28, 28)\n" ] } ], "source": [ "# here is pictures from A-picle written to a folder\n", "for i in range (10):\n", " x = _3Darray_A[i]\n", " print (i, \" = \", x.shape)\n", " imageio.imwrite(data_root + '\\\\imageio\\\\picle_A_' + str(i) + '.png', x[:])\n", "\n", "# here is pictures from B-picle written to a folder\n", "b_picle_filename = train_datasets[1]\n", "print (b_picle_filename)\n", "input = open(b_picle_filename, 'rb')\n", "_3Darray_B = pickle.load(input)\n", "input.close()\n", "for i in range (10):\n", " x = _3Darray_B[i]\n", " print (i, \" = \", x.shape)\n", " imageio.imwrite(data_root + '\\\\imageio\\\\picle_B_' + str(i) + '.png', x[:])" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# here is a picture from pilce which is shown direct here:\n", "y = _3Darray_A[0]\n", "plt.imshow(y)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP8AAAD8CAYAAAC4nHJkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEQBJREFUeJzt3XuMXOV5x/Hfs+u1Xduk4uo6xsU42AiDGlNtHUpQC6IE\ncymQFBBISRyVYmhoyiWVQCQVtJEqVBFSp6K0JnExbQJJGghuRRuBFRWl4bbcDAYSU8dcLGObixou\ntb2Xp3/sIV3Mnvcd75mZc9bP9yNZOzvPnJlnz5yf5/Kec15zdwGIp6fuBgDUg/ADQRF+ICjCDwRF\n+IGgCD8QFOEHgiL8QFCEHwhqSjcfbKpN8+ma2c2H/H9m6XpmT8fhA8v7Xjh3W3LZXqUf2zJ1jM+V\nec4S9Y1bZieX7X39nfSDV9yeOmWn3tFu39XSBlUp/Ga2TNJKSb2SvuHuN6RuP10z9TE7ucpDTpj1\nTU3WfXB3sv7mWb9dWrv3Kzcml/3VnunJep/1JusY36APJ+v/M7KztHb6n1+ZXHb/2x5M1qtuT53y\nsK9r+bYTfttvZr2SbpZ0mqTFki40s8UTvT8A3VXlM/9SSS+4+yZ33y3pTklnt6ctAJ1WJfxzJb08\n5vdXiuvex8xWmNmAmQ0MaleFhwPQTh3/tt/dV7l7v7v392lapx8OQIuqhH+LpHljfj+0uA7AJFAl\n/I9KWmhmh5vZVEkXSFrbnrYAdNqEh/rcfcjM/kTSDzU61Lfa3Te0rbO9ZFPSf0pu6GX4pN9M1v/x\n+ptKawf1pvddyA1JoTNSz0vq+ZSky1+8LFnv/dHjyXp2exwaSta7odI4v7vfK+neNvUCoIvYvRcI\nivADQRF+ICjCDwRF+IGgCD8QVFeP568qNXaaGzftXbwoWf/TW7+drB899VdKa7lxfA7Z7Yzcek09\nL6nnU5KuzGwPN591VrI+/OzPkvUq23K78MoPBEX4gaAIPxAU4QeCIvxAUIQfCKpZQ3096aEbHy4f\nuumdfUhy2ePvXJ+snzGj/EyvkrTLB0tr06wvuSzqkRoKTD2fknTGjPR9P5HZnn5yyq8n68Pbd5QX\nMznQSHsOEeeVHwiK8ANBEX4gKMIPBEX4gaAIPxAU4QeC6v44f25q49SiU8rH06d/Lz0l8pcPej5Z\nf3ckfWrvGT3pWVkxueT2zchtD7nt6VPfm5esv3ty+eOn9meRlM7QXswMzis/EBThB4Ii/EBQhB8I\nivADQRF+ICjCDwRVaZzfzDZLekvSsKQhd+/PLJAcq89No/3Sd48qrT17xD8nl2UcH3sjtz3ktqe7\njrgvWV98x6dLa/POfSa5rPUlehtsfT+aduzkc5K7v9aG+wHQRbztB4KqGn6XdL+ZPWZmK9rREIDu\nqPq2/wR332Jmh0i6z8yed/cHxt6g+E9hhSRNV+bEaAC6ptIrv7tvKX5ul3S3pKXj3GaVu/e7e3+f\nTa/ycADaaMLhN7OZZrbfe5clfUJS+mtKAI1R5W3/bEl32+jhhVMkfdvd/6MtXQHouAmH3903Sfro\nXi6UHMvfuPK45OKbjv/70lqd4/jDPpKsj+zNQdZomx6Vj3n3WrXvuqvuB/Ds8eX7pSxYeWly2YWX\nP1Re9Na3NYb6gKAIPxAU4QeCIvxAUIQfCIrwA0F19dTduz88Uy9dcnxpfdN5f5dcPjWtcp2H5OaG\njTITLmMflNseU9vypvPKh7Ql6ag3P19a2/0PiWHAPfDKDwRF+IGgCD8QFOEHgiL8QFCEHwiK8ANB\nme/FIYBV9X90uj/yw/Kpi3OHxqZUPUQz99ip+z/2r8rHXSXpwGd2Juvemz7dsg3HPCS46np5/Zjy\nM0c9cW16n5Iq20MrOrWtLz31ZQ08tbOl83fzyg8ERfiBoAg/EBThB4Ii/EBQhB8IivADQXX1eP6c\nqmOndTlk4O30DR5a351G8D6H7PyNulso1YRtvf4OANSC8ANBEX4gKMIPBEX4gaAIPxAU4QeCyo7z\nm9lqSWdK2u7uxxTXHSDpO5LmS9os6Xx3f7NzbTbb4Ky+ZL2vJ33mfutLPw0+OLTXPe0Lqq6X3PMS\nXSuv/LdJWrbHdddIWufuCyWtK34HMIlkw+/uD0h6Y4+rz5a0pri8RtI5be4LQIdN9DP/bHffWlx+\nVdLsNvUDoEsqf+HnoycBLD2ZmpmtMLMBMxvY8fpw1YcD0CYTDf82M5sjScXP7WU3dPdV7t7v7v0H\nH8iUlUBTTDT8ayUtLy4vl3RPe9oB0C3Z8JvZHZIelHSkmb1iZhdJukHSKWa2UdLvFb8DmESy4/zu\nfmFJ6eQ29zJpWe4U7COZ7zqGM6dZzy2/r6q4XrLPS3Ds4QcERfiBoAg/EBThB4Ii/EBQhB8IivAD\nQRF+ICjCDwRF+IGgCD8QFOEHgiL8QFCEHwiqUVN0T1qZI09lmRvkpmvOLb+vqrpegq62VvHKDwRF\n+IGgCD8QFOEHgiL8QFCEHwiK8ANBdXWc3+Ua9vLzKffmxnUbqmdX5tTaXjqb2Wh5cHcbu9l3VF0v\n2ecluMmZNgCVEX4gKMIPBEX4gaAIPxAU4QeCIvxAUNlxfjNbLelMSdvd/ZjiuuslXSxpR3Gza939\n3ux9yZJj+al9AKTm7gfwzqHTk/X9F8xP1n1Kb7JuQzHHq7PrZXAoWX9zbvp5ia6VNN0madk413/N\n3ZcU/7LBB9As2fC7+wOS3uhCLwC6qMr76C+Y2XozW21m+7etIwBdMdHw3yJpgaQlkrZK+mrZDc1s\nhZkNmNnAjtdjfnYFmmhC4Xf3be4+7O4jkm6VtDRx21Xu3u/u/QcfmP4CB0D3TCj8ZjZnzK+flPRM\ne9oB0C2tDPXdIelESQeZ2SuSrpN0opktkeSSNku6pIM9AugA88yx5u007bBD/de+dHlp/ednrUou\nv8sHy+/b+ibcV1Vvj+xM1ofVvXU8mfRmTqyfW299Sn+MnNEztfy+J+k+JTlLT31ZA0/tbGnGgsn5\nFwKojPADQRF+ICjCDwRF+IGgCD8QVFdP3T3tpXe16NJHSusLP/S55PIbT7yttPbuSPo0z6lhn6pm\n9XDoaB1yQ6yH/+vFpbUNZ9ycXHaGdW57aQpe+YGgCD8QFOEHgiL8QFCEHwiK8ANBEX4gqK6O88sk\nm1L+kB/5bPqcIGfef1pp7d8W/Xty2U7uB5A7PDSykcRhuSNKr7fcYdq/+5dXJutH/Vf5eWdn/H76\n+d5XD/kda/L/BQAmhPADQRF+ICjCDwRF+IGgCD8QFOEHguruOL9LPpI4HXNmbHXk3PKx+uvWHZ1c\n9i8O3pCsp04LLqXHnPeFMd+Jyo2Hp8byc+P4i2/5fLI+b9VPkvX/PbU/WY8u7lYLBEf4gaAIPxAU\n4QeCIvxAUIQfCIrwA0Flx/nNbJ6k2yXNluSSVrn7SjM7QNJ3JM2XtFnS+e7+ZvYRR4bLaz3pKZeH\nX3u9tPboBYuTy/5g7YvJ+jkz307WB7287z5L9z2Z5cbxd/lQsp46T8KRq/84uez8r6TH8XPbS88g\nU6OntPLKPyTpi+6+WNJxki4zs8WSrpG0zt0XSlpX/A5gksiG3923uvvjxeW3JD0naa6ksyWtKW62\nRtI5nWoSQPvt1Wd+M5sv6VhJD0ua7e5bi9KrGv1YAGCSaDn8ZjZL0vclXeHuvxhbc3eXxj9Zm5mt\nMLMBMxsY1K5KzQJon5bCb2Z9Gg3+t9z9ruLqbWY2p6jPkbR9vGXdfZW797t7f5+mtaNnAG2QDb+Z\nmaRvSnrO3W8aU1oraXlxebmke9rfHoBOaeWQ3o9L+oykp83syeK6ayXdIOm7ZnaRpBclnV+5m9Qw\noNKn/R5+bmNy2Zv/6Lxk/cg16SmbF/WVT8OdGgaUmj0UmBvKG1L6b8ud8vwjd15aWjviyw8ml+2Z\nnp76fGRneopupGXD7+4/lmQl5ZPb2w6AbmEPPyAowg8ERfiBoAg/EBThB4Ii/EBQ3T11d0U+VH74\nqPWlx5t7/vOJZP2ia65K1u+/8eultdxYd5One05NoS3lT699+NoVyfqiqx4qraX225DSz3dVuVO1\n92ReF5u750breOUHgiL8QFCEHwiK8ANBEX4gKMIPBEX4gaAm1Th/ig+WT98t5fcD2O/O8vFoSTru\nw1eU1h666m+Sy+b2A6hT7lwDC+77w2R90aWPJOup9e5D6bF26604ml52ILry+y/kvDuS3t6mWTpa\nTZjWvf4OANSC8ANBEX4gKMIPBEX4gaAIPxAU4QeCstGZtrrjQ3aAf8waerbvzHTPqTkFeo8+Mr3o\n1PSYr2WeA7fEgHWH+RMb0jeo0ltu26v4d/fMmlVa23jd0cll/+UPVibrS6ZVm30qdT6BKvsgLD31\nZQ08tbOlFccrPxAU4QeCIvxAUIQfCIrwA0ERfiAowg8ElR3nN7N5km6XNFuSS1rl7ivN7HpJF0va\nUdz0Wne/N3VfjR7nz0mNOXdxXwl0R27fjeevnpmsP3LS3ybrB/Wml08Z9PJ9To5ftkWPPbWrpXH+\nVk7mMSTpi+7+uJntJ+kxM7uvqH3N3W9s5YEANEs2/O6+VdLW4vJbZvacpLmdbgxAZ+3VZ34zmy/p\nWEkPF1d9wczWm9lqM9u/ZJkVZjZgZgOD2lWpWQDt03L4zWyWpO9LusLdfyHpFkkLJC3R6DuDr463\nnLuvcvd+d+/vU7X9oQG0T0vhN7M+jQb/W+5+lyS5+zZ3H3b3EUm3SlrauTYBtFs2/GZmkr4p6Tl3\nv2nM9XPG3OyTkp5pf3sAOqWVb/s/Lukzkp42syeL666VdKGZLdHo8N9mSZd0pMOmSA3n5Q4HnswS\nhzJPZrnpwYc3/DRZX/jZ9P1/+rcuTdZfurp8e3rkuG8kl53VM720Zqnzle+hlW/7f6zxz4CeHNMH\n0Gzs4QcERfiBoAg/EBThB4Ii/EBQhB8Iap+ZortW++hY+L7Mh4bSN8jsu2E96fF0f/TpZH3eueW1\n0z51eXLZw/6sfB+En+/+QXLZsXjlB4Ii/EBQhB8IivADQRF+ICjCDwRF+IGgujpFt5ntkPTimKsO\nkvRa1xrYO03tral9SfQ2Ue3s7TB3P7iVG3Y1/B94cLMBd++vrYGEpvbW1L4kepuounrjbT8QFOEH\ngqo7/KtqfvyUpvbW1L4kepuoWnqr9TM/gPrU/coPoCa1hN/MlpnZT83sBTO7po4eypjZZjN72sye\nNLOBmntZbWbbzeyZMdcdYGb3mdnG4ue406TV1Nv1ZralWHdPmtnpNfU2z8x+ZGbPmtkGM7u8uL7W\ndZfoq5b11vW3/WbWK+lnkk6R9IqkRyVd6O7PdrWREma2WVK/u9c+JmxmvyPpbUm3u/sxxXV/LekN\nd7+h+I9zf3e/uiG9XS/p7bpnbi4mlJkzdmZpSedI+pxqXHeJvs5XDeutjlf+pZJecPdN7r5b0p2S\nzq6hj8Zz9wckvbHH1WdLWlNcXqPRjafrSnprBHff6u6PF5ffkvTezNK1rrtEX7WoI/xzJb085vdX\n1Kwpv13S/Wb2mJmtqLuZccwupk2XpFclza6zmXFkZ27upj1mlm7MupvIjNftxhd+H3SCuy+RdJqk\ny4q3t43ko5/ZmjRc09LMzd0yzszSv1TnupvojNftVkf4t0iaN+b3Q4vrGsHdtxQ/t0u6W82bfXjb\ne5OkFj+319zPLzVp5ubxZpZWA9Zdk2a8riP8j0paaGaHm9lUSRdIWltDHx9gZjOLL2JkZjMlfULN\nm314raTlxeXlku6psZf3acrMzWUzS6vmdde4Ga/dvev/JJ2u0W/8/1vSl+rooaSvBZKeKv5tqLs3\nSXdo9G3goEa/G7lI0oGS1knaKOl+SQc0qLd/kvS0pPUaDdqcmno7QaNv6ddLerL4d3rd6y7RVy3r\njT38gKD4wg8IivADQRF+ICjCDwRF+IGgCD8QFOEHgiL8QFD/B+UuSPhnmvJDAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# here is a real image as seen at the time when it was read and written to a 3dArray. Notice it the same as previous.\n", "image_data = (imageio.imread(data_root + '\\\\notMNIST_large\\\\A\\\\a29ydW5pc2hpLnR0Zg==.png').astype(float) - \n", " pixel_depth / 2) / pixel_depth\n", "plt.imshow(image_data)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "====================== merging =======================================\n", "valid_size 10000 \n", "\n", "train_size 200000 \n", " num_classes 10 \n", "\n", "vsize_per_class 1000 \n", " tsize_per_class 20000 \n", "\n", "\n", "====================== merging =======================================\n", "valid_size 0 \n", "\n", "train_size 10000 \n", " num_classes 10 \n", "\n", "vsize_per_class 0 \n", " tsize_per_class 1000 \n", "\n", "\n", "Training: (200000, 28, 28) (200000,)\n", "Validation: (10000, 28, 28) (10000,)\n", "Testing: (10000, 28, 28) (10000,)\n" ] } ], "source": [ "#it creates an empty n-dimensional arrays\n", "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", "# it creates a single 3dArray from all GIVEN picle files\n", "def merge_datasets(pickle_files, train_size, valid_size=0):\n", " print ('====================== merging =======================================')\n", " num_classes = len(pickle_files)\n", "\n", " valid_dataset, valid_labels = make_arrays(valid_size, image_size) #empty array\n", " train_dataset, train_labels = make_arrays(train_size, image_size) #empty array\n", "\n", " vsize_per_class = valid_size // num_classes\n", " tsize_per_class = train_size // num_classes\n", "\n", " print ('valid_size ', valid_size, '\\n')\n", " print ('train_size ', train_size, '\\n', 'num_classes', num_classes, '\\n')\n", " print ('vsize_per_class ', vsize_per_class, '\\n', 'tsize_per_class', tsize_per_class, '\\n\\n')\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", "\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", "# it returns 4 objects!!\n", " return valid_dataset, valid_labels, train_dataset, train_labels\n", " \n", "#SUBJECT TO CHANGE accordingly to task 6 \n", "train_size = 200000\n", "valid_size = 10000\n", "test_size = 10000\n", "\n", "# it uses all 4 objects\n", "valid_dataset, valid_labels, train_dataset, train_labels = merge_datasets(train_datasets, train_size, valid_size)\n", "\n", "# it uses only 2 last objects\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": "code", "execution_count": 12, "metadata": { "collapsed": false }, "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": "code", "execution_count": 13, "metadata": { "collapsed": false }, "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": [ "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": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# it dumps a big 3D array to a big file. Note - each time we have a RANDOMLY SHUFFLED array \n", "# so we HAVE TO dump it without checking\n", "\n", "pickle_file = os.path.join(data_root, 'notMNIST.pickle')\n", "\n", "def dumpBigShuffledArray():\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": 15, "metadata": { "collapsed": false }, "outputs": [], "source": [ "dumpBigShuffledArray()\n", "\n", "# but if you want to skip - just jump to the next cell" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Compressed pickle size: 690800506\n", "D:\\1_Workspaces\\UNDER_VCS\\github\\1_ML_NN\\python_with_math\\data\\notMNIST.pickle already present - Skipping pickling.\n" ] } ], "source": [ "# you can check the file existance\n", "# don't worry to run this cell just because it cheks a file firstly\n", "\n", "if os.path.exists(pickle_file):\n", " # You may override by setting force=True.\n", " statinfo = os.stat(pickle_file)\n", " print('Compressed pickle size:', statinfo.st_size)\n", " print('%s already present - Skipping pickling.' % pickle_file) \n", "else:\n", " dumpBigShuffledArray()" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#it checks a picture from a big 3dArray. IT ALWAYS WILL BE A DIFFERENT PICTURE.\n", "input = open(pickle_file, 'rb')\n", "_3Darray_BIG = pickle.load(input)\n", "input.close()\n", "train_dataset_my = _3Darray_BIG['train_dataset']\n", "img_overlapped = train_dataset_my[10]\n", "plt.imshow(img_overlapped)\n", "# HINT - use it as picture to predict" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#log_regr = LogisticRegression(penalty='l2', dual=False, tol=0.0001, C=1.0, fit_intercept=True, \n", " #intercept_scaling=1, class_weight=None, random_state=None, solver='liblinear', \n", " #max_iter=100, multi_class='ovr', verbose=0, warm_start=False, n_jobs=1);\n", "log_regr = LogisticRegression(solver='sag', n_jobs=1);" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(200000, 784)\n" ] } ], "source": [ "#it reshapes 3-rd dimensional array to 2D with 784 features (why??)\n", "nsamples, nx, ny = train_dataset.shape\n", "train_dataset_reshaped = train_dataset.reshape((nsamples,nx*ny)) #image 28x28 pixels -> 784 pixels\n", "print (train_dataset_reshaped.shape)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(10000, 784)\n" ] } ], "source": [ "nsamples_t, nx_t, ny_t = test_dataset.shape\n", "test_dataset_reshaped = test_dataset.reshape((nsamples_t,nx_t*ny_t))\n", "print (test_dataset_reshaped.shape)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "NN was trained\n" ] } ], "source": [ "# it can get lots of time to rain Neural Network\n", "log_regr.fit(train_dataset_reshaped,train_labels);\n", "print (\"NN was trained\") #TODO measure time and other resource" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(10000, 784)\n", "0.8244\n" ] } ], "source": [ "#so now we can check how well NN was trained\n", "#we will use it to pick a letter accordingly to a predicted index\n", "array_letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']; \n", "#reshaping validation dataset\n", "nsamples, nx, ny = valid_dataset.shape\n", "valid_dataset_reshaped = valid_dataset.reshape((nsamples,nx*ny))\n", "print (valid_dataset_reshaped.shape)\n", "score = log_regr.score(valid_dataset_reshaped, valid_labels);\n", "print (score); \n", "#for default configuration of LogisticRegression: \n", "# 0.804 for 10000 samples, 0.8273 for 200000 samples, 0.8273 for 500000 samples\n", "# for LogisticRegression(solver='sag') 0.8244 for 200000 samples" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(10000, 784)\n", "0.8932\n" ] } ], "source": [ "nsamples_t, nx_t, ny_t = test_dataset.shape\n", "test_dataset_reshaped = test_dataset.reshape((nsamples_t,nx_t*ny_t))\n", "print (test_dataset_reshaped.shape)\n", "score = log_regr.score(test_dataset_reshaped, test_labels)\n", "print(score)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(784,)\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#read a real image with letter A and reshape it for predicting\n", "image_data_1 = imageio.imread(data_root + '\\\\notMNIST_large\\\\A\\\\a29ydW5pc2hpLnR0Zg==.png').astype(float);\n", "nx_img, ny_img = image_data_1.shape;\n", "reshaped_image = image_data_1.reshape(nx_img*ny_img); #reshape 2D array to 1D array\n", "plt.imshow(image_data_1);\n", "print (reshaped_image.shape);" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " index_of_letter: 6 \n", " letter is: g\n" ] } ], "source": [ "res = reshaped_image.reshape(-784, 784);\n", "predicted = log_regr.predict(res);\n", "index_of_letter = predicted[0]\n", "print (' index_of_letter: ', index_of_letter, '\\n', 'letter is: ', array_letters[index_of_letter])" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(784,)\n" ] }, { "data": { "image/png": "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\nRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#read a real image for letter B and reshape it for predicting\n", "image_data_2 = imageio.imread(data_root + '\\\\imageio\\\\picle_B_9.png').astype(float);\n", "nx_img, ny_img = image_data_2.shape;\n", "reshaped_image_2 = image_data_2.reshape(nx_img*ny_img);\n", "plt.imshow(image_data_2);\n", "print (reshaped_image_2.shape);" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " index_of_letter: 1 \n", " letter is: b\n" ] } ], "source": [ "res_2 = reshaped_image_2.reshape(-784, 784);\n", "predicted_2 = log_regr.predict(res_2);\n", "index_of_letter = predicted_2[0]\n", "print (' index_of_letter: ', index_of_letter, '\\n', 'letter is: ', array_letters[index_of_letter])" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " index_of_letter: 7 \n", " letter is: h\n" ] } ], "source": [ "# check it with img_overlapped\n", "res_3 = img_overlapped.reshape(-784, 784);\n", "predicted_3 = log_regr.predict(res_3);\n", "index_of_letter = predicted_3[0]\n", "print (' index_of_letter: ', index_of_letter, '\\n', 'letter is: ', array_letters[index_of_letter])" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(784,)\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#check it with image from dataset\n", "image_data_4 = imageio.imread(data_root+'\\\\notMNIST_large\\\\F\\\\a3JvZWdlciAwNV81NS50dGY=.png').astype(float);\n", "nx_img4, ny_img4 = image_data_4.shape;\n", "reshaped_image_4 = image_data_4.reshape(nx_img4*ny_img4);\n", "plt.imshow(image_data_4);\n", "print (reshaped_image_4.shape);" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " index_of_letter: 5 \n", " letter is: f\n" ] } ], "source": [ "res_4 = reshaped_image_4.reshape(-784, 784)\n", "predicted_4 = log_regr.predict(res_4)\n", "index_of_letter = predicted_4[0]\n", "print (' index_of_letter: ', index_of_letter, '\\n', 'letter is: ', array_letters[index_of_letter])" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# save the model to disk\n", "filename_for_log_regr = data_root + '\\\\finalized_model_log_regr_200K_samples_solver_sag.sav'\n", "pickle.dump(log_regr, open(filename_for_log_regr, 'wb'))" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.8244\n" ] } ], "source": [ "# load the model from disk\n", "loaded_model = pickle.load(open(filename_for_log_regr, 'rb'))\n", "result = loaded_model.score(valid_dataset_reshaped, valid_labels)\n", "print(result)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(28, 28, 4)\n" ] } ], "source": [ "#read a real image for letter which has been prepared by me:\n", "letter_root_name = '\\\\my_letters\\\\my_H_28_28_again'\n", "my_letter = data_root + letter_root_name + '.png'\n", "my_letter_gray = data_root + letter_root_name + '_gray' + '.png'\n", "\n", "image_data = imageio.imread(my_letter);\n", "print(image_data.shape)" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(28, 28)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "C:\\Other_IT\\Anaconda\\lib\\site-packages\\imageio\\core\\util.py:104: UserWarning: Conversion from float64 to uint8, range [0.0, 255.0]\n", " 'range [{2}, {3}]'.format(dtype_str, out_type.__name__, mi, ma))\n" ] } ], "source": [ "imageio.imwrite(my_letter_gray, image_data[:, :, 0])\n", "image_data_gray = imageio.imread(my_letter_gray).astype(float);\n", "print(image_data_gray.shape)" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(784,)\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP8AAAD8CAYAAAC4nHJkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAACzNJREFUeJzt3V+opIV5x/Hvr3ZdicmFJumyNVIj2IKEdAOHbSFSUmxS\nI4U1N5K9CBsQNhdJaCAXlfSiXkppEnJRApsq2ZTUpJCIXkhFl4IEingUq2tso5UNcbvuJjUQ01L/\n5enFeU2P6/nnOe/MO2ef7wcOZ+adOed9mLPffWfmnZk3VYWkfn5j6gEkTcP4paaMX2rK+KWmjF9q\nyvilpoxfasr4paaMX2rqN+e5souzty7h0nmuUmrlf/lvXqmXs5Xr7ij+JDcAXwMuAv6uqm7f6PqX\ncCl/kOt3skpJG3i4Tmz5utu+25/kIuBvgY8D1wKHk1y73d8nab528pj/IPBsVT1XVa8A3wEOjTOW\npFnbSfxXAD9Zdf75YdmbJDmaZDnJ8qu8vIPVSRrTzJ/tr6pjVbVUVUt72Dvr1Unaop3Efxq4ctX5\n9w3LJO0CO4n/EeCaJO9PcjHwSeDeccaSNGvb3tVXVa8l+RxwPyu7+u6sqqdGm0zSTO1oP39V3Qfc\nN9IskubIl/dKTRm/1JTxS00Zv9SU8UtNGb/U1Fzfz3+huv8/H590/X/62wcmXX9Hs/ybz+vv6ZZf\nasr4paaMX2rK+KWmjF9qyvilpoxfasr4paaMX2rK+KWmjF9qyvilpoxfasr4paZ8S+8WTf22Xc1X\nh7+3W36pKeOXmjJ+qSnjl5oyfqkp45eaMn6pqR3t509yCngJeB14raqWxhhKb+ZHc2sWxniRzx9X\n1c9G+D2S5si7/VJTO42/gAeTPJrk6BgDSZqPnd7tv66qTif5LeCBJP9WVQ+tvsLwn8JRgEt4xw5X\nJ2ksO9ryV9Xp4fs54G7g4BrXOVZVS1W1tIe9O1mdpBFtO/4klyZ51xungY8BJ8caTNJs7eRu/z7g\n7iRv/J5/qKp/GmUqSTO37fir6jng90ecZVId3r+t/+ff2119UlvGLzVl/FJTxi81ZfxSU8YvNeVH\ndy8A37I7G4u8O28R/uZu+aWmjF9qyvilpoxfasr4paaMX2rK+KWm3M8vzcAi7MffjFt+qSnjl5oy\nfqkp45eaMn6pKeOXmjJ+qak2+/mnfG/3btjnq7fnQvibuuWXmjJ+qSnjl5oyfqkp45eaMn6pKeOX\nmtp0P3+SO4E/A85V1QeGZZcD3wWuAk4BN1fVz2c3pvRWi/y5/LvBVrb83wRuOG/ZrcCJqroGODGc\nl7SLbBp/VT0EvHje4kPA8eH0ceCmkeeSNGPbfcy/r6rODKdfAPaNNI+kOdnxE35VVUCtd3mSo0mW\nkyy/yss7XZ2kkWw3/rNJ9gMM38+td8WqOlZVS1W1tIe921ydpLFtN/57gSPD6SPAPeOMI2leNo0/\nyV3AvwC/l+T5JLcAtwMfTfIM8CfDeUm7yKb7+avq8DoXXT/yLJLmyFf4SU0Zv9SU8UtNGb/UlPFL\nTRm/1FSbj+6epQvhY5wXkR+3Pltu+aWmjF9qyvilpoxfasr4paaMX2rK+KWmLpj9/FPuE/YjpLUb\nueWXmjJ+qSnjl5oyfqkp45eaMn6pKeOXmtpV+/ndny6Nxy2/1JTxS00Zv9SU8UtNGb/UlPFLTRm/\n1NSm8Se5M8m5JCdXLbstyekkjw9fN852TElj28qW/5vADWss/2pVHRi+7ht3LEmztmn8VfUQ8OIc\nZpE0Rzt5zP/5JE8MDwsuG20iSXOx3fi/DlwNHADOAF9e74pJjiZZTrL8Ki9vc3WSxrat+KvqbFW9\nXlW/Ar4BHNzguseqaqmqlvawd7tzShrZtuJPsn/V2U8AJ9e7rqTFtOlbepPcBXwEeE+S54G/Aj6S\n5ABQwCngMzOcUdIMbBp/VR1eY/EdM5hloXU4Xvui8fMbZstX+ElNGb/UlPFLTRm/1JTxS00Zv9TU\nQn1095S7dtyVp27c8ktNGb/UlPFLTRm/1JTxS00Zv9SU8UtNGb/UlPFLTRm/1JTxS00Zv9SU8UtN\nGb/UlPFLTS3U+/nVi5/fMC23/FJTxi81ZfxSU8YvNWX8UlPGLzVl/FJTm+7nT3Il8C1gH1DAsar6\nWpLLge8CVwGngJur6ucb/a7f/eD/cP/90+zbdb+u9GZb2fK/Bnyxqq4F/hD4bJJrgVuBE1V1DXBi\nOC9pl9g0/qo6U1WPDadfAp4GrgAOAceHqx0HbprVkJLG97Ye8ye5CvgQ8DCwr6rODBe9wMrDAkm7\nxJbjT/JO4HvAF6rqF6svq6pi5fmAtX7uaJLlJMs//a/XdzSspPFsKf4ke1gJ/9tV9f1h8dkk+4fL\n9wPn1vrZqjpWVUtVtfTed180xsySRrBp/EkC3AE8XVVfWXXRvcCR4fQR4J7xx5M0K1t5S++HgU8B\nTyZ5Yz/dl4DbgX9McgvwY+Dm2YwoaRY2jb+qfgBknYuvH3ccSfPiK/ykpoxfasr4paaMX2rK+KWm\njF9q6oL56G7fsqvz+W9iY275paaMX2rK+KWmjF9qyvilpoxfasr4pabmup//R0+8w32v0oJwyy81\nZfxSU8YvNWX8UlPGLzVl/FJTxi81dcG8n1+7j6/5mJZbfqkp45eaMn6pKeOXmjJ+qSnjl5oyfqmp\nTeNPcmWSf07ywyRPJfnzYfltSU4neXz4unH240oay1Ze5PMa8MWqeizJu4BHkzwwXPbVqvqb2Y0n\naVY2jb+qzgBnhtMvJXkauGLWg0marbf1mD/JVcCHgIeHRZ9P8kSSO5Ncts7PHE2ynGT5VV7e0bCS\nxrPl+JO8E/ge8IWq+gXwdeBq4AAr9wy+vNbPVdWxqlqqqqU97B1hZElj2FL8SfawEv63q+r7AFV1\ntqper6pfAd8ADs5uTElj28qz/QHuAJ6uqq+sWr5/1dU+AZwcfzxJs7KVZ/s/DHwKeDLJ48OyLwGH\nkxwACjgFfGYmE0qaia082/8DIGtcdN/440iaF1/hJzVl/FJTxi81ZfxSU8YvNWX8UlPGLzVl/FJT\nxi81ZfxSU8YvNWX8UlPGLzVl/FJTqar5rSz5KfDjVYveA/xsbgO8PYs626LOBc62XWPO9jtV9d6t\nXHGu8b9l5clyVS1NNsAGFnW2RZ0LnG27pprNu/1SU8YvNTV1/McmXv9GFnW2RZ0LnG27Jplt0sf8\nkqYz9ZZf0kQmiT/JDUn+PcmzSW6dYob1JDmV5MnhyMPLE89yZ5JzSU6uWnZ5kgeSPDN8X/MwaRPN\nthBHbt7gyNKT3naLdsTrud/tT3IR8CPgo8DzwCPA4ar64VwHWUeSU8BSVU2+TzjJHwG/BL5VVR8Y\nlv018GJV3T78x3lZVf3Fgsx2G/DLqY/cPBxQZv/qI0sDNwGfZsLbboO5bmaC222KLf9B4Nmqeq6q\nXgG+AxyaYI6FV1UPAS+et/gQcHw4fZyVfzxzt85sC6GqzlTVY8Ppl4A3jiw96W23wVyTmCL+K4Cf\nrDr/PIt1yO8CHkzyaJKjUw+zhn3DYdMBXgD2TTnMGjY9cvM8nXdk6YW57bZzxOux+YTfW11XVQeA\njwOfHe7eLqRaecy2SLtrtnTk5nlZ48jSvzblbbfdI16PbYr4TwNXrjr/vmHZQqiq08P3c8DdLN7R\nh8++cZDU4fu5ief5tUU6cvNaR5ZmAW67RTri9RTxPwJck+T9SS4GPgncO8Ecb5Hk0uGJGJJcCnyM\nxTv68L3AkeH0EeCeCWd5k0U5cvN6R5Zm4ttu4Y54XVVz/wJuZOUZ//8A/nKKGdaZ62rgX4evp6ae\nDbiLlbuBr7Ly3MgtwLuBE8AzwIPA5Qs0298DTwJPsBLa/olmu46Vu/RPAI8PXzdOfdttMNckt5uv\n8JOa8gk/qSnjl5oyfqkp45eaMn6pKeOXmjJ+qSnjl5r6P0MZlAfeUPNSAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "nx_img, ny_img = image_data_gray.shape;\n", "reshaped_image_gray = image_data_gray.reshape(nx_img*ny_img);\n", "plt.imshow(image_data_gray);\n", "print (reshaped_image_gray.shape);" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(1, 784)\n", " index_of_letter: 7 \n", " letter is: h\n" ] } ], "source": [ "reshaped_2d_array = reshaped_image_gray.reshape(-784, 784);\n", "print(reshaped_2d_array.shape)\n", "predicted = log_regr.predict(reshaped_2d_array);\n", "index_of_letter = predicted[0]\n", "print (' index_of_letter: ', index_of_letter, '\\n', 'letter is: ', array_letters[index_of_letter])" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "celltoolbar": "Edit 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 }