├── 1_Handwritten_digit_classification.ipynb ├── 1_Handwritten_digits.ipynb ├── Activation Functions in Deep Learning.ipynb ├── CNN Basic Overview .ipynb ├── Implementing Single Neuron with Raw Python Code.ipynb ├── LSTM_.ipynb ├── Neural Network using TensorFlow Sequential ├── Neural Network using TensorFlow Sequential API.ipynb └── Readme.md ├── Neural Network.pdf ├── README.md └── SL_Perceptron.ipynb /1_Handwritten_digits.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "name": "1 Handwritten.ipynb", 7 | "provenance": [], 8 | "collapsed_sections": [], 9 | "authorship_tag": "ABX9TyMVLvaV9KcmfgGqeBv67mZ7", 10 | "include_colab_link": true 11 | }, 12 | "kernelspec": { 13 | "name": "python3", 14 | "display_name": "Python 3" 15 | } 16 | }, 17 | "cells": [ 18 | { 19 | "cell_type": "markdown", 20 | "metadata": { 21 | "id": "view-in-github", 22 | "colab_type": "text" 23 | }, 24 | "source": [ 25 | "\"Open" 26 | ] 27 | }, 28 | { 29 | "cell_type": "code", 30 | "metadata": { 31 | "id": "hagOKFDLLVqb", 32 | "colab_type": "code", 33 | "colab": {} 34 | }, 35 | "source": [ 36 | "import numpy as np\n", 37 | "import matplotlib.pyplot as plt\n", 38 | "import tensorflow as tf\n", 39 | "from tensorflow import keras\n", 40 | "import keras\n", 41 | "from keras.layers import Dense\n", 42 | "from keras.utils import to_categorical" 43 | ], 44 | "execution_count": 87, 45 | "outputs": [] 46 | }, 47 | { 48 | "cell_type": "code", 49 | "metadata": { 50 | "id": "r73pgL84LifU", 51 | "colab_type": "code", 52 | "colab": {} 53 | }, 54 | "source": [ 55 | "#Load Dataset\n", 56 | "(xtrain,ytrain) , (xtest,ytest) = keras.datasets.mnist.load_data()" 57 | ], 58 | "execution_count": 88, 59 | "outputs": [] 60 | }, 61 | { 62 | "cell_type": "code", 63 | "metadata": { 64 | "id": "RJkKajoSLsDE", 65 | "colab_type": "code", 66 | "colab": { 67 | "base_uri": "https://localhost:8080/", 68 | "height": 34 69 | }, 70 | "outputId": "c87ae1fa-1d2f-47e4-df6f-eadf1e3fbe35" 71 | }, 72 | "source": [ 73 | "xtrain.shape" 74 | ], 75 | "execution_count": 89, 76 | "outputs": [ 77 | { 78 | "output_type": "execute_result", 79 | "data": { 80 | "text/plain": [ 81 | "(60000, 28, 28)" 82 | ] 83 | }, 84 | "metadata": { 85 | "tags": [] 86 | }, 87 | "execution_count": 89 88 | } 89 | ] 90 | }, 91 | { 92 | "cell_type": "code", 93 | "metadata": { 94 | "id": "dmdYj4BiL2F7", 95 | "colab_type": "code", 96 | "colab": { 97 | "base_uri": "https://localhost:8080/", 98 | "height": 34 99 | }, 100 | "outputId": "ae878e0c-04ce-4253-fe7d-cae2d39ce283" 101 | }, 102 | "source": [ 103 | "xtest.shape" 104 | ], 105 | "execution_count": 90, 106 | "outputs": [ 107 | { 108 | "output_type": "execute_result", 109 | "data": { 110 | "text/plain": [ 111 | "(10000, 28, 28)" 112 | ] 113 | }, 114 | "metadata": { 115 | "tags": [] 116 | }, 117 | "execution_count": 90 118 | } 119 | ] 120 | }, 121 | { 122 | "cell_type": "code", 123 | "metadata": { 124 | "id": "aGINc7-BL7rj", 125 | "colab_type": "code", 126 | "colab": { 127 | "base_uri": "https://localhost:8080/", 128 | "height": 34 129 | }, 130 | "outputId": "85014f81-dc5e-4e4c-99a8-d5322c7cfe6b" 131 | }, 132 | "source": [ 133 | "xtrain[1].shape" 134 | ], 135 | "execution_count": 91, 136 | "outputs": [ 137 | { 138 | "output_type": "execute_result", 139 | "data": { 140 | "text/plain": [ 141 | "(28, 28)" 142 | ] 143 | }, 144 | "metadata": { 145 | "tags": [] 146 | }, 147 | "execution_count": 91 148 | } 149 | ] 150 | }, 151 | { 152 | "cell_type": "code", 153 | "metadata": { 154 | "id": "9nnHwIKnMPJL", 155 | "colab_type": "code", 156 | "colab": { 157 | "base_uri": "https://localhost:8080/", 158 | "height": 1000 159 | }, 160 | "outputId": "3d30b5eb-8863-44f5-d6a3-ce82f8e741b4" 161 | }, 162 | "source": [ 163 | "xtrain[1]" 164 | ], 165 | "execution_count": 92, 166 | "outputs": [ 167 | { 168 | "output_type": "execute_result", 169 | "data": { 170 | "text/plain": [ 171 | "array([[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 172 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 173 | " 0, 0],\n", 174 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 175 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 176 | " 0, 0],\n", 177 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 178 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 179 | " 0, 0],\n", 180 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 181 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 182 | " 0, 0],\n", 183 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 184 | " 0, 0, 51, 159, 253, 159, 50, 0, 0, 0, 0, 0, 0,\n", 185 | " 0, 0],\n", 186 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 187 | " 0, 48, 238, 252, 252, 252, 237, 0, 0, 0, 0, 0, 0,\n", 188 | " 0, 0],\n", 189 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 190 | " 54, 227, 253, 252, 239, 233, 252, 57, 6, 0, 0, 0, 0,\n", 191 | " 0, 0],\n", 192 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 60,\n", 193 | " 224, 252, 253, 252, 202, 84, 252, 253, 122, 0, 0, 0, 0,\n", 194 | " 0, 0],\n", 195 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 252,\n", 196 | " 252, 252, 253, 252, 252, 96, 189, 253, 167, 0, 0, 0, 0,\n", 197 | " 0, 0],\n", 198 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 238, 253,\n", 199 | " 253, 190, 114, 253, 228, 47, 79, 255, 168, 0, 0, 0, 0,\n", 200 | " 0, 0],\n", 201 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 238, 252, 252,\n", 202 | " 179, 12, 75, 121, 21, 0, 0, 253, 243, 50, 0, 0, 0,\n", 203 | " 0, 0],\n", 204 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 38, 165, 253, 233, 208,\n", 205 | " 84, 0, 0, 0, 0, 0, 0, 253, 252, 165, 0, 0, 0,\n", 206 | " 0, 0],\n", 207 | " [ 0, 0, 0, 0, 0, 0, 0, 7, 178, 252, 240, 71, 19,\n", 208 | " 28, 0, 0, 0, 0, 0, 0, 253, 252, 195, 0, 0, 0,\n", 209 | " 0, 0],\n", 210 | " [ 0, 0, 0, 0, 0, 0, 0, 57, 252, 252, 63, 0, 0,\n", 211 | " 0, 0, 0, 0, 0, 0, 0, 253, 252, 195, 0, 0, 0,\n", 212 | " 0, 0],\n", 213 | " [ 0, 0, 0, 0, 0, 0, 0, 198, 253, 190, 0, 0, 0,\n", 214 | " 0, 0, 0, 0, 0, 0, 0, 255, 253, 196, 0, 0, 0,\n", 215 | " 0, 0],\n", 216 | " [ 0, 0, 0, 0, 0, 0, 76, 246, 252, 112, 0, 0, 0,\n", 217 | " 0, 0, 0, 0, 0, 0, 0, 253, 252, 148, 0, 0, 0,\n", 218 | " 0, 0],\n", 219 | " [ 0, 0, 0, 0, 0, 0, 85, 252, 230, 25, 0, 0, 0,\n", 220 | " 0, 0, 0, 0, 0, 7, 135, 253, 186, 12, 0, 0, 0,\n", 221 | " 0, 0],\n", 222 | " [ 0, 0, 0, 0, 0, 0, 85, 252, 223, 0, 0, 0, 0,\n", 223 | " 0, 0, 0, 0, 7, 131, 252, 225, 71, 0, 0, 0, 0,\n", 224 | " 0, 0],\n", 225 | " [ 0, 0, 0, 0, 0, 0, 85, 252, 145, 0, 0, 0, 0,\n", 226 | " 0, 0, 0, 48, 165, 252, 173, 0, 0, 0, 0, 0, 0,\n", 227 | " 0, 0],\n", 228 | " [ 0, 0, 0, 0, 0, 0, 86, 253, 225, 0, 0, 0, 0,\n", 229 | " 0, 0, 114, 238, 253, 162, 0, 0, 0, 0, 0, 0, 0,\n", 230 | " 0, 0],\n", 231 | " [ 0, 0, 0, 0, 0, 0, 85, 252, 249, 146, 48, 29, 85,\n", 232 | " 178, 225, 253, 223, 167, 56, 0, 0, 0, 0, 0, 0, 0,\n", 233 | " 0, 0],\n", 234 | " [ 0, 0, 0, 0, 0, 0, 85, 252, 252, 252, 229, 215, 252,\n", 235 | " 252, 252, 196, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 236 | " 0, 0],\n", 237 | " [ 0, 0, 0, 0, 0, 0, 28, 199, 252, 252, 253, 252, 252,\n", 238 | " 233, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 239 | " 0, 0],\n", 240 | " [ 0, 0, 0, 0, 0, 0, 0, 25, 128, 252, 253, 252, 141,\n", 241 | " 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 242 | " 0, 0],\n", 243 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 244 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 245 | " 0, 0],\n", 246 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 247 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 248 | " 0, 0],\n", 249 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 250 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 251 | " 0, 0],\n", 252 | " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 253 | " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", 254 | " 0, 0]], dtype=uint8)" 255 | ] 256 | }, 257 | "metadata": { 258 | "tags": [] 259 | }, 260 | "execution_count": 92 261 | } 262 | ] 263 | }, 264 | { 265 | "cell_type": "code", 266 | "metadata": { 267 | "id": "pZ9cflPfMtyN", 268 | "colab_type": "code", 269 | "colab": { 270 | "base_uri": "https://localhost:8080/", 271 | "height": 292 272 | }, 273 | "outputId": "2927df11-820d-457b-e639-571e8d8293b8" 274 | }, 275 | "source": [ 276 | "plt.matshow(xtest[1])" 277 | ], 278 | "execution_count": 93, 279 | "outputs": [ 280 | { 281 | "output_type": "execute_result", 282 | "data": { 283 | "text/plain": [ 284 | "" 285 | ] 286 | }, 287 | "metadata": { 288 | "tags": [] 289 | }, 290 | "execution_count": 93 291 | }, 292 | { 293 | "output_type": "display_data", 294 | "data": { 295 | "image/png": "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\n", 296 | "text/plain": [ 297 | "
" 298 | ] 299 | }, 300 | "metadata": { 301 | "tags": [], 302 | "needs_background": "light" 303 | } 304 | } 305 | ] 306 | }, 307 | { 308 | "cell_type": "code", 309 | "metadata": { 310 | "id": "lBmb0BfJNSHc", 311 | "colab_type": "code", 312 | "colab": {} 313 | }, 314 | "source": [ 315 | "#Feature Sclaing\n", 316 | "#Normalize \n", 317 | "\n", 318 | "xtrain = (xtrain / 255)" 319 | ], 320 | "execution_count": 94, 321 | "outputs": [] 322 | }, 323 | { 324 | "cell_type": "code", 325 | "metadata": { 326 | "id": "iXz0k8IWQrsG", 327 | "colab_type": "code", 328 | "colab": { 329 | "base_uri": "https://localhost:8080/", 330 | "height": 1000 331 | }, 332 | "outputId": "78f85cd5-3bbe-4e51-d986-60b0e818e16a" 333 | }, 334 | "source": [ 335 | "xtrain[1]" 336 | ], 337 | "execution_count": 95, 338 | "outputs": [ 339 | { 340 | "output_type": "execute_result", 341 | "data": { 342 | "text/plain": [ 343 | "array([[0. , 0. , 0. , 0. , 0. ,\n", 344 | " 0. , 0. , 0. , 0. , 0. ,\n", 345 | " 0. , 0. , 0. , 0. , 0. ,\n", 346 | " 0. , 0. , 0. , 0. , 0. ,\n", 347 | " 0. , 0. , 0. , 0. , 0. ,\n", 348 | " 0. , 0. , 0. ],\n", 349 | " [0. , 0. , 0. , 0. , 0. ,\n", 350 | " 0. , 0. , 0. , 0. , 0. ,\n", 351 | " 0. , 0. , 0. , 0. , 0. ,\n", 352 | " 0. , 0. , 0. , 0. , 0. ,\n", 353 | " 0. , 0. , 0. , 0. , 0. ,\n", 354 | " 0. , 0. , 0. ],\n", 355 | " [0. , 0. , 0. , 0. , 0. ,\n", 356 | " 0. , 0. , 0. , 0. , 0. ,\n", 357 | " 0. , 0. , 0. , 0. , 0. ,\n", 358 | " 0. , 0. , 0. , 0. , 0. ,\n", 359 | " 0. , 0. , 0. , 0. , 0. ,\n", 360 | " 0. , 0. , 0. ],\n", 361 | " [0. , 0. , 0. , 0. , 0. ,\n", 362 | " 0. , 0. , 0. , 0. , 0. ,\n", 363 | " 0. , 0. , 0. , 0. , 0. ,\n", 364 | " 0. , 0. , 0. , 0. , 0. ,\n", 365 | " 0. , 0. , 0. , 0. , 0. ,\n", 366 | " 0. , 0. , 0. ],\n", 367 | " [0. , 0. , 0. , 0. , 0. ,\n", 368 | " 0. , 0. , 0. , 0. , 0. ,\n", 369 | " 0. , 0. , 0. , 0. , 0. ,\n", 370 | " 0.2 , 0.62352941, 0.99215686, 0.62352941, 0.19607843,\n", 371 | " 0. , 0. , 0. , 0. , 0. ,\n", 372 | " 0. , 0. , 0. ],\n", 373 | " [0. , 0. , 0. , 0. , 0. ,\n", 374 | " 0. , 0. , 0. , 0. , 0. ,\n", 375 | " 0. , 0. , 0. , 0. , 0.18823529,\n", 376 | " 0.93333333, 0.98823529, 0.98823529, 0.98823529, 0.92941176,\n", 377 | " 0. , 0. , 0. , 0. , 0. ,\n", 378 | " 0. , 0. , 0. ],\n", 379 | " [0. , 0. , 0. , 0. , 0. ,\n", 380 | " 0. , 0. , 0. , 0. , 0. ,\n", 381 | " 0. , 0. , 0. , 0.21176471, 0.89019608,\n", 382 | " 0.99215686, 0.98823529, 0.9372549 , 0.91372549, 0.98823529,\n", 383 | " 0.22352941, 0.02352941, 0. , 0. , 0. ,\n", 384 | " 0. , 0. , 0. ],\n", 385 | " [0. , 0. , 0. , 0. , 0. ,\n", 386 | " 0. , 0. , 0. , 0. , 0. ,\n", 387 | " 0. , 0.03921569, 0.23529412, 0.87843137, 0.98823529,\n", 388 | " 0.99215686, 0.98823529, 0.79215686, 0.32941176, 0.98823529,\n", 389 | " 0.99215686, 0.47843137, 0. , 0. , 0. ,\n", 390 | " 0. , 0. , 0. ],\n", 391 | " [0. , 0. , 0. , 0. , 0. ,\n", 392 | " 0. , 0. , 0. , 0. , 0. ,\n", 393 | " 0. , 0.63921569, 0.98823529, 0.98823529, 0.98823529,\n", 394 | " 0.99215686, 0.98823529, 0.98823529, 0.37647059, 0.74117647,\n", 395 | " 0.99215686, 0.65490196, 0. , 0. , 0. ,\n", 396 | " 0. , 0. , 0. ],\n", 397 | " [0. , 0. , 0. , 0. , 0. ,\n", 398 | " 0. , 0. , 0. , 0. , 0. ,\n", 399 | " 0.2 , 0.93333333, 0.99215686, 0.99215686, 0.74509804,\n", 400 | " 0.44705882, 0.99215686, 0.89411765, 0.18431373, 0.30980392,\n", 401 | " 1. , 0.65882353, 0. , 0. , 0. ,\n", 402 | " 0. , 0. , 0. ],\n", 403 | " [0. , 0. , 0. , 0. , 0. ,\n", 404 | " 0. , 0. , 0. , 0. , 0.18823529,\n", 405 | " 0.93333333, 0.98823529, 0.98823529, 0.70196078, 0.04705882,\n", 406 | " 0.29411765, 0.4745098 , 0.08235294, 0. , 0. ,\n", 407 | " 0.99215686, 0.95294118, 0.19607843, 0. , 0. ,\n", 408 | " 0. , 0. , 0. ],\n", 409 | " [0. , 0. , 0. , 0. , 0. ,\n", 410 | " 0. , 0. , 0. , 0.14901961, 0.64705882,\n", 411 | " 0.99215686, 0.91372549, 0.81568627, 0.32941176, 0. ,\n", 412 | " 0. , 0. , 0. , 0. , 0. ,\n", 413 | " 0.99215686, 0.98823529, 0.64705882, 0. , 0. ,\n", 414 | " 0. , 0. , 0. ],\n", 415 | " [0. , 0. , 0. , 0. , 0. ,\n", 416 | " 0. , 0. , 0.02745098, 0.69803922, 0.98823529,\n", 417 | " 0.94117647, 0.27843137, 0.0745098 , 0.10980392, 0. ,\n", 418 | " 0. , 0. , 0. , 0. , 0. ,\n", 419 | " 0.99215686, 0.98823529, 0.76470588, 0. , 0. ,\n", 420 | " 0. , 0. , 0. ],\n", 421 | " [0. , 0. , 0. , 0. , 0. ,\n", 422 | " 0. , 0. , 0.22352941, 0.98823529, 0.98823529,\n", 423 | " 0.24705882, 0. , 0. , 0. , 0. ,\n", 424 | " 0. , 0. , 0. , 0. , 0. ,\n", 425 | " 0.99215686, 0.98823529, 0.76470588, 0. , 0. ,\n", 426 | " 0. , 0. , 0. ],\n", 427 | " [0. , 0. , 0. , 0. , 0. ,\n", 428 | " 0. , 0. , 0.77647059, 0.99215686, 0.74509804,\n", 429 | " 0. , 0. , 0. , 0. , 0. ,\n", 430 | " 0. , 0. , 0. , 0. , 0. ,\n", 431 | " 1. , 0.99215686, 0.76862745, 0. , 0. ,\n", 432 | " 0. , 0. , 0. ],\n", 433 | " [0. , 0. , 0. , 0. , 0. ,\n", 434 | " 0. , 0.29803922, 0.96470588, 0.98823529, 0.43921569,\n", 435 | " 0. , 0. , 0. , 0. , 0. ,\n", 436 | " 0. , 0. , 0. , 0. , 0. ,\n", 437 | " 0.99215686, 0.98823529, 0.58039216, 0. , 0. ,\n", 438 | " 0. , 0. , 0. ],\n", 439 | " [0. , 0. , 0. , 0. , 0. ,\n", 440 | " 0. , 0.33333333, 0.98823529, 0.90196078, 0.09803922,\n", 441 | " 0. , 0. , 0. , 0. , 0. ,\n", 442 | " 0. , 0. , 0. , 0.02745098, 0.52941176,\n", 443 | " 0.99215686, 0.72941176, 0.04705882, 0. , 0. ,\n", 444 | " 0. , 0. , 0. ],\n", 445 | " [0. , 0. , 0. , 0. , 0. ,\n", 446 | " 0. , 0.33333333, 0.98823529, 0.8745098 , 0. ,\n", 447 | " 0. , 0. , 0. , 0. , 0. ,\n", 448 | " 0. , 0. , 0.02745098, 0.51372549, 0.98823529,\n", 449 | " 0.88235294, 0.27843137, 0. , 0. , 0. ,\n", 450 | " 0. , 0. , 0. ],\n", 451 | " [0. , 0. , 0. , 0. , 0. ,\n", 452 | " 0. , 0.33333333, 0.98823529, 0.56862745, 0. ,\n", 453 | " 0. , 0. , 0. , 0. , 0. ,\n", 454 | " 0. , 0.18823529, 0.64705882, 0.98823529, 0.67843137,\n", 455 | " 0. , 0. , 0. , 0. , 0. ,\n", 456 | " 0. , 0. , 0. ],\n", 457 | " [0. , 0. , 0. , 0. , 0. ,\n", 458 | " 0. , 0.3372549 , 0.99215686, 0.88235294, 0. ,\n", 459 | " 0. , 0. , 0. , 0. , 0. ,\n", 460 | " 0.44705882, 0.93333333, 0.99215686, 0.63529412, 0. ,\n", 461 | " 0. , 0. , 0. , 0. , 0. ,\n", 462 | " 0. , 0. , 0. ],\n", 463 | " [0. , 0. , 0. , 0. , 0. ,\n", 464 | " 0. , 0.33333333, 0.98823529, 0.97647059, 0.57254902,\n", 465 | " 0.18823529, 0.11372549, 0.33333333, 0.69803922, 0.88235294,\n", 466 | " 0.99215686, 0.8745098 , 0.65490196, 0.21960784, 0. ,\n", 467 | " 0. , 0. , 0. , 0. , 0. ,\n", 468 | " 0. , 0. , 0. ],\n", 469 | " [0. , 0. , 0. , 0. , 0. ,\n", 470 | " 0. , 0.33333333, 0.98823529, 0.98823529, 0.98823529,\n", 471 | " 0.89803922, 0.84313725, 0.98823529, 0.98823529, 0.98823529,\n", 472 | " 0.76862745, 0.50980392, 0. , 0. , 0. ,\n", 473 | " 0. , 0. , 0. , 0. , 0. ,\n", 474 | " 0. , 0. , 0. ],\n", 475 | " [0. , 0. , 0. , 0. , 0. ,\n", 476 | " 0. , 0.10980392, 0.78039216, 0.98823529, 0.98823529,\n", 477 | " 0.99215686, 0.98823529, 0.98823529, 0.91372549, 0.56862745,\n", 478 | " 0. , 0. , 0. , 0. , 0. ,\n", 479 | " 0. , 0. , 0. , 0. , 0. ,\n", 480 | " 0. , 0. , 0. ],\n", 481 | " [0. , 0. , 0. , 0. , 0. ,\n", 482 | " 0. , 0. , 0.09803922, 0.50196078, 0.98823529,\n", 483 | " 0.99215686, 0.98823529, 0.55294118, 0.14509804, 0. ,\n", 484 | " 0. , 0. , 0. , 0. , 0. ,\n", 485 | " 0. , 0. , 0. , 0. , 0. ,\n", 486 | " 0. , 0. , 0. ],\n", 487 | " [0. , 0. , 0. , 0. , 0. ,\n", 488 | " 0. , 0. , 0. , 0. , 0. ,\n", 489 | " 0. , 0. , 0. , 0. , 0. ,\n", 490 | " 0. , 0. , 0. , 0. , 0. ,\n", 491 | " 0. , 0. , 0. , 0. , 0. ,\n", 492 | " 0. , 0. , 0. ],\n", 493 | " [0. , 0. , 0. , 0. , 0. ,\n", 494 | " 0. , 0. , 0. , 0. , 0. ,\n", 495 | " 0. , 0. , 0. , 0. , 0. ,\n", 496 | " 0. , 0. , 0. , 0. , 0. ,\n", 497 | " 0. , 0. , 0. , 0. , 0. ,\n", 498 | " 0. , 0. , 0. ],\n", 499 | " [0. , 0. , 0. , 0. , 0. ,\n", 500 | " 0. , 0. , 0. , 0. , 0. ,\n", 501 | " 0. , 0. , 0. , 0. , 0. ,\n", 502 | " 0. , 0. , 0. , 0. , 0. ,\n", 503 | " 0. , 0. , 0. , 0. , 0. ,\n", 504 | " 0. , 0. , 0. ],\n", 505 | " [0. , 0. , 0. , 0. , 0. ,\n", 506 | " 0. , 0. , 0. , 0. , 0. ,\n", 507 | " 0. , 0. , 0. , 0. , 0. ,\n", 508 | " 0. , 0. , 0. , 0. , 0. ,\n", 509 | " 0. , 0. , 0. , 0. , 0. ,\n", 510 | " 0. , 0. , 0. ]])" 511 | ] 512 | }, 513 | "metadata": { 514 | "tags": [] 515 | }, 516 | "execution_count": 95 517 | } 518 | ] 519 | }, 520 | { 521 | "cell_type": "code", 522 | "metadata": { 523 | "id": "tkrkfZ7PSD0W", 524 | "colab_type": "code", 525 | "colab": {} 526 | }, 527 | "source": [ 528 | "xtest = xtest / 255" 529 | ], 530 | "execution_count": 96, 531 | "outputs": [] 532 | }, 533 | { 534 | "cell_type": "code", 535 | "metadata": { 536 | "id": "aH16QbV9SJ4k", 537 | "colab_type": "code", 538 | "colab": { 539 | "base_uri": "https://localhost:8080/", 540 | "height": 1000 541 | }, 542 | "outputId": "7a6d50a9-b0e7-47a2-975f-2937757e8b56" 543 | }, 544 | "source": [ 545 | "xtest[1]" 546 | ], 547 | "execution_count": 97, 548 | "outputs": [ 549 | { 550 | "output_type": "execute_result", 551 | "data": { 552 | "text/plain": [ 553 | "array([[0. , 0. , 0. , 0. , 0. ,\n", 554 | " 0. , 0. , 0. , 0. , 0. ,\n", 555 | " 0. , 0. , 0. , 0. , 0. ,\n", 556 | " 0. , 0. , 0. , 0. , 0. ,\n", 557 | " 0. , 0. , 0. , 0. , 0. ,\n", 558 | " 0. , 0. , 0. ],\n", 559 | " [0. , 0. , 0. , 0. , 0. ,\n", 560 | " 0. , 0. , 0. , 0. , 0. ,\n", 561 | " 0. , 0. , 0. , 0. , 0. ,\n", 562 | " 0. , 0. , 0. , 0. , 0. ,\n", 563 | " 0. , 0. , 0. , 0. , 0. ,\n", 564 | " 0. , 0. , 0. ],\n", 565 | " [0. , 0. , 0. , 0. , 0. ,\n", 566 | " 0. , 0. , 0. , 0. , 0. ,\n", 567 | " 0. , 0. , 0. , 0. , 0. ,\n", 568 | " 0. , 0. , 0. , 0. , 0. ,\n", 569 | " 0. , 0. , 0. , 0. , 0. ,\n", 570 | " 0. , 0. , 0. ],\n", 571 | " [0. , 0. , 0. , 0. , 0. ,\n", 572 | " 0. , 0. , 0. , 0. , 0. ,\n", 573 | " 0.45490196, 0.49019608, 0.67058824, 1. , 1. ,\n", 574 | " 0.58823529, 0.36470588, 0. , 0. , 0. ,\n", 575 | " 0. , 0. , 0. , 0. , 0. ,\n", 576 | " 0. , 0. , 0. ],\n", 577 | " [0. , 0. , 0. , 0. , 0. ,\n", 578 | " 0. , 0. , 0. , 0. , 0.6627451 ,\n", 579 | " 0.99215686, 0.99215686, 0.99215686, 0.99215686, 0.99215686,\n", 580 | " 0.99215686, 0.85490196, 0.11764706, 0. , 0. ,\n", 581 | " 0. , 0. , 0. , 0. , 0. ,\n", 582 | " 0. , 0. , 0. ],\n", 583 | " [0. , 0. , 0. , 0. , 0. ,\n", 584 | " 0. , 0. , 0. , 0.6627451 , 0.99215686,\n", 585 | " 0.99215686, 0.99215686, 0.83529412, 0.55686275, 0.69019608,\n", 586 | " 0.99215686, 0.99215686, 0.47843137, 0. , 0. ,\n", 587 | " 0. , 0. , 0. , 0. , 0. ,\n", 588 | " 0. , 0. , 0. ],\n", 589 | " [0. , 0. , 0. , 0. , 0. ,\n", 590 | " 0. , 0. , 0.20392157, 0.98039216, 0.99215686,\n", 591 | " 0.82352941, 0.1254902 , 0.04705882, 0. , 0.02352941,\n", 592 | " 0.80784314, 0.99215686, 0.54901961, 0. , 0. ,\n", 593 | " 0. , 0. , 0. , 0. , 0. ,\n", 594 | " 0. , 0. , 0. ],\n", 595 | " [0. , 0. , 0. , 0. , 0. ,\n", 596 | " 0. , 0. , 0.30196078, 0.98431373, 0.82352941,\n", 597 | " 0.09803922, 0. , 0. , 0. , 0.47843137,\n", 598 | " 0.97254902, 0.99215686, 0.25490196, 0. , 0. ,\n", 599 | " 0. , 0. , 0. , 0. , 0. ,\n", 600 | " 0. , 0. , 0. ],\n", 601 | " [0. , 0. , 0. , 0. , 0. ,\n", 602 | " 0. , 0. , 0. , 0.12156863, 0.07058824,\n", 603 | " 0. , 0. , 0. , 0. , 0.81960784,\n", 604 | " 0.99215686, 0.99215686, 0.25490196, 0. , 0. ,\n", 605 | " 0. , 0. , 0. , 0. , 0. ,\n", 606 | " 0. , 0. , 0. ],\n", 607 | " [0. , 0. , 0. , 0. , 0. ,\n", 608 | " 0. , 0. , 0. , 0. , 0. ,\n", 609 | " 0. , 0. , 0. , 0.45882353, 0.96862745,\n", 610 | " 0.99215686, 0.77647059, 0.03921569, 0. , 0. ,\n", 611 | " 0. , 0. , 0. , 0. , 0. ,\n", 612 | " 0. , 0. , 0. ],\n", 613 | " [0. , 0. , 0. , 0. , 0. ,\n", 614 | " 0. , 0. , 0. , 0. , 0. ,\n", 615 | " 0. , 0. , 0.29803922, 0.96862745, 0.99215686,\n", 616 | " 0.90588235, 0.24705882, 0. , 0. , 0. ,\n", 617 | " 0. , 0. , 0. , 0. , 0. ,\n", 618 | " 0. , 0. , 0. ],\n", 619 | " [0. , 0. , 0. , 0. , 0. ,\n", 620 | " 0. , 0. , 0. , 0. , 0. ,\n", 621 | " 0. , 0. , 0.50196078, 0.99215686, 0.99215686,\n", 622 | " 0.56470588, 0. , 0. , 0. , 0. ,\n", 623 | " 0. , 0. , 0. , 0. , 0. ,\n", 624 | " 0. , 0. , 0. ],\n", 625 | " [0. , 0. , 0. , 0. , 0. ,\n", 626 | " 0. , 0. , 0. , 0. , 0. ,\n", 627 | " 0. , 0.69019608, 0.96470588, 0.99215686, 0.62352941,\n", 628 | " 0.04705882, 0. , 0. , 0. , 0. ,\n", 629 | " 0. , 0. , 0. , 0. , 0. ,\n", 630 | " 0. , 0. , 0. ],\n", 631 | " [0. , 0. , 0. , 0. , 0. ,\n", 632 | " 0. , 0. , 0. , 0. , 0. ,\n", 633 | " 0.09803922, 0.91764706, 0.99215686, 0.91372549, 0.1372549 ,\n", 634 | " 0. , 0. , 0. , 0. , 0. ,\n", 635 | " 0. , 0. , 0. , 0. , 0. ,\n", 636 | " 0. , 0. , 0. ],\n", 637 | " [0. , 0. , 0. , 0. , 0. ,\n", 638 | " 0. , 0. , 0. , 0. , 0. ,\n", 639 | " 0.77647059, 0.99215686, 0.99215686, 0.55294118, 0. ,\n", 640 | " 0. , 0. , 0. , 0. , 0. ,\n", 641 | " 0. , 0. , 0. , 0. , 0. ,\n", 642 | " 0. , 0. , 0. ],\n", 643 | " [0. , 0. , 0. , 0. , 0. ,\n", 644 | " 0. , 0. , 0. , 0. , 0.30588235,\n", 645 | " 0.97254902, 0.99215686, 0.74117647, 0.04705882, 0. ,\n", 646 | " 0. , 0. , 0. , 0. , 0. ,\n", 647 | " 0. , 0. , 0. , 0. , 0. ,\n", 648 | " 0. , 0. , 0. ],\n", 649 | " [0. , 0. , 0. , 0. , 0. ,\n", 650 | " 0. , 0. , 0. , 0.0745098 , 0.78431373,\n", 651 | " 0.99215686, 0.99215686, 0.55294118, 0. , 0. ,\n", 652 | " 0. , 0. , 0. , 0. , 0. ,\n", 653 | " 0. , 0. , 0. , 0. , 0. ,\n", 654 | " 0. , 0. , 0. ],\n", 655 | " [0. , 0. , 0. , 0. , 0. ,\n", 656 | " 0. , 0. , 0. , 0.5254902 , 0.99215686,\n", 657 | " 0.99215686, 0.67843137, 0.04705882, 0. , 0. ,\n", 658 | " 0. , 0. , 0. , 0. , 0. ,\n", 659 | " 0. , 0. , 0. , 0. , 0. ,\n", 660 | " 0. , 0. , 0. ],\n", 661 | " [0. , 0. , 0. , 0. , 0. ,\n", 662 | " 0. , 0. , 0. , 0.97254902, 0.99215686,\n", 663 | " 0.99215686, 0.09803922, 0. , 0. , 0. ,\n", 664 | " 0. , 0. , 0. , 0. , 0. ,\n", 665 | " 0. , 0. , 0. , 0. , 0. ,\n", 666 | " 0. , 0. , 0. ],\n", 667 | " [0. , 0. , 0. , 0. , 0. ,\n", 668 | " 0. , 0. , 0. , 0.97254902, 0.99215686,\n", 669 | " 0.99215686, 0.16862745, 0.07843137, 0.07843137, 0.07843137,\n", 670 | " 0.07843137, 0.01960784, 0. , 0.01960784, 0.07843137,\n", 671 | " 0.07843137, 0.14509804, 0.58823529, 0.58823529, 0.58823529,\n", 672 | " 0.57647059, 0.03921569, 0. ],\n", 673 | " [0. , 0. , 0. , 0. , 0. ,\n", 674 | " 0. , 0. , 0. , 0.97254902, 0.99215686,\n", 675 | " 0.99215686, 0.99215686, 0.99215686, 0.99215686, 0.99215686,\n", 676 | " 0.99215686, 0.65882353, 0.56078431, 0.65098039, 0.99215686,\n", 677 | " 0.99215686, 0.99215686, 0.99215686, 0.99215686, 0.99215686,\n", 678 | " 0.99215686, 0.48235294, 0. ],\n", 679 | " [0. , 0. , 0. , 0. , 0. ,\n", 680 | " 0. , 0. , 0. , 0.68235294, 0.99215686,\n", 681 | " 0.99215686, 0.99215686, 0.99215686, 0.99215686, 0.99215686,\n", 682 | " 0.99215686, 0.99215686, 0.99215686, 0.99215686, 0.99215686,\n", 683 | " 0.97647059, 0.96862745, 0.96862745, 0.6627451 , 0.45882353,\n", 684 | " 0.45882353, 0.22352941, 0. ],\n", 685 | " [0. , 0. , 0. , 0. , 0. ,\n", 686 | " 0. , 0. , 0. , 0. , 0.4627451 ,\n", 687 | " 0.48235294, 0.48235294, 0.48235294, 0.65098039, 0.99215686,\n", 688 | " 0.99215686, 0.99215686, 0.60784314, 0.48235294, 0.48235294,\n", 689 | " 0.16078431, 0. , 0. , 0. , 0. ,\n", 690 | " 0. , 0. , 0. ],\n", 691 | " [0. , 0. , 0. , 0. , 0. ,\n", 692 | " 0. , 0. , 0. , 0. , 0. ,\n", 693 | " 0. , 0. , 0. , 0. , 0. ,\n", 694 | " 0. , 0. , 0. , 0. , 0. ,\n", 695 | " 0. , 0. , 0. , 0. , 0. ,\n", 696 | " 0. , 0. , 0. ],\n", 697 | " [0. , 0. , 0. , 0. , 0. ,\n", 698 | " 0. , 0. , 0. , 0. , 0. ,\n", 699 | " 0. , 0. , 0. , 0. , 0. ,\n", 700 | " 0. , 0. , 0. , 0. , 0. ,\n", 701 | " 0. , 0. , 0. , 0. , 0. ,\n", 702 | " 0. , 0. , 0. ],\n", 703 | " [0. , 0. , 0. , 0. , 0. ,\n", 704 | " 0. , 0. , 0. , 0. , 0. ,\n", 705 | " 0. , 0. , 0. , 0. , 0. ,\n", 706 | " 0. , 0. , 0. , 0. , 0. ,\n", 707 | " 0. , 0. , 0. , 0. , 0. ,\n", 708 | " 0. , 0. , 0. ],\n", 709 | " [0. , 0. , 0. , 0. , 0. ,\n", 710 | " 0. , 0. , 0. , 0. , 0. ,\n", 711 | " 0. , 0. , 0. , 0. , 0. ,\n", 712 | " 0. , 0. , 0. , 0. , 0. ,\n", 713 | " 0. , 0. , 0. , 0. , 0. ,\n", 714 | " 0. , 0. , 0. ],\n", 715 | " [0. , 0. , 0. , 0. , 0. ,\n", 716 | " 0. , 0. , 0. , 0. , 0. ,\n", 717 | " 0. , 0. , 0. , 0. , 0. ,\n", 718 | " 0. , 0. , 0. , 0. , 0. ,\n", 719 | " 0. , 0. , 0. , 0. , 0. ,\n", 720 | " 0. , 0. , 0. ]])" 721 | ] 722 | }, 723 | "metadata": { 724 | "tags": [] 725 | }, 726 | "execution_count": 97 727 | } 728 | ] 729 | }, 730 | { 731 | "cell_type": "code", 732 | "metadata": { 733 | "id": "XRnDfXRNSTfU", 734 | "colab_type": "code", 735 | "colab": {} 736 | }, 737 | "source": [ 738 | "#flatten the images into 28*28 = 784\n", 739 | "xtrain = xtrain.reshape(-1,784)\n", 740 | "xtest = xtest.reshape(-1,784)" 741 | ], 742 | "execution_count": 98, 743 | "outputs": [] 744 | }, 745 | { 746 | "cell_type": "code", 747 | "metadata": { 748 | "id": "god5AJm5TwzU", 749 | "colab_type": "code", 750 | "colab": { 751 | "base_uri": "https://localhost:8080/", 752 | "height": 1000 753 | }, 754 | "outputId": "284252aa-322c-4800-bd6c-f04e0b1b6e75" 755 | }, 756 | "source": [ 757 | "xtrain[1]" 758 | ], 759 | "execution_count": 99, 760 | "outputs": [ 761 | { 762 | "output_type": "execute_result", 763 | "data": { 764 | "text/plain": [ 765 | "array([0. , 0. , 0. , 0. , 0. ,\n", 766 | " 0. , 0. , 0. , 0. , 0. ,\n", 767 | " 0. , 0. , 0. , 0. , 0. ,\n", 768 | " 0. , 0. , 0. , 0. , 0. ,\n", 769 | " 0. , 0. , 0. , 0. , 0. ,\n", 770 | " 0. , 0. , 0. , 0. , 0. ,\n", 771 | " 0. , 0. , 0. , 0. , 0. ,\n", 772 | " 0. , 0. , 0. , 0. , 0. ,\n", 773 | " 0. , 0. , 0. , 0. , 0. ,\n", 774 | " 0. , 0. , 0. , 0. , 0. ,\n", 775 | " 0. , 0. , 0. , 0. , 0. ,\n", 776 | " 0. , 0. , 0. , 0. , 0. ,\n", 777 | " 0. , 0. , 0. , 0. , 0. ,\n", 778 | " 0. , 0. , 0. , 0. , 0. ,\n", 779 | " 0. , 0. , 0. , 0. , 0. ,\n", 780 | " 0. , 0. , 0. , 0. , 0. ,\n", 781 | " 0. , 0. , 0. , 0. , 0. ,\n", 782 | " 0. , 0. , 0. , 0. , 0. ,\n", 783 | " 0. , 0. , 0. , 0. , 0. ,\n", 784 | " 0. , 0. , 0. , 0. , 0. ,\n", 785 | " 0. , 0. , 0. , 0. , 0. ,\n", 786 | " 0. , 0. , 0. , 0. , 0. ,\n", 787 | " 0. , 0. , 0. , 0. , 0. ,\n", 788 | " 0. , 0. , 0. , 0. , 0. ,\n", 789 | " 0. , 0. , 0. , 0. , 0. ,\n", 790 | " 0. , 0. , 0.2 , 0.62352941, 0.99215686,\n", 791 | " 0.62352941, 0.19607843, 0. , 0. , 0. ,\n", 792 | " 0. , 0. , 0. , 0. , 0. ,\n", 793 | " 0. , 0. , 0. , 0. , 0. ,\n", 794 | " 0. , 0. , 0. , 0. , 0. ,\n", 795 | " 0. , 0. , 0. , 0. , 0.18823529,\n", 796 | " 0.93333333, 0.98823529, 0.98823529, 0.98823529, 0.92941176,\n", 797 | " 0. , 0. , 0. , 0. , 0. ,\n", 798 | " 0. , 0. , 0. , 0. , 0. ,\n", 799 | " 0. , 0. , 0. , 0. , 0. ,\n", 800 | " 0. , 0. , 0. , 0. , 0. ,\n", 801 | " 0. , 0.21176471, 0.89019608, 0.99215686, 0.98823529,\n", 802 | " 0.9372549 , 0.91372549, 0.98823529, 0.22352941, 0.02352941,\n", 803 | " 0. , 0. , 0. , 0. , 0. ,\n", 804 | " 0. , 0. , 0. , 0. , 0. ,\n", 805 | " 0. , 0. , 0. , 0. , 0. ,\n", 806 | " 0. , 0. , 0.03921569, 0.23529412, 0.87843137,\n", 807 | " 0.98823529, 0.99215686, 0.98823529, 0.79215686, 0.32941176,\n", 808 | " 0.98823529, 0.99215686, 0.47843137, 0. , 0. ,\n", 809 | " 0. , 0. , 0. , 0. , 0. ,\n", 810 | " 0. , 0. , 0. , 0. , 0. ,\n", 811 | " 0. , 0. , 0. , 0. , 0. ,\n", 812 | " 0.63921569, 0.98823529, 0.98823529, 0.98823529, 0.99215686,\n", 813 | " 0.98823529, 0.98823529, 0.37647059, 0.74117647, 0.99215686,\n", 814 | " 0.65490196, 0. , 0. , 0. , 0. ,\n", 815 | " 0. , 0. , 0. , 0. , 0. ,\n", 816 | " 0. , 0. , 0. , 0. , 0. ,\n", 817 | " 0. , 0. , 0.2 , 0.93333333, 0.99215686,\n", 818 | " 0.99215686, 0.74509804, 0.44705882, 0.99215686, 0.89411765,\n", 819 | " 0.18431373, 0.30980392, 1. , 0.65882353, 0. ,\n", 820 | " 0. , 0. , 0. , 0. , 0. ,\n", 821 | " 0. , 0. , 0. , 0. , 0. ,\n", 822 | " 0. , 0. , 0. , 0. , 0.18823529,\n", 823 | " 0.93333333, 0.98823529, 0.98823529, 0.70196078, 0.04705882,\n", 824 | " 0.29411765, 0.4745098 , 0.08235294, 0. , 0. ,\n", 825 | " 0.99215686, 0.95294118, 0.19607843, 0. , 0. ,\n", 826 | " 0. , 0. , 0. , 0. , 0. ,\n", 827 | " 0. , 0. , 0. , 0. , 0. ,\n", 828 | " 0. , 0.14901961, 0.64705882, 0.99215686, 0.91372549,\n", 829 | " 0.81568627, 0.32941176, 0. , 0. , 0. ,\n", 830 | " 0. , 0. , 0. , 0.99215686, 0.98823529,\n", 831 | " 0.64705882, 0. , 0. , 0. , 0. ,\n", 832 | " 0. , 0. , 0. , 0. , 0. ,\n", 833 | " 0. , 0. , 0. , 0.02745098, 0.69803922,\n", 834 | " 0.98823529, 0.94117647, 0.27843137, 0.0745098 , 0.10980392,\n", 835 | " 0. , 0. , 0. , 0. , 0. ,\n", 836 | " 0. , 0.99215686, 0.98823529, 0.76470588, 0. ,\n", 837 | " 0. , 0. , 0. , 0. , 0. ,\n", 838 | " 0. , 0. , 0. , 0. , 0. ,\n", 839 | " 0. , 0.22352941, 0.98823529, 0.98823529, 0.24705882,\n", 840 | " 0. , 0. , 0. , 0. , 0. ,\n", 841 | " 0. , 0. , 0. , 0. , 0.99215686,\n", 842 | " 0.98823529, 0.76470588, 0. , 0. , 0. ,\n", 843 | " 0. , 0. , 0. , 0. , 0. ,\n", 844 | " 0. , 0. , 0. , 0. , 0.77647059,\n", 845 | " 0.99215686, 0.74509804, 0. , 0. , 0. ,\n", 846 | " 0. , 0. , 0. , 0. , 0. ,\n", 847 | " 0. , 0. , 1. , 0.99215686, 0.76862745,\n", 848 | " 0. , 0. , 0. , 0. , 0. ,\n", 849 | " 0. , 0. , 0. , 0. , 0. ,\n", 850 | " 0. , 0.29803922, 0.96470588, 0.98823529, 0.43921569,\n", 851 | " 0. , 0. , 0. , 0. , 0. ,\n", 852 | " 0. , 0. , 0. , 0. , 0. ,\n", 853 | " 0.99215686, 0.98823529, 0.58039216, 0. , 0. ,\n", 854 | " 0. , 0. , 0. , 0. , 0. ,\n", 855 | " 0. , 0. , 0. , 0. , 0.33333333,\n", 856 | " 0.98823529, 0.90196078, 0.09803922, 0. , 0. ,\n", 857 | " 0. , 0. , 0. , 0. , 0. ,\n", 858 | " 0. , 0.02745098, 0.52941176, 0.99215686, 0.72941176,\n", 859 | " 0.04705882, 0. , 0. , 0. , 0. ,\n", 860 | " 0. , 0. , 0. , 0. , 0. ,\n", 861 | " 0. , 0. , 0.33333333, 0.98823529, 0.8745098 ,\n", 862 | " 0. , 0. , 0. , 0. , 0. ,\n", 863 | " 0. , 0. , 0. , 0.02745098, 0.51372549,\n", 864 | " 0.98823529, 0.88235294, 0.27843137, 0. , 0. ,\n", 865 | " 0. , 0. , 0. , 0. , 0. ,\n", 866 | " 0. , 0. , 0. , 0. , 0. ,\n", 867 | " 0.33333333, 0.98823529, 0.56862745, 0. , 0. ,\n", 868 | " 0. , 0. , 0. , 0. , 0. ,\n", 869 | " 0.18823529, 0.64705882, 0.98823529, 0.67843137, 0. ,\n", 870 | " 0. , 0. , 0. , 0. , 0. ,\n", 871 | " 0. , 0. , 0. , 0. , 0. ,\n", 872 | " 0. , 0. , 0. , 0.3372549 , 0.99215686,\n", 873 | " 0.88235294, 0. , 0. , 0. , 0. ,\n", 874 | " 0. , 0. , 0.44705882, 0.93333333, 0.99215686,\n", 875 | " 0.63529412, 0. , 0. , 0. , 0. ,\n", 876 | " 0. , 0. , 0. , 0. , 0. ,\n", 877 | " 0. , 0. , 0. , 0. , 0. ,\n", 878 | " 0. , 0.33333333, 0.98823529, 0.97647059, 0.57254902,\n", 879 | " 0.18823529, 0.11372549, 0.33333333, 0.69803922, 0.88235294,\n", 880 | " 0.99215686, 0.8745098 , 0.65490196, 0.21960784, 0. ,\n", 881 | " 0. , 0. , 0. , 0. , 0. ,\n", 882 | " 0. , 0. , 0. , 0. , 0. ,\n", 883 | " 0. , 0. , 0. , 0. , 0.33333333,\n", 884 | " 0.98823529, 0.98823529, 0.98823529, 0.89803922, 0.84313725,\n", 885 | " 0.98823529, 0.98823529, 0.98823529, 0.76862745, 0.50980392,\n", 886 | " 0. , 0. , 0. , 0. , 0. ,\n", 887 | " 0. , 0. , 0. , 0. , 0. ,\n", 888 | " 0. , 0. , 0. , 0. , 0. ,\n", 889 | " 0. , 0. , 0.10980392, 0.78039216, 0.98823529,\n", 890 | " 0.98823529, 0.99215686, 0.98823529, 0.98823529, 0.91372549,\n", 891 | " 0.56862745, 0. , 0. , 0. , 0. ,\n", 892 | " 0. , 0. , 0. , 0. , 0. ,\n", 893 | " 0. , 0. , 0. , 0. , 0. ,\n", 894 | " 0. , 0. , 0. , 0. , 0. ,\n", 895 | " 0. , 0.09803922, 0.50196078, 0.98823529, 0.99215686,\n", 896 | " 0.98823529, 0.55294118, 0.14509804, 0. , 0. ,\n", 897 | " 0. , 0. , 0. , 0. , 0. ,\n", 898 | " 0. , 0. , 0. , 0. , 0. ,\n", 899 | " 0. , 0. , 0. , 0. , 0. ,\n", 900 | " 0. , 0. , 0. , 0. , 0. ,\n", 901 | " 0. , 0. , 0. , 0. , 0. ,\n", 902 | " 0. , 0. , 0. , 0. , 0. ,\n", 903 | " 0. , 0. , 0. , 0. , 0. ,\n", 904 | " 0. , 0. , 0. , 0. , 0. ,\n", 905 | " 0. , 0. , 0. , 0. , 0. ,\n", 906 | " 0. , 0. , 0. , 0. , 0. ,\n", 907 | " 0. , 0. , 0. , 0. , 0. ,\n", 908 | " 0. , 0. , 0. , 0. , 0. ,\n", 909 | " 0. , 0. , 0. , 0. , 0. ,\n", 910 | " 0. , 0. , 0. , 0. , 0. ,\n", 911 | " 0. , 0. , 0. , 0. , 0. ,\n", 912 | " 0. , 0. , 0. , 0. , 0. ,\n", 913 | " 0. , 0. , 0. , 0. , 0. ,\n", 914 | " 0. , 0. , 0. , 0. , 0. ,\n", 915 | " 0. , 0. , 0. , 0. , 0. ,\n", 916 | " 0. , 0. , 0. , 0. , 0. ,\n", 917 | " 0. , 0. , 0. , 0. , 0. ,\n", 918 | " 0. , 0. , 0. , 0. , 0. ,\n", 919 | " 0. , 0. , 0. , 0. , 0. ,\n", 920 | " 0. , 0. , 0. , 0. , 0. ,\n", 921 | " 0. , 0. , 0. , 0. ])" 922 | ] 923 | }, 924 | "metadata": { 925 | "tags": [] 926 | }, 927 | "execution_count": 99 928 | } 929 | ] 930 | }, 931 | { 932 | "cell_type": "code", 933 | "metadata": { 934 | "id": "AGgOjK2pUZGt", 935 | "colab_type": "code", 936 | "colab": { 937 | "base_uri": "https://localhost:8080/", 938 | "height": 34 939 | }, 940 | "outputId": "7377dcdd-7eb9-47d1-d6ae-a4ec2bbcdf1d" 941 | }, 942 | "source": [ 943 | "xtrain.shape" 944 | ], 945 | "execution_count": 100, 946 | "outputs": [ 947 | { 948 | "output_type": "execute_result", 949 | "data": { 950 | "text/plain": [ 951 | "(60000, 784)" 952 | ] 953 | }, 954 | "metadata": { 955 | "tags": [] 956 | }, 957 | "execution_count": 100 958 | } 959 | ] 960 | }, 961 | { 962 | "cell_type": "code", 963 | "metadata": { 964 | "id": "RxlJedHnwCti", 965 | "colab_type": "code", 966 | "colab": {} 967 | }, 968 | "source": [ 969 | "model = keras.Sequential()\n", 970 | "model.add( Dense(64, activation='relu', input_dim=784))\n", 971 | "model.add( Dense(64, activation='relu'))\n", 972 | "model.add( Dense(10, activation='sigmoid'))\n" 973 | ], 974 | "execution_count": 101, 975 | "outputs": [] 976 | }, 977 | { 978 | "cell_type": "code", 979 | "metadata": { 980 | "id": "K5ybuvNbx4Vv", 981 | "colab_type": "code", 982 | "colab": {} 983 | }, 984 | "source": [ 985 | "model.compile(\n", 986 | " optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['accuracy']\n", 987 | ")" 988 | ], 989 | "execution_count": 102, 990 | "outputs": [] 991 | }, 992 | { 993 | "cell_type": "code", 994 | "metadata": { 995 | "id": "uWUUd3nP4KoC", 996 | "colab_type": "code", 997 | "colab": { 998 | "base_uri": "https://localhost:8080/", 999 | "height": 374 1000 | }, 1001 | "outputId": "ab47d559-642d-4fbc-9b36-d9ffc6f72a38" 1002 | }, 1003 | "source": [ 1004 | "model.fit(xtrain, \n", 1005 | " to_categorical(ytrain),\n", 1006 | " epochs=10,\n", 1007 | " batch_size=32,\n", 1008 | " )" 1009 | ], 1010 | "execution_count": 103, 1011 | "outputs": [ 1012 | { 1013 | "output_type": "stream", 1014 | "text": [ 1015 | "Epoch 1/10\n", 1016 | "1875/1875 [==============================] - 3s 2ms/step - loss: 0.2936 - accuracy: 0.9156\n", 1017 | "Epoch 2/10\n", 1018 | "1875/1875 [==============================] - 3s 2ms/step - loss: 0.1365 - accuracy: 0.9589\n", 1019 | "Epoch 3/10\n", 1020 | "1875/1875 [==============================] - 3s 2ms/step - loss: 0.1009 - accuracy: 0.9689\n", 1021 | "Epoch 4/10\n", 1022 | "1875/1875 [==============================] - 3s 2ms/step - loss: 0.0807 - accuracy: 0.9748\n", 1023 | "Epoch 5/10\n", 1024 | "1875/1875 [==============================] - 3s 2ms/step - loss: 0.0665 - accuracy: 0.9791\n", 1025 | "Epoch 6/10\n", 1026 | "1875/1875 [==============================] - 3s 2ms/step - loss: 0.0556 - accuracy: 0.9817\n", 1027 | "Epoch 7/10\n", 1028 | "1875/1875 [==============================] - 3s 2ms/step - loss: 0.0481 - accuracy: 0.9839\n", 1029 | "Epoch 8/10\n", 1030 | "1875/1875 [==============================] - 3s 2ms/step - loss: 0.0413 - accuracy: 0.9868\n", 1031 | "Epoch 9/10\n", 1032 | "1875/1875 [==============================] - 3s 2ms/step - loss: 0.0350 - accuracy: 0.9885\n", 1033 | "Epoch 10/10\n", 1034 | "1875/1875 [==============================] - 3s 2ms/step - loss: 0.0326 - accuracy: 0.9893\n" 1035 | ], 1036 | "name": "stdout" 1037 | }, 1038 | { 1039 | "output_type": "execute_result", 1040 | "data": { 1041 | "text/plain": [ 1042 | "" 1043 | ] 1044 | }, 1045 | "metadata": { 1046 | "tags": [] 1047 | }, 1048 | "execution_count": 103 1049 | } 1050 | ] 1051 | }, 1052 | { 1053 | "cell_type": "code", 1054 | "metadata": { 1055 | "id": "lfa3MICPAZzy", 1056 | "colab_type": "code", 1057 | "colab": { 1058 | "base_uri": "https://localhost:8080/", 1059 | "height": 51 1060 | }, 1061 | "outputId": "fd78aa45-4552-4add-ac0d-31a0c021552d" 1062 | }, 1063 | "source": [ 1064 | "#Evaluate \n", 1065 | "model.evaluate(\n", 1066 | " xtest,\n", 1067 | " to_categorical(ytest)\n", 1068 | ")" 1069 | ], 1070 | "execution_count": 104, 1071 | "outputs": [ 1072 | { 1073 | "output_type": "stream", 1074 | "text": [ 1075 | "313/313 [==============================] - 0s 925us/step - loss: 0.1051 - accuracy: 0.9733\n" 1076 | ], 1077 | "name": "stdout" 1078 | }, 1079 | { 1080 | "output_type": "execute_result", 1081 | "data": { 1082 | "text/plain": [ 1083 | "[0.10512389242649078, 0.9732999801635742]" 1084 | ] 1085 | }, 1086 | "metadata": { 1087 | "tags": [] 1088 | }, 1089 | "execution_count": 104 1090 | } 1091 | ] 1092 | }, 1093 | { 1094 | "cell_type": "code", 1095 | "metadata": { 1096 | "id": "gFf3Bv3pCgqz", 1097 | "colab_type": "code", 1098 | "colab": {} 1099 | }, 1100 | "source": [ 1101 | "pred = model.predict(xtest)" 1102 | ], 1103 | "execution_count": 105, 1104 | "outputs": [] 1105 | }, 1106 | { 1107 | "cell_type": "code", 1108 | "metadata": { 1109 | "id": "AjjAFb6fDlPx", 1110 | "colab_type": "code", 1111 | "colab": { 1112 | "base_uri": "https://localhost:8080/", 1113 | "height": 238 1114 | }, 1115 | "outputId": "1a6f31f8-6003-4b8d-9573-ae55a205d942" 1116 | }, 1117 | "source": [ 1118 | "pred" 1119 | ], 1120 | "execution_count": 106, 1121 | "outputs": [ 1122 | { 1123 | "output_type": "execute_result", 1124 | "data": { 1125 | "text/plain": [ 1126 | "array([[2.03335972e-07, 1.36694194e-08, 4.75494602e-07, ...,\n", 1127 | " 1.60784930e-01, 1.22781626e-06, 1.82594178e-07],\n", 1128 | " [1.17404104e-08, 4.95074801e-06, 1.05160743e-01, ...,\n", 1129 | " 7.25441300e-14, 1.29351547e-05, 2.00038575e-12],\n", 1130 | " [1.63020763e-06, 1.58055991e-01, 4.71132671e-06, ...,\n", 1131 | " 4.73737527e-05, 2.75441453e-05, 1.61239939e-07],\n", 1132 | " ...,\n", 1133 | " [3.90309860e-15, 1.53470292e-12, 7.25531117e-18, ...,\n", 1134 | " 7.19088146e-13, 9.71086198e-11, 3.27436709e-08],\n", 1135 | " [1.01335468e-10, 7.97379082e-16, 2.20819372e-16, ...,\n", 1136 | " 4.79351158e-14, 6.04196202e-06, 3.89904512e-14],\n", 1137 | " [1.13558607e-09, 8.83942831e-15, 3.58288352e-17, ...,\n", 1138 | " 1.45244737e-21, 1.11075584e-13, 3.37368723e-17]], dtype=float32)" 1139 | ] 1140 | }, 1141 | "metadata": { 1142 | "tags": [] 1143 | }, 1144 | "execution_count": 106 1145 | } 1146 | ] 1147 | }, 1148 | { 1149 | "cell_type": "code", 1150 | "metadata": { 1151 | "id": "c1AHDTOyDpIy", 1152 | "colab_type": "code", 1153 | "colab": { 1154 | "base_uri": "https://localhost:8080/", 1155 | "height": 34 1156 | }, 1157 | "outputId": "454fff06-67e3-41e6-f53a-8d8181fcba4f" 1158 | }, 1159 | "source": [ 1160 | "np.argmax(pred[1])" 1161 | ], 1162 | "execution_count": 107, 1163 | "outputs": [ 1164 | { 1165 | "output_type": "execute_result", 1166 | "data": { 1167 | "text/plain": [ 1168 | "2" 1169 | ] 1170 | }, 1171 | "metadata": { 1172 | "tags": [] 1173 | }, 1174 | "execution_count": 107 1175 | } 1176 | ] 1177 | } 1178 | ] 1179 | } -------------------------------------------------------------------------------- /Activation Functions in Deep Learning.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "id": "3caf694a", 7 | "metadata": {}, 8 | "outputs": [], 9 | "source": [ 10 | "# !pip install numpy" 11 | ] 12 | }, 13 | { 14 | "cell_type": "code", 15 | "execution_count": 2, 16 | "id": "55ac3bc2", 17 | "metadata": {}, 18 | "outputs": [], 19 | "source": [ 20 | "import numpy as np" 21 | ] 22 | }, 23 | { 24 | "cell_type": "markdown", 25 | "id": "c0d809a6", 26 | "metadata": {}, 27 | "source": [ 28 | "# 1. ReLU - Rectified Linear Unit (Hidden Layer)" 29 | ] 30 | }, 31 | { 32 | "cell_type": "code", 33 | "execution_count": 3, 34 | "id": "47f174a7", 35 | "metadata": {}, 36 | "outputs": [], 37 | "source": [ 38 | "def relu(x):\n", 39 | " return np.maximum(0, x)\n" 40 | ] 41 | }, 42 | { 43 | "cell_type": "code", 44 | "execution_count": 4, 45 | "id": "04873e16", 46 | "metadata": {}, 47 | "outputs": [ 48 | { 49 | "data": { 50 | "text/plain": [ 51 | "10" 52 | ] 53 | }, 54 | "execution_count": 4, 55 | "metadata": {}, 56 | "output_type": "execute_result" 57 | } 58 | ], 59 | "source": [ 60 | "relu(10)" 61 | ] 62 | }, 63 | { 64 | "cell_type": "code", 65 | "execution_count": 5, 66 | "id": "81560793", 67 | "metadata": {}, 68 | "outputs": [ 69 | { 70 | "data": { 71 | "text/plain": [ 72 | "0" 73 | ] 74 | }, 75 | "execution_count": 5, 76 | "metadata": {}, 77 | "output_type": "execute_result" 78 | } 79 | ], 80 | "source": [ 81 | "relu(-10)" 82 | ] 83 | }, 84 | { 85 | "cell_type": "code", 86 | "execution_count": 6, 87 | "id": "e914d442", 88 | "metadata": {}, 89 | "outputs": [ 90 | { 91 | "data": { 92 | "text/plain": [ 93 | "array([0, 0, 1, 2])" 94 | ] 95 | }, 96 | "execution_count": 6, 97 | "metadata": {}, 98 | "output_type": "execute_result" 99 | } 100 | ], 101 | "source": [ 102 | "relu(np.array([-1, 0, 1, 2]))" 103 | ] 104 | }, 105 | { 106 | "cell_type": "markdown", 107 | "id": "e6ea50d7", 108 | "metadata": {}, 109 | "source": [ 110 | "# 2. Leaky ReLU (Hidden Layer)" 111 | ] 112 | }, 113 | { 114 | "cell_type": "markdown", 115 | "id": "a19d2b17", 116 | "metadata": {}, 117 | "source": [ 118 | "Leaky ReLU allows a small, positive gradient when the unit is not active." 119 | ] 120 | }, 121 | { 122 | "cell_type": "code", 123 | "execution_count": 7, 124 | "id": "0a2a2eb6", 125 | "metadata": {}, 126 | "outputs": [], 127 | "source": [ 128 | "def leaky_relu(x, alpha=0.01):\n", 129 | " return np.where(x > 0, x, x * alpha)\n" 130 | ] 131 | }, 132 | { 133 | "cell_type": "code", 134 | "execution_count": 8, 135 | "id": "c4212806", 136 | "metadata": {}, 137 | "outputs": [ 138 | { 139 | "data": { 140 | "text/plain": [ 141 | "array(-0.01)" 142 | ] 143 | }, 144 | "execution_count": 8, 145 | "metadata": {}, 146 | "output_type": "execute_result" 147 | } 148 | ], 149 | "source": [ 150 | "leaky_relu(-1)" 151 | ] 152 | }, 153 | { 154 | "cell_type": "code", 155 | "execution_count": 9, 156 | "id": "d243f562", 157 | "metadata": {}, 158 | "outputs": [ 159 | { 160 | "data": { 161 | "text/plain": [ 162 | "array([-0.01, 0. , 1. , 2. ])" 163 | ] 164 | }, 165 | "execution_count": 9, 166 | "metadata": {}, 167 | "output_type": "execute_result" 168 | } 169 | ], 170 | "source": [ 171 | "leaky_relu(np.array([-1, 0, 1, 2]))" 172 | ] 173 | }, 174 | { 175 | "cell_type": "markdown", 176 | "id": "6393bc6a", 177 | "metadata": {}, 178 | "source": [ 179 | "# 3. ELU - Exponential Linear Unit (Hidden Layer)" 180 | ] 181 | }, 182 | { 183 | "cell_type": "markdown", 184 | "id": "cd1277d3", 185 | "metadata": {}, 186 | "source": [ 187 | "ELU has a small slope for negative values, unlike ReLU, to avoid the dying ReLU problem." 188 | ] 189 | }, 190 | { 191 | "cell_type": "code", 192 | "execution_count": 10, 193 | "id": "ae19a635", 194 | "metadata": {}, 195 | "outputs": [], 196 | "source": [ 197 | "def elu(x, alpha=1.0):\n", 198 | " return np.where(x > 0, x, alpha * (np.exp(x) - 1))" 199 | ] 200 | }, 201 | { 202 | "cell_type": "code", 203 | "execution_count": 11, 204 | "id": "8120ec43", 205 | "metadata": {}, 206 | "outputs": [ 207 | { 208 | "data": { 209 | "text/plain": [ 210 | "array(5.)" 211 | ] 212 | }, 213 | "execution_count": 11, 214 | "metadata": {}, 215 | "output_type": "execute_result" 216 | } 217 | ], 218 | "source": [ 219 | "elu(5)" 220 | ] 221 | }, 222 | { 223 | "cell_type": "code", 224 | "execution_count": 12, 225 | "id": "dc0d1b39", 226 | "metadata": {}, 227 | "outputs": [ 228 | { 229 | "data": { 230 | "text/plain": [ 231 | "array([-0.63212056, 0. , 1. , 2. ])" 232 | ] 233 | }, 234 | "execution_count": 12, 235 | "metadata": {}, 236 | "output_type": "execute_result" 237 | } 238 | ], 239 | "source": [ 240 | "elu(np.array([-1, 0, 1, 2]))" 241 | ] 242 | }, 243 | { 244 | "cell_type": "markdown", 245 | "id": "02a66821", 246 | "metadata": {}, 247 | "source": [ 248 | "# 4. Sigmoid (Output Layer & Binaryclass Problem)" 249 | ] 250 | }, 251 | { 252 | "cell_type": "code", 253 | "execution_count": 13, 254 | "id": "037e9cb3", 255 | "metadata": {}, 256 | "outputs": [], 257 | "source": [ 258 | "def sigmoid(x):\n", 259 | " return 1 / (1 + np.exp(-x))\n" 260 | ] 261 | }, 262 | { 263 | "cell_type": "code", 264 | "execution_count": 14, 265 | "id": "408f0b7f", 266 | "metadata": {}, 267 | "outputs": [ 268 | { 269 | "data": { 270 | "text/plain": [ 271 | "array([0.26894142, 0.5 , 0.73105858, 0.88079708])" 272 | ] 273 | }, 274 | "execution_count": 14, 275 | "metadata": {}, 276 | "output_type": "execute_result" 277 | } 278 | ], 279 | "source": [ 280 | "sigmoid(np.array([-1, 0, 1, 2]))" 281 | ] 282 | }, 283 | { 284 | "cell_type": "markdown", 285 | "id": "d6afd65e", 286 | "metadata": {}, 287 | "source": [ 288 | "# 5. Softmax (Output Layer & Multiclass Problem)" 289 | ] 290 | }, 291 | { 292 | "cell_type": "markdown", 293 | "id": "6d7f80ba", 294 | "metadata": {}, 295 | "source": [ 296 | "Softmax converts a real vector to a vector of categorical probabilities." 297 | ] 298 | }, 299 | { 300 | "cell_type": "code", 301 | "execution_count": 15, 302 | "id": "1bd42072", 303 | "metadata": {}, 304 | "outputs": [], 305 | "source": [ 306 | "def softmax(x):\n", 307 | " e_x = np.exp(x - np.max(x)) \n", 308 | " return e_x / e_x.sum(axis=0)\n" 309 | ] 310 | }, 311 | { 312 | "cell_type": "code", 313 | "execution_count": 16, 314 | "id": "136ead8b", 315 | "metadata": {}, 316 | "outputs": [ 317 | { 318 | "data": { 319 | "text/plain": [ 320 | "array([0.0320586 , 0.08714432, 0.23688282, 0.64391426])" 321 | ] 322 | }, 323 | "execution_count": 16, 324 | "metadata": {}, 325 | "output_type": "execute_result" 326 | } 327 | ], 328 | "source": [ 329 | "proba = softmax(np.array([-1, 0, 1, 2]))\n", 330 | "proba" 331 | ] 332 | }, 333 | { 334 | "cell_type": "code", 335 | "execution_count": 17, 336 | "id": "2388c5b0", 337 | "metadata": {}, 338 | "outputs": [ 339 | { 340 | "data": { 341 | "text/plain": [ 342 | "1.0" 343 | ] 344 | }, 345 | "execution_count": 17, 346 | "metadata": {}, 347 | "output_type": "execute_result" 348 | } 349 | ], 350 | "source": [ 351 | "sum(proba)" 352 | ] 353 | }, 354 | { 355 | "cell_type": "markdown", 356 | "id": "b7977ddf", 357 | "metadata": {}, 358 | "source": [ 359 | "# 6. Swish (Hidden Layer)" 360 | ] 361 | }, 362 | { 363 | "cell_type": "markdown", 364 | "id": "31667369", 365 | "metadata": {}, 366 | "source": [ 367 | "Swish is a self-gated activation function." 368 | ] 369 | }, 370 | { 371 | "cell_type": "code", 372 | "execution_count": 18, 373 | "id": "94bcf6dc", 374 | "metadata": {}, 375 | "outputs": [], 376 | "source": [ 377 | "def swish(x, beta=1.0):\n", 378 | " return x * sigmoid(beta * x)\n" 379 | ] 380 | }, 381 | { 382 | "cell_type": "code", 383 | "execution_count": 19, 384 | "id": "aa3867fb", 385 | "metadata": {}, 386 | "outputs": [ 387 | { 388 | "data": { 389 | "text/plain": [ 390 | "4.966535745378576" 391 | ] 392 | }, 393 | "execution_count": 19, 394 | "metadata": {}, 395 | "output_type": "execute_result" 396 | } 397 | ], 398 | "source": [ 399 | "swish(5)" 400 | ] 401 | }, 402 | { 403 | "cell_type": "code", 404 | "execution_count": 20, 405 | "id": "ac227b4a", 406 | "metadata": {}, 407 | "outputs": [ 408 | { 409 | "data": { 410 | "text/plain": [ 411 | "array([-0.26894142, 0. , 0.73105858, 1.76159416])" 412 | ] 413 | }, 414 | "execution_count": 20, 415 | "metadata": {}, 416 | "output_type": "execute_result" 417 | } 418 | ], 419 | "source": [ 420 | "swish(np.array([-1, 0, 1, 2]))" 421 | ] 422 | }, 423 | { 424 | "cell_type": "markdown", 425 | "id": "38e55866", 426 | "metadata": {}, 427 | "source": [ 428 | "# 7. Linear (Output Layer)" 429 | ] 430 | }, 431 | { 432 | "cell_type": "markdown", 433 | "id": "4049385f", 434 | "metadata": {}, 435 | "source": [ 436 | "Linear or identity activation function returns the input directly." 437 | ] 438 | }, 439 | { 440 | "cell_type": "code", 441 | "execution_count": 21, 442 | "id": "8f680b33", 443 | "metadata": {}, 444 | "outputs": [], 445 | "source": [ 446 | "def linear(x):\n", 447 | " return x" 448 | ] 449 | }, 450 | { 451 | "cell_type": "code", 452 | "execution_count": 22, 453 | "id": "c6abc3a2", 454 | "metadata": {}, 455 | "outputs": [ 456 | { 457 | "data": { 458 | "text/plain": [ 459 | "10" 460 | ] 461 | }, 462 | "execution_count": 22, 463 | "metadata": {}, 464 | "output_type": "execute_result" 465 | } 466 | ], 467 | "source": [ 468 | "linear(10)" 469 | ] 470 | }, 471 | { 472 | "cell_type": "markdown", 473 | "id": "ef852cf7", 474 | "metadata": {}, 475 | "source": [ 476 | "# 8. Tanh (Hyperbolic Tangent)" 477 | ] 478 | }, 479 | { 480 | "cell_type": "code", 481 | "execution_count": 23, 482 | "id": "26e87100", 483 | "metadata": {}, 484 | "outputs": [], 485 | "source": [ 486 | "def tanh(x):\n", 487 | " return np.tanh(x)" 488 | ] 489 | }, 490 | { 491 | "cell_type": "code", 492 | "execution_count": 24, 493 | "id": "e3ce4a70", 494 | "metadata": {}, 495 | "outputs": [ 496 | { 497 | "data": { 498 | "text/plain": [ 499 | "0.9999999958776927" 500 | ] 501 | }, 502 | "execution_count": 24, 503 | "metadata": {}, 504 | "output_type": "execute_result" 505 | } 506 | ], 507 | "source": [ 508 | "tanh(10)" 509 | ] 510 | }, 511 | { 512 | "cell_type": "code", 513 | "execution_count": 25, 514 | "id": "dbd65fac", 515 | "metadata": {}, 516 | "outputs": [ 517 | { 518 | "data": { 519 | "text/plain": [ 520 | "array([-0.76159416, 0. , 0.76159416, 0.96402758])" 521 | ] 522 | }, 523 | "execution_count": 25, 524 | "metadata": {}, 525 | "output_type": "execute_result" 526 | } 527 | ], 528 | "source": [ 529 | "tanh([-1, 0, 1, 2])" 530 | ] 531 | }, 532 | { 533 | "cell_type": "code", 534 | "execution_count": 26, 535 | "id": "ae2dc284", 536 | "metadata": {}, 537 | "outputs": [], 538 | "source": [ 539 | "import math" 540 | ] 541 | }, 542 | { 543 | "cell_type": "code", 544 | "execution_count": 27, 545 | "id": "8560c99c", 546 | "metadata": {}, 547 | "outputs": [], 548 | "source": [ 549 | "def tanh(x):\n", 550 | " result = (math.exp(x) - math.exp(-x)) / (math.exp(x) + math.exp(-x))\n", 551 | " return result" 552 | ] 553 | }, 554 | { 555 | "cell_type": "code", 556 | "execution_count": 28, 557 | "id": "48ef9ce5", 558 | "metadata": {}, 559 | "outputs": [ 560 | { 561 | "data": { 562 | "text/plain": [ 563 | "-0.7615941559557649" 564 | ] 565 | }, 566 | "execution_count": 28, 567 | "metadata": {}, 568 | "output_type": "execute_result" 569 | } 570 | ], 571 | "source": [ 572 | "tanh(-1)" 573 | ] 574 | } 575 | ], 576 | "metadata": { 577 | "kernelspec": { 578 | "display_name": "Python 3 (ipykernel)", 579 | "language": "python", 580 | "name": "python3" 581 | }, 582 | "language_info": { 583 | "codemirror_mode": { 584 | "name": "ipython", 585 | "version": 3 586 | }, 587 | "file_extension": ".py", 588 | "mimetype": "text/x-python", 589 | "name": "python", 590 | "nbconvert_exporter": "python", 591 | "pygments_lexer": "ipython3", 592 | "version": "3.9.13" 593 | } 594 | }, 595 | "nbformat": 4, 596 | "nbformat_minor": 5 597 | } 598 | -------------------------------------------------------------------------------- /Implementing Single Neuron with Raw Python Code.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "id": "4adce7a4", 6 | "metadata": {}, 7 | "source": [ 8 | "# Single Neuron Implementation\n", 9 | "\n", 10 | "This notebook demonstrates the implementation of a single neuron. The neuron will take weighted inputs, add a bias, and apply a sigmoid activation function to produce an output.\n", 11 | "\n", 12 | "## Neuron Implementation\n", 13 | "\n", 14 | "We will define the `sigmoid` function and the `feedforward` function to calculate the output of the neuron.\n" 15 | ] 16 | }, 17 | { 18 | "cell_type": "code", 19 | "execution_count": 1, 20 | "id": "f6fc7922", 21 | "metadata": {}, 22 | "outputs": [], 23 | "source": [ 24 | "import math" 25 | ] 26 | }, 27 | { 28 | "cell_type": "markdown", 29 | "id": "87a46f7e", 30 | "metadata": {}, 31 | "source": [ 32 | "Activation Function: Computes the sigmoid activation function." 33 | ] 34 | }, 35 | { 36 | "cell_type": "code", 37 | "execution_count": 2, 38 | "id": "890d844a", 39 | "metadata": {}, 40 | "outputs": [], 41 | "source": [ 42 | "def sigmoid(z):\n", 43 | " return 1 / (1 + math.exp(-z))" 44 | ] 45 | }, 46 | { 47 | "cell_type": "markdown", 48 | "id": "3cc9ae2c", 49 | "metadata": {}, 50 | "source": [ 51 | "Feedforward Network: \n", 52 | "1. Calculates the weighted sum of inputs plus the bias.\n", 53 | "2. Applies the sigmoid activation function to the total." 54 | ] 55 | }, 56 | { 57 | "cell_type": "code", 58 | "execution_count": 3, 59 | "id": "694118b2", 60 | "metadata": {}, 61 | "outputs": [], 62 | "source": [ 63 | "def feedforward(weights, bias, inputs):\n", 64 | " \n", 65 | " total = sum(w * x for w, x in zip(weights, inputs)) + bias\n", 66 | " \n", 67 | " return sigmoid(total)" 68 | ] 69 | }, 70 | { 71 | "cell_type": "markdown", 72 | "id": "42a3aadf", 73 | "metadata": {}, 74 | "source": [ 75 | "classify(): Converts the sigmoid output to a class label based on a threshold (default is 0.5)." 76 | ] 77 | }, 78 | { 79 | "cell_type": "code", 80 | "execution_count": 4, 81 | "id": "d61c0319", 82 | "metadata": {}, 83 | "outputs": [], 84 | "source": [ 85 | "def classify(output, threshold=0.5):\n", 86 | " return 1 if output >= threshold else 0" 87 | ] 88 | }, 89 | { 90 | "cell_type": "markdown", 91 | "id": "a0914ac4", 92 | "metadata": {}, 93 | "source": [ 94 | "We will define the weights, bias, and inputs, and then calculate the output of the neuron using the `feedforward` function.\n" 95 | ] 96 | }, 97 | { 98 | "cell_type": "code", 99 | "execution_count": 5, 100 | "id": "8f7949b9", 101 | "metadata": {}, 102 | "outputs": [ 103 | { 104 | "name": "stdout", 105 | "output_type": "stream", 106 | "text": [ 107 | "Output of the neuron for inputs [2, 3] is: 0.9706877692486436\n" 108 | ] 109 | } 110 | ], 111 | "source": [ 112 | "weights = [0, 1]\n", 113 | "bias = 0.5\n", 114 | "\n", 115 | "inputs = [2, 3]\n", 116 | "\n", 117 | "output = feedforward(weights, bias, inputs)\n", 118 | "print(f\"Output of the neuron for inputs {inputs} is: {output}\")" 119 | ] 120 | }, 121 | { 122 | "cell_type": "code", 123 | "execution_count": 6, 124 | "id": "1736516e", 125 | "metadata": {}, 126 | "outputs": [ 127 | { 128 | "name": "stdout", 129 | "output_type": "stream", 130 | "text": [ 131 | "Class label for the output is: 1\n" 132 | ] 133 | } 134 | ], 135 | "source": [ 136 | "class_label = classify(output)\n", 137 | "print(f\"Class label for the output is: {class_label}\")" 138 | ] 139 | }, 140 | { 141 | "cell_type": "code", 142 | "execution_count": null, 143 | "id": "c1f23be1", 144 | "metadata": {}, 145 | "outputs": [], 146 | "source": [] 147 | } 148 | ], 149 | "metadata": { 150 | "kernelspec": { 151 | "display_name": "Python 3 (ipykernel)", 152 | "language": "python", 153 | "name": "python3" 154 | }, 155 | "language_info": { 156 | "codemirror_mode": { 157 | "name": "ipython", 158 | "version": 3 159 | }, 160 | "file_extension": ".py", 161 | "mimetype": "text/x-python", 162 | "name": "python", 163 | "nbconvert_exporter": "python", 164 | "pygments_lexer": "ipython3", 165 | "version": "3.9.13" 166 | } 167 | }, 168 | "nbformat": 4, 169 | "nbformat_minor": 5 170 | } 171 | -------------------------------------------------------------------------------- /LSTM_.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "name": "LSTM .ipynb", 7 | "provenance": [], 8 | "collapsed_sections": [], 9 | "include_colab_link": true 10 | }, 11 | "kernelspec": { 12 | "name": "python3", 13 | "display_name": "Python 3" 14 | }, 15 | "language_info": { 16 | "name": "python" 17 | } 18 | }, 19 | "cells": [ 20 | { 21 | "cell_type": "markdown", 22 | "metadata": { 23 | "id": "view-in-github", 24 | "colab_type": "text" 25 | }, 26 | "source": [ 27 | "\"Open" 28 | ] 29 | }, 30 | { 31 | "cell_type": "code", 32 | "execution_count": 1, 33 | "metadata": { 34 | "colab": { 35 | "resources": { 36 | "http://localhost:8080/nbextensions/google.colab/files.js": { 37 | "data": "Ly8gQ29weXJpZ2h0IDIwMTcgR29vZ2xlIExMQwovLwovLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgovLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLy8KLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLy8KLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQovLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAovLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAovLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCi8qKgogKiBAZmlsZW92ZXJ2aWV3IEhlbHBlcnMgZm9yIGdvb2dsZS5jb2xhYiBQeXRob24gbW9kdWxlLgogKi8KKGZ1bmN0aW9uKHNjb3BlKSB7CmZ1bmN0aW9uIHNwYW4odGV4dCwgc3R5bGVBdHRyaWJ1dGVzID0ge30pIHsKICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogIGVsZW1lbnQudGV4dENvbnRlbnQgPSB0ZXh0OwogIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHN0eWxlQXR0cmlidXRlcykpIHsKICAgIGVsZW1lbnQuc3R5bGVba2V5XSA9IHN0eWxlQXR0cmlidXRlc1trZXldOwogIH0KICByZXR1cm4gZWxlbWVudDsKfQoKLy8gTWF4IG51bWJlciBvZiBieXRlcyB3aGljaCB3aWxsIGJlIHVwbG9hZGVkIGF0IGEgdGltZS4KY29uc3QgTUFYX1BBWUxPQURfU0laRSA9IDEwMCAqIDEwMjQ7CgpmdW5jdGlvbiBfdXBsb2FkRmlsZXMoaW5wdXRJZCwgb3V0cHV0SWQpIHsKICBjb25zdCBzdGVwcyA9IHVwbG9hZEZpbGVzU3RlcChpbnB1dElkLCBvdXRwdXRJZCk7CiAgY29uc3Qgb3V0cHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG91dHB1dElkKTsKICAvLyBDYWNoZSBzdGVwcyBvbiB0aGUgb3V0cHV0RWxlbWVudCB0byBtYWtlIGl0IGF2YWlsYWJsZSBmb3IgdGhlIG5leHQgY2FsbAogIC8vIHRvIHVwbG9hZEZpbGVzQ29udGludWUgZnJvbSBQeXRob24uCiAgb3V0cHV0RWxlbWVudC5zdGVwcyA9IHN0ZXBzOwoKICByZXR1cm4gX3VwbG9hZEZpbGVzQ29udGludWUob3V0cHV0SWQpOwp9CgovLyBUaGlzIGlzIHJvdWdobHkgYW4gYXN5bmMgZ2VuZXJhdG9yIChub3Qgc3VwcG9ydGVkIGluIHRoZSBicm93c2VyIHlldCksCi8vIHdoZXJlIHRoZXJlIGFyZSBtdWx0aXBsZSBhc3luY2hyb25vdXMgc3RlcHMgYW5kIHRoZSBQeXRob24gc2lkZSBpcyBnb2luZwovLyB0byBwb2xsIGZvciBjb21wbGV0aW9uIG9mIGVhY2ggc3RlcC4KLy8gVGhpcyB1c2VzIGEgUHJvbWlzZSB0byBibG9jayB0aGUgcHl0aG9uIHNpZGUgb24gY29tcGxldGlvbiBvZiBlYWNoIHN0ZXAsCi8vIHRoZW4gcGFzc2VzIHRoZSByZXN1bHQgb2YgdGhlIHByZXZpb3VzIHN0ZXAgYXMgdGhlIGlucHV0IHRvIHRoZSBuZXh0IHN0ZXAuCmZ1bmN0aW9uIF91cGxvYWRGaWxlc0NvbnRpbnVlKG91dHB1dElkKSB7CiAgY29uc3Qgb3V0cHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG91dHB1dElkKTsKICBjb25zdCBzdGVwcyA9IG91dHB1dEVsZW1lbnQuc3RlcHM7CgogIGNvbnN0IG5leHQgPSBzdGVwcy5uZXh0KG91dHB1dEVsZW1lbnQubGFzdFByb21pc2VWYWx1ZSk7CiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXh0LnZhbHVlLnByb21pc2UpLnRoZW4oKHZhbHVlKSA9PiB7CiAgICAvLyBDYWNoZSB0aGUgbGFzdCBwcm9taXNlIHZhbHVlIHRvIG1ha2UgaXQgYXZhaWxhYmxlIHRvIHRoZSBuZXh0CiAgICAvLyBzdGVwIG9mIHRoZSBnZW5lcmF0b3IuCiAgICBvdXRwdXRFbGVtZW50Lmxhc3RQcm9taXNlVmFsdWUgPSB2YWx1ZTsKICAgIHJldHVybiBuZXh0LnZhbHVlLnJlc3BvbnNlOwogIH0pOwp9CgovKioKICogR2VuZXJhdG9yIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCBiZXR3ZWVuIGVhY2ggYXN5bmMgc3RlcCBvZiB0aGUgdXBsb2FkCiAqIHByb2Nlc3MuCiAqIEBwYXJhbSB7c3RyaW5nfSBpbnB1dElkIEVsZW1lbnQgSUQgb2YgdGhlIGlucHV0IGZpbGUgcGlja2VyIGVsZW1lbnQuCiAqIEBwYXJhbSB7c3RyaW5nfSBvdXRwdXRJZCBFbGVtZW50IElEIG9mIHRoZSBvdXRwdXQgZGlzcGxheS4KICogQHJldHVybiB7IUl0ZXJhYmxlPCFPYmplY3Q+fSBJdGVyYWJsZSBvZiBuZXh0IHN0ZXBzLgogKi8KZnVuY3Rpb24qIHVwbG9hZEZpbGVzU3RlcChpbnB1dElkLCBvdXRwdXRJZCkgewogIGNvbnN0IGlucHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlucHV0SWQpOwogIGlucHV0RWxlbWVudC5kaXNhYmxlZCA9IGZhbHNlOwoKICBjb25zdCBvdXRwdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3V0cHV0SWQpOwogIG91dHB1dEVsZW1lbnQuaW5uZXJIVE1MID0gJyc7CgogIGNvbnN0IHBpY2tlZFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgaW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIChlKSA9PiB7CiAgICAgIHJlc29sdmUoZS50YXJnZXQuZmlsZXMpOwogICAgfSk7CiAgfSk7CgogIGNvbnN0IGNhbmNlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogIGlucHV0RWxlbWVudC5wYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKGNhbmNlbCk7CiAgY2FuY2VsLnRleHRDb250ZW50ID0gJ0NhbmNlbCB1cGxvYWQnOwogIGNvbnN0IGNhbmNlbFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgY2FuY2VsLm9uY2xpY2sgPSAoKSA9PiB7CiAgICAgIHJlc29sdmUobnVsbCk7CiAgICB9OwogIH0pOwoKICAvLyBXYWl0IGZvciB0aGUgdXNlciB0byBwaWNrIHRoZSBmaWxlcy4KICBjb25zdCBmaWxlcyA9IHlpZWxkIHsKICAgIHByb21pc2U6IFByb21pc2UucmFjZShbcGlja2VkUHJvbWlzZSwgY2FuY2VsUHJvbWlzZV0pLAogICAgcmVzcG9uc2U6IHsKICAgICAgYWN0aW9uOiAnc3RhcnRpbmcnLAogICAgfQogIH07CgogIGNhbmNlbC5yZW1vdmUoKTsKCiAgLy8gRGlzYWJsZSB0aGUgaW5wdXQgZWxlbWVudCBzaW5jZSBmdXJ0aGVyIHBpY2tzIGFyZSBub3QgYWxsb3dlZC4KICBpbnB1dEVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlOwoKICBpZiAoIWZpbGVzKSB7CiAgICByZXR1cm4gewogICAgICByZXNwb25zZTogewogICAgICAgIGFjdGlvbjogJ2NvbXBsZXRlJywKICAgICAgfQogICAgfTsKICB9CgogIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykgewogICAgY29uc3QgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOwogICAgbGkuYXBwZW5kKHNwYW4oZmlsZS5uYW1lLCB7Zm9udFdlaWdodDogJ2JvbGQnfSkpOwogICAgbGkuYXBwZW5kKHNwYW4oCiAgICAgICAgYCgke2ZpbGUudHlwZSB8fCAnbi9hJ30pIC0gJHtmaWxlLnNpemV9IGJ5dGVzLCBgICsKICAgICAgICBgbGFzdCBtb2RpZmllZDogJHsKICAgICAgICAgICAgZmlsZS5sYXN0TW9kaWZpZWREYXRlID8gZmlsZS5sYXN0TW9kaWZpZWREYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygpIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ24vYSd9IC0gYCkpOwogICAgY29uc3QgcGVyY2VudCA9IHNwYW4oJzAlIGRvbmUnKTsKICAgIGxpLmFwcGVuZENoaWxkKHBlcmNlbnQpOwoKICAgIG91dHB1dEVsZW1lbnQuYXBwZW5kQ2hpbGQobGkpOwoKICAgIGNvbnN0IGZpbGVEYXRhUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZSkgPT4gewogICAgICAgIHJlc29sdmUoZS50YXJnZXQucmVzdWx0KTsKICAgICAgfTsKICAgICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpOwogICAgfSk7CiAgICAvLyBXYWl0IGZvciB0aGUgZGF0YSB0byBiZSByZWFkeS4KICAgIGxldCBmaWxlRGF0YSA9IHlpZWxkIHsKICAgICAgcHJvbWlzZTogZmlsZURhdGFQcm9taXNlLAogICAgICByZXNwb25zZTogewogICAgICAgIGFjdGlvbjogJ2NvbnRpbnVlJywKICAgICAgfQogICAgfTsKCiAgICAvLyBVc2UgYSBjaHVua2VkIHNlbmRpbmcgdG8gYXZvaWQgbWVzc2FnZSBzaXplIGxpbWl0cy4gU2VlIGIvNjIxMTU2NjAuCiAgICBsZXQgcG9zaXRpb24gPSAwOwogICAgZG8gewogICAgICBjb25zdCBsZW5ndGggPSBNYXRoLm1pbihmaWxlRGF0YS5ieXRlTGVuZ3RoIC0gcG9zaXRpb24sIE1BWF9QQVlMT0FEX1NJWkUpOwogICAgICBjb25zdCBjaHVuayA9IG5ldyBVaW50OEFycmF5KGZpbGVEYXRhLCBwb3NpdGlvbiwgbGVuZ3RoKTsKICAgICAgcG9zaXRpb24gKz0gbGVuZ3RoOwoKICAgICAgY29uc3QgYmFzZTY0ID0gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIGNodW5rKSk7CiAgICAgIHlpZWxkIHsKICAgICAgICByZXNwb25zZTogewogICAgICAgICAgYWN0aW9uOiAnYXBwZW5kJywKICAgICAgICAgIGZpbGU6IGZpbGUubmFtZSwKICAgICAgICAgIGRhdGE6IGJhc2U2NCwKICAgICAgICB9LAogICAgICB9OwoKICAgICAgbGV0IHBlcmNlbnREb25lID0gZmlsZURhdGEuYnl0ZUxlbmd0aCA9PT0gMCA/CiAgICAgICAgICAxMDAgOgogICAgICAgICAgTWF0aC5yb3VuZCgocG9zaXRpb24gLyBmaWxlRGF0YS5ieXRlTGVuZ3RoKSAqIDEwMCk7CiAgICAgIHBlcmNlbnQudGV4dENvbnRlbnQgPSBgJHtwZXJjZW50RG9uZX0lIGRvbmVgOwoKICAgIH0gd2hpbGUgKHBvc2l0aW9uIDwgZmlsZURhdGEuYnl0ZUxlbmd0aCk7CiAgfQoKICAvLyBBbGwgZG9uZS4KICB5aWVsZCB7CiAgICByZXNwb25zZTogewogICAgICBhY3Rpb246ICdjb21wbGV0ZScsCiAgICB9CiAgfTsKfQoKc2NvcGUuZ29vZ2xlID0gc2NvcGUuZ29vZ2xlIHx8IHt9OwpzY29wZS5nb29nbGUuY29sYWIgPSBzY29wZS5nb29nbGUuY29sYWIgfHwge307CnNjb3BlLmdvb2dsZS5jb2xhYi5fZmlsZXMgPSB7CiAgX3VwbG9hZEZpbGVzLAogIF91cGxvYWRGaWxlc0NvbnRpbnVlLAp9Owp9KShzZWxmKTsK", 38 | "ok": true, 39 | "headers": [ 40 | [ 41 | "content-type", 42 | "application/javascript" 43 | ] 44 | ], 45 | "status": 200, 46 | "status_text": "" 47 | } 48 | }, 49 | "base_uri": "https://localhost:8080/", 50 | "height": 73 51 | }, 52 | "id": "Z2J8wSDhrIiI", 53 | "outputId": "21631cca-741e-48ab-c64a-ed17ff5fd114" 54 | }, 55 | "outputs": [ 56 | { 57 | "output_type": "display_data", 58 | "data": { 59 | "text/html": [ 60 | "\n", 61 | " \n", 63 | " \n", 64 | " Upload widget is only available when the cell has been executed in the\n", 65 | " current browser session. Please rerun this cell to enable.\n", 66 | " \n", 67 | " " 68 | ], 69 | "text/plain": [ 70 | "" 71 | ] 72 | }, 73 | "metadata": {} 74 | }, 75 | { 76 | "output_type": "stream", 77 | "name": "stdout", 78 | "text": [ 79 | "Saving lstm data.csv to lstm data.csv\n" 80 | ] 81 | } 82 | ], 83 | "source": [ 84 | "from google.colab import files\n", 85 | "UP = files.upload()" 86 | ] 87 | }, 88 | { 89 | "cell_type": "code", 90 | "source": [ 91 | "import pandas as pd\n", 92 | "df =pd.read_csv ('lstm data.csv', header=None, index_col=None, delimiter=',')" 93 | ], 94 | "metadata": { 95 | "id": "PMOvK5C7rUYZ" 96 | }, 97 | "execution_count": 2, 98 | "outputs": [] 99 | }, 100 | { 101 | "cell_type": "code", 102 | "source": [ 103 | "import numpy as np\n", 104 | "import matplotlib.pyplot as plt\n", 105 | "import pandas as pd\n", 106 | "from pandas import read_csv\n", 107 | "import math\n", 108 | "from keras.models import Sequential\n", 109 | "from keras.layers import Dense\n", 110 | "from keras.layers import LSTM\n", 111 | "from sklearn.preprocessing import MinMaxScaler\n", 112 | "from sklearn.metrics import mean_squared_error\n", 113 | "from keras.layers.core import Dense, Activation, Dropout\n", 114 | "import time #helper libraries" 115 | ], 116 | "metadata": { 117 | "id": "t2CJLppGrtnB" 118 | }, 119 | "execution_count": 3, 120 | "outputs": [] 121 | }, 122 | { 123 | "cell_type": "code", 124 | "source": [ 125 | "input_file = df\n", 126 | "\n", 127 | "# convert an array of values into a dataset matrix\n", 128 | "def create_dataset(dataset, look_back=1):\n", 129 | "\tdataX, dataY = [], []\n", 130 | "\tfor i in range(len(dataset)-look_back-1):\n", 131 | "\t\ta = dataset[i:(i+look_back), 0]\n", 132 | "\t\tdataX.append(a)\n", 133 | "\t\tdataY.append(dataset[i + look_back, 0])\n", 134 | "\treturn np.array(dataX), np.array(dataY)" 135 | ], 136 | "metadata": { 137 | "id": "a5PWkTy_rymw" 138 | }, 139 | "execution_count": 5, 140 | "outputs": [] 141 | }, 142 | { 143 | "cell_type": "code", 144 | "source": [ 145 | "# fix random seed for reproducibility\n", 146 | "np.random.seed(5)" 147 | ], 148 | "metadata": { 149 | "id": "i7EbCXasr9ju" 150 | }, 151 | "execution_count": 6, 152 | "outputs": [] 153 | }, 154 | { 155 | "cell_type": "code", 156 | "source": [ 157 | "# take close price column[5]\n", 158 | "all_y = df[5].values\n", 159 | "dataset=all_y.reshape(-1, 1)" 160 | ], 161 | "metadata": { 162 | "id": "4jtGVdaUsCCG" 163 | }, 164 | "execution_count": 7, 165 | "outputs": [] 166 | }, 167 | { 168 | "cell_type": "code", 169 | "source": [ 170 | "# take close price column[5]\n", 171 | "all_y = df[5].values\n", 172 | "dataset=all_y.reshape(-1, 1)\n", 173 | "\n", 174 | "# normalize the dataset\n", 175 | "scaler = MinMaxScaler(feature_range=(0, 1))\n", 176 | "dataset = scaler.fit_transform(dataset)" 177 | ], 178 | "metadata": { 179 | "id": "qfjD1xsdsFUm" 180 | }, 181 | "execution_count": 8, 182 | "outputs": [] 183 | }, 184 | { 185 | "cell_type": "code", 186 | "source": [ 187 | "# split into train and test sets, 50% test data, 50% training data\n", 188 | "train_size = int(len(dataset) * 0.5)\n", 189 | "test_size = len(dataset) - train_size\n", 190 | "train, test = dataset[0:train_size,:], dataset[train_size:len(dataset),:]" 191 | ], 192 | "metadata": { 193 | "id": "KNMdyLtEskxx" 194 | }, 195 | "execution_count": 9, 196 | "outputs": [] 197 | }, 198 | { 199 | "cell_type": "code", 200 | "source": [ 201 | "# reshape into X=t and Y=t+1, timestep 240\n", 202 | "look_back = 240\n", 203 | "trainX, trainY = create_dataset(train, look_back)\n", 204 | "testX, testY = create_dataset(test, look_back)" 205 | ], 206 | "metadata": { 207 | "id": "TGc6gEAisk0f" 208 | }, 209 | "execution_count": 10, 210 | "outputs": [] 211 | }, 212 | { 213 | "cell_type": "code", 214 | "source": [ 215 | "# reshape input to be [samples, time steps, features]\n", 216 | "trainX = np.reshape(trainX, (trainX.shape[0], 1, trainX.shape[1]))\n", 217 | "testX = np.reshape(testX, (testX.shape[0], 1, testX.shape[1]))" 218 | ], 219 | "metadata": { 220 | "id": "56Zv-8oOsk3m" 221 | }, 222 | "execution_count": 11, 223 | "outputs": [] 224 | }, 225 | { 226 | "cell_type": "code", 227 | "source": [ 228 | "# create and fit the LSTM network, optimizer=adam, 25 neurons, dropout 0.1\n", 229 | "model = Sequential()\n", 230 | "model.add(LSTM(25, input_shape=(1, look_back)))\n", 231 | "model.add(Dropout(0.1))\n", 232 | "model.add(Dense(1))\n", 233 | "model.compile(loss='mse', optimizer='adam')\n", 234 | "model.fit(trainX, trainY, epochs=20, batch_size=240, verbose=1)" 235 | ], 236 | "metadata": { 237 | "colab": { 238 | "base_uri": "https://localhost:8080/" 239 | }, 240 | "id": "BbqCQ1yPsrcH", 241 | "outputId": "a3cb729b-a3b0-4df4-d478-28b0a8b396f6" 242 | }, 243 | "execution_count": 12, 244 | "outputs": [ 245 | { 246 | "output_type": "stream", 247 | "name": "stdout", 248 | "text": [ 249 | "Epoch 1/20\n", 250 | "10/10 [==============================] - 3s 7ms/step - loss: 0.0060\n", 251 | "Epoch 2/20\n", 252 | "10/10 [==============================] - 0s 5ms/step - loss: 0.0019\n", 253 | "Epoch 3/20\n", 254 | "10/10 [==============================] - 0s 4ms/step - loss: 0.0013\n", 255 | "Epoch 4/20\n", 256 | "10/10 [==============================] - 0s 10ms/step - loss: 0.0010\n", 257 | "Epoch 5/20\n", 258 | "10/10 [==============================] - 0s 10ms/step - loss: 7.3312e-04\n", 259 | "Epoch 6/20\n", 260 | "10/10 [==============================] - 0s 11ms/step - loss: 6.2153e-04\n", 261 | "Epoch 7/20\n", 262 | "10/10 [==============================] - 0s 10ms/step - loss: 5.4827e-04\n", 263 | "Epoch 8/20\n", 264 | "10/10 [==============================] - 0s 13ms/step - loss: 4.9733e-04\n", 265 | "Epoch 9/20\n", 266 | "10/10 [==============================] - 0s 8ms/step - loss: 4.8755e-04\n", 267 | "Epoch 10/20\n", 268 | "10/10 [==============================] - 0s 8ms/step - loss: 4.4003e-04\n", 269 | "Epoch 11/20\n", 270 | "10/10 [==============================] - 0s 5ms/step - loss: 3.9734e-04\n", 271 | "Epoch 12/20\n", 272 | "10/10 [==============================] - 0s 4ms/step - loss: 3.7042e-04\n", 273 | "Epoch 13/20\n", 274 | "10/10 [==============================] - 0s 4ms/step - loss: 3.6348e-04\n", 275 | "Epoch 14/20\n", 276 | "10/10 [==============================] - 0s 5ms/step - loss: 3.4665e-04\n", 277 | "Epoch 15/20\n", 278 | "10/10 [==============================] - 0s 5ms/step - loss: 3.1516e-04\n", 279 | "Epoch 16/20\n", 280 | "10/10 [==============================] - 0s 5ms/step - loss: 3.0348e-04\n", 281 | "Epoch 17/20\n", 282 | "10/10 [==============================] - 0s 5ms/step - loss: 2.9378e-04\n", 283 | "Epoch 18/20\n", 284 | "10/10 [==============================] - 0s 5ms/step - loss: 2.8015e-04\n", 285 | "Epoch 19/20\n", 286 | "10/10 [==============================] - 0s 5ms/step - loss: 2.6199e-04\n", 287 | "Epoch 20/20\n", 288 | "10/10 [==============================] - 0s 5ms/step - loss: 2.6265e-04\n" 289 | ] 290 | }, 291 | { 292 | "output_type": "execute_result", 293 | "data": { 294 | "text/plain": [ 295 | "" 296 | ] 297 | }, 298 | "metadata": {}, 299 | "execution_count": 12 300 | } 301 | ] 302 | }, 303 | { 304 | "cell_type": "code", 305 | "source": [ 306 | "# make predictions\n", 307 | "trainPredict = model.predict(trainX)\n", 308 | "testPredict = model.predict(testX)" 309 | ], 310 | "metadata": { 311 | "id": "ZfzhbSXusren" 312 | }, 313 | "execution_count": 13, 314 | "outputs": [] 315 | }, 316 | { 317 | "cell_type": "code", 318 | "source": [ 319 | "trainPredict" 320 | ], 321 | "metadata": { 322 | "colab": { 323 | "base_uri": "https://localhost:8080/" 324 | }, 325 | "id": "2lhYVWWksrhO", 326 | "outputId": "67442fbb-a72b-4c20-ce35-d542fdd7fcdf" 327 | }, 328 | "execution_count": 14, 329 | "outputs": [ 330 | { 331 | "output_type": "execute_result", 332 | "data": { 333 | "text/plain": [ 334 | "array([[0.11482746],\n", 335 | " [0.11490844],\n", 336 | " [0.11595166],\n", 337 | " ...,\n", 338 | " [0.15892781],\n", 339 | " [0.15970123],\n", 340 | " [0.16205542]], dtype=float32)" 341 | ] 342 | }, 343 | "metadata": {}, 344 | "execution_count": 14 345 | } 346 | ] 347 | }, 348 | { 349 | "cell_type": "code", 350 | "source": [ 351 | "testPredict" 352 | ], 353 | "metadata": { 354 | "colab": { 355 | "base_uri": "https://localhost:8080/" 356 | }, 357 | "id": "HTwEaLNss9ov", 358 | "outputId": "bd75745f-9632-4b3b-ccc6-a0af514cb267" 359 | }, 360 | "execution_count": 15, 361 | "outputs": [ 362 | { 363 | "output_type": "execute_result", 364 | "data": { 365 | "text/plain": [ 366 | "array([[0.15497756],\n", 367 | " [0.15336645],\n", 368 | " [0.15448435],\n", 369 | " ...,\n", 370 | " [0.6446615 ],\n", 371 | " [0.6525498 ],\n", 372 | " [0.65636975]], dtype=float32)" 373 | ] 374 | }, 375 | "metadata": {}, 376 | "execution_count": 15 377 | } 378 | ] 379 | }, 380 | { 381 | "cell_type": "code", 382 | "source": [ 383 | "# invert predictions\n", 384 | "trainPredict = scaler.inverse_transform(trainPredict)\n", 385 | "trainY = scaler.inverse_transform([trainY])\n", 386 | "testPredict = scaler.inverse_transform(testPredict)\n", 387 | "testY = scaler.inverse_transform([testY])" 388 | ], 389 | "metadata": { 390 | "id": "iqpKkHvRs-_d" 391 | }, 392 | "execution_count": 16, 393 | "outputs": [] 394 | }, 395 | { 396 | "cell_type": "code", 397 | "source": [ 398 | "# calculate root mean squared error\n", 399 | "trainScore = math.sqrt(mean_squared_error(trainY[0], trainPredict[:,0]))\n", 400 | "print('Train Score: %.2f RMSE' % (trainScore))\n", 401 | "testScore = math.sqrt(mean_squared_error(testY[0], testPredict[:,0]))\n", 402 | "print('Test Score: %.2f RMSE' % (testScore))" 403 | ], 404 | "metadata": { 405 | "colab": { 406 | "base_uri": "https://localhost:8080/" 407 | }, 408 | "id": "HzZbZSiMtBV-", 409 | "outputId": "af8ce5cd-91b1-49a7-b0bc-8d34f0b93ffd" 410 | }, 411 | "execution_count": 17, 412 | "outputs": [ 413 | { 414 | "output_type": "stream", 415 | "name": "stdout", 416 | "text": [ 417 | "Train Score: 1.38 RMSE\n", 418 | "Test Score: 11.82 RMSE\n" 419 | ] 420 | } 421 | ] 422 | }, 423 | { 424 | "cell_type": "code", 425 | "source": [ 426 | "# shift train predictions for plotting\n", 427 | "trainPredictPlot = np.empty_like(dataset)\n", 428 | "trainPredictPlot[:, :] = np.nan\n", 429 | "trainPredictPlot[look_back:len(trainPredict)+look_back, :] = trainPredict" 430 | ], 431 | "metadata": { 432 | "id": "FVfU8pvctDNP" 433 | }, 434 | "execution_count": 18, 435 | "outputs": [] 436 | }, 437 | { 438 | "cell_type": "code", 439 | "source": [ 440 | "# shift test predictions for plotting\n", 441 | "testPredictPlot = np.empty_like(dataset)\n", 442 | "testPredictPlot[:, :] = np.nan\n", 443 | "testPredictPlot[len(trainPredict)+(look_back*2)+1:len(dataset)-1, :] = testPredict" 444 | ], 445 | "metadata": { 446 | "id": "sz-hs9BTtFYe" 447 | }, 448 | "execution_count": 19, 449 | "outputs": [] 450 | }, 451 | { 452 | "cell_type": "code", 453 | "source": [ 454 | "# plot baseline and predictions\n", 455 | "plt.plot(scaler.inverse_transform(dataset))\n", 456 | "plt.plot(trainPredictPlot)\n", 457 | "print('testPrices:')\n", 458 | "testPrices=scaler.inverse_transform(dataset[test_size+look_back:])" 459 | ], 460 | "metadata": { 461 | "colab": { 462 | "base_uri": "https://localhost:8080/", 463 | "height": 284 464 | }, 465 | "id": "9qa_shrstHGu", 466 | "outputId": "8455d889-a07f-4c75-c3e9-df05c59d75d9" 467 | }, 468 | "execution_count": 20, 469 | "outputs": [ 470 | { 471 | "output_type": "stream", 472 | "name": "stdout", 473 | "text": [ 474 | "testPrices:\n" 475 | ] 476 | }, 477 | { 478 | "output_type": "display_data", 479 | "data": { 480 | "image/png": "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\n", 481 | "text/plain": [ 482 | "
" 483 | ] 484 | }, 485 | "metadata": { 486 | "needs_background": "light" 487 | } 488 | } 489 | ] 490 | }, 491 | { 492 | "cell_type": "code", 493 | "source": [ 494 | "print('testPredictions:')\n", 495 | "print(testPredict)" 496 | ], 497 | "metadata": { 498 | "colab": { 499 | "base_uri": "https://localhost:8080/" 500 | }, 501 | "id": "d3GE7v1LtJEG", 502 | "outputId": "b7102d9a-b9d7-4169-83b1-ad96a7e16284" 503 | }, 504 | "execution_count": 21, 505 | "outputs": [ 506 | { 507 | "output_type": "stream", 508 | "name": "stdout", 509 | "text": [ 510 | "testPredictions:\n", 511 | "[[27.462803]\n", 512 | " [27.291517]\n", 513 | " [27.41037 ]\n", 514 | " ...\n", 515 | " [79.52366 ]\n", 516 | " [80.36231 ]\n", 517 | " [80.768425]]\n" 518 | ] 519 | } 520 | ] 521 | }, 522 | { 523 | "cell_type": "code", 524 | "source": [ 525 | "# export prediction and actual prices\n", 526 | "df = pd.DataFrame(data={\"prediction\": np.around(list(testPredict.reshape(-1)), decimals=2), \"test_price\": np.around(list(testPrices.reshape(-1)), decimals=2)})\n", 527 | "df.to_csv(\"lstm_result.csv\", sep=';', index=None)" 528 | ], 529 | "metadata": { 530 | "id": "ljiX4jy8tLZO" 531 | }, 532 | "execution_count": 22, 533 | "outputs": [] 534 | }, 535 | { 536 | "cell_type": "code", 537 | "source": [ 538 | "# plot the actual price, prediction in test data=red line, actual price=blue line\n", 539 | "plt.plot(testPredictPlot)\n", 540 | "plt.show()\n", 541 | "\n" 542 | ], 543 | "metadata": { 544 | "colab": { 545 | "base_uri": "https://localhost:8080/", 546 | "height": 265 547 | }, 548 | "id": "XR04UYeQtQmv", 549 | "outputId": "22093f6e-8052-4784-9102-c51233f30aad" 550 | }, 551 | "execution_count": 23, 552 | "outputs": [ 553 | { 554 | "output_type": "display_data", 555 | "data": { 556 | "image/png": "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\n", 557 | "text/plain": [ 558 | "
" 559 | ] 560 | }, 561 | "metadata": { 562 | "needs_background": "light" 563 | } 564 | } 565 | ] 566 | }, 567 | { 568 | "cell_type": "code", 569 | "source": [ 570 | "" 571 | ], 572 | "metadata": { 573 | "id": "U-y000iUtSv-" 574 | }, 575 | "execution_count": null, 576 | "outputs": [] 577 | } 578 | ] 579 | } -------------------------------------------------------------------------------- /Neural Network using TensorFlow Sequential/Readme.md: -------------------------------------------------------------------------------- 1 | # MNIST Neural Network with TensorFlow Sequential API 2 | 3 | This project demonstrates how to build, train, and evaluate a simple neural network using TensorFlow's Sequential API. The model is trained on the **MNIST dataset**, which consists of handwritten digits (0-9). [Watch Tutorial.](https://youtu.be/3TLEDkcW-nE) 4 | ## Features 5 | - Preprocessing and normalization of MNIST data 6 | - Building a fully connected neural network using the Sequential API 7 | - Training the model with a validation split 8 | - Visualizing training and validation performance 9 | - Evaluating the model on the test dataset 10 | - Saving and loading the trained model 11 | 12 | --- 13 | 14 | ## Dataset 15 | The [MNIST dataset](http://yann.lecun.com/exdb/mnist/) is a collection of 28x28 grayscale images of handwritten digits. It contains: 16 | - **60,000 training images** 17 | - **10,000 test images** 18 | 19 | --- 20 | 21 | ## Getting Started 22 | 23 | ### Prerequisites 24 | Ensure you have Python and the required libraries installed: 25 | - TensorFlow 26 | - Matplotlib 27 | - NumPy 28 | 29 | You can install the dependencies using: 30 | ```bash 31 | pip install tensorflow matplotlib numpy 32 | 33 | -------------------------------------------------------------------------------- /Neural Network.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rashakil-ds/Deep-Learning-with-Python/e8598ac7ee4ff69d2b0b81d2f06718907b17ebef/Neural Network.pdf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |

Complete Deep Learning

5 |

Welcome to the Complete Deep Learning repository! This repository contains video materials ranging from basic to advanced deep learning concepts, curated by Study Mart and aiQuest Intelligence.

6 | 7 |

Course Name

8 |

Complete Deep Learning

9 | 10 |

Topics Covered

11 |
    12 |
  • Introduction to Deep Learning
  • 13 |
  • Neural Networks and Backpropagation
  • 14 |
  • Convolutional Neural Networks (CNNs)
  • 15 |
  • Recurrent Neural Networks (RNNs)
  • 16 |
  • Long Short-Term Memory (LSTM)
  • 17 |
  • Understanding GRU Networks
  • 18 |
  • Deep Learning Frameworks
  • 19 |
  • Advanced Deep Learning Techniques
  • 20 |
21 | 22 |

YouTube Video Playlist

23 |

Watch the complete video playlist on YouTube: Complete Deep Learning Playlist

24 | 25 |

Repository Link

26 |

Check out the collection of video materials here.

27 | 28 |

Additional Resources

29 |

We also offer a variety of paid courses on data science on our website. Visit AIQuest for more details.

30 |

For free resources, check out our YouTube channel: StudyMart.

31 |

Join our Facebook group for more discussions and resources: StudyMart Facebook Group.

32 | 33 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /SL_Perceptron.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "name": "Single Layer Perceptron", 7 | "provenance": [], 8 | "collapsed_sections": [], 9 | "authorship_tag": "ABX9TyMqD+WCN6558J61L5Ck0pPd", 10 | "include_colab_link": true 11 | }, 12 | "kernelspec": { 13 | "name": "python3", 14 | "display_name": "Python 3" 15 | }, 16 | "language_info": { 17 | "name": "python" 18 | } 19 | }, 20 | "cells": [ 21 | { 22 | "cell_type": "markdown", 23 | "metadata": { 24 | "id": "view-in-github", 25 | "colab_type": "text" 26 | }, 27 | "source": [ 28 | "\"Open" 29 | ] 30 | }, 31 | { 32 | "cell_type": "code", 33 | "execution_count": 1, 34 | "metadata": { 35 | "colab": { 36 | "resources": { 37 | "http://localhost:8080/nbextensions/google.colab/files.js": { 38 | "data": "Ly8gQ29weXJpZ2h0IDIwMTcgR29vZ2xlIExMQwovLwovLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgovLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLy8KLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLy8KLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQovLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAovLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAovLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCi8qKgogKiBAZmlsZW92ZXJ2aWV3IEhlbHBlcnMgZm9yIGdvb2dsZS5jb2xhYiBQeXRob24gbW9kdWxlLgogKi8KKGZ1bmN0aW9uKHNjb3BlKSB7CmZ1bmN0aW9uIHNwYW4odGV4dCwgc3R5bGVBdHRyaWJ1dGVzID0ge30pIHsKICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogIGVsZW1lbnQudGV4dENvbnRlbnQgPSB0ZXh0OwogIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHN0eWxlQXR0cmlidXRlcykpIHsKICAgIGVsZW1lbnQuc3R5bGVba2V5XSA9IHN0eWxlQXR0cmlidXRlc1trZXldOwogIH0KICByZXR1cm4gZWxlbWVudDsKfQoKLy8gTWF4IG51bWJlciBvZiBieXRlcyB3aGljaCB3aWxsIGJlIHVwbG9hZGVkIGF0IGEgdGltZS4KY29uc3QgTUFYX1BBWUxPQURfU0laRSA9IDEwMCAqIDEwMjQ7CgpmdW5jdGlvbiBfdXBsb2FkRmlsZXMoaW5wdXRJZCwgb3V0cHV0SWQpIHsKICBjb25zdCBzdGVwcyA9IHVwbG9hZEZpbGVzU3RlcChpbnB1dElkLCBvdXRwdXRJZCk7CiAgY29uc3Qgb3V0cHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG91dHB1dElkKTsKICAvLyBDYWNoZSBzdGVwcyBvbiB0aGUgb3V0cHV0RWxlbWVudCB0byBtYWtlIGl0IGF2YWlsYWJsZSBmb3IgdGhlIG5leHQgY2FsbAogIC8vIHRvIHVwbG9hZEZpbGVzQ29udGludWUgZnJvbSBQeXRob24uCiAgb3V0cHV0RWxlbWVudC5zdGVwcyA9IHN0ZXBzOwoKICByZXR1cm4gX3VwbG9hZEZpbGVzQ29udGludWUob3V0cHV0SWQpOwp9CgovLyBUaGlzIGlzIHJvdWdobHkgYW4gYXN5bmMgZ2VuZXJhdG9yIChub3Qgc3VwcG9ydGVkIGluIHRoZSBicm93c2VyIHlldCksCi8vIHdoZXJlIHRoZXJlIGFyZSBtdWx0aXBsZSBhc3luY2hyb25vdXMgc3RlcHMgYW5kIHRoZSBQeXRob24gc2lkZSBpcyBnb2luZwovLyB0byBwb2xsIGZvciBjb21wbGV0aW9uIG9mIGVhY2ggc3RlcC4KLy8gVGhpcyB1c2VzIGEgUHJvbWlzZSB0byBibG9jayB0aGUgcHl0aG9uIHNpZGUgb24gY29tcGxldGlvbiBvZiBlYWNoIHN0ZXAsCi8vIHRoZW4gcGFzc2VzIHRoZSByZXN1bHQgb2YgdGhlIHByZXZpb3VzIHN0ZXAgYXMgdGhlIGlucHV0IHRvIHRoZSBuZXh0IHN0ZXAuCmZ1bmN0aW9uIF91cGxvYWRGaWxlc0NvbnRpbnVlKG91dHB1dElkKSB7CiAgY29uc3Qgb3V0cHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG91dHB1dElkKTsKICBjb25zdCBzdGVwcyA9IG91dHB1dEVsZW1lbnQuc3RlcHM7CgogIGNvbnN0IG5leHQgPSBzdGVwcy5uZXh0KG91dHB1dEVsZW1lbnQubGFzdFByb21pc2VWYWx1ZSk7CiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXh0LnZhbHVlLnByb21pc2UpLnRoZW4oKHZhbHVlKSA9PiB7CiAgICAvLyBDYWNoZSB0aGUgbGFzdCBwcm9taXNlIHZhbHVlIHRvIG1ha2UgaXQgYXZhaWxhYmxlIHRvIHRoZSBuZXh0CiAgICAvLyBzdGVwIG9mIHRoZSBnZW5lcmF0b3IuCiAgICBvdXRwdXRFbGVtZW50Lmxhc3RQcm9taXNlVmFsdWUgPSB2YWx1ZTsKICAgIHJldHVybiBuZXh0LnZhbHVlLnJlc3BvbnNlOwogIH0pOwp9CgovKioKICogR2VuZXJhdG9yIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCBiZXR3ZWVuIGVhY2ggYXN5bmMgc3RlcCBvZiB0aGUgdXBsb2FkCiAqIHByb2Nlc3MuCiAqIEBwYXJhbSB7c3RyaW5nfSBpbnB1dElkIEVsZW1lbnQgSUQgb2YgdGhlIGlucHV0IGZpbGUgcGlja2VyIGVsZW1lbnQuCiAqIEBwYXJhbSB7c3RyaW5nfSBvdXRwdXRJZCBFbGVtZW50IElEIG9mIHRoZSBvdXRwdXQgZGlzcGxheS4KICogQHJldHVybiB7IUl0ZXJhYmxlPCFPYmplY3Q+fSBJdGVyYWJsZSBvZiBuZXh0IHN0ZXBzLgogKi8KZnVuY3Rpb24qIHVwbG9hZEZpbGVzU3RlcChpbnB1dElkLCBvdXRwdXRJZCkgewogIGNvbnN0IGlucHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlucHV0SWQpOwogIGlucHV0RWxlbWVudC5kaXNhYmxlZCA9IGZhbHNlOwoKICBjb25zdCBvdXRwdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3V0cHV0SWQpOwogIG91dHB1dEVsZW1lbnQuaW5uZXJIVE1MID0gJyc7CgogIGNvbnN0IHBpY2tlZFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgaW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIChlKSA9PiB7CiAgICAgIHJlc29sdmUoZS50YXJnZXQuZmlsZXMpOwogICAgfSk7CiAgfSk7CgogIGNvbnN0IGNhbmNlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogIGlucHV0RWxlbWVudC5wYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKGNhbmNlbCk7CiAgY2FuY2VsLnRleHRDb250ZW50ID0gJ0NhbmNlbCB1cGxvYWQnOwogIGNvbnN0IGNhbmNlbFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgY2FuY2VsLm9uY2xpY2sgPSAoKSA9PiB7CiAgICAgIHJlc29sdmUobnVsbCk7CiAgICB9OwogIH0pOwoKICAvLyBXYWl0IGZvciB0aGUgdXNlciB0byBwaWNrIHRoZSBmaWxlcy4KICBjb25zdCBmaWxlcyA9IHlpZWxkIHsKICAgIHByb21pc2U6IFByb21pc2UucmFjZShbcGlja2VkUHJvbWlzZSwgY2FuY2VsUHJvbWlzZV0pLAogICAgcmVzcG9uc2U6IHsKICAgICAgYWN0aW9uOiAnc3RhcnRpbmcnLAogICAgfQogIH07CgogIGNhbmNlbC5yZW1vdmUoKTsKCiAgLy8gRGlzYWJsZSB0aGUgaW5wdXQgZWxlbWVudCBzaW5jZSBmdXJ0aGVyIHBpY2tzIGFyZSBub3QgYWxsb3dlZC4KICBpbnB1dEVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlOwoKICBpZiAoIWZpbGVzKSB7CiAgICByZXR1cm4gewogICAgICByZXNwb25zZTogewogICAgICAgIGFjdGlvbjogJ2NvbXBsZXRlJywKICAgICAgfQogICAgfTsKICB9CgogIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykgewogICAgY29uc3QgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOwogICAgbGkuYXBwZW5kKHNwYW4oZmlsZS5uYW1lLCB7Zm9udFdlaWdodDogJ2JvbGQnfSkpOwogICAgbGkuYXBwZW5kKHNwYW4oCiAgICAgICAgYCgke2ZpbGUudHlwZSB8fCAnbi9hJ30pIC0gJHtmaWxlLnNpemV9IGJ5dGVzLCBgICsKICAgICAgICBgbGFzdCBtb2RpZmllZDogJHsKICAgICAgICAgICAgZmlsZS5sYXN0TW9kaWZpZWREYXRlID8gZmlsZS5sYXN0TW9kaWZpZWREYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygpIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ24vYSd9IC0gYCkpOwogICAgY29uc3QgcGVyY2VudCA9IHNwYW4oJzAlIGRvbmUnKTsKICAgIGxpLmFwcGVuZENoaWxkKHBlcmNlbnQpOwoKICAgIG91dHB1dEVsZW1lbnQuYXBwZW5kQ2hpbGQobGkpOwoKICAgIGNvbnN0IGZpbGVEYXRhUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZSkgPT4gewogICAgICAgIHJlc29sdmUoZS50YXJnZXQucmVzdWx0KTsKICAgICAgfTsKICAgICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpOwogICAgfSk7CiAgICAvLyBXYWl0IGZvciB0aGUgZGF0YSB0byBiZSByZWFkeS4KICAgIGxldCBmaWxlRGF0YSA9IHlpZWxkIHsKICAgICAgcHJvbWlzZTogZmlsZURhdGFQcm9taXNlLAogICAgICByZXNwb25zZTogewogICAgICAgIGFjdGlvbjogJ2NvbnRpbnVlJywKICAgICAgfQogICAgfTsKCiAgICAvLyBVc2UgYSBjaHVua2VkIHNlbmRpbmcgdG8gYXZvaWQgbWVzc2FnZSBzaXplIGxpbWl0cy4gU2VlIGIvNjIxMTU2NjAuCiAgICBsZXQgcG9zaXRpb24gPSAwOwogICAgZG8gewogICAgICBjb25zdCBsZW5ndGggPSBNYXRoLm1pbihmaWxlRGF0YS5ieXRlTGVuZ3RoIC0gcG9zaXRpb24sIE1BWF9QQVlMT0FEX1NJWkUpOwogICAgICBjb25zdCBjaHVuayA9IG5ldyBVaW50OEFycmF5KGZpbGVEYXRhLCBwb3NpdGlvbiwgbGVuZ3RoKTsKICAgICAgcG9zaXRpb24gKz0gbGVuZ3RoOwoKICAgICAgY29uc3QgYmFzZTY0ID0gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIGNodW5rKSk7CiAgICAgIHlpZWxkIHsKICAgICAgICByZXNwb25zZTogewogICAgICAgICAgYWN0aW9uOiAnYXBwZW5kJywKICAgICAgICAgIGZpbGU6IGZpbGUubmFtZSwKICAgICAgICAgIGRhdGE6IGJhc2U2NCwKICAgICAgICB9LAogICAgICB9OwoKICAgICAgbGV0IHBlcmNlbnREb25lID0gZmlsZURhdGEuYnl0ZUxlbmd0aCA9PT0gMCA/CiAgICAgICAgICAxMDAgOgogICAgICAgICAgTWF0aC5yb3VuZCgocG9zaXRpb24gLyBmaWxlRGF0YS5ieXRlTGVuZ3RoKSAqIDEwMCk7CiAgICAgIHBlcmNlbnQudGV4dENvbnRlbnQgPSBgJHtwZXJjZW50RG9uZX0lIGRvbmVgOwoKICAgIH0gd2hpbGUgKHBvc2l0aW9uIDwgZmlsZURhdGEuYnl0ZUxlbmd0aCk7CiAgfQoKICAvLyBBbGwgZG9uZS4KICB5aWVsZCB7CiAgICByZXNwb25zZTogewogICAgICBhY3Rpb246ICdjb21wbGV0ZScsCiAgICB9CiAgfTsKfQoKc2NvcGUuZ29vZ2xlID0gc2NvcGUuZ29vZ2xlIHx8IHt9OwpzY29wZS5nb29nbGUuY29sYWIgPSBzY29wZS5nb29nbGUuY29sYWIgfHwge307CnNjb3BlLmdvb2dsZS5jb2xhYi5fZmlsZXMgPSB7CiAgX3VwbG9hZEZpbGVzLAogIF91cGxvYWRGaWxlc0NvbnRpbnVlLAp9Owp9KShzZWxmKTsK", 39 | "ok": true, 40 | "headers": [ 41 | [ 42 | "content-type", 43 | "application/javascript" 44 | ] 45 | ], 46 | "status": 200, 47 | "status_text": "" 48 | } 49 | }, 50 | "base_uri": "https://localhost:8080/", 51 | "height": 73 52 | }, 53 | "id": "JbBsj2VpdlB0", 54 | "outputId": "bc033ad7-8f3e-4397-aa63-9b2eea18cedf" 55 | }, 56 | "outputs": [ 57 | { 58 | "output_type": "display_data", 59 | "data": { 60 | "text/html": [ 61 | "\n", 62 | " \n", 64 | " \n", 65 | " Upload widget is only available when the cell has been executed in the\n", 66 | " current browser session. Please rerun this cell to enable.\n", 67 | " \n", 68 | " " 69 | ], 70 | "text/plain": [ 71 | "" 72 | ] 73 | }, 74 | "metadata": {} 75 | }, 76 | { 77 | "output_type": "stream", 78 | "name": "stdout", 79 | "text": [ 80 | "Saving iris.csv to iris (4).csv\n" 81 | ] 82 | } 83 | ], 84 | "source": [ 85 | "import numpy as np\n", 86 | "import pandas as pd\n", 87 | "from google.colab import files\n", 88 | "uploaded = files.upload()" 89 | ] 90 | }, 91 | { 92 | "cell_type": "code", 93 | "source": [ 94 | "df=pd.read_csv('iris.csv')\n", 95 | "df.head()" 96 | ], 97 | "metadata": { 98 | "colab": { 99 | "base_uri": "https://localhost:8080/", 100 | "height": 206 101 | }, 102 | "id": "3kjpmXrRd6DM", 103 | "outputId": "1721d8ae-900c-4aab-e9e0-4c70bef279d7" 104 | }, 105 | "execution_count": 2, 106 | "outputs": [ 107 | { 108 | "output_type": "execute_result", 109 | "data": { 110 | "text/html": [ 111 | "\n", 112 | "
\n", 113 | "
\n", 114 | "
\n", 115 | "\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 | "
5.13.51.40.20
04.93.01.40.20
14.73.21.30.20
24.63.11.50.20
35.03.61.40.20
45.43.91.70.40
\n", 182 | "
\n", 183 | " \n", 193 | " \n", 194 | " \n", 231 | "\n", 232 | " \n", 256 | "
\n", 257 | "
\n", 258 | " " 259 | ], 260 | "text/plain": [ 261 | " 5.1 3.5 1.4 0.2 0\n", 262 | "0 4.9 3.0 1.4 0.2 0\n", 263 | "1 4.7 3.2 1.3 0.2 0\n", 264 | "2 4.6 3.1 1.5 0.2 0\n", 265 | "3 5.0 3.6 1.4 0.2 0\n", 266 | "4 5.4 3.9 1.7 0.4 0" 267 | ] 268 | }, 269 | "metadata": {}, 270 | "execution_count": 2 271 | } 272 | ] 273 | }, 274 | { 275 | "cell_type": "code", 276 | "source": [ 277 | "df.columns=['SepalLen','SepalWidth','PetalLen','PetalWidth','Class']\n", 278 | "df.head(10)" 279 | ], 280 | "metadata": { 281 | "colab": { 282 | "base_uri": "https://localhost:8080/", 283 | "height": 363 284 | }, 285 | "id": "m3FFRSjKeF_c", 286 | "outputId": "7644bf35-27ce-4a76-8560-0aedc645ef60" 287 | }, 288 | "execution_count": 3, 289 | "outputs": [ 290 | { 291 | "output_type": "execute_result", 292 | "data": { 293 | "text/html": [ 294 | "\n", 295 | "
\n", 296 | "
\n", 297 | "
\n", 298 | "\n", 311 | "\n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | "
SepalLenSepalWidthPetalLenPetalWidthClass
04.93.01.40.20
14.73.21.30.20
24.63.11.50.20
35.03.61.40.20
45.43.91.70.40
54.63.41.40.30
65.03.41.50.20
74.42.91.40.20
84.93.11.50.10
95.43.71.50.20
\n", 405 | "
\n", 406 | " \n", 416 | " \n", 417 | " \n", 454 | "\n", 455 | " \n", 479 | "
\n", 480 | "
\n", 481 | " " 482 | ], 483 | "text/plain": [ 484 | " SepalLen SepalWidth PetalLen PetalWidth Class\n", 485 | "0 4.9 3.0 1.4 0.2 0\n", 486 | "1 4.7 3.2 1.3 0.2 0\n", 487 | "2 4.6 3.1 1.5 0.2 0\n", 488 | "3 5.0 3.6 1.4 0.2 0\n", 489 | "4 5.4 3.9 1.7 0.4 0\n", 490 | "5 4.6 3.4 1.4 0.3 0\n", 491 | "6 5.0 3.4 1.5 0.2 0\n", 492 | "7 4.4 2.9 1.4 0.2 0\n", 493 | "8 4.9 3.1 1.5 0.1 0\n", 494 | "9 5.4 3.7 1.5 0.2 0" 495 | ] 496 | }, 497 | "metadata": {}, 498 | "execution_count": 3 499 | } 500 | ] 501 | }, 502 | { 503 | "cell_type": "code", 504 | "source": [ 505 | "df.head()" 506 | ], 507 | "metadata": { 508 | "colab": { 509 | "base_uri": "https://localhost:8080/", 510 | "height": 206 511 | }, 512 | "id": "e1V0htBUeOtt", 513 | "outputId": "8e883d41-0bdc-4807-c834-18a1cb0a869b" 514 | }, 515 | "execution_count": 4, 516 | "outputs": [ 517 | { 518 | "output_type": "execute_result", 519 | "data": { 520 | "text/html": [ 521 | "\n", 522 | "
\n", 523 | "
\n", 524 | "
\n", 525 | "\n", 538 | "\n", 539 | " \n", 540 | " \n", 541 | " \n", 542 | " \n", 543 | " \n", 544 | " \n", 545 | " \n", 546 | " \n", 547 | " \n", 548 | " \n", 549 | " \n", 550 | " \n", 551 | " \n", 552 | " \n", 553 | " \n", 554 | " \n", 555 | " \n", 556 | " \n", 557 | " \n", 558 | " \n", 559 | " \n", 560 | " \n", 561 | " \n", 562 | " \n", 563 | " \n", 564 | " \n", 565 | " \n", 566 | " \n", 567 | " \n", 568 | " \n", 569 | " \n", 570 | " \n", 571 | " \n", 572 | " \n", 573 | " \n", 574 | " \n", 575 | " \n", 576 | " \n", 577 | " \n", 578 | " \n", 579 | " \n", 580 | " \n", 581 | " \n", 582 | " \n", 583 | " \n", 584 | " \n", 585 | " \n", 586 | " \n", 587 | " \n", 588 | " \n", 589 | " \n", 590 | " \n", 591 | "
SepalLenSepalWidthPetalLenPetalWidthClass
04.93.01.40.20
14.73.21.30.20
24.63.11.50.20
35.03.61.40.20
45.43.91.70.40
\n", 592 | "
\n", 593 | " \n", 603 | " \n", 604 | " \n", 641 | "\n", 642 | " \n", 666 | "
\n", 667 | "
\n", 668 | " " 669 | ], 670 | "text/plain": [ 671 | " SepalLen SepalWidth PetalLen PetalWidth Class\n", 672 | "0 4.9 3.0 1.4 0.2 0\n", 673 | "1 4.7 3.2 1.3 0.2 0\n", 674 | "2 4.6 3.1 1.5 0.2 0\n", 675 | "3 5.0 3.6 1.4 0.2 0\n", 676 | "4 5.4 3.9 1.7 0.4 0" 677 | ] 678 | }, 679 | "metadata": {}, 680 | "execution_count": 4 681 | } 682 | ] 683 | }, 684 | { 685 | "cell_type": "markdown", 686 | "source": [ 687 | "\n", 688 | "\n", 689 | "```\n", 690 | "# Training\n", 691 | "```\n", 692 | "\n" 693 | ], 694 | "metadata": { 695 | "id": "Q7KwCc1DeZWd" 696 | } 697 | }, 698 | { 699 | "cell_type": "code", 700 | "source": [ 701 | "#I am using Sigmoid function as the activation function\n", 702 | "def activation_func(value): #Tangent Hypotenuse\n", 703 | " #return (1/(1+np.exp(-value)))\n", 704 | " return ((np.exp(value)-np.exp(-value))/(np.exp(value)+np.exp(-value)))" 705 | ], 706 | "metadata": { 707 | "id": "tNHRdBU6eR8F" 708 | }, 709 | "execution_count": 5, 710 | "outputs": [] 711 | }, 712 | { 713 | "cell_type": "code", 714 | "source": [ 715 | "def perceptron_train(in_data,labels,alpha):\n", 716 | " X=np.array(in_data)\n", 717 | " y=np.array(labels)\n", 718 | " weights=np.random.random(X.shape[1])\n", 719 | " original=weights\n", 720 | " bias=np.random.random_sample()\n", 721 | " for key in range(X.shape[0]):\n", 722 | " a=activation_func(np.matmul(np.transpose(weights),X[key])) \n", 723 | " yn=0\n", 724 | " if a>=0.7:\n", 725 | " yn=1\n", 726 | " elif a<=(-0.7):\n", 727 | " yn=-1\n", 728 | " weights=weights+alpha*(yn-y[key])*X[key]\n", 729 | " print('Iteration '+str(key)+': '+str(weights))\n", 730 | " print('Difference: '+str(weights-original))\n", 731 | " return weights" 732 | ], 733 | "metadata": { 734 | "id": "ACZYsWiJfuef" 735 | }, 736 | "execution_count": 6, 737 | "outputs": [] 738 | }, 739 | { 740 | "cell_type": "markdown", 741 | "source": [ 742 | "#Testing and **Score**" 743 | ], 744 | "metadata": { 745 | "id": "_n5EPVmCgb3p" 746 | } 747 | }, 748 | { 749 | "cell_type": "code", 750 | "source": [ 751 | "\n", 752 | "def perceptron_test(in_data,label_shape,weights):\n", 753 | " X=np.array(in_data)\n", 754 | " y=np.zeros(label_shape)\n", 755 | " for key in range(X.shape[1]):\n", 756 | " a=activation_func((weights*X[key]).sum())\n", 757 | " y[key]=0\n", 758 | " if a>=0.7:\n", 759 | " y[key]=1\n", 760 | " elif a<=(-0.7):\n", 761 | " y[key]=-1\n", 762 | " return y" 763 | ], 764 | "metadata": { 765 | "id": "Hc9RMDB3eyIQ" 766 | }, 767 | "execution_count": 7, 768 | "outputs": [] 769 | }, 770 | { 771 | "cell_type": "code", 772 | "source": [ 773 | "def score(result,labels):\n", 774 | " difference=result-np.array(labels) \n", 775 | " correct_ctr=0\n", 776 | " for elem in range(difference.shape[0]):\n", 777 | " if difference[elem]==0:\n", 778 | " correct_ctr+=1\n", 779 | " score=correct_ctr*100/difference.size\n", 780 | " print('Score='+str(score))" 781 | ], 782 | "metadata": { 783 | "id": "32fTQkoLfNcW" 784 | }, 785 | "execution_count": 8, 786 | "outputs": [] 787 | }, 788 | { 789 | "cell_type": "markdown", 790 | "source": [ 791 | "#Main **codes**" 792 | ], 793 | "metadata": { 794 | "id": "GFEFamRNgkzu" 795 | } 796 | }, 797 | { 798 | "cell_type": "code", 799 | "source": [ 800 | "# Dividing DataFrame \"data\" into \"d_train\" (60%) and \"d_test\" (40%)\n", 801 | "divider = np.random.rand(len(df)) < 0.60\n", 802 | "d_train=df[divider]\n", 803 | "d_test=df[~divider]" 804 | ], 805 | "metadata": { 806 | "id": "Fo64Cfm0fPuU" 807 | }, 808 | "execution_count": 9, 809 | "outputs": [] 810 | }, 811 | { 812 | "cell_type": "code", 813 | "source": [ 814 | "# Dividing d_train into data and labels/targets\n", 815 | "d_train_y=d_train['Class']\n", 816 | "d_train_X=d_train.drop(['Class'],axis=1)\n", 817 | "\n", 818 | "# Dividing d_train into data and labels/targets\n", 819 | "d_test_y=d_test['Class']\n", 820 | "d_test_X=d_test.drop(['Class'],axis=1)" 821 | ], 822 | "metadata": { 823 | "id": "G5ch48H5fVvH" 824 | }, 825 | "execution_count": 10, 826 | "outputs": [] 827 | }, 828 | { 829 | "cell_type": "code", 830 | "source": [ 831 | "# Learning rate\n", 832 | "alpha = 0.001\n", 833 | "\n", 834 | "# Train\n", 835 | "weights = perceptron_train(d_train_X, d_train_y, alpha)" 836 | ], 837 | "metadata": { 838 | "colab": { 839 | "base_uri": "https://localhost:8080/" 840 | }, 841 | "id": "CVqN8RGMfeuf", 842 | "outputId": "ddafaef3-80cd-4b44-eb60-f8f0c6189501" 843 | }, 844 | "execution_count": 11, 845 | "outputs": [ 846 | { 847 | "output_type": "stream", 848 | "name": "stdout", 849 | "text": [ 850 | "Iteration 0: [0.45168832 0.39015584 0.81917719 0.22836588]\n", 851 | "Iteration 1: [0.45668832 0.39375584 0.82057719 0.22856588]\n", 852 | "Iteration 2: [0.46208832 0.39765584 0.82227719 0.22896588]\n", 853 | "Iteration 3: [0.46668832 0.40105584 0.82367719 0.22926588]\n", 854 | "Iteration 4: [0.47168832 0.40445584 0.82517719 0.22946588]\n", 855 | "Iteration 5: [0.47608832 0.40735584 0.82657719 0.22966588]\n", 856 | "Iteration 6: [0.48148832 0.41105584 0.82807719 0.22986588]\n", 857 | "Iteration 7: [0.48628832 0.41405584 0.82947719 0.22996588]\n", 858 | "Iteration 8: [0.49208832 0.41805584 0.83067719 0.23016588]\n", 859 | "Iteration 9: [0.49778832 0.42245584 0.83217719 0.23056588]\n", 860 | "Iteration 10: [0.50288832 0.42625584 0.83367719 0.23086588]\n", 861 | "Iteration 11: [0.50828832 0.42965584 0.83537719 0.23106588]\n", 862 | "Iteration 12: [0.51288832 0.43325584 0.83637719 0.23126588]\n", 863 | "Iteration 13: [0.51768832 0.43665584 0.83827719 0.23146588]\n", 864 | "Iteration 14: [0.52288832 0.44015584 0.83977719 0.23166588]\n", 865 | "Iteration 15: [0.52758832 0.44335584 0.84137719 0.23186588]\n", 866 | "Iteration 16: [0.53298832 0.44675584 0.84287719 0.23226588]\n", 867 | "Iteration 17: [0.53818832 0.45085584 0.84437719 0.23236588]\n", 868 | "Iteration 18: [0.54368832 0.45505584 0.84577719 0.23256588]\n", 869 | "Iteration 19: [0.54858832 0.45815584 0.84727719 0.23266588]\n", 870 | "Iteration 20: [0.55358832 0.46135584 0.84847719 0.23286588]\n", 871 | "Iteration 21: [0.55858832 0.46485584 0.84977719 0.23316588]\n", 872 | "Iteration 22: [0.56308832 0.46715584 0.85107719 0.23346588]\n", 873 | "Iteration 23: [0.56748832 0.47035584 0.85237719 0.23366588]\n", 874 | "Iteration 24: [0.57248832 0.47385584 0.85397719 0.23426588]\n", 875 | "Iteration 25: [0.57758832 0.47765584 0.85587719 0.23466588]\n", 876 | "Iteration 26: [0.58238832 0.48065584 0.85727719 0.23496588]\n", 877 | "Iteration 27: [0.58698832 0.48385584 0.85867719 0.23516588]\n", 878 | "Iteration 28: [0.59228832 0.48755584 0.86017719 0.23536588]\n", 879 | "Iteration 29: [0.59728832 0.49085584 0.86157719 0.23556588]\n", 880 | "Iteration 30: [0.61108832 0.49705584 0.87137719 0.23856588]\n", 881 | "Iteration 31: [0.62208832 0.50165584 0.87937719 0.24116588]\n", 882 | "Iteration 32: [0.63508832 0.50725584 0.88857719 0.24416588]\n", 883 | "Iteration 33: [0.64648832 0.51285584 0.89757719 0.24676588]\n", 884 | "Iteration 34: [0.65648832 0.51685584 0.90457719 0.24876588]\n", 885 | "Iteration 35: [0.66828832 0.52285584 0.91297719 0.25176588]\n", 886 | "Iteration 36: [0.68028832 0.52725584 0.92097719 0.25376588]\n", 887 | "Iteration 37: [0.69248832 0.53305584 0.93037719 0.25656588]\n", 888 | "Iteration 38: [0.70588832 0.53925584 0.93917719 0.25936588]\n", 889 | "Iteration 39: [0.71708832 0.54525584 0.94817719 0.26236588]\n", 890 | "Iteration 40: [0.72948832 0.54965584 0.95717719 0.26536588]\n", 891 | "Iteration 41: [0.74128832 0.55605584 0.96677719 0.26896588]\n", 892 | "Iteration 42: [0.75348832 0.56165584 0.97477719 0.27156588]\n", 893 | "Iteration 43: [0.76608832 0.56665584 0.98457719 0.27456588]\n", 894 | "Iteration 44: [0.77828832 0.57225584 0.99397719 0.27696588]\n", 895 | "Iteration 45: [0.79108832 0.57805584 1.00257719 0.27956588]\n", 896 | "Iteration 46: [0.80468832 0.58365584 1.01217719 0.28236588]\n", 897 | "Iteration 47: [0.81668832 0.58945584 1.02117719 0.28536588]\n", 898 | "Iteration 48: [0.82768832 0.59425584 1.02877719 0.28756588]\n", 899 | "Iteration 49: [0.83868832 0.59905584 1.03617719 0.28956588]\n", 900 | "Iteration 50: [0.85028832 0.60445584 1.04397719 0.29196588]\n", 901 | "Iteration 51: [0.86108832 0.61045584 1.05297719 0.29496588]\n", 902 | "Iteration 52: [0.87448832 0.61665584 1.06237719 0.29796588]\n", 903 | "Iteration 53: [0.88708832 0.62125584 1.07117719 0.30056588]\n", 904 | "Iteration 54: [0.89808832 0.62625584 1.07917719 0.30316588]\n", 905 | "Iteration 55: [0.91028832 0.63225584 1.08837719 0.30596588]\n", 906 | "Iteration 56: [0.92168832 0.63825584 1.09677719 0.30836588]\n", 907 | "Iteration 57: [0.93408832 0.64405584 1.10537719 0.31096588]\n", 908 | "Iteration 58: [0.94428832 0.64905584 1.11137719 0.31316588]\n", 909 | "Iteration 59: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 910 | "Iteration 60: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 911 | "Iteration 61: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 912 | "Iteration 62: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 913 | "Iteration 63: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 914 | "Iteration 64: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 915 | "Iteration 65: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 916 | "Iteration 66: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 917 | "Iteration 67: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 918 | "Iteration 68: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 919 | "Iteration 69: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 920 | "Iteration 70: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 921 | "Iteration 71: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 922 | "Iteration 72: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 923 | "Iteration 73: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 924 | "Iteration 74: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 925 | "Iteration 75: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 926 | "Iteration 76: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 927 | "Iteration 77: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 928 | "Iteration 78: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 929 | "Iteration 79: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 930 | "Iteration 80: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 931 | "Iteration 81: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 932 | "Iteration 82: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 933 | "Iteration 83: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 934 | "Iteration 84: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 935 | "Iteration 85: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 936 | "Iteration 86: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 937 | "Iteration 87: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 938 | "Iteration 88: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 939 | "Iteration 89: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 940 | "Iteration 90: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 941 | "Iteration 91: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 942 | "Iteration 92: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 943 | "Iteration 93: [0.95568832 0.65465584 1.11957719 0.31576588]\n", 944 | "Difference: [0.5089 0.2675 0.3018 0.0876]\n" 945 | ] 946 | } 947 | ] 948 | }, 949 | { 950 | "cell_type": "code", 951 | "source": [ 952 | "# Test\n", 953 | "result_test=perceptron_test(d_test_X,d_test_y.shape,weights)" 954 | ], 955 | "metadata": { 956 | "id": "xw9fvsiUfho3" 957 | }, 958 | "execution_count": 12, 959 | "outputs": [] 960 | }, 961 | { 962 | "cell_type": "code", 963 | "source": [ 964 | "# Calculate score\n", 965 | "score(result_test,d_test_y)" 966 | ], 967 | "metadata": { 968 | "colab": { 969 | "base_uri": "https://localhost:8080/" 970 | }, 971 | "id": "owJYm8HbgDAG", 972 | "outputId": "c1483dbd-da1f-4acb-ddc6-8b570f2caa63" 973 | }, 974 | "execution_count": 13, 975 | "outputs": [ 976 | { 977 | "output_type": "stream", 978 | "name": "stdout", 979 | "text": [ 980 | "Score=27.272727272727273\n" 981 | ] 982 | } 983 | ] 984 | } 985 | ] 986 | } --------------------------------------------------------------------------------