commit 1a178e82dc4dfcaffdca3d6c25503f8e7fd45b64 Author: Priyatham-sai-chand Date: Tue Mar 30 11:56:06 2021 +0530 init files diff --git a/Segment/Untitled.ipynb b/Segment/Untitled.ipynb new file mode 100644 index 0000000..f250428 --- /dev/null +++ b/Segment/Untitled.ipynb @@ -0,0 +1,368 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "from keras.preprocessing.image import ImageDataGenerator\n", + "from keras.preprocessing import image\n", + "import keras\n", + "from keras.models import Sequential\n", + "from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Activation\n", + "import os\n", + "import pickle" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "hi\n" + ] + } + ], + "source": [ + "print('hi')" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def get_result(result):\n", + " if result[0][0] == 1:\n", + " return('a')\n", + " elif result[0][1] == 1:\n", + " return ('b')\n", + " elif result[0][2] == 1:\n", + " return ('c')\n", + " elif result[0][3] == 1:\n", + " return ('d')\n", + " elif result[0][4] == 1:\n", + " return ('e')\n", + " elif result[0][5] == 1:\n", + " return ('f')\n", + " elif result[0][6] == 1:\n", + " return ('g')\n", + " elif result[0][7] == 1:\n", + " return ('h')\n", + " elif result[0][8] == 1:\n", + " return ('i')\n", + " elif result[0][9] == 1:\n", + " return ('j')\n", + " elif result[0][10] == 1:\n", + " return ('k')\n", + " elif result[0][11] == 1:\n", + " return ('l')\n", + " elif result[0][12] == 1:\n", + " return ('m')\n", + " elif result[0][13] == 1:\n", + " return ('n')\n", + " elif result[0][14] == 1:\n", + " return ('o')\n", + " elif result[0][15] == 1:\n", + " return ('p')\n", + " elif result[0][16] == 1:\n", + " return ('q')\n", + " elif result[0][17] == 1:\n", + " return ('r')\n", + " elif result[0][18] == 1:\n", + " return ('s')\n", + " elif result[0][19] == 1:\n", + " return ('t')\n", + " elif result[0][20] == 1:\n", + " return ('u')\n", + " elif result[0][21] == 1:\n", + " return ('v')\n", + " elif result[0][22] == 1:\n", + " return ('w')\n", + " elif result[0][23] == 1:\n", + " return ('x')\n", + " elif result[0][24] == 1:\n", + " return ('y')\n", + " elif result[0][25] == 1:\n", + " return ('z')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "dataset = pd.read_csv(\"A_Z Handwritten Data.csv\").astype('float32')\n", + "dataset.rename(columns={'0':'label'}, inplace=True)\n", + "\n", + "# Splite data the X - Our data , and y - the prdict label\n", + "X = dataset.drop('label',axis = 1)\n", + "y = dataset['label']" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Amount of each labels\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "print(\"Amount of each labels\")\n", + "\n", + "# Change label to alphabets\n", + "alphabets_mapper = {0:'A',1:'B',2:'C',3:'D',4:'E',5:'F',6:'G',7:'H',8:'I',9:'J',10:'K',11:'L',12:'M',13:'N',14:'O',15:'P',16:'Q',17:'R',18:'S',19:'T',20:'U',21:'V',22:'W',23:'X',24:'Y',25:'Z'} \n", + "dataset_alphabets = dataset.copy()\n", + "dataset['label'] = dataset['label'].map(alphabets_mapper)\n", + "\n", + "label_size = dataset.groupby('label').size()\n", + "label_size.plot.barh(figsize=(10,10))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "from sklearn.preprocessing import MinMaxScaler\n", + "# splite the data\n", + "X_train, X_test, y_train, y_test = train_test_split(X,y)\n", + "\n", + "# scale data\n", + "standard_scaler = MinMaxScaler()\n", + "standard_scaler.fit(X_train)\n", + "\n", + "X_train = standard_scaler.transform(X_train)\n", + "X_test = standard_scaler.transform(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "from keras.utils import np_utils\n", + "\n", + "X_train = X_train.reshape(X_train.shape[0], 28, 28, 1).astype('float32')\n", + "X_test = X_test.reshape(X_test.shape[0], 28, 28, 1).astype('float32')\n", + "\n", + "y_train = np_utils.to_categorical(y_train)\n", + "y_test = np_utils.to_categorical(y_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0., 0., 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.], dtype=float32)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_train[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(28, 28, 1)" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train[0].shape" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: \"sequential\"\n", + "_________________________________________________________________\n", + "Layer (type) Output Shape Param # \n", + "=================================================================\n", + "conv2d (Conv2D) (None, 26, 26, 32) 320 \n", + "_________________________________________________________________\n", + "max_pooling2d (MaxPooling2D) (None, 13, 13, 32) 0 \n", + "_________________________________________________________________\n", + "conv2d_1 (Conv2D) (None, 11, 11, 32) 9248 \n", + "_________________________________________________________________\n", + "max_pooling2d_1 (MaxPooling2 (None, 5, 5, 32) 0 \n", + "_________________________________________________________________\n", + "flatten (Flatten) (None, 800) 0 \n", + "_________________________________________________________________\n", + "dense (Dense) (None, 128) 102528 \n", + "_________________________________________________________________\n", + "dense_1 (Dense) (None, 26) 3354 \n", + "=================================================================\n", + "Total params: 115,450\n", + "Trainable params: 115,450\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ] + } + ], + "source": [ + "model = Sequential()\n", + "model.add(Conv2D(32, (3, 3), input_shape = (28,28,1), activation = 'relu'))\n", + "model.add(MaxPooling2D(pool_size = (2, 2)))\n", + "\n", + "\n", + "model.add(Conv2D(32, (3, 3), activation = 'relu'))\n", + "model.add(MaxPooling2D(pool_size = (2, 2)))\n", + "\n", + "model.add(Flatten())\n", + "model.add(Dense(units = 128, activation = 'relu'))\n", + "model.add(Dense(units = 26, activation = 'softmax'))\n", + "\n", + "\n", + "model.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['accuracy'])\n", + "\n", + "model.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/20\n", + "1092/1092 [==============================] - 130s 119ms/step - loss: 0.0169 - accuracy: 0.9950 - val_loss: 0.0126 - val_accuracy: 0.9976\n", + "Epoch 2/20\n", + "1092/1092 [==============================] - 129s 118ms/step - loss: 0.0130 - accuracy: 0.9957 - val_loss: 0.0136 - val_accuracy: 0.9970\n", + "Epoch 3/20\n", + " 978/1092 [=========================>....] - ETA: 12s - loss: 0.0110 - accuracy: 0.9963" + ] + } + ], + "source": [ + "history = model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=20, batch_size=256)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "in user code:\n\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1478 predict_function *\n return step_function(self, iterator)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1468 step_function **\n outputs = model.distribute_strategy.run(run_step, args=(data,))\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:1259 run\n return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:2730 call_for_each_replica\n return self._call_for_each_replica(fn, args, kwargs)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:3417 _call_for_each_replica\n return fn(*args, **kwargs)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1461 run_step **\n outputs = model.predict_step(data)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1434 predict_step\n return self(x, training=False)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py:998 __call__\n input_spec.assert_input_compatibility(self.input_spec, inputs, self.name)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/input_spec.py:234 assert_input_compatibility\n raise ValueError('Input ' + str(input_index) + ' of layer ' +\n\n ValueError: Input 0 of layer sequential is incompatible with the layer: : expected min_ndim=4, found ndim=3. Full shape received: (None, 28, 1)\n", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mmypred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py\u001b[0m in \u001b[0;36mpredict\u001b[0;34m(self, x, batch_size, verbose, steps, callbacks, max_queue_size, workers, use_multiprocessing)\u001b[0m\n\u001b[1;32m 1627\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mstep\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mdata_handler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msteps\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1628\u001b[0m \u001b[0mcallbacks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mon_predict_batch_begin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstep\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1629\u001b[0;31m \u001b[0mtmp_batch_outputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0miterator\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1630\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdata_handler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshould_sync\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1631\u001b[0m \u001b[0mcontext\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0masync_wait\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwds)\u001b[0m\n\u001b[1;32m 826\u001b[0m \u001b[0mtracing_count\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexperimental_get_tracing_count\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 827\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mtrace\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTrace\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_name\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mtm\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 828\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 829\u001b[0m \u001b[0mcompiler\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"xla\"\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_experimental_compile\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0;34m\"nonXla\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 830\u001b[0m \u001b[0mnew_tracing_count\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexperimental_get_tracing_count\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py\u001b[0m in \u001b[0;36m_call\u001b[0;34m(self, *args, **kwds)\u001b[0m\n\u001b[1;32m 869\u001b[0m \u001b[0;31m# This is the first call of __call__, so we have to initialize.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 870\u001b[0m \u001b[0minitializers\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 871\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_initialize\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0madd_initializers_to\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minitializers\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 872\u001b[0m \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 873\u001b[0m \u001b[0;31m# At this point we know that the initialization is complete (or less\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py\u001b[0m in \u001b[0;36m_initialize\u001b[0;34m(self, args, kwds, add_initializers_to)\u001b[0m\n\u001b[1;32m 723\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_graph_deleter\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mFunctionDeleter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_lifted_initializer_graph\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 724\u001b[0m self._concrete_stateful_fn = (\n\u001b[0;32m--> 725\u001b[0;31m self._stateful_fn._get_concrete_function_internal_garbage_collected( # pylint: disable=protected-access\n\u001b[0m\u001b[1;32m 726\u001b[0m *args, **kwds))\n\u001b[1;32m 727\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/function.py\u001b[0m in \u001b[0;36m_get_concrete_function_internal_garbage_collected\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 2967\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2968\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_lock\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2969\u001b[0;31m \u001b[0mgraph_function\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_maybe_define_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2970\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mgraph_function\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2971\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/function.py\u001b[0m in \u001b[0;36m_maybe_define_function\u001b[0;34m(self, args, kwargs)\u001b[0m\n\u001b[1;32m 3359\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3360\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_function_cache\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmissed\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcall_context_key\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3361\u001b[0;31m \u001b[0mgraph_function\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_create_graph_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3362\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_function_cache\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprimary\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mcache_key\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgraph_function\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3363\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/function.py\u001b[0m in \u001b[0;36m_create_graph_function\u001b[0;34m(self, args, kwargs, override_flat_arg_shapes)\u001b[0m\n\u001b[1;32m 3194\u001b[0m \u001b[0marg_names\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbase_arg_names\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mmissing_arg_names\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3195\u001b[0m graph_function = ConcreteFunction(\n\u001b[0;32m-> 3196\u001b[0;31m func_graph_module.func_graph_from_py_func(\n\u001b[0m\u001b[1;32m 3197\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_name\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3198\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_python_function\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/framework/func_graph.py\u001b[0m in \u001b[0;36mfunc_graph_from_py_func\u001b[0;34m(name, python_func, args, kwargs, signature, func_graph, autograph, autograph_options, add_control_dependencies, arg_names, op_return_value, collections, capture_by_value, override_flat_arg_shapes)\u001b[0m\n\u001b[1;32m 988\u001b[0m \u001b[0m_\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0moriginal_func\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtf_decorator\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0munwrap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpython_func\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 989\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 990\u001b[0;31m \u001b[0mfunc_outputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpython_func\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mfunc_args\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mfunc_kwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 991\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 992\u001b[0m \u001b[0;31m# invariant: `func_outputs` contains only Tensors, CompositeTensors,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py\u001b[0m in \u001b[0;36mwrapped_fn\u001b[0;34m(*args, **kwds)\u001b[0m\n\u001b[1;32m 632\u001b[0m \u001b[0mxla_context\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mExit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 633\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 634\u001b[0;31m \u001b[0mout\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mweak_wrapped_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__wrapped__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 635\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mout\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 636\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/framework/func_graph.py\u001b[0m in \u001b[0;36mwrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 975\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# pylint:disable=broad-except\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 976\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhasattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"ag_error_metadata\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 977\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mag_error_metadata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_exception\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 978\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 979\u001b[0m \u001b[0;32mraise\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: in user code:\n\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1478 predict_function *\n return step_function(self, iterator)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1468 step_function **\n outputs = model.distribute_strategy.run(run_step, args=(data,))\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:1259 run\n return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:2730 call_for_each_replica\n return self._call_for_each_replica(fn, args, kwargs)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:3417 _call_for_each_replica\n return fn(*args, **kwargs)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1461 run_step **\n outputs = model.predict_step(data)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1434 predict_step\n return self(x, training=False)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py:998 __call__\n input_spec.assert_input_compatibility(self.input_spec, inputs, self.name)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/input_spec.py:234 assert_input_compatibility\n raise ValueError('Input ' + str(input_index) + ' of layer ' +\n\n ValueError: Input 0 of layer sequential is incompatible with the layer: : expected min_ndim=4, found ndim=3. Full shape received: (None, 28, 1)\n" + ] + } + ], + "source": [ + "mypred = model.predict(X_train[0])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "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.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/Segment/download.png b/Segment/download.png new file mode 100644 index 0000000..ce9b749 Binary files /dev/null and b/Segment/download.png differ diff --git a/Segment/download_2.png b/Segment/download_2.png new file mode 100644 index 0000000..2a9d4d0 Binary files /dev/null and b/Segment/download_2.png differ diff --git a/Segment/final-Copy1.ipynb b/Segment/final-Copy1.ipynb new file mode 100644 index 0000000..73b2abf --- /dev/null +++ b/Segment/final-Copy1.ipynb @@ -0,0 +1,1495 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np \n", + "import pandas as pd \n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "import os\n", + "from sklearn.preprocessing import MinMaxScaler\n", + "import tensorflow as tf\n", + "from keras.models import Sequential\n", + "from keras.layers import Dense\n", + "from keras.layers import Dropout\n", + "from keras.layers import Flatten\n", + "from keras.layers.convolutional import Conv2D\n", + "from keras.layers.convolutional import MaxPooling2D\n", + "from keras import backend as K\n", + "from keras.utils import np_utils\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import confusion_matrix\n", + "\n", + "#ignore warning messages \n", + "import warnings\n", + "warnings.filterwarnings('ignore') \n", + "\n", + "sns.set()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "dataset = pd.read_csv(\"A_Z Handwritten Data.csv\").astype('float32')\n", + "dataset.rename(columns={'0':'label'}, inplace=True)\n", + "\n", + "# Splite data the X - Our data , and y - the prdict label\n", + "X = dataset.drop('label',axis = 1)\n", + "y = dataset['label']" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Amount of each labels\n" + ] + }, + { + "data": { + "image/png": "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7dq1nuZt9SdnL7zwgnJzc3XIIYfooIMO0rhx47R69Wqvx/KNRx55RL///e+VmZkpSdq8ebOOPPJI9e/fX2lpaSosLNTq1av1ySefqLGxUccff7wkafLkyVq9erWampr0yiuvaNy4cXu9Lklr165VYWGhJGnixIl67rnn1NTUZP6XtEQ4HNacOXPUo0cPde/eXdnZ2froo4/I2yUnnXSS7r33XqWlpSkWi6m5uVk1NTXk7aJdu3Zp8eLFmjFjhiT+PnHTBx98IEk677zzdPrpp+v+++8nbxf97W9/04QJE9SvXz91795dixcvVs+ePT3N2+pyVlVVpXA43PJ1Zmamdu7c6eFE/vLHP/5Rw4cPb/m6tTz/+fVwOKydO3equrpa6enpSktL2+v1f36vtLQ0paen64svvjDxa1lp0KBBLf+zfvTRR3rqqacUCATI20Xdu3fXLbfcooKCAo0YMYI/3y679tprNWvWLPXu3VsSf5+4qaamRiNGjNBtt92me+65Rw899JA+/fRT8nbJ3//+dzU3N2vGjBmKRCJ68MEHPf/zbXU5SyaTCgQCLV87jrPX12if1vJs7fXvyru1/B3HUTBo9R8nI7Zv367zzjtPl19+ufr370/eLps5c6ZefPFFffbZZ/roo4/I2yXLly/X4YcfrhEjRrS8xt8n7jnhhBO0YMEChUIh9e3bV2eddZZuueUW8nZJc3OzXnzxRd144416+OGHtXnzZn388cee5p3Wgd/Hdf369dPGjRtbvo5Goy2X6NB+/fr12+tGxK/z/OfXP//8c2VmZqpv376qra1Vc3OzunXrtlf+mZmZ+vzzz9WvXz8lEgnV19frkEMOMf0rWeXVV1/VzJkzddVVV6mgoEAvv/wyebvk/fff1549ezRkyBD17NlTeXl5Wr16tbp169byPeTdeZ588klFo1FFIhF9+eWX2r17tz755BPydsnGjRvV1NTUUoYdx9ERRxzB3ycuOfTQQzVixAj17dtXknTaaad5/veJ1VX55JNP1osvvqgvvvhCDQ0Nqqio0CmnnOL1WL513HHH6cMPP2z5CPfxxx/XKaecoiOOOEIHHHCAXn31VUlSWVmZTjnlFHXv3l3Dhw/Xk08+KUlatWpVS/6nnnqqVq1aJemrv7iHDx+u7t27e/J72eCzzz7TRRddpEWLFqmgoEASebupsrJSxcXF2rNnj/bs2aNnnnlGU6ZMIW+X3H333Xr88cdVVlammTNnasyYMbrrrrvI2yW1tbVasGCB4vG46urq9Oijj+p3v/sdebtk9OjRWrdunWpqatTc3Kznn39e48eP9zTvgOM4jnu/cseVl5frjjvuUFNTk8466yxdcMEFXo/kO2PGjNG9996rrKwsvfjii5o7d67i8bhOPfVUXXnllQoEAnr77bdVXFysuro6DR06VHPnzlWPHj30ySefaM6cOYrFYjr88MN100036eCDD9auXbs0Z84cffzxxwqFQlq0aJGysrK8/lU9U1JSohUrVmjAgAEtr02ZMkU//OEPydslt956q5566il169ZNeXl5uvjii/nzbcDKlSv18ssva968eeTtoj/96U96+umnlUwmdfbZZ+vnP/85ebvor3/9q+655x41NTVp5MiRKi4u1oYNGzzL2/pyBgAAkEqsvqwJAACQaihnAAAAFqGcAQAAWIRyBgAAYBHKGQAAgEUoZwAAABahnAEAAFiEcgYAAGCR/wOFe/nRiV36tQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "print(\"Amount of each labels\")\n", + "\n", + "# Change label to alphabets\n", + "alphabets_mapper = {0:'A',1:'B',2:'C',3:'D',4:'E',5:'F',6:'G',7:'H',8:'I',9:'J',10:'K',11:'L',12:'M',13:'N',14:'O',15:'P',16:'Q',17:'R',18:'S',19:'T',20:'U',21:'V',22:'W',23:'X',24:'Y',25:'Z'} \n", + "dataset_alphabets = dataset.copy()\n", + "dataset['label'] = dataset['label'].map(alphabets_mapper)\n", + "\n", + "label_size = dataset.groupby('label').size()\n", + "label_size.plot.barh(figsize=(10,10))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# splite the data\n", + "X_train, X_test, y_train, y_test = train_test_split(X,y)\n", + "\n", + "# scale data\n", + "standard_scaler = MinMaxScaler()\n", + "standard_scaler.fit(X_train)\n", + "\n", + "X_train = standard_scaler.transform(X_train)\n", + "X_test = standard_scaler.transform(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "X_train = X_train.reshape(X_train.shape[0], 28, 28, 1).astype('float32')\n", + "X_test = X_test.reshape(X_test.shape[0], 28, 28, 1).astype('float32')\n", + "\n", + "y_train = np_utils.to_categorical(y_train)\n", + "y_test = np_utils.to_categorical(y_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/20\n", + "1092/1092 [==============================] - 156s 141ms/step - loss: 0.5139 - accuracy: 0.8566 - val_loss: 0.0949 - val_accuracy: 0.9747\n", + "Epoch 2/20\n", + "1092/1092 [==============================] - 137s 125ms/step - loss: 0.0984 - accuracy: 0.9732 - val_loss: 0.0700 - val_accuracy: 0.9804\n", + "Epoch 3/20\n", + "1092/1092 [==============================] - 129s 118ms/step - loss: 0.0716 - accuracy: 0.9797 - val_loss: 0.0579 - val_accuracy: 0.9837\n", + "Epoch 4/20\n", + "1092/1092 [==============================] - 129s 118ms/step - loss: 0.0559 - accuracy: 0.9842 - val_loss: 0.0496 - val_accuracy: 0.9861\n", + "Epoch 5/20\n", + "1092/1092 [==============================] - 160s 146ms/step - loss: 0.0469 - accuracy: 0.9862 - val_loss: 0.0476 - val_accuracy: 0.9867\n", + "Epoch 6/20\n", + "1092/1092 [==============================] - 144s 132ms/step - loss: 0.0406 - accuracy: 0.9881 - val_loss: 0.0456 - val_accuracy: 0.9866\n", + "Epoch 7/20\n", + "1092/1092 [==============================] - 177s 162ms/step - loss: 0.0339 - accuracy: 0.9896 - val_loss: 0.0390 - val_accuracy: 0.9891\n", + "Epoch 8/20\n", + "1092/1092 [==============================] - 131s 120ms/step - loss: 0.0294 - accuracy: 0.9910 - val_loss: 0.0363 - val_accuracy: 0.9896\n", + "Epoch 9/20\n", + "1092/1092 [==============================] - 116s 106ms/step - loss: 0.0262 - accuracy: 0.9920 - val_loss: 0.0358 - val_accuracy: 0.9901\n", + "Epoch 10/20\n", + "1092/1092 [==============================] - 131s 120ms/step - loss: 0.0227 - accuracy: 0.9928 - val_loss: 0.0357 - val_accuracy: 0.9897\n", + "Epoch 11/20\n", + "1092/1092 [==============================] - 111s 102ms/step - loss: 0.0199 - accuracy: 0.9936 - val_loss: 0.0325 - val_accuracy: 0.9911\n", + "Epoch 12/20\n", + "1092/1092 [==============================] - 113s 103ms/step - loss: 0.0176 - accuracy: 0.9940 - val_loss: 0.0324 - val_accuracy: 0.9912\n", + "Epoch 13/20\n", + "1092/1092 [==============================] - 113s 103ms/step - loss: 0.0165 - accuracy: 0.9943 - val_loss: 0.0300 - val_accuracy: 0.9925\n", + "Epoch 14/20\n", + "1092/1092 [==============================] - 113s 103ms/step - loss: 0.0156 - accuracy: 0.9946 - val_loss: 0.0313 - val_accuracy: 0.9923\n", + "Epoch 15/20\n", + "1092/1092 [==============================] - 113s 104ms/step - loss: 0.0138 - accuracy: 0.9954 - val_loss: 0.0284 - val_accuracy: 0.9932\n", + "Epoch 16/20\n", + "1092/1092 [==============================] - 112s 102ms/step - loss: 0.0129 - accuracy: 0.9956 - val_loss: 0.0279 - val_accuracy: 0.9936\n", + "Epoch 17/20\n", + "1092/1092 [==============================] - 112s 102ms/step - loss: 0.0122 - accuracy: 0.9957 - val_loss: 0.0305 - val_accuracy: 0.9932\n", + "Epoch 18/20\n", + "1092/1092 [==============================] - 112s 103ms/step - loss: 0.0115 - accuracy: 0.9961 - val_loss: 0.0292 - val_accuracy: 0.9932\n", + "Epoch 19/20\n", + "1092/1092 [==============================] - 115s 105ms/step - loss: 0.0114 - accuracy: 0.9960 - val_loss: 0.0294 - val_accuracy: 0.9937\n", + "Epoch 20/20\n", + "1092/1092 [==============================] - 116s 106ms/step - loss: 0.0111 - accuracy: 0.9961 - val_loss: 0.0275 - val_accuracy: 0.9943\n" + ] + } + ], + "source": [ + "cls = Sequential()\n", + "cls.add(Conv2D(32, (5, 5), input_shape=(28, 28, 1), activation='relu'))\n", + "cls.add(MaxPooling2D(pool_size=(2, 2)))\n", + "cls.add(Dropout(0.3))\n", + "cls.add(Flatten())\n", + "cls.add(Dense(128, activation='relu'))\n", + "cls.add(Dense(len(y.unique()), activation='softmax'))\n", + "\n", + "cls.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])\n", + "history = cls.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=20, batch_size=256)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "cls.save('my_model.h5')" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "import PIL\n", + "from PIL import Image, ImageEnhance, ImageDraw, ImageFont\n", + "from IPython.display import display\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "img = Image.open('n_image copy.jpg')" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAACEAAAAoCAAAAABVgMx7AAACTElEQVR4nHWTy3LjNhBFDx96kLQzcpJJVaqySOX/v2syZc/IkvkmCJwsHEn2QnfXwMHtbqCBFyWTZ+dLOJmis5OZvGuhzEl5LLjp+Q8Ab1rCzcL0Lar25hf+dSaVeD2f/bnS8qMmu60x7vJbcN7t51QRNre16Vjlcxov4Zf9ajWRbnXA3/+uH4ryxcDDSa9EBUaXKzD7yhMussTJ4GqE2sV4RcJwAN/EYK/ftYHWcE3Ua8HhPUswaqCqqcfuahH1/bbKZCxDqmKR97gnXZrLQ/eQDVnX4Ggb1YLfMnC4eJw14wvKNJtcpgZWD9Uti/bTlvIkeu57IxUmnrh6jIPtL1uUtde1q/LCpB8fMq1SsZgXM7TNPkWyOHPIFhg4h+X/l0ow6aDUjydVfi06Q7BzNn77B5TO1pW/0DaufgX1fHSJDtKg2BuEPI7q8/yYsai2g06QKyE69tsMXV6S7YbN9mgY9Pgi7GbRk7tmY3dOLroUbDTOaU66NgT5oSkjC446dioPpEH159STKXo220ftPOuslOjkq6uym2SOlp8mPlGjxhS0RvPtshZU6TqucXV4zFbyrkxpepzAIL837W38wvtcRF+nHIyMAvZXoHNeGtBO+coiuikPwwdEF6lIYyc5is8ULL5dtk+r0Td2aKzBiMtTju0Hi9agbCFR00tM3cOk0+2fOHjszdjUsPfTv/2kdVOu9YDkdwBy12KA+T4x87JK2FHeIwoOfZKU362Dti5iirvsbhaKoi82ZPfrGOrvTdfvw/1uOR0wIxb/AetB2NNoPMSRAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "img" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "import cv2" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "my_lol_img = cv2.imread('n_image copy.jpg', cv2.IMREAD_GRAYSCALE)\n", + "my_lol_img = cv2.resize(my_lol_img, (28, 28))" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize = (5,5))\n", + "plt.imshow(my_lol_img, cmap='gray')" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[255, 255, 255, 255, 255, 255, 255, 253, 254, 254, 255, 244, 254,\n", + " 252, 255, 255, 255, 255, 255, 255, 251, 254, 254, 253, 250, 253,\n", + " 251, 254],\n", + " [255, 255, 255, 255, 255, 255, 254, 253, 253, 252, 252, 254, 252,\n", + " 254, 255, 255, 255, 255, 255, 255, 255, 241, 254, 253, 250, 255,\n", + " 250, 254],\n", + " [255, 255, 255, 255, 255, 255, 252, 242, 252, 250, 254, 254, 250,\n", + " 255, 255, 255, 255, 255, 255, 255, 254, 254, 249, 252, 247, 245,\n", + " 250, 255],\n", + " [255, 255, 255, 255, 255, 255, 255, 254, 248, 249, 254, 252, 253,\n", + " 252, 255, 255, 255, 255, 255, 255, 250, 250, 253, 248, 251, 253,\n", + " 250, 254],\n", + " [255, 255, 255, 255, 255, 255, 217, 18, 32, 176, 250, 254, 255,\n", + " 255, 255, 255, 255, 255, 255, 255, 255, 239, 254, 205, 22, 146,\n", + " 251, 255],\n", + " [253, 254, 253, 254, 254, 254, 229, 63, 0, 116, 243, 253, 252,\n", + " 254, 255, 255, 255, 255, 255, 255, 252, 253, 237, 7, 7, 141,\n", + " 249, 254],\n", + " [254, 252, 251, 251, 255, 237, 255, 171, 4, 1, 215, 254, 252,\n", + " 253, 255, 255, 255, 255, 255, 255, 250, 253, 249, 5, 5, 140,\n", + " 250, 255],\n", + " [254, 253, 252, 253, 253, 255, 210, 3, 8, 2, 8, 248, 248,\n", + " 255, 255, 255, 255, 255, 255, 255, 254, 254, 247, 3, 2, 111,\n", + " 239, 255],\n", + " [254, 250, 250, 250, 251, 255, 212, 3, 8, 4, 3, 100, 253,\n", + " 251, 255, 255, 255, 255, 255, 255, 249, 252, 244, 5, 7, 5,\n", + " 184, 254],\n", + " [248, 250, 254, 254, 251, 248, 9, 0, 130, 254, 45, 21, 233,\n", + " 255, 255, 255, 255, 255, 255, 255, 255, 254, 246, 200, 4, 2,\n", + " 177, 254],\n", + " [253, 249, 249, 249, 249, 133, 2, 47, 193, 254, 143, 8, 58,\n", + " 252, 255, 255, 255, 255, 255, 255, 252, 250, 253, 201, 7, 3,\n", + " 185, 255],\n", + " [253, 243, 255, 246, 251, 21, 0, 87, 255, 253, 249, 1, 15,\n", + " 113, 253, 255, 246, 253, 244, 250, 253, 254, 252, 205, 0, 4,\n", + " 183, 254],\n", + " [247, 254, 250, 252, 181, 13, 21, 149, 248, 253, 254, 242, 8,\n", + " 8, 147, 253, 253, 247, 249, 250, 251, 254, 250, 196, 15, 2,\n", + " 187, 255],\n", + " [252, 248, 252, 253, 50, 6, 42, 252, 251, 254, 254, 236, 156,\n", + " 6, 32, 205, 255, 252, 252, 250, 246, 254, 253, 200, 1, 2,\n", + " 187, 255],\n", + " [252, 253, 250, 214, 44, 2, 86, 252, 251, 243, 251, 254, 202,\n", + " 34, 3, 5, 229, 254, 250, 250, 254, 243, 239, 216, 35, 4,\n", + " 184, 254],\n", + " [244, 253, 252, 97, 4, 2, 252, 249, 250, 255, 249, 248, 254,\n", + " 217, 68, 7, 86, 253, 250, 253, 253, 254, 244, 250, 156, 2,\n", + " 186, 255],\n", + " [255, 251, 240, 89, 6, 249, 255, 251, 250, 246, 253, 255, 251,\n", + " 255, 115, 7, 1, 239, 253, 251, 245, 252, 252, 255, 160, 4,\n", + " 184, 254],\n", + " [252, 251, 142, 2, 4, 249, 255, 255, 255, 255, 255, 255, 255,\n", + " 254, 252, 156, 11, 21, 166, 254, 254, 249, 253, 254, 161, 6,\n", + " 185, 255],\n", + " [254, 252, 141, 12, 12, 239, 251, 255, 255, 255, 255, 255, 255,\n", + " 255, 252, 254, 13, 1, 77, 255, 254, 254, 240, 203, 12, 1,\n", + " 186, 253],\n", + " [250, 187, 2, 4, 203, 248, 252, 255, 255, 255, 255, 255, 255,\n", + " 252, 252, 252, 250, 86, 1, 81, 224, 247, 251, 205, 5, 6,\n", + " 184, 255],\n", + " [253, 175, 2, 3, 201, 255, 245, 255, 255, 255, 255, 255, 255,\n", + " 250, 249, 254, 252, 247, 133, 3, 38, 221, 253, 205, 5, 0,\n", + " 187, 253],\n", + " [254, 201, 38, 35, 215, 246, 254, 255, 255, 255, 255, 255, 255,\n", + " 254, 254, 248, 253, 252, 252, 157, 22, 1, 5, 162, 3, 4,\n", + " 181, 204],\n", + " [254, 253, 214, 221, 254, 255, 253, 255, 255, 255, 255, 255, 255,\n", + " 254, 254, 255, 252, 254, 249, 253, 193, 26, 4, 4, 4, 2,\n", + " 187, 172],\n", + " [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n", + " 255, 255, 255, 255, 255, 255, 255, 253, 255, 17, 20, 11, 10,\n", + " 187, 254],\n", + " [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n", + " 255, 255, 255, 255, 255, 255, 255, 250, 254, 243, 249, 203, 197,\n", + " 254, 255],\n", + " [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n", + " 255, 255, 255, 255, 255, 255, 255, 255, 245, 252, 254, 251, 249,\n", + " 252, 255],\n", + " [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n", + " 255, 255, 255, 255, 255, 255, 255, 252, 249, 246, 248, 251, 250,\n", + " 252, 255],\n", + " [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n", + " 255, 255, 255, 255, 255, 255, 255, 253, 244, 250, 254, 252, 254,\n", + " 252, 255]], dtype=uint8)" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "my_lol_img" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(28, 28)" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "my_lol_img.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "my_lol_img = np.array(my_lol_img) / 255\n", + "my_lol_img = my_lol_img.reshape(-1, 28, 28, 1)\n", + "#y_train = np.array(y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[[[1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.99215686],\n", + " [0.99607843],\n", + " [0.99607843],\n", + " [1. ],\n", + " [0.95686275],\n", + " [0.99607843],\n", + " [0.98823529],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.98431373],\n", + " [0.99607843],\n", + " [0.99607843],\n", + " [0.99215686],\n", + " [0.98039216],\n", + " [0.99215686],\n", + " [0.98431373],\n", + " [0.99607843]],\n", + "\n", + " [[1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.99607843],\n", + " [0.99215686],\n", + " [0.99215686],\n", + " [0.98823529],\n", + " [0.98823529],\n", + " [0.99607843],\n", + " [0.98823529],\n", + " [0.99607843],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.94509804],\n", + " [0.99607843],\n", + " [0.99215686],\n", + " [0.98039216],\n", + " [1. ],\n", + " [0.98039216],\n", + " [0.99607843]],\n", + "\n", + " [[1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.98823529],\n", + " [0.94901961],\n", + " [0.98823529],\n", + " [0.98039216],\n", + " [0.99607843],\n", + " [0.99607843],\n", + " [0.98039216],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.99607843],\n", + " [0.99607843],\n", + " [0.97647059],\n", + " [0.98823529],\n", + " [0.96862745],\n", + " [0.96078431],\n", + " [0.98039216],\n", + " [1. ]],\n", + "\n", + " [[1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.99607843],\n", + " [0.97254902],\n", + " [0.97647059],\n", + " [0.99607843],\n", + " [0.98823529],\n", + " [0.99215686],\n", + " [0.98823529],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.98039216],\n", + " [0.98039216],\n", + " [0.99215686],\n", + " [0.97254902],\n", + " [0.98431373],\n", + " [0.99215686],\n", + " [0.98039216],\n", + " [0.99607843]],\n", + "\n", + " [[1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.85098039],\n", + " [0.07058824],\n", + " [0.1254902 ],\n", + " [0.69019608],\n", + " [0.98039216],\n", + " [0.99607843],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.9372549 ],\n", + " [0.99607843],\n", + " [0.80392157],\n", + " [0.08627451],\n", + " [0.57254902],\n", + " [0.98431373],\n", + " [1. ]],\n", + "\n", + " [[0.99215686],\n", + " [0.99607843],\n", + " [0.99215686],\n", + " [0.99607843],\n", + " [0.99607843],\n", + " [0.99607843],\n", + " [0.89803922],\n", + " [0.24705882],\n", + " [0. ],\n", + " [0.45490196],\n", + " [0.95294118],\n", + " [0.99215686],\n", + " [0.98823529],\n", + " [0.99607843],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.98823529],\n", + " [0.99215686],\n", + " [0.92941176],\n", + " [0.02745098],\n", + " [0.02745098],\n", + " [0.55294118],\n", + " [0.97647059],\n", + " [0.99607843]],\n", + "\n", + " [[0.99607843],\n", + " [0.98823529],\n", + " [0.98431373],\n", + " [0.98431373],\n", + " [1. ],\n", + " [0.92941176],\n", + " [1. ],\n", + " [0.67058824],\n", + " [0.01568627],\n", + " [0.00392157],\n", + " [0.84313725],\n", + " [0.99607843],\n", + " [0.98823529],\n", + " [0.99215686],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.98039216],\n", + " [0.99215686],\n", + " [0.97647059],\n", + " [0.01960784],\n", + " [0.01960784],\n", + " [0.54901961],\n", + " [0.98039216],\n", + " [1. ]],\n", + "\n", + " [[0.99607843],\n", + " [0.99215686],\n", + " [0.98823529],\n", + " [0.99215686],\n", + " [0.99215686],\n", + " [1. ],\n", + " [0.82352941],\n", + " [0.01176471],\n", + " [0.03137255],\n", + " [0.00784314],\n", + " [0.03137255],\n", + " [0.97254902],\n", + " [0.97254902],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.99607843],\n", + " [0.99607843],\n", + " [0.96862745],\n", + " [0.01176471],\n", + " [0.00784314],\n", + " [0.43529412],\n", + " [0.9372549 ],\n", + " [1. ]],\n", + "\n", + " [[0.99607843],\n", + " [0.98039216],\n", + " [0.98039216],\n", + " [0.98039216],\n", + " [0.98431373],\n", + " [1. ],\n", + " [0.83137255],\n", + " [0.01176471],\n", + " [0.03137255],\n", + " [0.01568627],\n", + " [0.01176471],\n", + " [0.39215686],\n", + " [0.99215686],\n", + " [0.98431373],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.97647059],\n", + " [0.98823529],\n", + " [0.95686275],\n", + " [0.01960784],\n", + " [0.02745098],\n", + " [0.01960784],\n", + " [0.72156863],\n", + " [0.99607843]],\n", + "\n", + " [[0.97254902],\n", + " [0.98039216],\n", + " [0.99607843],\n", + " [0.99607843],\n", + " [0.98431373],\n", + " [0.97254902],\n", + " [0.03529412],\n", + " [0. ],\n", + " [0.50980392],\n", + " [0.99607843],\n", + " [0.17647059],\n", + " [0.08235294],\n", + " [0.91372549],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.99607843],\n", + " [0.96470588],\n", + " [0.78431373],\n", + " [0.01568627],\n", + " [0.00784314],\n", + " [0.69411765],\n", + " [0.99607843]],\n", + "\n", + " [[0.99215686],\n", + " [0.97647059],\n", + " [0.97647059],\n", + " [0.97647059],\n", + " [0.97647059],\n", + " [0.52156863],\n", + " [0.00784314],\n", + " [0.18431373],\n", + " [0.75686275],\n", + " [0.99607843],\n", + " [0.56078431],\n", + " [0.03137255],\n", + " [0.22745098],\n", + " [0.98823529],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.98823529],\n", + " [0.98039216],\n", + " [0.99215686],\n", + " [0.78823529],\n", + " [0.02745098],\n", + " [0.01176471],\n", + " [0.7254902 ],\n", + " [1. ]],\n", + "\n", + " [[0.99215686],\n", + " [0.95294118],\n", + " [1. ],\n", + " [0.96470588],\n", + " [0.98431373],\n", + " [0.08235294],\n", + " [0. ],\n", + " [0.34117647],\n", + " [1. ],\n", + " [0.99215686],\n", + " [0.97647059],\n", + " [0.00392157],\n", + " [0.05882353],\n", + " [0.44313725],\n", + " [0.99215686],\n", + " [1. ],\n", + " [0.96470588],\n", + " [0.99215686],\n", + " [0.95686275],\n", + " [0.98039216],\n", + " [0.99215686],\n", + " [0.99607843],\n", + " [0.98823529],\n", + " [0.80392157],\n", + " [0. ],\n", + " [0.01568627],\n", + " [0.71764706],\n", + " [0.99607843]],\n", + "\n", + " [[0.96862745],\n", + " [0.99607843],\n", + " [0.98039216],\n", + " [0.98823529],\n", + " [0.70980392],\n", + " [0.05098039],\n", + " [0.08235294],\n", + " [0.58431373],\n", + " [0.97254902],\n", + " [0.99215686],\n", + " [0.99607843],\n", + " [0.94901961],\n", + " [0.03137255],\n", + " [0.03137255],\n", + " [0.57647059],\n", + " [0.99215686],\n", + " [0.99215686],\n", + " [0.96862745],\n", + " [0.97647059],\n", + " [0.98039216],\n", + " [0.98431373],\n", + " [0.99607843],\n", + " [0.98039216],\n", + " [0.76862745],\n", + " [0.05882353],\n", + " [0.00784314],\n", + " [0.73333333],\n", + " [1. ]],\n", + "\n", + " [[0.98823529],\n", + " [0.97254902],\n", + " [0.98823529],\n", + " [0.99215686],\n", + " [0.19607843],\n", + " [0.02352941],\n", + " [0.16470588],\n", + " [0.98823529],\n", + " [0.98431373],\n", + " [0.99607843],\n", + " [0.99607843],\n", + " [0.9254902 ],\n", + " [0.61176471],\n", + " [0.02352941],\n", + " [0.1254902 ],\n", + " [0.80392157],\n", + " [1. ],\n", + " [0.98823529],\n", + " [0.98823529],\n", + " [0.98039216],\n", + " [0.96470588],\n", + " [0.99607843],\n", + " [0.99215686],\n", + " [0.78431373],\n", + " [0.00392157],\n", + " [0.00784314],\n", + " [0.73333333],\n", + " [1. ]],\n", + "\n", + " [[0.98823529],\n", + " [0.99215686],\n", + " [0.98039216],\n", + " [0.83921569],\n", + " [0.17254902],\n", + " [0.00784314],\n", + " [0.3372549 ],\n", + " [0.98823529],\n", + " [0.98431373],\n", + " [0.95294118],\n", + " [0.98431373],\n", + " [0.99607843],\n", + " [0.79215686],\n", + " [0.13333333],\n", + " [0.01176471],\n", + " [0.01960784],\n", + " [0.89803922],\n", + " [0.99607843],\n", + " [0.98039216],\n", + " [0.98039216],\n", + " [0.99607843],\n", + " [0.95294118],\n", + " [0.9372549 ],\n", + " [0.84705882],\n", + " [0.1372549 ],\n", + " [0.01568627],\n", + " [0.72156863],\n", + " [0.99607843]],\n", + "\n", + " [[0.95686275],\n", + " [0.99215686],\n", + " [0.98823529],\n", + " [0.38039216],\n", + " [0.01568627],\n", + " [0.00784314],\n", + " [0.98823529],\n", + " [0.97647059],\n", + " [0.98039216],\n", + " [1. ],\n", + " [0.97647059],\n", + " [0.97254902],\n", + " [0.99607843],\n", + " [0.85098039],\n", + " [0.26666667],\n", + " [0.02745098],\n", + " [0.3372549 ],\n", + " [0.99215686],\n", + " [0.98039216],\n", + " [0.99215686],\n", + " [0.99215686],\n", + " [0.99607843],\n", + " [0.95686275],\n", + " [0.98039216],\n", + " [0.61176471],\n", + " [0.00784314],\n", + " [0.72941176],\n", + " [1. ]],\n", + "\n", + " [[1. ],\n", + " [0.98431373],\n", + " [0.94117647],\n", + " [0.34901961],\n", + " [0.02352941],\n", + " [0.97647059],\n", + " [1. ],\n", + " [0.98431373],\n", + " [0.98039216],\n", + " [0.96470588],\n", + " [0.99215686],\n", + " [1. ],\n", + " [0.98431373],\n", + " [1. ],\n", + " [0.45098039],\n", + " [0.02745098],\n", + " [0.00392157],\n", + " [0.9372549 ],\n", + " [0.99215686],\n", + " [0.98431373],\n", + " [0.96078431],\n", + " [0.98823529],\n", + " [0.98823529],\n", + " [1. ],\n", + " [0.62745098],\n", + " [0.01568627],\n", + " [0.72156863],\n", + " [0.99607843]],\n", + "\n", + " [[0.98823529],\n", + " [0.98431373],\n", + " [0.55686275],\n", + " [0.00784314],\n", + " [0.01568627],\n", + " [0.97647059],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.99607843],\n", + " [0.98823529],\n", + " [0.61176471],\n", + " [0.04313725],\n", + " [0.08235294],\n", + " [0.65098039],\n", + " [0.99607843],\n", + " [0.99607843],\n", + " [0.97647059],\n", + " [0.99215686],\n", + " [0.99607843],\n", + " [0.63137255],\n", + " [0.02352941],\n", + " [0.7254902 ],\n", + " [1. ]],\n", + "\n", + " [[0.99607843],\n", + " [0.98823529],\n", + " [0.55294118],\n", + " [0.04705882],\n", + " [0.04705882],\n", + " [0.9372549 ],\n", + " [0.98431373],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.98823529],\n", + " [0.99607843],\n", + " [0.05098039],\n", + " [0.00392157],\n", + " [0.30196078],\n", + " [1. ],\n", + " [0.99607843],\n", + " [0.99607843],\n", + " [0.94117647],\n", + " [0.79607843],\n", + " [0.04705882],\n", + " [0.00392157],\n", + " [0.72941176],\n", + " [0.99215686]],\n", + "\n", + " [[0.98039216],\n", + " [0.73333333],\n", + " [0.00784314],\n", + " [0.01568627],\n", + " [0.79607843],\n", + " [0.97254902],\n", + " [0.98823529],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.98823529],\n", + " [0.98823529],\n", + " [0.98823529],\n", + " [0.98039216],\n", + " [0.3372549 ],\n", + " [0.00392157],\n", + " [0.31764706],\n", + " [0.87843137],\n", + " [0.96862745],\n", + " [0.98431373],\n", + " [0.80392157],\n", + " [0.01960784],\n", + " [0.02352941],\n", + " [0.72156863],\n", + " [1. ]],\n", + "\n", + " [[0.99215686],\n", + " [0.68627451],\n", + " [0.00784314],\n", + " [0.01176471],\n", + " [0.78823529],\n", + " [1. ],\n", + " [0.96078431],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.98039216],\n", + " [0.97647059],\n", + " [0.99607843],\n", + " [0.98823529],\n", + " [0.96862745],\n", + " [0.52156863],\n", + " [0.01176471],\n", + " [0.14901961],\n", + " [0.86666667],\n", + " [0.99215686],\n", + " [0.80392157],\n", + " [0.01960784],\n", + " [0. ],\n", + " [0.73333333],\n", + " [0.99215686]],\n", + "\n", + " [[0.99607843],\n", + " [0.78823529],\n", + " [0.14901961],\n", + " [0.1372549 ],\n", + " [0.84313725],\n", + " [0.96470588],\n", + " [0.99607843],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.99607843],\n", + " [0.99607843],\n", + " [0.97254902],\n", + " [0.99215686],\n", + " [0.98823529],\n", + " [0.98823529],\n", + " [0.61568627],\n", + " [0.08627451],\n", + " [0.00392157],\n", + " [0.01960784],\n", + " [0.63529412],\n", + " [0.01176471],\n", + " [0.01568627],\n", + " [0.70980392],\n", + " [0.8 ]],\n", + "\n", + " [[0.99607843],\n", + " [0.99215686],\n", + " [0.83921569],\n", + " [0.86666667],\n", + " [0.99607843],\n", + " [1. ],\n", + " [0.99215686],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.99607843],\n", + " [0.99607843],\n", + " [1. ],\n", + " [0.98823529],\n", + " [0.99607843],\n", + " [0.97647059],\n", + " [0.99215686],\n", + " [0.75686275],\n", + " [0.10196078],\n", + " [0.01568627],\n", + " [0.01568627],\n", + " [0.01568627],\n", + " [0.00784314],\n", + " [0.73333333],\n", + " [0.6745098 ]],\n", + "\n", + " [[1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.99215686],\n", + " [1. ],\n", + " [0.06666667],\n", + " [0.07843137],\n", + " [0.04313725],\n", + " [0.03921569],\n", + " [0.73333333],\n", + " [0.99607843]],\n", + "\n", + " [[1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.98039216],\n", + " [0.99607843],\n", + " [0.95294118],\n", + " [0.97647059],\n", + " [0.79607843],\n", + " [0.77254902],\n", + " [0.99607843],\n", + " [1. ]],\n", + "\n", + " [[1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.96078431],\n", + " [0.98823529],\n", + " [0.99607843],\n", + " [0.98431373],\n", + " [0.97647059],\n", + " [0.98823529],\n", + " [1. ]],\n", + "\n", + " [[1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.98823529],\n", + " [0.97647059],\n", + " [0.96470588],\n", + " [0.97254902],\n", + " [0.98431373],\n", + " [0.98039216],\n", + " [0.98823529],\n", + " [1. ]],\n", + "\n", + " [[1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.99215686],\n", + " [0.95686275],\n", + " [0.98039216],\n", + " [0.99607843],\n", + " [0.98823529],\n", + " [0.99607843],\n", + " [0.98823529],\n", + " [1. ]]]])" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "my_lol_img" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "import keras" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "model = keras.models.load_model('my_model.h5')" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "my_lol_prediction = model.predict(my_lol_img)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1.1581924e-07, 4.1368559e-10, 6.4555923e-07, 2.2491538e-05,\n", + " 1.4397167e-12, 3.6010979e-15, 5.0695167e-11, 8.0478216e-08,\n", + " 3.4654861e-12, 6.4896874e-08, 1.4367749e-06, 8.8046843e-05,\n", + " 7.5111379e-06, 2.3038849e-01, 1.7430016e-06, 5.7561249e-09,\n", + " 4.5668517e-07, 4.1635683e-08, 5.5010565e-09, 1.1502559e-11,\n", + " 7.6300371e-01, 6.4844764e-03, 3.5521356e-07, 3.8272912e-08,\n", + " 2.2634480e-07, 2.1373243e-10]], dtype=float32)" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "my_lol_prediction" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Largest element present in given array: 0.7630037\n" + ] + } + ], + "source": [ + "max = my_lol_prediction[0][0]; \n", + " \n", + "#Loop through the array \n", + "for i in range(0, len(my_lol_prediction[0])): \n", + " #Compare elements of array with max \n", + " if(my_lol_prediction[0][i] > max): \n", + " max = my_lol_prediction[0][i]; \n", + " \n", + "print(\"Largest element present in given array: \" + str(max)); " + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "20\n" + ] + } + ], + "source": [ + "for i in range(0, len(my_lol_prediction[0])):\n", + " if(my_lol_prediction[0][i] == max):\n", + " print(i)" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.9999999418151907\n" + ] + } + ], + "source": [ + "mysum = 0\n", + "for i in range(0, len(my_lol_prediction[0])):\n", + " mysum = mysum + my_lol_prediction[0][i]\n", + "print(mysum)" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [], + "source": [ + "my_lol_prediction_2 = np_utils.to_categorical(my_lol_prediction)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[[1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.]]], dtype=float32)" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "my_lol_prediction_2" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "in user code:\n\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1478 predict_function *\n return step_function(self, iterator)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1468 step_function **\n outputs = model.distribute_strategy.run(run_step, args=(data,))\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:1259 run\n return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:2730 call_for_each_replica\n return self._call_for_each_replica(fn, args, kwargs)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:3417 _call_for_each_replica\n return fn(*args, **kwargs)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1461 run_step **\n outputs = model.predict_step(data)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1434 predict_step\n return self(x, training=False)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py:998 __call__\n input_spec.assert_input_compatibility(self.input_spec, inputs, self.name)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/input_spec.py:234 assert_input_compatibility\n raise ValueError('Input ' + str(input_index) + ' of layer ' +\n\n ValueError: Input 0 of layer sequential is incompatible with the layer: : expected min_ndim=4, found ndim=3. Full shape received: (None, 28, 1)\n", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mmy_lol_prediction_3\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py\u001b[0m in \u001b[0;36mpredict\u001b[0;34m(self, x, batch_size, verbose, steps, callbacks, max_queue_size, workers, use_multiprocessing)\u001b[0m\n\u001b[1;32m 1627\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mstep\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mdata_handler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msteps\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1628\u001b[0m \u001b[0mcallbacks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mon_predict_batch_begin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstep\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1629\u001b[0;31m \u001b[0mtmp_batch_outputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0miterator\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1630\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdata_handler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshould_sync\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1631\u001b[0m \u001b[0mcontext\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0masync_wait\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwds)\u001b[0m\n\u001b[1;32m 826\u001b[0m \u001b[0mtracing_count\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexperimental_get_tracing_count\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 827\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mtrace\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTrace\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_name\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mtm\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 828\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 829\u001b[0m \u001b[0mcompiler\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"xla\"\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_experimental_compile\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0;34m\"nonXla\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 830\u001b[0m \u001b[0mnew_tracing_count\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexperimental_get_tracing_count\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py\u001b[0m in \u001b[0;36m_call\u001b[0;34m(self, *args, **kwds)\u001b[0m\n\u001b[1;32m 860\u001b[0m \u001b[0;31m# In this case we have not created variables on the first call. So we can\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 861\u001b[0m \u001b[0;31m# run the first trace but we should fail if variables are created.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 862\u001b[0;31m \u001b[0mresults\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_stateful_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 863\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_created_variables\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 864\u001b[0m raise ValueError(\"Creating variables on a non-first call to a function\"\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/function.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 2939\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_lock\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2940\u001b[0m (graph_function,\n\u001b[0;32m-> 2941\u001b[0;31m filtered_flat_args) = self._maybe_define_function(args, kwargs)\n\u001b[0m\u001b[1;32m 2942\u001b[0m return graph_function._call_flat(\n\u001b[1;32m 2943\u001b[0m filtered_flat_args, captured_inputs=graph_function.captured_inputs) # pylint: disable=protected-access\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/function.py\u001b[0m in \u001b[0;36m_maybe_define_function\u001b[0;34m(self, args, kwargs)\u001b[0m\n\u001b[1;32m 3355\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minput_signature\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;32mand\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3356\u001b[0m call_context_key in self._function_cache.missed):\n\u001b[0;32m-> 3357\u001b[0;31m return self._define_function_with_shape_relaxation(\n\u001b[0m\u001b[1;32m 3358\u001b[0m args, kwargs, flat_args, filtered_flat_args, cache_key_context)\n\u001b[1;32m 3359\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/function.py\u001b[0m in \u001b[0;36m_define_function_with_shape_relaxation\u001b[0;34m(self, args, kwargs, flat_args, filtered_flat_args, cache_key_context)\u001b[0m\n\u001b[1;32m 3277\u001b[0m expand_composites=True)\n\u001b[1;32m 3278\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3279\u001b[0;31m graph_function = self._create_graph_function(\n\u001b[0m\u001b[1;32m 3280\u001b[0m args, kwargs, override_flat_arg_shapes=relaxed_arg_shapes)\n\u001b[1;32m 3281\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_function_cache\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marg_relaxed\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mrank_only_cache_key\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgraph_function\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/function.py\u001b[0m in \u001b[0;36m_create_graph_function\u001b[0;34m(self, args, kwargs, override_flat_arg_shapes)\u001b[0m\n\u001b[1;32m 3194\u001b[0m \u001b[0marg_names\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbase_arg_names\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mmissing_arg_names\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3195\u001b[0m graph_function = ConcreteFunction(\n\u001b[0;32m-> 3196\u001b[0;31m func_graph_module.func_graph_from_py_func(\n\u001b[0m\u001b[1;32m 3197\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_name\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3198\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_python_function\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/framework/func_graph.py\u001b[0m in \u001b[0;36mfunc_graph_from_py_func\u001b[0;34m(name, python_func, args, kwargs, signature, func_graph, autograph, autograph_options, add_control_dependencies, arg_names, op_return_value, collections, capture_by_value, override_flat_arg_shapes)\u001b[0m\n\u001b[1;32m 988\u001b[0m \u001b[0m_\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0moriginal_func\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtf_decorator\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0munwrap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpython_func\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 989\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 990\u001b[0;31m \u001b[0mfunc_outputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpython_func\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mfunc_args\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mfunc_kwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 991\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 992\u001b[0m \u001b[0;31m# invariant: `func_outputs` contains only Tensors, CompositeTensors,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py\u001b[0m in \u001b[0;36mwrapped_fn\u001b[0;34m(*args, **kwds)\u001b[0m\n\u001b[1;32m 632\u001b[0m \u001b[0mxla_context\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mExit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 633\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 634\u001b[0;31m \u001b[0mout\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mweak_wrapped_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__wrapped__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 635\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mout\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 636\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/framework/func_graph.py\u001b[0m in \u001b[0;36mwrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 975\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# pylint:disable=broad-except\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 976\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhasattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"ag_error_metadata\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 977\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mag_error_metadata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_exception\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 978\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 979\u001b[0m \u001b[0;32mraise\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: in user code:\n\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1478 predict_function *\n return step_function(self, iterator)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1468 step_function **\n outputs = model.distribute_strategy.run(run_step, args=(data,))\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:1259 run\n return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:2730 call_for_each_replica\n return self._call_for_each_replica(fn, args, kwargs)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:3417 _call_for_each_replica\n return fn(*args, **kwargs)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1461 run_step **\n outputs = model.predict_step(data)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1434 predict_step\n return self(x, training=False)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py:998 __call__\n input_spec.assert_input_compatibility(self.input_spec, inputs, self.name)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/input_spec.py:234 assert_input_compatibility\n raise ValueError('Input ' + str(input_index) + ' of layer ' +\n\n ValueError: Input 0 of layer sequential is incompatible with the layer: : expected min_ndim=4, found ndim=3. Full shape received: (None, 28, 1)\n" + ] + } + ], + "source": [ + "my_lol_prediction_3 = model.predict(X_train[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(28, 28, 1)" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train[0].shape" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "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.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/Segment/final.ipynb b/Segment/final.ipynb new file mode 100644 index 0000000..5c78c5c --- /dev/null +++ b/Segment/final.ipynb @@ -0,0 +1,1520 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "ename": "ImportError", + "evalue": "dlopen(/Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/_pywrap_tfe.so, 2): Library not loaded: @rpath/_pywrap_tensorflow_internal.so\n Referenced from: /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/_pywrap_tfe.so\n Reason: image not found", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0msklearn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpreprocessing\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mMinMaxScaler\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mtensorflow\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mtf\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 8\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mkeras\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmodels\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mSequential\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mkeras\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlayers\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mDense\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/__init__.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 39\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0msys\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0m_sys\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 40\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 41\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mtensorflow\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpython\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtools\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mmodule_util\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0m_module_util\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 42\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mtensorflow\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpython\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mutil\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlazy_loader\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mLazyLoader\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0m_LazyLoader\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/__init__.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 39\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mtensorflow\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpython\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mpywrap_tensorflow\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0m_pywrap_tensorflow\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 40\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 41\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mtensorflow\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpython\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0meager\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mcontext\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 42\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[0;31m# pylint: enable=wildcard-import\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/context.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 33\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mtensorflow\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprotobuf\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mconfig_pb2\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 34\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mtensorflow\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprotobuf\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mrewriter_config_pb2\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 35\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mtensorflow\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpython\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mpywrap_tfe\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 36\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mtensorflow\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpython\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mtf2\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 37\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mtensorflow\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpython\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclient\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mpywrap_tf_session\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/pywrap_tfe.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 27\u001b[0m \u001b[0;31m# pylint: disable=invalid-import-order,g-bad-import-order, wildcard-import, unused-import\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 28\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mtensorflow\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpython\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mpywrap_tensorflow\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 29\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mtensorflow\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpython\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_pywrap_tfe\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mImportError\u001b[0m: dlopen(/Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/_pywrap_tfe.so, 2): Library not loaded: @rpath/_pywrap_tensorflow_internal.so\n Referenced from: /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/_pywrap_tfe.so\n Reason: image not found" + ] + } + ], + "source": [ + "import numpy as np \n", + "import pandas as pd \n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "import os\n", + "from sklearn.preprocessing import MinMaxScaler\n", + "import tensorflow as tf\n", + "from keras.models import Sequential\n", + "from keras.layers import Dense\n", + "from keras.layers import Dropout\n", + "from keras.layers import Flatten\n", + "from keras.layers.convolutional import Conv2D\n", + "from keras.layers.convolutional import MaxPooling2D\n", + "from keras import backend as K\n", + "from keras.utils import np_utils\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import confusion_matrix\n", + "\n", + "#ignore warning messages \n", + "import warnings\n", + "warnings.filterwarnings('ignore') \n", + "\n", + "sns.set()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "dataset = pd.read_csv(\"A_Z Handwritten Data.csv\").astype('float32')\n", + "dataset.rename(columns={'0':'label'}, inplace=True)\n", + "\n", + "# Splite data the X - Our data , and y - the prdict label\n", + "X = dataset.drop('label',axis = 1)\n", + "y = dataset['label']" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Amount of each labels\n" + ] + }, + { + "data": { + "image/png": "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7dq1nuZt9SdnL7zwgnJzc3XIIYfooIMO0rhx47R69Wqvx/KNRx55RL///e+VmZkpSdq8ebOOPPJI9e/fX2lpaSosLNTq1av1ySefqLGxUccff7wkafLkyVq9erWampr0yiuvaNy4cXu9Lklr165VYWGhJGnixIl67rnn1NTUZP6XtEQ4HNacOXPUo0cPde/eXdnZ2froo4/I2yUnnXSS7r33XqWlpSkWi6m5uVk1NTXk7aJdu3Zp8eLFmjFjhiT+PnHTBx98IEk677zzdPrpp+v+++8nbxf97W9/04QJE9SvXz91795dixcvVs+ePT3N2+pyVlVVpXA43PJ1Zmamdu7c6eFE/vLHP/5Rw4cPb/m6tTz/+fVwOKydO3equrpa6enpSktL2+v1f36vtLQ0paen64svvjDxa1lp0KBBLf+zfvTRR3rqqacUCATI20Xdu3fXLbfcooKCAo0YMYI/3y679tprNWvWLPXu3VsSf5+4qaamRiNGjNBtt92me+65Rw899JA+/fRT8nbJ3//+dzU3N2vGjBmKRCJ68MEHPf/zbXU5SyaTCgQCLV87jrPX12if1vJs7fXvyru1/B3HUTBo9R8nI7Zv367zzjtPl19+ufr370/eLps5c6ZefPFFffbZZ/roo4/I2yXLly/X4YcfrhEjRrS8xt8n7jnhhBO0YMEChUIh9e3bV2eddZZuueUW8nZJc3OzXnzxRd144416+OGHtXnzZn388cee5p3Wgd/Hdf369dPGjRtbvo5Goy2X6NB+/fr12+tGxK/z/OfXP//8c2VmZqpv376qra1Vc3OzunXrtlf+mZmZ+vzzz9WvXz8lEgnV19frkEMOMf0rWeXVV1/VzJkzddVVV6mgoEAvv/wyebvk/fff1549ezRkyBD17NlTeXl5Wr16tbp169byPeTdeZ588klFo1FFIhF9+eWX2r17tz755BPydsnGjRvV1NTUUoYdx9ERRxzB3ycuOfTQQzVixAj17dtXknTaaad5/veJ1VX55JNP1osvvqgvvvhCDQ0Nqqio0CmnnOL1WL513HHH6cMPP2z5CPfxxx/XKaecoiOOOEIHHHCAXn31VUlSWVmZTjnlFHXv3l3Dhw/Xk08+KUlatWpVS/6nnnqqVq1aJemrv7iHDx+u7t27e/J72eCzzz7TRRddpEWLFqmgoEASebupsrJSxcXF2rNnj/bs2aNnnnlGU6ZMIW+X3H333Xr88cdVVlammTNnasyYMbrrrrvI2yW1tbVasGCB4vG46urq9Oijj+p3v/sdebtk9OjRWrdunWpqatTc3Kznn39e48eP9zTvgOM4jnu/cseVl5frjjvuUFNTk8466yxdcMEFXo/kO2PGjNG9996rrKwsvfjii5o7d67i8bhOPfVUXXnllQoEAnr77bdVXFysuro6DR06VHPnzlWPHj30ySefaM6cOYrFYjr88MN100036eCDD9auXbs0Z84cffzxxwqFQlq0aJGysrK8/lU9U1JSohUrVmjAgAEtr02ZMkU//OEPydslt956q5566il169ZNeXl5uvjii/nzbcDKlSv18ssva968eeTtoj/96U96+umnlUwmdfbZZ+vnP/85ebvor3/9q+655x41NTVp5MiRKi4u1oYNGzzL2/pyBgAAkEqsvqwJAACQaihnAAAAFqGcAQAAWIRyBgAAYBHKGQAAgEUoZwAAABahnAEAAFiEcgYAAGCR/wOFe/nRiV36tQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "print(\"Amount of each labels\")\n", + "\n", + "# Change label to alphabets\n", + "alphabets_mapper = {0:'A',1:'B',2:'C',3:'D',4:'E',5:'F',6:'G',7:'H',8:'I',9:'J',10:'K',11:'L',12:'M',13:'N',14:'O',15:'P',16:'Q',17:'R',18:'S',19:'T',20:'U',21:'V',22:'W',23:'X',24:'Y',25:'Z'} \n", + "dataset_alphabets = dataset.copy()\n", + "dataset['label'] = dataset['label'].map(alphabets_mapper)\n", + "\n", + "label_size = dataset.groupby('label').size()\n", + "label_size.plot.barh(figsize=(10,10))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# splite the data\n", + "X_train, X_test, y_train, y_test = train_test_split(X,y)\n", + "\n", + "# scale data\n", + "standard_scaler = MinMaxScaler()\n", + "standard_scaler.fit(X_train)\n", + "\n", + "X_train = standard_scaler.transform(X_train)\n", + "X_test = standard_scaler.transform(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "X_train = X_train.reshape(X_train.shape[0], 28, 28, 1).astype('float32')\n", + "X_test = X_test.reshape(X_test.shape[0], 28, 28, 1).astype('float32')\n", + "\n", + "y_train = np_utils.to_categorical(y_train)\n", + "y_test = np_utils.to_categorical(y_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/20\n", + "1092/1092 [==============================] - 156s 141ms/step - loss: 0.5139 - accuracy: 0.8566 - val_loss: 0.0949 - val_accuracy: 0.9747\n", + "Epoch 2/20\n", + "1092/1092 [==============================] - 137s 125ms/step - loss: 0.0984 - accuracy: 0.9732 - val_loss: 0.0700 - val_accuracy: 0.9804\n", + "Epoch 3/20\n", + "1092/1092 [==============================] - 129s 118ms/step - loss: 0.0716 - accuracy: 0.9797 - val_loss: 0.0579 - val_accuracy: 0.9837\n", + "Epoch 4/20\n", + "1092/1092 [==============================] - 129s 118ms/step - loss: 0.0559 - accuracy: 0.9842 - val_loss: 0.0496 - val_accuracy: 0.9861\n", + "Epoch 5/20\n", + "1092/1092 [==============================] - 160s 146ms/step - loss: 0.0469 - accuracy: 0.9862 - val_loss: 0.0476 - val_accuracy: 0.9867\n", + "Epoch 6/20\n", + "1092/1092 [==============================] - 144s 132ms/step - loss: 0.0406 - accuracy: 0.9881 - val_loss: 0.0456 - val_accuracy: 0.9866\n", + "Epoch 7/20\n", + "1092/1092 [==============================] - 177s 162ms/step - loss: 0.0339 - accuracy: 0.9896 - val_loss: 0.0390 - val_accuracy: 0.9891\n", + "Epoch 8/20\n", + "1092/1092 [==============================] - 131s 120ms/step - loss: 0.0294 - accuracy: 0.9910 - val_loss: 0.0363 - val_accuracy: 0.9896\n", + "Epoch 9/20\n", + "1092/1092 [==============================] - 116s 106ms/step - loss: 0.0262 - accuracy: 0.9920 - val_loss: 0.0358 - val_accuracy: 0.9901\n", + "Epoch 10/20\n", + "1092/1092 [==============================] - 131s 120ms/step - loss: 0.0227 - accuracy: 0.9928 - val_loss: 0.0357 - val_accuracy: 0.9897\n", + "Epoch 11/20\n", + "1092/1092 [==============================] - 111s 102ms/step - loss: 0.0199 - accuracy: 0.9936 - val_loss: 0.0325 - val_accuracy: 0.9911\n", + "Epoch 12/20\n", + "1092/1092 [==============================] - 113s 103ms/step - loss: 0.0176 - accuracy: 0.9940 - val_loss: 0.0324 - val_accuracy: 0.9912\n", + "Epoch 13/20\n", + "1092/1092 [==============================] - 113s 103ms/step - loss: 0.0165 - accuracy: 0.9943 - val_loss: 0.0300 - val_accuracy: 0.9925\n", + "Epoch 14/20\n", + "1092/1092 [==============================] - 113s 103ms/step - loss: 0.0156 - accuracy: 0.9946 - val_loss: 0.0313 - val_accuracy: 0.9923\n", + "Epoch 15/20\n", + "1092/1092 [==============================] - 113s 104ms/step - loss: 0.0138 - accuracy: 0.9954 - val_loss: 0.0284 - val_accuracy: 0.9932\n", + "Epoch 16/20\n", + "1092/1092 [==============================] - 112s 102ms/step - loss: 0.0129 - accuracy: 0.9956 - val_loss: 0.0279 - val_accuracy: 0.9936\n", + "Epoch 17/20\n", + "1092/1092 [==============================] - 112s 102ms/step - loss: 0.0122 - accuracy: 0.9957 - val_loss: 0.0305 - val_accuracy: 0.9932\n", + "Epoch 18/20\n", + "1092/1092 [==============================] - 112s 103ms/step - loss: 0.0115 - accuracy: 0.9961 - val_loss: 0.0292 - val_accuracy: 0.9932\n", + "Epoch 19/20\n", + "1092/1092 [==============================] - 115s 105ms/step - loss: 0.0114 - accuracy: 0.9960 - val_loss: 0.0294 - val_accuracy: 0.9937\n", + "Epoch 20/20\n", + "1092/1092 [==============================] - 116s 106ms/step - loss: 0.0111 - accuracy: 0.9961 - val_loss: 0.0275 - val_accuracy: 0.9943\n" + ] + } + ], + "source": [ + "cls = Sequential()\n", + "cls.add(Conv2D(32, (5, 5), input_shape=(28, 28, 1), activation='relu'))\n", + "cls.add(MaxPooling2D(pool_size=(2, 2)))\n", + "cls.add(Dropout(0.3))\n", + "cls.add(Flatten())\n", + "cls.add(Dense(128, activation='relu'))\n", + "cls.add(Dense(len(y.unique()), activation='softmax'))\n", + "\n", + "cls.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])\n", + "history = cls.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=20, batch_size=256)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "cls.save('my_model.h5')" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "import PIL\n", + "from PIL import Image, ImageEnhance, ImageDraw, ImageFont\n", + "from IPython.display import display\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "img = Image.open('n_image copy.jpg')" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAACEAAAAoCAAAAABVgMx7AAACTElEQVR4nHWTy3LjNhBFDx96kLQzcpJJVaqySOX/v2syZc/IkvkmCJwsHEn2QnfXwMHtbqCBFyWTZ+dLOJmis5OZvGuhzEl5LLjp+Q8Ab1rCzcL0Lar25hf+dSaVeD2f/bnS8qMmu60x7vJbcN7t51QRNre16Vjlcxov4Zf9ajWRbnXA3/+uH4ryxcDDSa9EBUaXKzD7yhMussTJ4GqE2sV4RcJwAN/EYK/ftYHWcE3Ua8HhPUswaqCqqcfuahH1/bbKZCxDqmKR97gnXZrLQ/eQDVnX4Ggb1YLfMnC4eJw14wvKNJtcpgZWD9Uti/bTlvIkeu57IxUmnrh6jIPtL1uUtde1q/LCpB8fMq1SsZgXM7TNPkWyOHPIFhg4h+X/l0ow6aDUjydVfi06Q7BzNn77B5TO1pW/0DaufgX1fHSJDtKg2BuEPI7q8/yYsai2g06QKyE69tsMXV6S7YbN9mgY9Pgi7GbRk7tmY3dOLroUbDTOaU66NgT5oSkjC446dioPpEH159STKXo220ftPOuslOjkq6uym2SOlp8mPlGjxhS0RvPtshZU6TqucXV4zFbyrkxpepzAIL837W38wvtcRF+nHIyMAvZXoHNeGtBO+coiuikPwwdEF6lIYyc5is8ULL5dtk+r0Td2aKzBiMtTju0Hi9agbCFR00tM3cOk0+2fOHjszdjUsPfTv/2kdVOu9YDkdwBy12KA+T4x87JK2FHeIwoOfZKU362Dti5iirvsbhaKoi82ZPfrGOrvTdfvw/1uOR0wIxb/AetB2NNoPMSRAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "img" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "import cv2" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "my_lol_img = cv2.imread('n_image copy.jpg', cv2.IMREAD_GRAYSCALE)\n", + "my_lol_img = cv2.resize(my_lol_img, (28, 28))" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize = (5,5))\n", + "plt.imshow(my_lol_img, cmap='gray')" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[255, 255, 255, 255, 255, 255, 255, 253, 254, 254, 255, 244, 254,\n", + " 252, 255, 255, 255, 255, 255, 255, 251, 254, 254, 253, 250, 253,\n", + " 251, 254],\n", + " [255, 255, 255, 255, 255, 255, 254, 253, 253, 252, 252, 254, 252,\n", + " 254, 255, 255, 255, 255, 255, 255, 255, 241, 254, 253, 250, 255,\n", + " 250, 254],\n", + " [255, 255, 255, 255, 255, 255, 252, 242, 252, 250, 254, 254, 250,\n", + " 255, 255, 255, 255, 255, 255, 255, 254, 254, 249, 252, 247, 245,\n", + " 250, 255],\n", + " [255, 255, 255, 255, 255, 255, 255, 254, 248, 249, 254, 252, 253,\n", + " 252, 255, 255, 255, 255, 255, 255, 250, 250, 253, 248, 251, 253,\n", + " 250, 254],\n", + " [255, 255, 255, 255, 255, 255, 217, 18, 32, 176, 250, 254, 255,\n", + " 255, 255, 255, 255, 255, 255, 255, 255, 239, 254, 205, 22, 146,\n", + " 251, 255],\n", + " [253, 254, 253, 254, 254, 254, 229, 63, 0, 116, 243, 253, 252,\n", + " 254, 255, 255, 255, 255, 255, 255, 252, 253, 237, 7, 7, 141,\n", + " 249, 254],\n", + " [254, 252, 251, 251, 255, 237, 255, 171, 4, 1, 215, 254, 252,\n", + " 253, 255, 255, 255, 255, 255, 255, 250, 253, 249, 5, 5, 140,\n", + " 250, 255],\n", + " [254, 253, 252, 253, 253, 255, 210, 3, 8, 2, 8, 248, 248,\n", + " 255, 255, 255, 255, 255, 255, 255, 254, 254, 247, 3, 2, 111,\n", + " 239, 255],\n", + " [254, 250, 250, 250, 251, 255, 212, 3, 8, 4, 3, 100, 253,\n", + " 251, 255, 255, 255, 255, 255, 255, 249, 252, 244, 5, 7, 5,\n", + " 184, 254],\n", + " [248, 250, 254, 254, 251, 248, 9, 0, 130, 254, 45, 21, 233,\n", + " 255, 255, 255, 255, 255, 255, 255, 255, 254, 246, 200, 4, 2,\n", + " 177, 254],\n", + " [253, 249, 249, 249, 249, 133, 2, 47, 193, 254, 143, 8, 58,\n", + " 252, 255, 255, 255, 255, 255, 255, 252, 250, 253, 201, 7, 3,\n", + " 185, 255],\n", + " [253, 243, 255, 246, 251, 21, 0, 87, 255, 253, 249, 1, 15,\n", + " 113, 253, 255, 246, 253, 244, 250, 253, 254, 252, 205, 0, 4,\n", + " 183, 254],\n", + " [247, 254, 250, 252, 181, 13, 21, 149, 248, 253, 254, 242, 8,\n", + " 8, 147, 253, 253, 247, 249, 250, 251, 254, 250, 196, 15, 2,\n", + " 187, 255],\n", + " [252, 248, 252, 253, 50, 6, 42, 252, 251, 254, 254, 236, 156,\n", + " 6, 32, 205, 255, 252, 252, 250, 246, 254, 253, 200, 1, 2,\n", + " 187, 255],\n", + " [252, 253, 250, 214, 44, 2, 86, 252, 251, 243, 251, 254, 202,\n", + " 34, 3, 5, 229, 254, 250, 250, 254, 243, 239, 216, 35, 4,\n", + " 184, 254],\n", + " [244, 253, 252, 97, 4, 2, 252, 249, 250, 255, 249, 248, 254,\n", + " 217, 68, 7, 86, 253, 250, 253, 253, 254, 244, 250, 156, 2,\n", + " 186, 255],\n", + " [255, 251, 240, 89, 6, 249, 255, 251, 250, 246, 253, 255, 251,\n", + " 255, 115, 7, 1, 239, 253, 251, 245, 252, 252, 255, 160, 4,\n", + " 184, 254],\n", + " [252, 251, 142, 2, 4, 249, 255, 255, 255, 255, 255, 255, 255,\n", + " 254, 252, 156, 11, 21, 166, 254, 254, 249, 253, 254, 161, 6,\n", + " 185, 255],\n", + " [254, 252, 141, 12, 12, 239, 251, 255, 255, 255, 255, 255, 255,\n", + " 255, 252, 254, 13, 1, 77, 255, 254, 254, 240, 203, 12, 1,\n", + " 186, 253],\n", + " [250, 187, 2, 4, 203, 248, 252, 255, 255, 255, 255, 255, 255,\n", + " 252, 252, 252, 250, 86, 1, 81, 224, 247, 251, 205, 5, 6,\n", + " 184, 255],\n", + " [253, 175, 2, 3, 201, 255, 245, 255, 255, 255, 255, 255, 255,\n", + " 250, 249, 254, 252, 247, 133, 3, 38, 221, 253, 205, 5, 0,\n", + " 187, 253],\n", + " [254, 201, 38, 35, 215, 246, 254, 255, 255, 255, 255, 255, 255,\n", + " 254, 254, 248, 253, 252, 252, 157, 22, 1, 5, 162, 3, 4,\n", + " 181, 204],\n", + " [254, 253, 214, 221, 254, 255, 253, 255, 255, 255, 255, 255, 255,\n", + " 254, 254, 255, 252, 254, 249, 253, 193, 26, 4, 4, 4, 2,\n", + " 187, 172],\n", + " [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n", + " 255, 255, 255, 255, 255, 255, 255, 253, 255, 17, 20, 11, 10,\n", + " 187, 254],\n", + " [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n", + " 255, 255, 255, 255, 255, 255, 255, 250, 254, 243, 249, 203, 197,\n", + " 254, 255],\n", + " [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n", + " 255, 255, 255, 255, 255, 255, 255, 255, 245, 252, 254, 251, 249,\n", + " 252, 255],\n", + " [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n", + " 255, 255, 255, 255, 255, 255, 255, 252, 249, 246, 248, 251, 250,\n", + " 252, 255],\n", + " [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n", + " 255, 255, 255, 255, 255, 255, 255, 253, 244, 250, 254, 252, 254,\n", + " 252, 255]], dtype=uint8)" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "my_lol_img" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(28, 28)" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "my_lol_img.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "my_lol_img = np.array(my_lol_img) / 255\n", + "my_lol_img = my_lol_img.reshape(-1, 28, 28, 1)\n", + "#y_train = np.array(y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[[[1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.99215686],\n", + " [0.99607843],\n", + " [0.99607843],\n", + " [1. ],\n", + " [0.95686275],\n", + " [0.99607843],\n", + " [0.98823529],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.98431373],\n", + " [0.99607843],\n", + " [0.99607843],\n", + " [0.99215686],\n", + " [0.98039216],\n", + " [0.99215686],\n", + " [0.98431373],\n", + " [0.99607843]],\n", + "\n", + " [[1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.99607843],\n", + " [0.99215686],\n", + " [0.99215686],\n", + " [0.98823529],\n", + " [0.98823529],\n", + " [0.99607843],\n", + " [0.98823529],\n", + " [0.99607843],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.94509804],\n", + " [0.99607843],\n", + " [0.99215686],\n", + " [0.98039216],\n", + " [1. ],\n", + " [0.98039216],\n", + " [0.99607843]],\n", + "\n", + " [[1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.98823529],\n", + " [0.94901961],\n", + " [0.98823529],\n", + " [0.98039216],\n", + " [0.99607843],\n", + " [0.99607843],\n", + " [0.98039216],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.99607843],\n", + " [0.99607843],\n", + " [0.97647059],\n", + " [0.98823529],\n", + " [0.96862745],\n", + " [0.96078431],\n", + " [0.98039216],\n", + " [1. ]],\n", + "\n", + " [[1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.99607843],\n", + " [0.97254902],\n", + " [0.97647059],\n", + " [0.99607843],\n", + " [0.98823529],\n", + " [0.99215686],\n", + " [0.98823529],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.98039216],\n", + " [0.98039216],\n", + " [0.99215686],\n", + " [0.97254902],\n", + " [0.98431373],\n", + " [0.99215686],\n", + " [0.98039216],\n", + " [0.99607843]],\n", + "\n", + " [[1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.85098039],\n", + " [0.07058824],\n", + " [0.1254902 ],\n", + " [0.69019608],\n", + " [0.98039216],\n", + " [0.99607843],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.9372549 ],\n", + " [0.99607843],\n", + " [0.80392157],\n", + " [0.08627451],\n", + " [0.57254902],\n", + " [0.98431373],\n", + " [1. ]],\n", + "\n", + " [[0.99215686],\n", + " [0.99607843],\n", + " [0.99215686],\n", + " [0.99607843],\n", + " [0.99607843],\n", + " [0.99607843],\n", + " [0.89803922],\n", + " [0.24705882],\n", + " [0. ],\n", + " [0.45490196],\n", + " [0.95294118],\n", + " [0.99215686],\n", + " [0.98823529],\n", + " [0.99607843],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.98823529],\n", + " [0.99215686],\n", + " [0.92941176],\n", + " [0.02745098],\n", + " [0.02745098],\n", + " [0.55294118],\n", + " [0.97647059],\n", + " [0.99607843]],\n", + "\n", + " [[0.99607843],\n", + " [0.98823529],\n", + " [0.98431373],\n", + " [0.98431373],\n", + " [1. ],\n", + " [0.92941176],\n", + " [1. ],\n", + " [0.67058824],\n", + " [0.01568627],\n", + " [0.00392157],\n", + " [0.84313725],\n", + " [0.99607843],\n", + " [0.98823529],\n", + " [0.99215686],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.98039216],\n", + " [0.99215686],\n", + " [0.97647059],\n", + " [0.01960784],\n", + " [0.01960784],\n", + " [0.54901961],\n", + " [0.98039216],\n", + " [1. ]],\n", + "\n", + " [[0.99607843],\n", + " [0.99215686],\n", + " [0.98823529],\n", + " [0.99215686],\n", + " [0.99215686],\n", + " [1. ],\n", + " [0.82352941],\n", + " [0.01176471],\n", + " [0.03137255],\n", + " [0.00784314],\n", + " [0.03137255],\n", + " [0.97254902],\n", + " [0.97254902],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.99607843],\n", + " [0.99607843],\n", + " [0.96862745],\n", + " [0.01176471],\n", + " [0.00784314],\n", + " [0.43529412],\n", + " [0.9372549 ],\n", + " [1. ]],\n", + "\n", + " [[0.99607843],\n", + " [0.98039216],\n", + " [0.98039216],\n", + " [0.98039216],\n", + " [0.98431373],\n", + " [1. ],\n", + " [0.83137255],\n", + " [0.01176471],\n", + " [0.03137255],\n", + " [0.01568627],\n", + " [0.01176471],\n", + " [0.39215686],\n", + " [0.99215686],\n", + " [0.98431373],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.97647059],\n", + " [0.98823529],\n", + " [0.95686275],\n", + " [0.01960784],\n", + " [0.02745098],\n", + " [0.01960784],\n", + " [0.72156863],\n", + " [0.99607843]],\n", + "\n", + " [[0.97254902],\n", + " [0.98039216],\n", + " [0.99607843],\n", + " [0.99607843],\n", + " [0.98431373],\n", + " [0.97254902],\n", + " [0.03529412],\n", + " [0. ],\n", + " [0.50980392],\n", + " [0.99607843],\n", + " [0.17647059],\n", + " [0.08235294],\n", + " [0.91372549],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.99607843],\n", + " [0.96470588],\n", + " [0.78431373],\n", + " [0.01568627],\n", + " [0.00784314],\n", + " [0.69411765],\n", + " [0.99607843]],\n", + "\n", + " [[0.99215686],\n", + " [0.97647059],\n", + " [0.97647059],\n", + " [0.97647059],\n", + " [0.97647059],\n", + " [0.52156863],\n", + " [0.00784314],\n", + " [0.18431373],\n", + " [0.75686275],\n", + " [0.99607843],\n", + " [0.56078431],\n", + " [0.03137255],\n", + " [0.22745098],\n", + " [0.98823529],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.98823529],\n", + " [0.98039216],\n", + " [0.99215686],\n", + " [0.78823529],\n", + " [0.02745098],\n", + " [0.01176471],\n", + " [0.7254902 ],\n", + " [1. ]],\n", + "\n", + " [[0.99215686],\n", + " [0.95294118],\n", + " [1. ],\n", + " [0.96470588],\n", + " [0.98431373],\n", + " [0.08235294],\n", + " [0. ],\n", + " [0.34117647],\n", + " [1. ],\n", + " [0.99215686],\n", + " [0.97647059],\n", + " [0.00392157],\n", + " [0.05882353],\n", + " [0.44313725],\n", + " [0.99215686],\n", + " [1. ],\n", + " [0.96470588],\n", + " [0.99215686],\n", + " [0.95686275],\n", + " [0.98039216],\n", + " [0.99215686],\n", + " [0.99607843],\n", + " [0.98823529],\n", + " [0.80392157],\n", + " [0. ],\n", + " [0.01568627],\n", + " [0.71764706],\n", + " [0.99607843]],\n", + "\n", + " [[0.96862745],\n", + " [0.99607843],\n", + " [0.98039216],\n", + " [0.98823529],\n", + " [0.70980392],\n", + " [0.05098039],\n", + " [0.08235294],\n", + " [0.58431373],\n", + " [0.97254902],\n", + " [0.99215686],\n", + " [0.99607843],\n", + " [0.94901961],\n", + " [0.03137255],\n", + " [0.03137255],\n", + " [0.57647059],\n", + " [0.99215686],\n", + " [0.99215686],\n", + " [0.96862745],\n", + " [0.97647059],\n", + " [0.98039216],\n", + " [0.98431373],\n", + " [0.99607843],\n", + " [0.98039216],\n", + " [0.76862745],\n", + " [0.05882353],\n", + " [0.00784314],\n", + " [0.73333333],\n", + " [1. ]],\n", + "\n", + " [[0.98823529],\n", + " [0.97254902],\n", + " [0.98823529],\n", + " [0.99215686],\n", + " [0.19607843],\n", + " [0.02352941],\n", + " [0.16470588],\n", + " [0.98823529],\n", + " [0.98431373],\n", + " [0.99607843],\n", + " [0.99607843],\n", + " [0.9254902 ],\n", + " [0.61176471],\n", + " [0.02352941],\n", + " [0.1254902 ],\n", + " [0.80392157],\n", + " [1. ],\n", + " [0.98823529],\n", + " [0.98823529],\n", + " [0.98039216],\n", + " [0.96470588],\n", + " [0.99607843],\n", + " [0.99215686],\n", + " [0.78431373],\n", + " [0.00392157],\n", + " [0.00784314],\n", + " [0.73333333],\n", + " [1. ]],\n", + "\n", + " [[0.98823529],\n", + " [0.99215686],\n", + " [0.98039216],\n", + " [0.83921569],\n", + " [0.17254902],\n", + " [0.00784314],\n", + " [0.3372549 ],\n", + " [0.98823529],\n", + " [0.98431373],\n", + " [0.95294118],\n", + " [0.98431373],\n", + " [0.99607843],\n", + " [0.79215686],\n", + " [0.13333333],\n", + " [0.01176471],\n", + " [0.01960784],\n", + " [0.89803922],\n", + " [0.99607843],\n", + " [0.98039216],\n", + " [0.98039216],\n", + " [0.99607843],\n", + " [0.95294118],\n", + " [0.9372549 ],\n", + " [0.84705882],\n", + " [0.1372549 ],\n", + " [0.01568627],\n", + " [0.72156863],\n", + " [0.99607843]],\n", + "\n", + " [[0.95686275],\n", + " [0.99215686],\n", + " [0.98823529],\n", + " [0.38039216],\n", + " [0.01568627],\n", + " [0.00784314],\n", + " [0.98823529],\n", + " [0.97647059],\n", + " [0.98039216],\n", + " [1. ],\n", + " [0.97647059],\n", + " [0.97254902],\n", + " [0.99607843],\n", + " [0.85098039],\n", + " [0.26666667],\n", + " [0.02745098],\n", + " [0.3372549 ],\n", + " [0.99215686],\n", + " [0.98039216],\n", + " [0.99215686],\n", + " [0.99215686],\n", + " [0.99607843],\n", + " [0.95686275],\n", + " [0.98039216],\n", + " [0.61176471],\n", + " [0.00784314],\n", + " [0.72941176],\n", + " [1. ]],\n", + "\n", + " [[1. ],\n", + " [0.98431373],\n", + " [0.94117647],\n", + " [0.34901961],\n", + " [0.02352941],\n", + " [0.97647059],\n", + " [1. ],\n", + " [0.98431373],\n", + " [0.98039216],\n", + " [0.96470588],\n", + " [0.99215686],\n", + " [1. ],\n", + " [0.98431373],\n", + " [1. ],\n", + " [0.45098039],\n", + " [0.02745098],\n", + " [0.00392157],\n", + " [0.9372549 ],\n", + " [0.99215686],\n", + " [0.98431373],\n", + " [0.96078431],\n", + " [0.98823529],\n", + " [0.98823529],\n", + " [1. ],\n", + " [0.62745098],\n", + " [0.01568627],\n", + " [0.72156863],\n", + " [0.99607843]],\n", + "\n", + " [[0.98823529],\n", + " [0.98431373],\n", + " [0.55686275],\n", + " [0.00784314],\n", + " [0.01568627],\n", + " [0.97647059],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.99607843],\n", + " [0.98823529],\n", + " [0.61176471],\n", + " [0.04313725],\n", + " [0.08235294],\n", + " [0.65098039],\n", + " [0.99607843],\n", + " [0.99607843],\n", + " [0.97647059],\n", + " [0.99215686],\n", + " [0.99607843],\n", + " [0.63137255],\n", + " [0.02352941],\n", + " [0.7254902 ],\n", + " [1. ]],\n", + "\n", + " [[0.99607843],\n", + " [0.98823529],\n", + " [0.55294118],\n", + " [0.04705882],\n", + " [0.04705882],\n", + " [0.9372549 ],\n", + " [0.98431373],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.98823529],\n", + " [0.99607843],\n", + " [0.05098039],\n", + " [0.00392157],\n", + " [0.30196078],\n", + " [1. ],\n", + " [0.99607843],\n", + " [0.99607843],\n", + " [0.94117647],\n", + " [0.79607843],\n", + " [0.04705882],\n", + " [0.00392157],\n", + " [0.72941176],\n", + " [0.99215686]],\n", + "\n", + " [[0.98039216],\n", + " [0.73333333],\n", + " [0.00784314],\n", + " [0.01568627],\n", + " [0.79607843],\n", + " [0.97254902],\n", + " [0.98823529],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.98823529],\n", + " [0.98823529],\n", + " [0.98823529],\n", + " [0.98039216],\n", + " [0.3372549 ],\n", + " [0.00392157],\n", + " [0.31764706],\n", + " [0.87843137],\n", + " [0.96862745],\n", + " [0.98431373],\n", + " [0.80392157],\n", + " [0.01960784],\n", + " [0.02352941],\n", + " [0.72156863],\n", + " [1. ]],\n", + "\n", + " [[0.99215686],\n", + " [0.68627451],\n", + " [0.00784314],\n", + " [0.01176471],\n", + " [0.78823529],\n", + " [1. ],\n", + " [0.96078431],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.98039216],\n", + " [0.97647059],\n", + " [0.99607843],\n", + " [0.98823529],\n", + " [0.96862745],\n", + " [0.52156863],\n", + " [0.01176471],\n", + " [0.14901961],\n", + " [0.86666667],\n", + " [0.99215686],\n", + " [0.80392157],\n", + " [0.01960784],\n", + " [0. ],\n", + " [0.73333333],\n", + " [0.99215686]],\n", + "\n", + " [[0.99607843],\n", + " [0.78823529],\n", + " [0.14901961],\n", + " [0.1372549 ],\n", + " [0.84313725],\n", + " [0.96470588],\n", + " [0.99607843],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.99607843],\n", + " [0.99607843],\n", + " [0.97254902],\n", + " [0.99215686],\n", + " [0.98823529],\n", + " [0.98823529],\n", + " [0.61568627],\n", + " [0.08627451],\n", + " [0.00392157],\n", + " [0.01960784],\n", + " [0.63529412],\n", + " [0.01176471],\n", + " [0.01568627],\n", + " [0.70980392],\n", + " [0.8 ]],\n", + "\n", + " [[0.99607843],\n", + " [0.99215686],\n", + " [0.83921569],\n", + " [0.86666667],\n", + " [0.99607843],\n", + " [1. ],\n", + " [0.99215686],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.99607843],\n", + " [0.99607843],\n", + " [1. ],\n", + " [0.98823529],\n", + " [0.99607843],\n", + " [0.97647059],\n", + " [0.99215686],\n", + " [0.75686275],\n", + " [0.10196078],\n", + " [0.01568627],\n", + " [0.01568627],\n", + " [0.01568627],\n", + " [0.00784314],\n", + " [0.73333333],\n", + " [0.6745098 ]],\n", + "\n", + " [[1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.99215686],\n", + " [1. ],\n", + " [0.06666667],\n", + " [0.07843137],\n", + " [0.04313725],\n", + " [0.03921569],\n", + " [0.73333333],\n", + " [0.99607843]],\n", + "\n", + " [[1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.98039216],\n", + " [0.99607843],\n", + " [0.95294118],\n", + " [0.97647059],\n", + " [0.79607843],\n", + " [0.77254902],\n", + " [0.99607843],\n", + " [1. ]],\n", + "\n", + " [[1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.96078431],\n", + " [0.98823529],\n", + " [0.99607843],\n", + " [0.98431373],\n", + " [0.97647059],\n", + " [0.98823529],\n", + " [1. ]],\n", + "\n", + " [[1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.98823529],\n", + " [0.97647059],\n", + " [0.96470588],\n", + " [0.97254902],\n", + " [0.98431373],\n", + " [0.98039216],\n", + " [0.98823529],\n", + " [1. ]],\n", + "\n", + " [[1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [1. ],\n", + " [0.99215686],\n", + " [0.95686275],\n", + " [0.98039216],\n", + " [0.99607843],\n", + " [0.98823529],\n", + " [0.99607843],\n", + " [0.98823529],\n", + " [1. ]]]])" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "my_lol_img" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "import keras" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "model = keras.models.load_model('my_model.h5')" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "my_lol_prediction = model.predict(my_lol_img)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1.1581924e-07, 4.1368559e-10, 6.4555923e-07, 2.2491538e-05,\n", + " 1.4397167e-12, 3.6010979e-15, 5.0695167e-11, 8.0478216e-08,\n", + " 3.4654861e-12, 6.4896874e-08, 1.4367749e-06, 8.8046843e-05,\n", + " 7.5111379e-06, 2.3038849e-01, 1.7430016e-06, 5.7561249e-09,\n", + " 4.5668517e-07, 4.1635683e-08, 5.5010565e-09, 1.1502559e-11,\n", + " 7.6300371e-01, 6.4844764e-03, 3.5521356e-07, 3.8272912e-08,\n", + " 2.2634480e-07, 2.1373243e-10]], dtype=float32)" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "my_lol_prediction" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Largest element present in given array: 0.7630037\n" + ] + } + ], + "source": [ + "max = my_lol_prediction[0][0]; \n", + " \n", + "#Loop through the array \n", + "for i in range(0, len(my_lol_prediction[0])): \n", + " #Compare elements of array with max \n", + " if(my_lol_prediction[0][i] > max): \n", + " max = my_lol_prediction[0][i]; \n", + " \n", + "print(\"Largest element present in given array: \" + str(max)); " + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "20\n" + ] + } + ], + "source": [ + "for i in range(0, len(my_lol_prediction[0])):\n", + " if(my_lol_prediction[0][i] == max):\n", + " print(i)" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.9999999418151907\n" + ] + } + ], + "source": [ + "mysum = 0\n", + "for i in range(0, len(my_lol_prediction[0])):\n", + " mysum = mysum + my_lol_prediction[0][i]\n", + "print(mysum)" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [], + "source": [ + "my_lol_prediction_2 = np_utils.to_categorical(my_lol_prediction)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[[1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.],\n", + " [1.]]], dtype=float32)" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "my_lol_prediction_2" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "in user code:\n\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1478 predict_function *\n return step_function(self, iterator)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1468 step_function **\n outputs = model.distribute_strategy.run(run_step, args=(data,))\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:1259 run\n return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:2730 call_for_each_replica\n return self._call_for_each_replica(fn, args, kwargs)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:3417 _call_for_each_replica\n return fn(*args, **kwargs)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1461 run_step **\n outputs = model.predict_step(data)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1434 predict_step\n return self(x, training=False)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py:998 __call__\n input_spec.assert_input_compatibility(self.input_spec, inputs, self.name)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/input_spec.py:234 assert_input_compatibility\n raise ValueError('Input ' + str(input_index) + ' of layer ' +\n\n ValueError: Input 0 of layer sequential is incompatible with the layer: : expected min_ndim=4, found ndim=3. Full shape received: (None, 28, 1)\n", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mmy_lol_prediction_3\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py\u001b[0m in \u001b[0;36mpredict\u001b[0;34m(self, x, batch_size, verbose, steps, callbacks, max_queue_size, workers, use_multiprocessing)\u001b[0m\n\u001b[1;32m 1627\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mstep\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mdata_handler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msteps\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1628\u001b[0m \u001b[0mcallbacks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mon_predict_batch_begin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstep\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1629\u001b[0;31m \u001b[0mtmp_batch_outputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0miterator\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1630\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdata_handler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshould_sync\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1631\u001b[0m \u001b[0mcontext\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0masync_wait\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwds)\u001b[0m\n\u001b[1;32m 826\u001b[0m \u001b[0mtracing_count\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexperimental_get_tracing_count\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 827\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mtrace\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTrace\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_name\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mtm\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 828\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 829\u001b[0m \u001b[0mcompiler\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"xla\"\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_experimental_compile\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0;34m\"nonXla\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 830\u001b[0m \u001b[0mnew_tracing_count\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexperimental_get_tracing_count\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py\u001b[0m in \u001b[0;36m_call\u001b[0;34m(self, *args, **kwds)\u001b[0m\n\u001b[1;32m 860\u001b[0m \u001b[0;31m# In this case we have not created variables on the first call. So we can\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 861\u001b[0m \u001b[0;31m# run the first trace but we should fail if variables are created.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 862\u001b[0;31m \u001b[0mresults\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_stateful_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 863\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_created_variables\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 864\u001b[0m raise ValueError(\"Creating variables on a non-first call to a function\"\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/function.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 2939\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_lock\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2940\u001b[0m (graph_function,\n\u001b[0;32m-> 2941\u001b[0;31m filtered_flat_args) = self._maybe_define_function(args, kwargs)\n\u001b[0m\u001b[1;32m 2942\u001b[0m return graph_function._call_flat(\n\u001b[1;32m 2943\u001b[0m filtered_flat_args, captured_inputs=graph_function.captured_inputs) # pylint: disable=protected-access\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/function.py\u001b[0m in \u001b[0;36m_maybe_define_function\u001b[0;34m(self, args, kwargs)\u001b[0m\n\u001b[1;32m 3355\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minput_signature\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;32mand\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3356\u001b[0m call_context_key in self._function_cache.missed):\n\u001b[0;32m-> 3357\u001b[0;31m return self._define_function_with_shape_relaxation(\n\u001b[0m\u001b[1;32m 3358\u001b[0m args, kwargs, flat_args, filtered_flat_args, cache_key_context)\n\u001b[1;32m 3359\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/function.py\u001b[0m in \u001b[0;36m_define_function_with_shape_relaxation\u001b[0;34m(self, args, kwargs, flat_args, filtered_flat_args, cache_key_context)\u001b[0m\n\u001b[1;32m 3277\u001b[0m expand_composites=True)\n\u001b[1;32m 3278\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3279\u001b[0;31m graph_function = self._create_graph_function(\n\u001b[0m\u001b[1;32m 3280\u001b[0m args, kwargs, override_flat_arg_shapes=relaxed_arg_shapes)\n\u001b[1;32m 3281\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_function_cache\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marg_relaxed\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mrank_only_cache_key\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgraph_function\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/function.py\u001b[0m in \u001b[0;36m_create_graph_function\u001b[0;34m(self, args, kwargs, override_flat_arg_shapes)\u001b[0m\n\u001b[1;32m 3194\u001b[0m \u001b[0marg_names\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbase_arg_names\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mmissing_arg_names\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3195\u001b[0m graph_function = ConcreteFunction(\n\u001b[0;32m-> 3196\u001b[0;31m func_graph_module.func_graph_from_py_func(\n\u001b[0m\u001b[1;32m 3197\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_name\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3198\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_python_function\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/framework/func_graph.py\u001b[0m in \u001b[0;36mfunc_graph_from_py_func\u001b[0;34m(name, python_func, args, kwargs, signature, func_graph, autograph, autograph_options, add_control_dependencies, arg_names, op_return_value, collections, capture_by_value, override_flat_arg_shapes)\u001b[0m\n\u001b[1;32m 988\u001b[0m \u001b[0m_\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0moriginal_func\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtf_decorator\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0munwrap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpython_func\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 989\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 990\u001b[0;31m \u001b[0mfunc_outputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpython_func\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mfunc_args\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mfunc_kwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 991\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 992\u001b[0m \u001b[0;31m# invariant: `func_outputs` contains only Tensors, CompositeTensors,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py\u001b[0m in \u001b[0;36mwrapped_fn\u001b[0;34m(*args, **kwds)\u001b[0m\n\u001b[1;32m 632\u001b[0m \u001b[0mxla_context\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mExit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 633\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 634\u001b[0;31m \u001b[0mout\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mweak_wrapped_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__wrapped__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 635\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mout\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 636\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/framework/func_graph.py\u001b[0m in \u001b[0;36mwrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 975\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# pylint:disable=broad-except\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 976\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhasattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"ag_error_metadata\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 977\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mag_error_metadata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_exception\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 978\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 979\u001b[0m \u001b[0;32mraise\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: in user code:\n\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1478 predict_function *\n return step_function(self, iterator)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1468 step_function **\n outputs = model.distribute_strategy.run(run_step, args=(data,))\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:1259 run\n return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:2730 call_for_each_replica\n return self._call_for_each_replica(fn, args, kwargs)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:3417 _call_for_each_replica\n return fn(*args, **kwargs)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1461 run_step **\n outputs = model.predict_step(data)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:1434 predict_step\n return self(x, training=False)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py:998 __call__\n input_spec.assert_input_compatibility(self.input_spec, inputs, self.name)\n /Users/nishanthkrishna/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/input_spec.py:234 assert_input_compatibility\n raise ValueError('Input ' + str(input_index) + ' of layer ' +\n\n ValueError: Input 0 of layer sequential is incompatible with the layer: : expected min_ndim=4, found ndim=3. Full shape received: (None, 28, 1)\n" + ] + } + ], + "source": [ + "my_lol_prediction_3 = model.predict(X_train[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(28, 28, 1)" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train[0].shape" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/Segment/final_img.png b/Segment/final_img.png new file mode 100644 index 0000000..743d8a1 Binary files /dev/null and b/Segment/final_img.png differ diff --git a/Segment/line_img.png b/Segment/line_img.png new file mode 100644 index 0000000..fa8b22b Binary files /dev/null and b/Segment/line_img.png differ diff --git a/Segment/mo_img.png b/Segment/mo_img.png new file mode 100644 index 0000000..8430476 Binary files /dev/null and b/Segment/mo_img.png differ diff --git a/Segment/my_model.h5 b/Segment/my_model.h5 new file mode 100644 index 0000000..ce2c242 Binary files /dev/null and b/Segment/my_model.h5 differ diff --git a/Segment/n_image copy.jpg b/Segment/n_image copy.jpg new file mode 100644 index 0000000..bc79a32 Binary files /dev/null and b/Segment/n_image copy.jpg differ diff --git a/Segment/segment.ipynb b/Segment/segment.ipynb new file mode 100644 index 0000000..93de424 --- /dev/null +++ b/Segment/segment.ipynb @@ -0,0 +1,2151 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [], + "source": [ + "import PIL\n", + "from PIL import Image, ImageEnhance, ImageDraw, ImageFont\n", + "from IPython.display import display\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [], + "source": [ + "img = Image.open('download.png')" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWGL/B+lRp33ljIYMAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(img)" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(659, 821)" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "img.size" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAYAAAB5fY51AAAEkUlEQVR4nO3dTahncxzH8fc8mRlPwxRD5KFEmoUixEJhYaFsLCgpSyvZyM5WFmIjG6VYEbEhZUk2wk4mC0rIw3jIs2GuxTnX+V+PY+5c/2O8XvXrnu7/nF/ff7f76XfO//f7/QsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4E1dXt1Y7ll0IwF85u/qsWqluWXItMEubl10AvzquaWS1e5mFwFwJrPn4pvp6PP5smYXAXAms+fhhbDUFF7BAYM3H1rFVHbPMQmCuBNZ8bB9bDc+zgN8QWPPxzdiqPl9mITBXAms+to2tppEWsEBgzcdiYO1cZiEwVwJrnjYtuwCYI4E1H6Y1wN8QWPOxeEtoLSH8AYE1Hx66w98QWPNxYGw13RoCCwTWfGwZW00z3oEF/jHm47uxnVx9+Rfn7WpaxnOw4RPFbdVH1U8bXCMslcCaj51N8692/ea13dWV1bXVDeN525oCa3u1r3qlenL8CbBhzmtYkrNS3VZdWN1dPVK9M/5+tb1ffVp9XH3SMA1i9bUD1X1ZQA1soDOrD6ufqyeawmu1vVbdU13VMOI6rTq12lOdVd1cPbVw/jPVCf/qOwD+N86t9rc2pN5qCKlrOrSpDlsaRmUHx+sfyG0/sAEuq75tCqvnq72H2dfjYx8Hq0uPSHUACx5sCqsXq+PX0dcFTeF3/7org5kwD2setjY8ZK/6qrqj9a0n/GLhereEHDUE1jzsqS4ej/dXH6yzv00Nt4M1zZ6H/zyBNQ+rz5tq7d7uh+vnhWMjLI4aAmseNjcty/m+tYFzOM5tmtLw0Tr7gtkQWPOxumnfltb/d7mxOnY8fm6dfQGscUbDrPWV6o3W9605FzWMqlYaJpLabhk4os5oWGKzUr1ZnXiY/ZxTPd00PeKKI1EcwKI91XsNIbOv3y9+PhQ3NXy6uBpWD2d0BWyA0xvWEa4ux/kngbW1urdpOc7+6vY8nwQ2yI7qpYbA+bA65RCvu7x6tmlU9Xh1/gbUB7DGo00jpMUR1qaG0dLmhj2w9lbXjecfGK/5vroroyqOciYVzser1a0N28rc2bD76LENOzUc03DLd3zDCGp154ZvG4Lrserlf7dc4P/qpOrt1m4t82ftk+r16qHqkiXUCkvjG4bnYVN1fcP2xzV9qerWhoXML1Q/Noy43m3a6A8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAID/iF8AkNOhqHDllTIAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "re_img = img.resize((300,300))\n", + "re_img.save('mo_img.png')\n", + "mo_img = Image.open('mo_img.png')\n", + "display(mo_img)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [], + "source": [ + "from numpy import asarray" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [], + "source": [ + "data = asarray(mo_img)" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "numpy.ndarray" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(data)" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(300, 300, 4)" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[[0, 0, 0, 0],\n", + " [0, 0, 0, 0],\n", + " [0, 0, 0, 0],\n", + " ...,\n", + " [0, 0, 0, 0],\n", + " [0, 0, 0, 0],\n", + " [0, 0, 0, 0]],\n", + "\n", + " [[0, 0, 0, 0],\n", + " [0, 0, 0, 0],\n", + " [0, 0, 0, 0],\n", + " ...,\n", + " [0, 0, 0, 0],\n", + " [0, 0, 0, 0],\n", + " [0, 0, 0, 0]],\n", + "\n", + " [[0, 0, 0, 0],\n", + " [0, 0, 0, 0],\n", + " [0, 0, 0, 0],\n", + " ...,\n", + " [0, 0, 0, 0],\n", + " [0, 0, 0, 0],\n", + " [0, 0, 0, 0]],\n", + "\n", + " ...,\n", + "\n", + " [[0, 0, 0, 0],\n", + " [0, 0, 0, 0],\n", + " [0, 0, 0, 0],\n", + " ...,\n", + " [0, 0, 0, 0],\n", + " [0, 0, 0, 0],\n", + " [0, 0, 0, 0]],\n", + "\n", + " [[0, 0, 0, 0],\n", + " [0, 0, 0, 0],\n", + " [0, 0, 0, 0],\n", + " ...,\n", + " [0, 0, 0, 0],\n", + " [0, 0, 0, 0],\n", + " [0, 0, 0, 0]],\n", + "\n", + " [[0, 0, 0, 0],\n", + " [0, 0, 0, 0],\n", + " [0, 0, 0, 0],\n", + " ...,\n", + " [0, 0, 0, 0],\n", + " [0, 0, 0, 0],\n", + " [0, 0, 0, 0]]], dtype=uint8)" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [], + "source": [ + "data_1 = data" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [], + "source": [ + "from numpy import sum" + ] + }, + { + "cell_type": "code", + "execution_count": 221, + "metadata": {}, + "outputs": [ + { + "ename": "IndexError", + "evalue": "index 74 is out of bounds for axis 0 with size 74", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mmy_list\u001b[0m \u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m300\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mmy_list\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata_1\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mIndexError\u001b[0m: index 74 is out of bounds for axis 0 with size 74" + ] + } + ], + "source": [ + "my_list =[]\n", + "for i in range(300): \n", + " my_list.append((sum(data_1[i])))" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.6509803921568628,\n", + " 2.411764705882353,\n", + " 2.556862745098039,\n", + " 2.396078431372549,\n", + " 2.2941176470588234,\n", + " 2.3490196078431373,\n", + " 2.447058823529412,\n", + " 2.2941176470588234,\n", + " 2.3607843137254902,\n", + " 2.4352941176470586,\n", + " 2.43921568627451,\n", + " 2.3372549019607844,\n", + " 2.407843137254902,\n", + " 2.4745098039215687,\n", + " 2.407843137254902,\n", + " 2.447058823529412,\n", + " 2.831372549019608,\n", + " 10.427450980392157,\n", + " 15.733333333333333,\n", + " 12.364705882352942,\n", + " 8.737254901960783,\n", + " 6.901960784313726,\n", + " 6.015686274509804,\n", + " 5.427450980392157,\n", + " 5.513725490196078,\n", + " 5.537254901960784,\n", + " 5.603921568627451,\n", + " 5.698039215686275,\n", + " 5.686274509803922,\n", + " 5.949019607843137,\n", + " 6.76078431372549,\n", + " 6.796078431372549,\n", + " 6.47843137254902,\n", + " 7.145098039215687,\n", + " 11.647058823529411,\n", + " 12.435294117647059,\n", + " 4.474509803921569,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0]" + ] + }, + "execution_count": 69, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "my_list" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [], + "source": [ + "my_rows = []\n", + "for i in range(300):\n", + " my_rows.append(i)" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0,\n", + " 1,\n", + " 2,\n", + " 3,\n", + " 4,\n", + " 5,\n", + " 6,\n", + " 7,\n", + " 8,\n", + " 9,\n", + " 10,\n", + " 11,\n", + " 12,\n", + " 13,\n", + " 14,\n", + " 15,\n", + " 16,\n", + " 17,\n", + " 18,\n", + " 19,\n", + " 20,\n", + " 21,\n", + " 22,\n", + " 23,\n", + " 24,\n", + " 25,\n", + " 26,\n", + " 27,\n", + " 28,\n", + " 29,\n", + " 30,\n", + " 31,\n", + " 32,\n", + " 33,\n", + " 34,\n", + " 35,\n", + " 36,\n", + " 37,\n", + " 38,\n", + " 39,\n", + " 40,\n", + " 41,\n", + " 42,\n", + " 43,\n", + " 44,\n", + " 45,\n", + " 46,\n", + " 47,\n", + " 48,\n", + " 49,\n", + " 50,\n", + " 51,\n", + " 52,\n", + " 53,\n", + " 54,\n", + " 55,\n", + " 56,\n", + " 57,\n", + " 58,\n", + " 59,\n", + " 60,\n", + " 61,\n", + " 62,\n", + " 63,\n", + " 64,\n", + " 65,\n", + " 66,\n", + " 67,\n", + " 68,\n", + " 69,\n", + " 70,\n", + " 71,\n", + " 72,\n", + " 73,\n", + " 74,\n", + " 75,\n", + " 76,\n", + " 77,\n", + " 78,\n", + " 79,\n", + " 80,\n", + " 81,\n", + " 82,\n", + " 83,\n", + " 84,\n", + " 85,\n", + " 86,\n", + " 87,\n", + " 88,\n", + " 89,\n", + " 90,\n", + " 91,\n", + " 92,\n", + " 93,\n", + " 94,\n", + " 95,\n", + " 96,\n", + " 97,\n", + " 98,\n", + " 99,\n", + " 100,\n", + " 101,\n", + " 102,\n", + " 103,\n", + " 104,\n", + " 105,\n", + " 106,\n", + " 107,\n", + " 108,\n", + " 109,\n", + " 110,\n", + " 111,\n", + " 112,\n", + " 113,\n", + " 114,\n", + " 115,\n", + " 116,\n", + " 117,\n", + " 118,\n", + " 119,\n", + " 120,\n", + " 121,\n", + " 122,\n", + " 123,\n", + " 124,\n", + " 125,\n", + " 126,\n", + " 127,\n", + " 128,\n", + " 129,\n", + " 130,\n", + " 131,\n", + " 132,\n", + " 133,\n", + " 134,\n", + " 135,\n", + " 136,\n", + " 137,\n", + " 138,\n", + " 139,\n", + " 140,\n", + " 141,\n", + " 142,\n", + " 143,\n", + " 144,\n", + " 145,\n", + " 146,\n", + " 147,\n", + " 148,\n", + " 149,\n", + " 150,\n", + " 151,\n", + " 152,\n", + " 153,\n", + " 154,\n", + " 155,\n", + " 156,\n", + " 157,\n", + " 158,\n", + " 159,\n", + " 160,\n", + " 161,\n", + " 162,\n", + " 163,\n", + " 164,\n", + " 165,\n", + " 166,\n", + " 167,\n", + " 168,\n", + " 169,\n", + " 170,\n", + " 171,\n", + " 172,\n", + " 173,\n", + " 174,\n", + " 175,\n", + " 176,\n", + " 177,\n", + " 178,\n", + " 179,\n", + " 180,\n", + " 181,\n", + " 182,\n", + " 183,\n", + " 184,\n", + " 185,\n", + " 186,\n", + " 187,\n", + " 188,\n", + " 189,\n", + " 190,\n", + " 191,\n", + " 192,\n", + " 193,\n", + " 194,\n", + " 195,\n", + " 196,\n", + " 197,\n", + " 198,\n", + " 199,\n", + " 200,\n", + " 201,\n", + " 202,\n", + " 203,\n", + " 204,\n", + " 205,\n", + " 206,\n", + " 207,\n", + " 208,\n", + " 209,\n", + " 210,\n", + " 211,\n", + " 212,\n", + " 213,\n", + " 214,\n", + " 215,\n", + " 216,\n", + " 217,\n", + " 218,\n", + " 219,\n", + " 220,\n", + " 221,\n", + " 222,\n", + " 223,\n", + " 224,\n", + " 225,\n", + " 226,\n", + " 227,\n", + " 228,\n", + " 229,\n", + " 230,\n", + " 231,\n", + " 232,\n", + " 233,\n", + " 234,\n", + " 235,\n", + " 236,\n", + " 237,\n", + " 238,\n", + " 239,\n", + " 240,\n", + " 241,\n", + " 242,\n", + " 243,\n", + " 244,\n", + " 245,\n", + " 246,\n", + " 247,\n", + " 248,\n", + " 249,\n", + " 250,\n", + " 251,\n", + " 252,\n", + " 253,\n", + " 254,\n", + " 255,\n", + " 256,\n", + " 257,\n", + " 258,\n", + " 259,\n", + " 260,\n", + " 261,\n", + " 262,\n", + " 263,\n", + " 264,\n", + " 265,\n", + " 266,\n", + " 267,\n", + " 268,\n", + " 269,\n", + " 270,\n", + " 271,\n", + " 272,\n", + " 273,\n", + " 274,\n", + " 275,\n", + " 276,\n", + " 277,\n", + " 278,\n", + " 279,\n", + " 280,\n", + " 281,\n", + " 282,\n", + " 283,\n", + " 284,\n", + " 285,\n", + " 286,\n", + " 287,\n", + " 288,\n", + " 289,\n", + " 290,\n", + " 291,\n", + " 292,\n", + " 293,\n", + " 294,\n", + " 295,\n", + " 296,\n", + " 297,\n", + " 298,\n", + " 299]" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "my_rows" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 73, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(my_rows,my_list)" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAASwAAAAlCAYAAAD4BdQJAAADRElEQVR4nO3dT6imUxwH8M/9N/8MwxSXRpgSaRaKEAuFhYWysaA0ZWklG9nZykJsZKOUWRGxIWVJNsJOJgtKTGPcQcwYrrnX4jyv87yDmeu+953nuPf7qdN9uu/znH5vt/vtPM97znmJltyFg9gxdCEREWdzNY5jFQ8PXEtEk2aHLiD+coE6sto7ZCERrUpgteMEfumOjw9ZSESrEljt+K1r1OCKiJ4EVjvmuwbbhiwkolUJrHZs7xrleVZEnCGB1Y4TXYMfhiwkolUJrHYsdI060oqIngRWO/qBtXPIQiJalcBq08zQBUS0KIHVjkxriDiHBFY7+reEWUsY8Q8SWO3IQ/eIc0hgtWO5a9Rbw4joSWC1Y65r1BnvEdGTf4x2/Nq1S/DTWc7boy7jWVE+UVzAUfwx5RojBpXAasdOdf7VnjNe24s7cA/u785bUANrOw7jQ7zW/YyImJprlSU5q3gEN+BJvIQvu9+P2jf4Ht/hmDINYvTaMp6RBdQRMUVX4ghO41U1vEbtYzyFO5UR1+W4DIu4Cg/h9d75b+LC8/oOImLL2I8l4yH1uRJSd1vbVIc5ZVS20l3/nNz2R8QU3IqTali9gwPr7OtQ18cKbtmQ6iIiep5Xw+o97J6gr+vV8Ht24soiGpF5WG2YVx6yw894zGTrCX/sXZ9bwtg0ElhtWMRN3fESvp2wvxnldpA6ez7ify+B1YbR8ybG93Zfr9O944ywYtNIYLVhVl2Wc8p44KzHfnVKw9EJ+4poRgKrHaNN++ZM/nd5ALu647cn7CsiYsw+Zdb6Kj412bfm3KiMqlaViaTZbjkiNtQ+ZYnNKj7DRevs5xq8oU6PuH0jiouI6FvE10rIHPb3xc9r8aDy6eIorF6U0VVETMEVyjrC0XKc/xJY83haXY6zhEfl+WRETMkOvK8EzhFcusbrbsNb6qjqEK6bQn0REWNeVkdI/RHWjDJamlX2wDqAe7vzl7trTuEJGVXFJpdJhe34CAeVbWUeV3Yf3aXs1LBNueXbrYygRjs3nFSC6xV8cH7LjYit6mJ8YXxrmX9rx/AJXsDNA9QaMZh8w3AbZnCfsv0x9UtV55WFzO/id2XE9ZW60V/ElvIncpyhqMfjzQ0AAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(mo_img.crop((0,39,300,76)))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": {}, + "outputs": [], + "source": [ + "def getRow(mylist):\n", + " i=0\n", + " while(mylist[i]==0.0):\n", + " i=i+1\n", + " print(i)\n", + " j=i\n", + " while(mylist[j]!=0.0):\n", + " j=j+1\n", + " print(j)" + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "39\n", + "76\n" + ] + } + ], + "source": [ + "getRow(my_list)" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": {}, + "outputs": [], + "source": [ + "line_img = mo_img.crop((0,39,300,76))" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(300, 37)" + ] + }, + "execution_count": 107, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "line_img.size" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAASwAAAAlCAYAAAD4BdQJAAADRElEQVR4nO3dT6imUxwH8M/9N/8MwxSXRpgSaRaKEAuFhYWysaA0ZWklG9nZykJsZKOUWRGxIWVJNsJOJgtKTGPcQcwYrrnX4jyv87yDmeu+953nuPf7qdN9uu/znH5vt/vtPM97znmJltyFg9gxdCEREWdzNY5jFQ8PXEtEk2aHLiD+coE6sto7ZCERrUpgteMEfumOjw9ZSESrEljt+K1r1OCKiJ4EVjvmuwbbhiwkolUJrHZs7xrleVZEnCGB1Y4TXYMfhiwkolUJrHYsdI060oqIngRWO/qBtXPIQiJalcBq08zQBUS0KIHVjkxriDiHBFY7+reEWUsY8Q8SWO3IQ/eIc0hgtWO5a9Rbw4joSWC1Y65r1BnvEdGTf4x2/Nq1S/DTWc7boy7jWVE+UVzAUfwx5RojBpXAasdOdf7VnjNe24s7cA/u785bUANrOw7jQ7zW/YyImJprlSU5q3gEN+BJvIQvu9+P2jf4Ht/hmDINYvTaMp6RBdQRMUVX4ghO41U1vEbtYzyFO5UR1+W4DIu4Cg/h9d75b+LC8/oOImLL2I8l4yH1uRJSd1vbVIc5ZVS20l3/nNz2R8QU3IqTali9gwPr7OtQ18cKbtmQ6iIiep5Xw+o97J6gr+vV8Ht24soiGpF5WG2YVx6yw894zGTrCX/sXZ9bwtg0ElhtWMRN3fESvp2wvxnldpA6ez7ify+B1YbR8ybG93Zfr9O944ywYtNIYLVhVl2Wc8p44KzHfnVKw9EJ+4poRgKrHaNN++ZM/nd5ALu647cn7CsiYsw+Zdb6Kj412bfm3KiMqlaViaTZbjkiNtQ+ZYnNKj7DRevs5xq8oU6PuH0jiouI6FvE10rIHPb3xc9r8aDy6eIorF6U0VVETMEVyjrC0XKc/xJY83haXY6zhEfl+WRETMkOvK8EzhFcusbrbsNb6qjqEK6bQn0REWNeVkdI/RHWjDJamlX2wDqAe7vzl7trTuEJGVXFJpdJhe34CAeVbWUeV3Yf3aXs1LBNueXbrYygRjs3nFSC6xV8cH7LjYit6mJ8YXxrmX9rx/AJXsDNA9QaMZh8w3AbZnCfsv0x9UtV55WFzO/id2XE9ZW60V/ElvIncpyhqMfjzQ0AAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "execution_count": 108, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "line_img" + ] + }, + { + "cell_type": "code", + "execution_count": 140, + "metadata": {}, + "outputs": [], + "source": [ + "line_img.save('line_img.png')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# word segmentation starts" + ] + }, + { + "cell_type": "code", + "execution_count": 143, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAASwAAAAlCAYAAAD4BdQJAAADRElEQVR4nO3dT6imUxwH8M/9N/8MwxSXRpgSaRaKEAuFhYWysaA0ZWklG9nZykJsZKOUWRGxIWVJNsJOJgtKTGPcQcwYrrnX4jyv87yDmeu+953nuPf7qdN9uu/znH5vt/vtPM97znmJltyFg9gxdCEREWdzNY5jFQ8PXEtEk2aHLiD+coE6sto7ZCERrUpgteMEfumOjw9ZSESrEljt+K1r1OCKiJ4EVjvmuwbbhiwkolUJrHZs7xrleVZEnCGB1Y4TXYMfhiwkolUJrHYsdI060oqIngRWO/qBtXPIQiJalcBq08zQBUS0KIHVjkxriDiHBFY7+reEWUsY8Q8SWO3IQ/eIc0hgtWO5a9Rbw4joSWC1Y65r1BnvEdGTf4x2/Nq1S/DTWc7boy7jWVE+UVzAUfwx5RojBpXAasdOdf7VnjNe24s7cA/u785bUANrOw7jQ7zW/YyImJprlSU5q3gEN+BJvIQvu9+P2jf4Ht/hmDINYvTaMp6RBdQRMUVX4ghO41U1vEbtYzyFO5UR1+W4DIu4Cg/h9d75b+LC8/oOImLL2I8l4yH1uRJSd1vbVIc5ZVS20l3/nNz2R8QU3IqTali9gwPr7OtQ18cKbtmQ6iIiep5Xw+o97J6gr+vV8Ht24soiGpF5WG2YVx6yw894zGTrCX/sXZ9bwtg0ElhtWMRN3fESvp2wvxnldpA6ez7ify+B1YbR8ybG93Zfr9O944ywYtNIYLVhVl2Wc8p44KzHfnVKw9EJ+4poRgKrHaNN++ZM/nd5ALu647cn7CsiYsw+Zdb6Kj412bfm3KiMqlaViaTZbjkiNtQ+ZYnNKj7DRevs5xq8oU6PuH0jiouI6FvE10rIHPb3xc9r8aDy6eIorF6U0VVETMEVyjrC0XKc/xJY83haXY6zhEfl+WRETMkOvK8EzhFcusbrbsNb6qjqEK6bQn0REWNeVkdI/RHWjDJamlX2wDqAe7vzl7trTuEJGVXFJpdJhe34CAeVbWUeV3Yf3aXs1LBNueXbrYygRjs3nFSC6xV8cH7LjYit6mJ8YXxrmX9rx/AJXsDNA9QaMZh8w3AbZnCfsv0x9UtV55WFzO/id2XE9ZW60V/ElvIncpyhqMfjzQ0AAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "execution_count": 143, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "line_img" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 144, + "metadata": {}, + "outputs": [], + "source": [ + "from numpy import asarray" + ] + }, + { + "cell_type": "code", + "execution_count": 145, + "metadata": {}, + "outputs": [], + "source": [ + "data = asarray(line_img)" + ] + }, + { + "cell_type": "code", + "execution_count": 146, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(37, 300, 4)" + ] + }, + "execution_count": 146, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 166, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0,\n", + " 1,\n", + " 2,\n", + " 3,\n", + " 4,\n", + " 5,\n", + " 6,\n", + " 7,\n", + " 8,\n", + " 9,\n", + " 10,\n", + " 11,\n", + " 12,\n", + " 13,\n", + " 14,\n", + " 15,\n", + " 16,\n", + " 17,\n", + " 18,\n", + " 19,\n", + " 20,\n", + " 21,\n", + " 22,\n", + " 23,\n", + " 24,\n", + " 25,\n", + " 26,\n", + " 27,\n", + " 28,\n", + " 29,\n", + " 30,\n", + " 31,\n", + " 32,\n", + " 33,\n", + " 34,\n", + " 35,\n", + " 36,\n", + " 37,\n", + " 38,\n", + " 39,\n", + " 40,\n", + " 41,\n", + " 42,\n", + " 43,\n", + " 44,\n", + " 45,\n", + " 46,\n", + " 47,\n", + " 48,\n", + " 49,\n", + " 50,\n", + " 51,\n", + " 52,\n", + " 53,\n", + " 54,\n", + " 55,\n", + " 56,\n", + " 57,\n", + " 58,\n", + " 59,\n", + " 60,\n", + " 61,\n", + " 62,\n", + " 63,\n", + " 64,\n", + " 65,\n", + " 66,\n", + " 67,\n", + " 68,\n", + " 69,\n", + " 70,\n", + " 71,\n", + " 72,\n", + " 73,\n", + " 74,\n", + " 75,\n", + " 76,\n", + " 77,\n", + " 78,\n", + " 79,\n", + " 80,\n", + " 81,\n", + " 82,\n", + " 83,\n", + " 84,\n", + " 85,\n", + " 86,\n", + " 87,\n", + " 88,\n", + " 89,\n", + " 90,\n", + " 91,\n", + " 92,\n", + " 93,\n", + " 94,\n", + " 95,\n", + " 96,\n", + " 97,\n", + " 98,\n", + " 99,\n", + " 100,\n", + " 101,\n", + " 102,\n", + " 103,\n", + " 104,\n", + " 105,\n", + " 106,\n", + " 107,\n", + " 108,\n", + " 109,\n", + " 110,\n", + " 111,\n", + " 112,\n", + " 113,\n", + " 114,\n", + " 115,\n", + " 116,\n", + " 117,\n", + " 118,\n", + " 119,\n", + " 120,\n", + " 121,\n", + " 122,\n", + " 123,\n", + " 124,\n", + " 125,\n", + " 126,\n", + " 127,\n", + " 128,\n", + " 129,\n", + " 130,\n", + " 131,\n", + " 132,\n", + " 133,\n", + " 134,\n", + " 135,\n", + " 136,\n", + " 137,\n", + " 138,\n", + " 139,\n", + " 140,\n", + " 141,\n", + " 142,\n", + " 143,\n", + " 144,\n", + " 145,\n", + " 146,\n", + " 147,\n", + " 148,\n", + " 149,\n", + " 150,\n", + " 151,\n", + " 152,\n", + " 153,\n", + " 154,\n", + " 155,\n", + " 156,\n", + " 157,\n", + " 158,\n", + " 159,\n", + " 160,\n", + " 161,\n", + " 162,\n", + " 163,\n", + " 164,\n", + " 165,\n", + " 166,\n", + " 167,\n", + " 168,\n", + " 169,\n", + " 170,\n", + " 171,\n", + " 172,\n", + " 173,\n", + " 174,\n", + " 175,\n", + " 176,\n", + " 177,\n", + " 178,\n", + " 179,\n", + " 180,\n", + " 181,\n", + " 182,\n", + " 183,\n", + " 184,\n", + " 185,\n", + " 186,\n", + " 187,\n", + " 188,\n", + " 189,\n", + " 190,\n", + " 191,\n", + " 192,\n", + " 193,\n", + " 194,\n", + " 195,\n", + " 196,\n", + " 197,\n", + " 198,\n", + " 199,\n", + " 200,\n", + " 201,\n", + " 202,\n", + " 203,\n", + " 204,\n", + " 205,\n", + " 206,\n", + " 207,\n", + " 208,\n", + " 209,\n", + " 210,\n", + " 211,\n", + " 212,\n", + " 213,\n", + " 214,\n", + " 215,\n", + " 216,\n", + " 217,\n", + " 218,\n", + " 219,\n", + " 220,\n", + " 221,\n", + " 222,\n", + " 223,\n", + " 224,\n", + " 225,\n", + " 226,\n", + " 227,\n", + " 228,\n", + " 229,\n", + " 230,\n", + " 231,\n", + " 232,\n", + " 233,\n", + " 234,\n", + " 235,\n", + " 236,\n", + " 237,\n", + " 238,\n", + " 239,\n", + " 240,\n", + " 241,\n", + " 242,\n", + " 243,\n", + " 244,\n", + " 245,\n", + " 246,\n", + " 247,\n", + " 248,\n", + " 249,\n", + " 250,\n", + " 251,\n", + " 252,\n", + " 253,\n", + " 254,\n", + " 255,\n", + " 256,\n", + " 257,\n", + " 258,\n", + " 259,\n", + " 260,\n", + " 261,\n", + " 262,\n", + " 263,\n", + " 264,\n", + " 265,\n", + " 266,\n", + " 267,\n", + " 268,\n", + " 269,\n", + " 270,\n", + " 271,\n", + " 272,\n", + " 273,\n", + " 274,\n", + " 275,\n", + " 276,\n", + " 277,\n", + " 278,\n", + " 279,\n", + " 280,\n", + " 281,\n", + " 282,\n", + " 283,\n", + " 284,\n", + " 285,\n", + " 286,\n", + " 287,\n", + " 288,\n", + " 289,\n", + " 290,\n", + " 291,\n", + " 292,\n", + " 293,\n", + " 294,\n", + " 295,\n", + " 296,\n", + " 297,\n", + " 298,\n", + " 299]" + ] + }, + "execution_count": 166, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "my_cols = []\n", + "for i in range(300):\n", + " my_cols.append(i)\n", + "my_cols\n" + ] + }, + { + "cell_type": "code", + "execution_count": 148, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(37, 300, 4)" + ] + }, + "execution_count": 148, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 149, + "metadata": {}, + "outputs": [], + "source": [ + "data_1=data.reshape(74,600)" + ] + }, + { + "cell_type": "code", + "execution_count": 150, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0, 0, 0, ..., 0, 0, 0],\n", + " [0, 0, 0, ..., 0, 0, 0],\n", + " [0, 0, 0, ..., 0, 0, 0],\n", + " ...,\n", + " [0, 0, 0, ..., 0, 0, 0],\n", + " [0, 0, 0, ..., 0, 0, 0],\n", + " [0, 0, 0, ..., 0, 0, 0]], dtype=uint8)" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(data_1)" + ] + }, + { + "cell_type": "code", + "execution_count": 196, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0, 0, 0, 34], dtype=uint8)" + ] + }, + "execution_count": 196, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data[10][98]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 219, + "metadata": {}, + "outputs": [], + "source": [ + "my_col_list =[]\n", + "for j in range(300):\n", + " for i in range(37):\n", + " col_list_1=[]\n", + " col_list_1.append(data[i][j][3])\n", + " my_col_list.append((sum(col_list_1)))\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 220, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 1,\n", + " 76,\n", + " 154,\n", + " 154,\n", + " 147,\n", + " 140,\n", + " 144,\n", + " 128,\n", + " 56,\n", + " 50,\n", + " 60,\n", + " 28,\n", + " 3,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0,\n", + " 0]" + ] + }, + "execution_count": 220, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "my_col_list" + ] + }, + { + "cell_type": "code", + "execution_count": 202, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 202, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(my_cols,my_col_list)" + ] + }, + { + "cell_type": "code", + "execution_count": 203, + "metadata": {}, + "outputs": [], + "source": [ + "def getCol(mylist):\n", + " i=0\n", + " while(mylist[i]==0.0):\n", + " i=i+1\n", + " print(i)\n", + " j=i\n", + " while(mylist[j]!=0.0):\n", + " j=j+1\n", + " print(j)" + ] + }, + { + "cell_type": "code", + "execution_count": 206, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "97\n", + "110\n" + ] + } + ], + "source": [ + "getCol(my_col_list)" + ] + }, + { + "cell_type": "code", + "execution_count": 208, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(300, 37)" + ] + }, + "execution_count": 208, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "line_img.size" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "display(line_img.crop())" + ] + }, + { + "cell_type": "code", + "execution_count": 222, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAA0AAAAlCAYAAACZFGMnAAABhUlEQVR4nKXVT2oUQRTH8c9MJhMnBkbiMoK6UBD3WbgQNAsXgheQ3METeAav4QVE8Qiia0FBV2YRkjFiYkzUcVGv6EoySVX0wY+upt+36/X7U01n97COCxrtKrYxxeOacz+uF4sdlluhXXyP9XYr9DOkgKvQIATDVmghRPq+Jmg3BJNWaD6Udz03NGqFSuu1Qv+U8jK8au/9VyIOQ4owq9BciK4zqtCPEOyc4T/G5fzWka4+42OOy7iDNTzCKEM9R+tzKxxuhPO14tmXvLiCDfzGc6n/poXe4inuKob0OraOOb4Px/tOKcMq9grgBW7PciztWQG8xlINGOBVAN+kJFRtBZsBfXIy5SesH85/il2bOqKva6F9Ke1ViK6wc2YP5szw8tt3nKPL804LRahnQr+kb8nhNZ0RfV3GpjUgQxN8jPuxxmN5v4CGOCie94po5qV+fJDDeiP9BSd4Ik3xotThQ6n4S7gpOv4SPjg6FqdpE+/yxD6UJpXu4BzgK15GyIv4jI2/xEZbD3bA4hwAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(mo_img.crop((97,39,110,76)))" + ] + }, + { + "cell_type": "code", + "execution_count": 235, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAABoAAAAlCAYAAABcZvm2AAACZ0lEQVR4nL3XT4hPURQH8M/85p9hGBRDI0yJJgtFiIXCwkLZWFBSllaykZ2tLMRGNkqZFREbUpZkI+xEFpSYBmOIGX/G/H4W9z73zc/vN34z4zl1eve9e+753nPvOd97H0m24yBmKVBW4AMqOFAEQCk+50iRLCwSaARfYvtDkUDfo8oBFgLUEhXaigRqj0rYr8KARqLCcJFArVFJkRUO1FEkUF6aigT6b+mdX7pCuO6/J8NYVNISFgLUHJXEEP9UMqdfoy7Ap0nsuyS6KgsZ2opB/GwEqEOqn64qm4XYip3YE+1ac0DteIb7uBKfdWWVQD0VHEIfjuMCXsTvmb7Ge7zFO6Ecsr4xnDIJMS/DAMZxOQea6UOcwLYY4RIsRjeWYz+u5uyvY24toF4MVTl/Gp3v0FjKN8dVKMfxZ9RIrE0YzYHcwtoGnNeS/uijjI3VnWdzIHfQOU0QWCNN+nT2sSSE1xffP+OImfHdx9z430tXEjZ0fXwfwpsZgBBSvhzbGdsoSeuZzWCmzDCea0+IqCTRz7cqw+lIr5Tag3kg0mHXrPZhOBXZi9mxfTPf0SNUeQWPzewWtE6IoiIU8IRrQY9AJRU8wbxpgqzENalMtlQbdONV7HzmT1JtRPYJ2ZqBnFfjkrNU4LmMdqYC1IKTEu0M4bA6+zwLd6PhABY1CLIZN6Qo+rH6b4Mu5maUj6hJKoFWgf92RfuxOOYbjtWLIpOsoB4If3vDOCqctrMF5m4TlqYzzjhj8tEIeAn3/hYJzMdzE4+IevoOj3AOGxpxnklT1N3CMU26TLYIBHkbP2KEL6UDckryC510oah6PawhAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(mo_img.crop((97,39,123,76)))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 236, + "metadata": {}, + "outputs": [], + "source": [ + "final_img = mo_img.crop((97,39,123,76))" + ] + }, + { + "cell_type": "code", + "execution_count": 237, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAABoAAAAlCAYAAABcZvm2AAACZ0lEQVR4nL3XT4hPURQH8M/85p9hGBRDI0yJJgtFiIXCwkLZWFBSllaykZ2tLMRGNkqZFREbUpZkI+xEFpSYBmOIGX/G/H4W9z73zc/vN34z4zl1eve9e+753nPvOd97H0m24yBmKVBW4AMqOFAEQCk+50iRLCwSaARfYvtDkUDfo8oBFgLUEhXaigRqj0rYr8KARqLCcJFArVFJkRUO1FEkUF6aigT6b+mdX7pCuO6/J8NYVNISFgLUHJXEEP9UMqdfoy7Ap0nsuyS6KgsZ2opB/GwEqEOqn64qm4XYip3YE+1ac0DteIb7uBKfdWWVQD0VHEIfjuMCXsTvmb7Ge7zFO6Ecsr4xnDIJMS/DAMZxOQea6UOcwLYY4RIsRjeWYz+u5uyvY24toF4MVTl/Gp3v0FjKN8dVKMfxZ9RIrE0YzYHcwtoGnNeS/uijjI3VnWdzIHfQOU0QWCNN+nT2sSSE1xffP+OImfHdx9z430tXEjZ0fXwfwpsZgBBSvhzbGdsoSeuZzWCmzDCea0+IqCTRz7cqw+lIr5Tag3kg0mHXrPZhOBXZi9mxfTPf0SNUeQWPzewWtE6IoiIU8IRrQY9AJRU8wbxpgqzENalMtlQbdONV7HzmT1JtRPYJ2ZqBnFfjkrNU4LmMdqYC1IKTEu0M4bA6+zwLd6PhABY1CLIZN6Qo+rH6b4Mu5maUj6hJKoFWgf92RfuxOOYbjtWLIpOsoB4If3vDOCqctrMF5m4TlqYzzjhj8tEIeAn3/hYJzMdzE4+IevoOj3AOGxpxnklT1N3CMU26TLYIBHkbP2KEL6UDckryC510oah6PawhAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "execution_count": 237, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "final_img" + ] + }, + { + "cell_type": "code", + "execution_count": 238, + "metadata": {}, + "outputs": [], + "source": [ + "final_img.save('final_img.png')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "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.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/css/styles.css b/css/styles.css new file mode 100644 index 0000000..7cf55e7 --- /dev/null +++ b/css/styles.css @@ -0,0 +1,10 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +#canvas{ + border: 2px solid black; + background-color: white; +} \ No newline at end of file diff --git a/file.html b/file.html new file mode 100644 index 0000000..5351c3d --- /dev/null +++ b/file.html @@ -0,0 +1,21 @@ + + + + + + + + + + MyCanvas + + + + + + + + + + + \ No newline at end of file diff --git a/js/canvas.js b/js/canvas.js new file mode 100644 index 0000000..00849a0 --- /dev/null +++ b/js/canvas.js @@ -0,0 +1,101 @@ +window.addEventListener('load',()=> { + + const canvas = document.querySelector('#canvas'); + const ctx = canvas.getContext('2d'); + canvas.height = window.innerHeight; + canvas.width = window.innerWidth; + + let painting = false; + + function startPosition(e) { + painting =true; + + draw(e); + + //fadeOut();// + + //window.clearTimeout(myvar);// + + } + + function endPosition() { + painting =false; + //var myvar = window.setTimeout(function(){ alert("Hello"); },1000);// + ctx.beginPath(); + } + + function draw(e) { + if(!painting) return; + + ctx.lineWidth = 5; + ctx.lineCap = 'round'; + ctx.strokeStyle = 'whilte'; + + ctx.lineTo(e.clientX,e.clientY); + ctx.stroke(); + ctx.beginPath(); + ctx.moveTo(e.clientX,e.clientY); + + + + } + + var timeoutInMiliseconds = 3000; + var timeoutId; + + function startTimer() { + // window.setTimeout returns an Id that can be used to start and stop a timer + timeoutId = window.setTimeout(doInactive, timeoutInMiliseconds) + } + + function resetTimer() { + window.clearTimeout(timeoutId) + startTimer(); + } + + function doInactive(e) { + // does whatever you need it to actually do - probably signs them out or stops polling the server for info + alert("timeout"); + + + /*console.log(canvas.toDataURL()); + var link = document.createElement('a'); + link.download = 'download.png'; + link.href = canvas.toDataURL(); + link.click(); + link.delete;*/ + + + + //ctx.clearRect(0,0,canvas.width,canvas.height);// + } + + function setupTimers () { + //document.addEventListener("mousemove", resetTimer, false);// + document.addEventListener("mousedown", resetTimer, false); + //document.addEventListener("keypress", resetTimer, false);// + //document.addEventListener("touchmove", resetTimer, false);// + + startTimer(); + } + + function fadeOut() { + ctx.fillStyle = "rgba(255,255,255,0.1)"; + ctx.fillRect(0, 0, canvas.width, canvas.height); + setTimeout(fadeOut,200); + } + + + + canvas.addEventListener("mousedown", startPosition); + canvas.addEventListener("mouseup", endPosition); + canvas.addEventListener("mousemove", draw); + + setupTimers(); + //canvas.addEventListener("mouseup", setupTimers);// + +}); + + + +