├── Cifar10_CNN.ipynb ├── Optimization_using_genetic_algorithm_Cifar10_using_CNN.ipynb └── README.md /Cifar10_CNN.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "accelerator": "GPU", 6 | "colab": { 7 | "name": "Cifar10-CNN.ipynb", 8 | "provenance": [] 9 | }, 10 | "kernelspec": { 11 | "display_name": "Python 3", 12 | "name": "python3" 13 | } 14 | }, 15 | "cells": [ 16 | { 17 | "cell_type": "code", 18 | "metadata": { 19 | "id": "k3cc0qWKB_N2" 20 | }, 21 | "source": [ 22 | "from keras import datasets\n", 23 | "\n", 24 | "(x_train, y_train), (x_test, y_test) = datasets.cifar10.load_data()" 25 | ], 26 | "execution_count": null, 27 | "outputs": [] 28 | }, 29 | { 30 | "cell_type": "code", 31 | "metadata": { 32 | "colab": { 33 | "base_uri": "https://localhost:8080/" 34 | }, 35 | "id": "p5frDm6qmcvR", 36 | "outputId": "b678489b-c36a-4412-80dd-1be6d3481613" 37 | }, 38 | "source": [ 39 | "x_train.shape, y_train.shape" 40 | ], 41 | "execution_count": null, 42 | "outputs": [ 43 | { 44 | "output_type": "execute_result", 45 | "data": { 46 | "text/plain": [ 47 | "((50000, 32, 32, 3), (50000, 1))" 48 | ] 49 | }, 50 | "metadata": { 51 | "tags": [] 52 | }, 53 | "execution_count": 14 54 | } 55 | ] 56 | }, 57 | { 58 | "cell_type": "code", 59 | "metadata": { 60 | "colab": { 61 | "base_uri": "https://localhost:8080/" 62 | }, 63 | "id": "Sa8UM_6RmiQb", 64 | "outputId": "f4582350-f837-40c3-f5a5-93d75af25f3f" 65 | }, 66 | "source": [ 67 | "x_test.shape, y_test.shape" 68 | ], 69 | "execution_count": null, 70 | "outputs": [ 71 | { 72 | "output_type": "execute_result", 73 | "data": { 74 | "text/plain": [ 75 | "((10000, 32, 32, 3), (10000, 1))" 76 | ] 77 | }, 78 | "metadata": { 79 | "tags": [] 80 | }, 81 | "execution_count": 15 82 | } 83 | ] 84 | }, 85 | { 86 | "cell_type": "code", 87 | "metadata": { 88 | "colab": { 89 | "base_uri": "https://localhost:8080/", 90 | "height": 283 91 | }, 92 | "id": "-hPTZwjSmov2", 93 | "outputId": "1b5ac56c-c1bf-4880-fed0-f36dc2a3a833" 94 | }, 95 | "source": [ 96 | "import matplotlib.pyplot as plt \n", 97 | "plt.imshow(x_train[1])\n", 98 | "print(\"Class: \", y_train[1])" 99 | ], 100 | "execution_count": null, 101 | "outputs": [ 102 | { 103 | "output_type": "stream", 104 | "text": [ 105 | "Class: [9]\n" 106 | ], 107 | "name": "stdout" 108 | }, 109 | { 110 | "output_type": "display_data", 111 | "data": { 112 | "image/png": "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\n", 113 | "text/plain": [ 114 | "
" 115 | ] 116 | }, 117 | "metadata": { 118 | "tags": [], 119 | "needs_background": "light" 120 | } 121 | } 122 | ] 123 | }, 124 | { 125 | "cell_type": "markdown", 126 | "metadata": { 127 | "id": "tETnStdnoEt0" 128 | }, 129 | "source": [ 130 | "Cifar10 classes:\n", 131 | "\n", 132 | "0: airplane\t\t\t\t\t\t\t\t\t\t\n", 133 | "1: automobile\t\t\t\t\t\t\t\t\t\t\n", 134 | "2: bird\t\t\t\t\t\t\t\t\t\t\n", 135 | "3: cat\t\t\t\t\t\t\t\t\t\t\n", 136 | "4: deer\t\t\t\t\t\t\t\t\t\t\n", 137 | "5: dog\t\t\t\t\t\t\t\t\t\t\n", 138 | "6: frog\t\t\t\t\t\t\t\t\t\t\n", 139 | "7: horse\t\t\t\t\t\t\t\t\t\t\n", 140 | "8: ship\t\t\t\t\t\t\t\t\t\t\n", 141 | "9: truck" 142 | ] 143 | }, 144 | { 145 | "cell_type": "code", 146 | "metadata": { 147 | "colab": { 148 | "base_uri": "https://localhost:8080/" 149 | }, 150 | "id": "MOziRWxWm_xl", 151 | "outputId": "ebc8b9fc-efe9-47b5-8d24-15c40cb2e38c" 152 | }, 153 | "source": [ 154 | "import numpy as np\n", 155 | "np.unique(y_train)" 156 | ], 157 | "execution_count": null, 158 | "outputs": [ 159 | { 160 | "output_type": "execute_result", 161 | "data": { 162 | "text/plain": [ 163 | "array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=uint8)" 164 | ] 165 | }, 166 | "metadata": { 167 | "tags": [] 168 | }, 169 | "execution_count": 17 170 | } 171 | ] 172 | }, 173 | { 174 | "cell_type": "code", 175 | "metadata": { 176 | "id": "-NPNPsNtoYEO" 177 | }, 178 | "source": [ 179 | "from keras import models\n", 180 | "from keras import layers\n", 181 | "\n", 182 | "model = models.Sequential()\n", 183 | "model.add(layers.Conv2D(32, (3,3), input_shape=(32,32,3), activation = \"relu\"))\n", 184 | "model.add(layers.BatchNormalization())\n", 185 | "model.add(layers.Conv2D(32, (3,3), activation = \"relu\"))\n", 186 | "model.add(layers.BatchNormalization())\n", 187 | "model.add(layers.MaxPooling2D(2,2))\n", 188 | "model.add(layers.Conv2D(64, (3,3), activation = \"relu\"))\n", 189 | "model.add(layers.BatchNormalization())\n", 190 | "model.add(layers.Conv2D(64, (3,3), activation = \"relu\"))\n", 191 | "model.add(layers.BatchNormalization())\n", 192 | "model.add(layers.MaxPooling2D(2,2))\n", 193 | "model.add(layers.Conv2D(128, (3,3), activation = \"relu\"))\n", 194 | "model.add(layers.BatchNormalization())\n", 195 | "model.add(layers.MaxPooling2D(2,2))\n", 196 | "model.add(layers.Flatten())\n", 197 | "model.add(layers.Dropout(0.2))\n", 198 | "model.add(layers.Dense(512, activation=\"relu\"))\n", 199 | "model.add(layers.Dropout(0.2))\n", 200 | "model.add(layers.Dense(10, activation=\"softmax\"))" 201 | ], 202 | "execution_count": null, 203 | "outputs": [] 204 | }, 205 | { 206 | "cell_type": "code", 207 | "metadata": { 208 | "colab": { 209 | "base_uri": "https://localhost:8080/" 210 | }, 211 | "id": "qRDL8K4DtZdo", 212 | "outputId": "6f8434f7-2b8e-4c1a-c26b-f9cbd8328726" 213 | }, 214 | "source": [ 215 | "model.summary()" 216 | ], 217 | "execution_count": null, 218 | "outputs": [ 219 | { 220 | "output_type": "stream", 221 | "text": [ 222 | "Model: \"sequential_10\"\n", 223 | "_________________________________________________________________\n", 224 | "Layer (type) Output Shape Param # \n", 225 | "=================================================================\n", 226 | "conv2d_43 (Conv2D) (None, 30, 30, 32) 896 \n", 227 | "_________________________________________________________________\n", 228 | "batch_normalization_56 (Batc (None, 30, 30, 32) 128 \n", 229 | "_________________________________________________________________\n", 230 | "conv2d_44 (Conv2D) (None, 28, 28, 32) 9248 \n", 231 | "_________________________________________________________________\n", 232 | "batch_normalization_57 (Batc (None, 28, 28, 32) 128 \n", 233 | "_________________________________________________________________\n", 234 | "max_pooling2d_27 (MaxPooling (None, 14, 14, 32) 0 \n", 235 | "_________________________________________________________________\n", 236 | "conv2d_45 (Conv2D) (None, 12, 12, 64) 18496 \n", 237 | "_________________________________________________________________\n", 238 | "batch_normalization_58 (Batc (None, 12, 12, 64) 256 \n", 239 | "_________________________________________________________________\n", 240 | "conv2d_46 (Conv2D) (None, 10, 10, 64) 36928 \n", 241 | "_________________________________________________________________\n", 242 | "batch_normalization_59 (Batc (None, 10, 10, 64) 256 \n", 243 | "_________________________________________________________________\n", 244 | "max_pooling2d_28 (MaxPooling (None, 5, 5, 64) 0 \n", 245 | "_________________________________________________________________\n", 246 | "conv2d_47 (Conv2D) (None, 3, 3, 128) 73856 \n", 247 | "_________________________________________________________________\n", 248 | "batch_normalization_60 (Batc (None, 3, 3, 128) 512 \n", 249 | "_________________________________________________________________\n", 250 | "max_pooling2d_29 (MaxPooling (None, 1, 1, 128) 0 \n", 251 | "_________________________________________________________________\n", 252 | "flatten_4 (Flatten) (None, 128) 0 \n", 253 | "_________________________________________________________________\n", 254 | "dropout_8 (Dropout) (None, 128) 0 \n", 255 | "_________________________________________________________________\n", 256 | "dense_8 (Dense) (None, 512) 66048 \n", 257 | "_________________________________________________________________\n", 258 | "dropout_9 (Dropout) (None, 512) 0 \n", 259 | "_________________________________________________________________\n", 260 | "dense_9 (Dense) (None, 10) 5130 \n", 261 | "=================================================================\n", 262 | "Total params: 211,882\n", 263 | "Trainable params: 211,242\n", 264 | "Non-trainable params: 640\n", 265 | "_________________________________________________________________\n" 266 | ], 267 | "name": "stdout" 268 | } 269 | ] 270 | }, 271 | { 272 | "cell_type": "code", 273 | "metadata": { 274 | "id": "2iIuGLoJukvK" 275 | }, 276 | "source": [ 277 | "train_images =x_train.astype('float32')/255\n", 278 | "test_images=x_test.astype('float32')/255" 279 | ], 280 | "execution_count": null, 281 | "outputs": [] 282 | }, 283 | { 284 | "cell_type": "code", 285 | "metadata": { 286 | "id": "95alXh1Itbeh" 287 | }, 288 | "source": [ 289 | "from keras.utils.np_utils import to_categorical\n", 290 | "\n", 291 | "train_labels=to_categorical(y_train)\n", 292 | "test_labels=to_categorical(y_test)" 293 | ], 294 | "execution_count": null, 295 | "outputs": [] 296 | }, 297 | { 298 | "cell_type": "code", 299 | "metadata": { 300 | "id": "Muq41Hb_u3ei" 301 | }, 302 | "source": [ 303 | "val_images=train_images[:10000]\n", 304 | "partial_images=train_images[10000:]\n", 305 | "\n", 306 | "val_labels=train_labels[:10000]\n", 307 | "partial_labels=train_labels[10000:]" 308 | ], 309 | "execution_count": null, 310 | "outputs": [] 311 | }, 312 | { 313 | "cell_type": "code", 314 | "metadata": { 315 | "id": "VrkDfmu2vLB1" 316 | }, 317 | "source": [ 318 | "from keras import optimizers\n", 319 | "model.compile(loss=\"categorical_crossentropy\",optimizer=optimizers.Adam(0.01),metrics=[\"accuracy\"])" 320 | ], 321 | "execution_count": null, 322 | "outputs": [] 323 | }, 324 | { 325 | "cell_type": "code", 326 | "metadata": { 327 | "id": "u4AOovMIvvIn" 328 | }, 329 | "source": [ 330 | "from keras.callbacks import EarlyStopping\n", 331 | "es = EarlyStopping(monitor= \"val_accuracy\", patience = 7)" 332 | ], 333 | "execution_count": null, 334 | "outputs": [] 335 | }, 336 | { 337 | "cell_type": "code", 338 | "metadata": { 339 | "colab": { 340 | "base_uri": "https://localhost:8080/" 341 | }, 342 | "id": "R7rcvi7wvX_R", 343 | "outputId": "b79e675f-665d-434e-bbc7-4109b33b0071" 344 | }, 345 | "source": [ 346 | "history = model.fit(partial_images, partial_labels, validation_data=(val_images,val_labels), epochs=60, callbacks=[es])" 347 | ], 348 | "execution_count": null, 349 | "outputs": [ 350 | { 351 | "output_type": "stream", 352 | "text": [ 353 | "Epoch 1/60\n", 354 | "1250/1250 [==============================] - 7s 5ms/step - loss: 1.7177 - accuracy: 0.3803 - val_loss: 1.5234 - val_accuracy: 0.4786\n", 355 | "Epoch 2/60\n", 356 | "1250/1250 [==============================] - 6s 5ms/step - loss: 1.3373 - accuracy: 0.5290 - val_loss: 1.3621 - val_accuracy: 0.5346\n", 357 | "Epoch 3/60\n", 358 | "1250/1250 [==============================] - 6s 5ms/step - loss: 1.1835 - accuracy: 0.5919 - val_loss: 1.1787 - val_accuracy: 0.5770\n", 359 | "Epoch 4/60\n", 360 | "1250/1250 [==============================] - 6s 5ms/step - loss: 1.0834 - accuracy: 0.6269 - val_loss: 1.2207 - val_accuracy: 0.5975\n", 361 | "Epoch 5/60\n", 362 | "1250/1250 [==============================] - 6s 5ms/step - loss: 1.0220 - accuracy: 0.6535 - val_loss: 1.1342 - val_accuracy: 0.6226\n", 363 | "Epoch 6/60\n", 364 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.9689 - accuracy: 0.6715 - val_loss: 0.9597 - val_accuracy: 0.6716\n", 365 | "Epoch 7/60\n", 366 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.9314 - accuracy: 0.6867 - val_loss: 1.0591 - val_accuracy: 0.6524\n", 367 | "Epoch 8/60\n", 368 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.8802 - accuracy: 0.7049 - val_loss: 1.0606 - val_accuracy: 0.6470\n", 369 | "Epoch 9/60\n", 370 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.8471 - accuracy: 0.7151 - val_loss: 1.0571 - val_accuracy: 0.6640\n", 371 | "Epoch 10/60\n", 372 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.8287 - accuracy: 0.7240 - val_loss: 0.9037 - val_accuracy: 0.7058\n", 373 | "Epoch 11/60\n", 374 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.7966 - accuracy: 0.7340 - val_loss: 0.8709 - val_accuracy: 0.7075\n", 375 | "Epoch 12/60\n", 376 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.7781 - accuracy: 0.7393 - val_loss: 0.9108 - val_accuracy: 0.6995\n", 377 | "Epoch 13/60\n", 378 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.7419 - accuracy: 0.7520 - val_loss: 0.9635 - val_accuracy: 0.6821\n", 379 | "Epoch 14/60\n", 380 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.7281 - accuracy: 0.7574 - val_loss: 0.9085 - val_accuracy: 0.7180\n", 381 | "Epoch 15/60\n", 382 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.7102 - accuracy: 0.7657 - val_loss: 0.9481 - val_accuracy: 0.7042\n", 383 | "Epoch 16/60\n", 384 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.7016 - accuracy: 0.7689 - val_loss: 0.8806 - val_accuracy: 0.7156\n", 385 | "Epoch 17/60\n", 386 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.6798 - accuracy: 0.7761 - val_loss: 0.8464 - val_accuracy: 0.7190\n", 387 | "Epoch 18/60\n", 388 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.6615 - accuracy: 0.7843 - val_loss: 0.8409 - val_accuracy: 0.7281\n", 389 | "Epoch 19/60\n", 390 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.6404 - accuracy: 0.7882 - val_loss: 0.8657 - val_accuracy: 0.7275\n", 391 | "Epoch 20/60\n", 392 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.6269 - accuracy: 0.7951 - val_loss: 0.9429 - val_accuracy: 0.7176\n", 393 | "Epoch 21/60\n", 394 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.6092 - accuracy: 0.8022 - val_loss: 0.9154 - val_accuracy: 0.7232\n", 395 | "Epoch 22/60\n", 396 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.6107 - accuracy: 0.8008 - val_loss: 0.9459 - val_accuracy: 0.7231\n", 397 | "Epoch 23/60\n", 398 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.5899 - accuracy: 0.8098 - val_loss: 0.9122 - val_accuracy: 0.7283\n", 399 | "Epoch 24/60\n", 400 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.5796 - accuracy: 0.8120 - val_loss: 1.0404 - val_accuracy: 0.7132\n", 401 | "Epoch 25/60\n", 402 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.5661 - accuracy: 0.8170 - val_loss: 0.9410 - val_accuracy: 0.7163\n", 403 | "Epoch 26/60\n", 404 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.5683 - accuracy: 0.8173 - val_loss: 0.8575 - val_accuracy: 0.7406\n", 405 | "Epoch 27/60\n", 406 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.5428 - accuracy: 0.8237 - val_loss: 0.9104 - val_accuracy: 0.7299\n", 407 | "Epoch 28/60\n", 408 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.5432 - accuracy: 0.8249 - val_loss: 0.9225 - val_accuracy: 0.7424\n", 409 | "Epoch 29/60\n", 410 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.5329 - accuracy: 0.8291 - val_loss: 0.9513 - val_accuracy: 0.7305\n", 411 | "Epoch 30/60\n", 412 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.5119 - accuracy: 0.8356 - val_loss: 1.0461 - val_accuracy: 0.7257\n", 413 | "Epoch 31/60\n", 414 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.5408 - accuracy: 0.8276 - val_loss: 1.1413 - val_accuracy: 0.7160\n", 415 | "Epoch 32/60\n", 416 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.5041 - accuracy: 0.8365 - val_loss: 1.0477 - val_accuracy: 0.7252\n", 417 | "Epoch 33/60\n", 418 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.5093 - accuracy: 0.8360 - val_loss: 1.0729 - val_accuracy: 0.7319\n", 419 | "Epoch 34/60\n", 420 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.5044 - accuracy: 0.8395 - val_loss: 1.1745 - val_accuracy: 0.7140\n", 421 | "Epoch 35/60\n", 422 | "1250/1250 [==============================] - 6s 5ms/step - loss: 0.4853 - accuracy: 0.8462 - val_loss: 0.9897 - val_accuracy: 0.7338\n" 423 | ], 424 | "name": "stdout" 425 | } 426 | ] 427 | }, 428 | { 429 | "cell_type": "code", 430 | "metadata": { 431 | "colab": { 432 | "base_uri": "https://localhost:8080/" 433 | }, 434 | "id": "8fwNxmb-wUcJ", 435 | "outputId": "845473d2-e120-4691-a704-7eb5335d4ff7" 436 | }, 437 | "source": [ 438 | "metrics = model.evaluate(test_images, test_labels)" 439 | ], 440 | "execution_count": null, 441 | "outputs": [ 442 | { 443 | "output_type": "stream", 444 | "text": [ 445 | "313/313 [==============================] - 1s 3ms/step - loss: 1.0119 - accuracy: 0.7296\n" 446 | ], 447 | "name": "stdout" 448 | } 449 | ] 450 | }, 451 | { 452 | "cell_type": "code", 453 | "metadata": { 454 | "colab": { 455 | "base_uri": "https://localhost:8080/" 456 | }, 457 | "id": "_O7BRVGAym76", 458 | "outputId": "520b826d-bbec-4bfe-b1db-7c8eeb5bae5a" 459 | }, 460 | "source": [ 461 | "print(\"Loss: \", metrics[0])\n", 462 | "print(\"Accuracy: \",metrics[1])" 463 | ], 464 | "execution_count": null, 465 | "outputs": [ 466 | { 467 | "output_type": "stream", 468 | "text": [ 469 | "Loss: 1.0119237899780273\n", 470 | "Accuracy: 0.7296000123023987\n" 471 | ], 472 | "name": "stdout" 473 | } 474 | ] 475 | }, 476 | { 477 | "cell_type": "code", 478 | "metadata": { 479 | "id": "vrcV6PVtzSs6" 480 | }, 481 | "source": [ 482 | "" 483 | ], 484 | "execution_count": null, 485 | "outputs": [] 486 | } 487 | ] 488 | } -------------------------------------------------------------------------------- /Optimization_using_genetic_algorithm_Cifar10_using_CNN.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "name": "Optimization using genetic algorithm-Cifar10 using CNN.ipynb", 7 | "provenance": [], 8 | "collapsed_sections": [] 9 | }, 10 | "kernelspec": { 11 | "name": "python3", 12 | "display_name": "Python 3" 13 | }, 14 | "accelerator": "GPU" 15 | }, 16 | "cells": [ 17 | { 18 | "cell_type": "code", 19 | "metadata": { 20 | "id": "t3GMm8jpmoVe", 21 | "colab": { 22 | "base_uri": "https://localhost:8080/" 23 | }, 24 | "outputId": "3ec54051-2e96-40fb-b204-2cd604b8d520" 25 | }, 26 | "source": [ 27 | "from keras import datasets\n", 28 | "\n", 29 | "(x_train, y_train), (x_test, y_test) = datasets.cifar10.load_data()" 30 | ], 31 | "execution_count": 1, 32 | "outputs": [ 33 | { 34 | "output_type": "stream", 35 | "text": [ 36 | "Downloading data from https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz\n", 37 | "170500096/170498071 [==============================] - 6s 0us/step\n" 38 | ], 39 | "name": "stdout" 40 | } 41 | ] 42 | }, 43 | { 44 | "cell_type": "code", 45 | "metadata": { 46 | "id": "9Lf6_SScmsgH", 47 | "colab": { 48 | "base_uri": "https://localhost:8080/" 49 | }, 50 | "outputId": "11ab3713-b981-4161-e8e0-85d52e193a6c" 51 | }, 52 | "source": [ 53 | "x_train.shape, y_train.shape" 54 | ], 55 | "execution_count": 2, 56 | "outputs": [ 57 | { 58 | "output_type": "execute_result", 59 | "data": { 60 | "text/plain": [ 61 | "((50000, 32, 32, 3), (50000, 1))" 62 | ] 63 | }, 64 | "metadata": { 65 | "tags": [] 66 | }, 67 | "execution_count": 2 68 | } 69 | ] 70 | }, 71 | { 72 | "cell_type": "code", 73 | "metadata": { 74 | "id": "kw7E3t_Xmuve", 75 | "colab": { 76 | "base_uri": "https://localhost:8080/" 77 | }, 78 | "outputId": "feed40b5-94ad-48bc-9e4a-511f197afb94" 79 | }, 80 | "source": [ 81 | "x_test.shape, y_test.shape" 82 | ], 83 | "execution_count": 3, 84 | "outputs": [ 85 | { 86 | "output_type": "execute_result", 87 | "data": { 88 | "text/plain": [ 89 | "((10000, 32, 32, 3), (10000, 1))" 90 | ] 91 | }, 92 | "metadata": { 93 | "tags": [] 94 | }, 95 | "execution_count": 3 96 | } 97 | ] 98 | }, 99 | { 100 | "cell_type": "code", 101 | "metadata": { 102 | "id": "RR82I_P5mwXU" 103 | }, 104 | "source": [ 105 | "train_images =x_train.astype('float32')/255\n", 106 | "test_images=x_test.astype('float32')/255" 107 | ], 108 | "execution_count": 4, 109 | "outputs": [] 110 | }, 111 | { 112 | "cell_type": "code", 113 | "metadata": { 114 | "id": "3ohQu9kym0By" 115 | }, 116 | "source": [ 117 | "from keras.utils.np_utils import to_categorical\n", 118 | "\n", 119 | "train_labels=to_categorical(y_train)\n", 120 | "test_labels=to_categorical(y_test)" 121 | ], 122 | "execution_count": 5, 123 | "outputs": [] 124 | }, 125 | { 126 | "cell_type": "code", 127 | "metadata": { 128 | "id": "QyMv8ojZm2M7" 129 | }, 130 | "source": [ 131 | "val_images=train_images[:10000]\n", 132 | "partial_images=train_images[10000:]\n", 133 | "\n", 134 | "val_labels=train_labels[:10000]\n", 135 | "partial_labels=train_labels[10000:]" 136 | ], 137 | "execution_count": 6, 138 | "outputs": [] 139 | }, 140 | { 141 | "cell_type": "code", 142 | "metadata": { 143 | "id": "ueKjpXWOjJ5o" 144 | }, 145 | "source": [ 146 | "from keras import layers\n", 147 | "from keras import models\n", 148 | "from keras.callbacks import EarlyStopping" 149 | ], 150 | "execution_count": 7, 151 | "outputs": [] 152 | }, 153 | { 154 | "cell_type": "code", 155 | "metadata": { 156 | "id": "06WCuRbLjDXv" 157 | }, 158 | "source": [ 159 | "def CNN_model( f1, f2, f3, k, a1, a2, d1, d2, op, ep):\n", 160 | " model = models.Sequential()\n", 161 | " model.add(layers.Conv2D(filters = f1, kernel_size = (k, k), activation = a1, input_shape = (32,32,3)))\n", 162 | " model.add(layers.Conv2D(filters = f1, kernel_size = (k, k), activation = a1))\n", 163 | " model.add(layers.MaxPooling2D(2,2))\n", 164 | " model.add(layers.Conv2D(filters = f2, kernel_size = (k, k), activation = a2))\n", 165 | " model.add(layers.Conv2D(filters = f2, kernel_size = (k, k), activation = a2))\n", 166 | " model.add(layers.MaxPooling2D(2,2))\n", 167 | " model.add(layers.Flatten())\n", 168 | " model.add(layers.Dropout(rate = d1))\n", 169 | " model.add(layers.Dense(units = f3, activation = a2))\n", 170 | " model.add(layers.Dropout(rate = d2))\n", 171 | " model.add(layers.Dense(10, activation= \"softmax\"))\n", 172 | "\n", 173 | " model.compile(loss = \"categorical_crossentropy\", optimizer = op, metrics = [\"accuracy\"])\n", 174 | " es = EarlyStopping(monitor=\"val_accuracy\", patience = 7)\n", 175 | " model.fit(partial_images, partial_labels, validation_data=(val_images,val_labels), epochs=ep, batch_size = 100, callbacks = [es], verbose=0)\n", 176 | "\n", 177 | " return model" 178 | ], 179 | "execution_count": 8, 180 | "outputs": [] 181 | }, 182 | { 183 | "cell_type": "code", 184 | "metadata": { 185 | "id": "TZRN4Zkh1Yu_" 186 | }, 187 | "source": [ 188 | "from random import choice\n", 189 | "from random import uniform\n", 190 | "from numpy.random import randint" 191 | ], 192 | "execution_count": 9, 193 | "outputs": [] 194 | }, 195 | { 196 | "cell_type": "code", 197 | "metadata": { 198 | "id": "i6oy-UhmslXQ" 199 | }, 200 | "source": [ 201 | "def initialization(): \n", 202 | " parameters = {}\n", 203 | " f1 = choice([32, 64])\n", 204 | " parameters[\"f1\"] = f1\n", 205 | " f2 = choice([64, 128])\n", 206 | " parameters[\"f2\"] = f2\n", 207 | " f3 = choice([128, 256, 512])\n", 208 | " parameters[\"f3\"] = f3\n", 209 | " k = choice([3,5])\n", 210 | " parameters[\"k\"] = k\n", 211 | " a1 = choice([\"relu\", \"selu\", \"elu\"])\n", 212 | " parameters[\"a1\"] = a1\n", 213 | " a2 = choice([\"relu\", \"selu\", \"elu\"])\n", 214 | " parameters[\"a2\"] = a2\n", 215 | " d1 = round(uniform(0.1, 0.5), 1)\n", 216 | " parameters[\"d1\"] = d1\n", 217 | " d2 = round(uniform(0.1, 0.5), 1)\n", 218 | " parameters[\"d2\"] = d2\n", 219 | " op = choice([\"adamax\", \"adadelta\", \"adam\", \"adagrad\"])\n", 220 | " parameters[\"op\"] = op\n", 221 | " ep = randint(50, 100)\n", 222 | " parameters[\"ep\"] = ep\n", 223 | " return parameters" 224 | ], 225 | "execution_count": 10, 226 | "outputs": [] 227 | }, 228 | { 229 | "cell_type": "code", 230 | "metadata": { 231 | "id": "87ThhBE96zCm" 232 | }, 233 | "source": [ 234 | "def generate_population(n):\n", 235 | " population = []\n", 236 | " for i in range(n):\n", 237 | " chromosome = initialization()\n", 238 | " population.append(chromosome)\n", 239 | " return population" 240 | ], 241 | "execution_count": 11, 242 | "outputs": [] 243 | }, 244 | { 245 | "cell_type": "code", 246 | "metadata": { 247 | "id": "SomjG3tQ310Z" 248 | }, 249 | "source": [ 250 | "# Fitness evaluation metric: Classification Accuracy \n", 251 | "def fitness_evaluation(model):\n", 252 | " metrics = model.evaluate(test_images, test_labels)\n", 253 | " return metrics[1]" 254 | ], 255 | "execution_count": 12, 256 | "outputs": [] 257 | }, 258 | { 259 | "cell_type": "code", 260 | "metadata": { 261 | "id": "-d8QyqTQ35O1" 262 | }, 263 | "source": [ 264 | "# Roulette wheel selection method\n", 265 | "def selection(population_fitness):\n", 266 | " total = sum(population_fitness)\n", 267 | " percentage = [round((x/total) * 100) for x in population_fitness]\n", 268 | " selection_wheel = []\n", 269 | " for pop_index,num in enumerate(percentage):\n", 270 | " selection_wheel.extend([pop_index]*num)\n", 271 | " parent1_ind = choice(selection_wheel)\n", 272 | " parent2_ind = choice(selection_wheel)\n", 273 | " return [parent1_ind, parent2_ind]" 274 | ], 275 | "execution_count": 13, 276 | "outputs": [] 277 | }, 278 | { 279 | "cell_type": "code", 280 | "metadata": { 281 | "id": "9tw9NKnz379Q" 282 | }, 283 | "source": [ 284 | "def crossover(parent1, parent2):\n", 285 | " child1 = {}\n", 286 | " child2 = {}\n", 287 | "\n", 288 | " child1[\"f1\"] = choice([parent1[\"f1\"], parent2[\"f1\"]])\n", 289 | " child1[\"f2\"] = choice([parent1[\"f2\"], parent2[\"f2\"]])\n", 290 | " child1[\"f3\"] = choice([parent1[\"f3\"], parent2[\"f3\"]])\n", 291 | "\n", 292 | " child2[\"f1\"] = choice([parent1[\"f1\"], parent2[\"f1\"]])\n", 293 | " child2[\"f2\"] = choice([parent1[\"f2\"], parent2[\"f2\"]])\n", 294 | " child2[\"f3\"] = choice([parent1[\"f3\"], parent2[\"f3\"]])\n", 295 | "\n", 296 | " child1[\"k\"] = choice([parent1[\"k\"], parent2[\"k\"]])\n", 297 | " child2[\"k\"] = choice([parent1[\"k\"], parent2[\"k\"]])\n", 298 | "\n", 299 | " child1[\"a1\"] = parent1[\"a2\"]\n", 300 | " child2[\"a1\"] = parent2[\"a2\"]\n", 301 | "\n", 302 | " child1[\"a2\"] = parent2[\"a1\"]\n", 303 | " child2[\"a2\"] = parent1[\"a1\"]\n", 304 | "\n", 305 | " child1[\"d1\"] = parent1[\"d1\"]\n", 306 | " child2[\"d1\"] = parent2[\"d1\"]\n", 307 | "\n", 308 | " child1[\"d2\"] = parent2[\"d2\"]\n", 309 | " child2[\"d2\"] = parent1[\"d2\"]\n", 310 | "\n", 311 | " child1[\"op\"] = parent2[\"op\"]\n", 312 | " child2[\"op\"] = parent1[\"op\"]\n", 313 | "\n", 314 | " child1[\"ep\"] = parent1[\"ep\"]\n", 315 | " child2[\"ep\"] = parent2[\"ep\"]\n", 316 | " return [child1, child2]" 317 | ], 318 | "execution_count": 14, 319 | "outputs": [] 320 | }, 321 | { 322 | "cell_type": "code", 323 | "metadata": { 324 | "id": "OvHJT5d23-AN" 325 | }, 326 | "source": [ 327 | "def mutation(chromosome):\n", 328 | " flag = randint(0,40)\n", 329 | " if flag <= 20:\n", 330 | " chromosome[\"ep\"] += randint(0, 10)\n", 331 | " return chromosome" 332 | ], 333 | "execution_count": 15, 334 | "outputs": [] 335 | }, 336 | { 337 | "cell_type": "code", 338 | "metadata": { 339 | "id": "oHz68ueB4Bv6", 340 | "colab": { 341 | "base_uri": "https://localhost:8080/" 342 | }, 343 | "outputId": "618d7577-09c7-4a35-d555-c3ed615b72b0" 344 | }, 345 | "source": [ 346 | "generations = 3\n", 347 | "threshold = 90\n", 348 | "num_pop = 10\n", 349 | "\n", 350 | "population = generate_population(num_pop)\n", 351 | "\n", 352 | "for generation in range(generations):\n", 353 | "\n", 354 | " population_fitness = []\n", 355 | " for chromosome in population:\n", 356 | " f1 = chromosome[\"f1\"]\n", 357 | " f2 = chromosome[\"f2\"]\n", 358 | " f3 = chromosome[\"f3\"]\n", 359 | " k = chromosome[\"k\"]\n", 360 | " a1 = chromosome[\"a1\"]\n", 361 | " a2 = chromosome[\"a2\"]\n", 362 | " d1 = chromosome[\"d1\"]\n", 363 | " d2 = chromosome[\"d2\"]\n", 364 | " op = chromosome[\"op\"]\n", 365 | " ep = chromosome[\"ep\"]\n", 366 | "\n", 367 | " try:\n", 368 | " model = CNN_model(f1, f2, f3, k, a1, a2, d1, d2, op, ep)\n", 369 | " acc = fitness_evaluation(model)\n", 370 | " print(\"Parameters: \", chromosome)\n", 371 | " print(\"Accuracy: \", round(acc,3))\n", 372 | " except:\n", 373 | " acc=0\n", 374 | " print(\"Parameters: \", chromosome)\n", 375 | " print(\"Invalid parameters - Build fail\")\n", 376 | "\n", 377 | " population_fitness.append(acc)\n", 378 | " \n", 379 | " parents_ind = selection(population_fitness)\n", 380 | " parent1 = population[parents_ind[0]]\n", 381 | " parent2 = population[parents_ind[1]]\n", 382 | "\n", 383 | " children = crossover(parent1, parent2)\n", 384 | " child1 = mutation(children[0])\n", 385 | " child2 = mutation(children[1])\n", 386 | "\n", 387 | " population.append(child1)\n", 388 | " population.append(child2)\n", 389 | "\n", 390 | " print(\"Generation \", generation+1,\" Outcome: \")\n", 391 | " if max(population_fitness) >= threshold:\n", 392 | " print(\"Obtained desired accuracy: \", max(population_fitness))\n", 393 | " break\n", 394 | " else:\n", 395 | " print(\"Maximum accuracy in generation {} : {}\".format(generation+1, max(population_fitness)))\n", 396 | "\n", 397 | " first_min = min(population_fitness)\n", 398 | " first_min_ind = population_fitness.index(first_min)\n", 399 | " population.remove(population[first_min_ind])\n", 400 | " second_min = min(population_fitness)\n", 401 | " second_min_ind = population_fitness.index(second_min)\n", 402 | " population.remove(population[second_min_ind])" 403 | ], 404 | "execution_count": 16, 405 | "outputs": [ 406 | { 407 | "output_type": "stream", 408 | "text": [ 409 | "313/313 [==============================] - 1s 3ms/step - loss: 0.7881 - accuracy: 0.7664\n", 410 | "Parameters: {'f1': 32, 'f2': 64, 'f3': 256, 'k': 3, 'a1': 'relu', 'a2': 'relu', 'd1': 0.2, 'd2': 0.3, 'op': 'adamax', 'ep': 56}\n", 411 | "Accuracy: 0.766\n", 412 | "313/313 [==============================] - 1s 3ms/step - loss: 1.2659 - accuracy: 0.5485\n", 413 | "Parameters: {'f1': 64, 'f2': 64, 'f3': 256, 'k': 5, 'a1': 'relu', 'a2': 'elu', 'd1': 0.2, 'd2': 0.1, 'op': 'adagrad', 'ep': 63}\n", 414 | "Accuracy: 0.549\n", 415 | "313/313 [==============================] - 1s 3ms/step - loss: 0.6728 - accuracy: 0.7761\n", 416 | "Parameters: {'f1': 32, 'f2': 64, 'f3': 512, 'k': 3, 'a1': 'selu', 'a2': 'relu', 'd1': 0.5, 'd2': 0.3, 'op': 'adam', 'ep': 69}\n", 417 | "Accuracy: 0.776\n", 418 | "313/313 [==============================] - 1s 3ms/step - loss: 1.1614 - accuracy: 0.7210\n", 419 | "Parameters: {'f1': 32, 'f2': 128, 'f3': 256, 'k': 5, 'a1': 'selu', 'a2': 'relu', 'd1': 0.2, 'd2': 0.4, 'op': 'adamax', 'ep': 61}\n", 420 | "Accuracy: 0.721\n", 421 | "313/313 [==============================] - 1s 3ms/step - loss: 1.0579 - accuracy: 0.7461\n", 422 | "Parameters: {'f1': 64, 'f2': 128, 'f3': 128, 'k': 5, 'a1': 'relu', 'a2': 'relu', 'd1': 0.3, 'd2': 0.1, 'op': 'adamax', 'ep': 89}\n", 423 | "Accuracy: 0.746\n", 424 | "313/313 [==============================] - 1s 3ms/step - loss: 1.3260 - accuracy: 0.5261\n", 425 | "Parameters: {'f1': 64, 'f2': 64, 'f3': 128, 'k': 5, 'a1': 'relu', 'a2': 'relu', 'd1': 0.2, 'd2': 0.4, 'op': 'adagrad', 'ep': 87}\n", 426 | "Accuracy: 0.526\n", 427 | "313/313 [==============================] - 1s 3ms/step - loss: 1.1504 - accuracy: 0.6688\n", 428 | "Parameters: {'f1': 64, 'f2': 128, 'f3': 256, 'k': 3, 'a1': 'relu', 'a2': 'selu', 'd1': 0.1, 'd2': 0.5, 'op': 'adam', 'ep': 79}\n", 429 | "Accuracy: 0.669\n", 430 | "313/313 [==============================] - 1s 3ms/step - loss: 2.1731 - accuracy: 0.2187\n", 431 | "Parameters: {'f1': 64, 'f2': 64, 'f3': 128, 'k': 5, 'a1': 'relu', 'a2': 'relu', 'd1': 0.4, 'd2': 0.4, 'op': 'adadelta', 'ep': 62}\n", 432 | "Accuracy: 0.219\n", 433 | "313/313 [==============================] - 1s 3ms/step - loss: 1.2687 - accuracy: 0.7189\n", 434 | "Parameters: {'f1': 32, 'f2': 128, 'f3': 128, 'k': 5, 'a1': 'elu', 'a2': 'relu', 'd1': 0.2, 'd2': 0.4, 'op': 'adam', 'ep': 89}\n", 435 | "Accuracy: 0.719\n", 436 | "313/313 [==============================] - 1s 3ms/step - loss: 1.1307 - accuracy: 0.6051\n", 437 | "Parameters: {'f1': 64, 'f2': 64, 'f3': 256, 'k': 5, 'a1': 'elu', 'a2': 'selu', 'd1': 0.1, 'd2': 0.4, 'op': 'adagrad', 'ep': 62}\n", 438 | "Accuracy: 0.605\n", 439 | "Generation 1 Outcome: \n", 440 | "Maximum accuracy in generation 1 : 0.7760999798774719\n", 441 | "313/313 [==============================] - 1s 3ms/step - loss: 0.7609 - accuracy: 0.7697\n", 442 | "Parameters: {'f1': 32, 'f2': 64, 'f3': 256, 'k': 3, 'a1': 'relu', 'a2': 'relu', 'd1': 0.2, 'd2': 0.3, 'op': 'adamax', 'ep': 56}\n", 443 | "Accuracy: 0.77\n", 444 | "313/313 [==============================] - 1s 3ms/step - loss: 1.2153 - accuracy: 0.5741\n", 445 | "Parameters: {'f1': 64, 'f2': 64, 'f3': 256, 'k': 5, 'a1': 'relu', 'a2': 'elu', 'd1': 0.2, 'd2': 0.1, 'op': 'adagrad', 'ep': 63}\n", 446 | "Accuracy: 0.574\n", 447 | "313/313 [==============================] - 1s 3ms/step - loss: 0.6728 - accuracy: 0.7810\n", 448 | "Parameters: {'f1': 32, 'f2': 64, 'f3': 512, 'k': 3, 'a1': 'selu', 'a2': 'relu', 'd1': 0.5, 'd2': 0.3, 'op': 'adam', 'ep': 69}\n", 449 | "Accuracy: 0.781\n", 450 | "313/313 [==============================] - 1s 3ms/step - loss: 1.1003 - accuracy: 0.7321\n", 451 | "Parameters: {'f1': 32, 'f2': 128, 'f3': 256, 'k': 5, 'a1': 'selu', 'a2': 'relu', 'd1': 0.2, 'd2': 0.4, 'op': 'adamax', 'ep': 61}\n", 452 | "Accuracy: 0.732\n", 453 | "313/313 [==============================] - 1s 3ms/step - loss: 1.1546 - accuracy: 0.7473\n", 454 | "Parameters: {'f1': 64, 'f2': 128, 'f3': 128, 'k': 5, 'a1': 'relu', 'a2': 'relu', 'd1': 0.3, 'd2': 0.1, 'op': 'adamax', 'ep': 89}\n", 455 | "Accuracy: 0.747\n", 456 | "313/313 [==============================] - 1s 3ms/step - loss: 1.3158 - accuracy: 0.5255\n", 457 | "Parameters: {'f1': 64, 'f2': 64, 'f3': 128, 'k': 5, 'a1': 'relu', 'a2': 'relu', 'd1': 0.2, 'd2': 0.4, 'op': 'adagrad', 'ep': 87}\n", 458 | "Accuracy: 0.525\n", 459 | "313/313 [==============================] - 1s 3ms/step - loss: 1.3561 - accuracy: 0.6576\n", 460 | "Parameters: {'f1': 64, 'f2': 128, 'f3': 256, 'k': 3, 'a1': 'relu', 'a2': 'selu', 'd1': 0.1, 'd2': 0.5, 'op': 'adam', 'ep': 79}\n", 461 | "Accuracy: 0.658\n", 462 | "313/313 [==============================] - 1s 3ms/step - loss: 1.1208 - accuracy: 0.6137\n", 463 | "Parameters: {'f1': 64, 'f2': 64, 'f3': 256, 'k': 5, 'a1': 'elu', 'a2': 'selu', 'd1': 0.1, 'd2': 0.4, 'op': 'adagrad', 'ep': 62}\n", 464 | "Accuracy: 0.614\n", 465 | "313/313 [==============================] - 1s 3ms/step - loss: 1.0799 - accuracy: 0.6846\n", 466 | "Parameters: {'f1': 32, 'f2': 64, 'f3': 512, 'k': 5, 'a1': 'elu', 'a2': 'selu', 'd1': 0.2, 'd2': 0.3, 'op': 'adam', 'ep': 63}\n", 467 | "Accuracy: 0.685\n", 468 | "313/313 [==============================] - 1s 3ms/step - loss: 1.3635 - accuracy: 0.4997\n", 469 | "Parameters: {'f1': 64, 'f2': 64, 'f3': 512, 'k': 5, 'a1': 'relu', 'a2': 'relu', 'd1': 0.5, 'd2': 0.1, 'op': 'adagrad', 'ep': 69}\n", 470 | "Accuracy: 0.5\n", 471 | "Generation 2 Outcome: \n", 472 | "Maximum accuracy in generation 2 : 0.781000018119812\n", 473 | "313/313 [==============================] - 1s 3ms/step - loss: 0.8148 - accuracy: 0.7620\n", 474 | "Parameters: {'f1': 32, 'f2': 64, 'f3': 256, 'k': 3, 'a1': 'relu', 'a2': 'relu', 'd1': 0.2, 'd2': 0.3, 'op': 'adamax', 'ep': 56}\n", 475 | "Accuracy: 0.762\n", 476 | "313/313 [==============================] - 1s 3ms/step - loss: 1.2396 - accuracy: 0.5644\n", 477 | "Parameters: {'f1': 64, 'f2': 64, 'f3': 256, 'k': 5, 'a1': 'relu', 'a2': 'elu', 'd1': 0.2, 'd2': 0.1, 'op': 'adagrad', 'ep': 63}\n", 478 | "Accuracy: 0.564\n", 479 | "313/313 [==============================] - 1s 3ms/step - loss: 0.6970 - accuracy: 0.7775\n", 480 | "Parameters: {'f1': 32, 'f2': 64, 'f3': 512, 'k': 3, 'a1': 'selu', 'a2': 'relu', 'd1': 0.5, 'd2': 0.3, 'op': 'adam', 'ep': 69}\n", 481 | "Accuracy: 0.777\n", 482 | "313/313 [==============================] - 1s 3ms/step - loss: 1.2340 - accuracy: 0.7319\n", 483 | "Parameters: {'f1': 32, 'f2': 128, 'f3': 256, 'k': 5, 'a1': 'selu', 'a2': 'relu', 'd1': 0.2, 'd2': 0.4, 'op': 'adamax', 'ep': 61}\n", 484 | "Accuracy: 0.732\n", 485 | "313/313 [==============================] - 1s 3ms/step - loss: 1.0540 - accuracy: 0.7484\n", 486 | "Parameters: {'f1': 64, 'f2': 128, 'f3': 128, 'k': 5, 'a1': 'relu', 'a2': 'relu', 'd1': 0.3, 'd2': 0.1, 'op': 'adamax', 'ep': 89}\n", 487 | "Accuracy: 0.748\n", 488 | "313/313 [==============================] - 1s 3ms/step - loss: 1.3253 - accuracy: 0.5142\n", 489 | "Parameters: {'f1': 64, 'f2': 64, 'f3': 128, 'k': 5, 'a1': 'relu', 'a2': 'relu', 'd1': 0.2, 'd2': 0.4, 'op': 'adagrad', 'ep': 87}\n", 490 | "Accuracy: 0.514\n", 491 | "313/313 [==============================] - 1s 3ms/step - loss: 1.2125 - accuracy: 0.6728\n", 492 | "Parameters: {'f1': 64, 'f2': 128, 'f3': 256, 'k': 3, 'a1': 'relu', 'a2': 'selu', 'd1': 0.1, 'd2': 0.5, 'op': 'adam', 'ep': 79}\n", 493 | "Accuracy: 0.673\n", 494 | "313/313 [==============================] - 1s 3ms/step - loss: 1.1153 - accuracy: 0.6096\n", 495 | "Parameters: {'f1': 64, 'f2': 64, 'f3': 256, 'k': 5, 'a1': 'elu', 'a2': 'selu', 'd1': 0.1, 'd2': 0.4, 'op': 'adagrad', 'ep': 62}\n", 496 | "Accuracy: 0.61\n", 497 | "313/313 [==============================] - 1s 3ms/step - loss: 1.0520 - accuracy: 0.6843\n", 498 | "Parameters: {'f1': 32, 'f2': 64, 'f3': 512, 'k': 5, 'a1': 'elu', 'a2': 'selu', 'd1': 0.2, 'd2': 0.3, 'op': 'adam', 'ep': 63}\n", 499 | "Accuracy: 0.684\n", 500 | "313/313 [==============================] - 1s 3ms/step - loss: 1.2057 - accuracy: 0.5658\n", 501 | "Parameters: {'f1': 64, 'f2': 64, 'f3': 256, 'k': 5, 'a1': 'selu', 'a2': 'relu', 'd1': 0.1, 'd2': 0.1, 'op': 'adagrad', 'ep': 65}\n", 502 | "Accuracy: 0.566\n", 503 | "Generation 3 Outcome: \n", 504 | "Maximum accuracy in generation 3 : 0.7774999737739563\n" 505 | ], 506 | "name": "stdout" 507 | } 508 | ] 509 | } 510 | ] 511 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Hyper-Parameter-Optimization-of-CNN-using-genetic-algorithm 2 | Classification of Cifar-10 dataset using a convolutional neural network. The hyper parameters to construct CNN architecture are optimized using genetic algorithm. 3 | --------------------------------------------------------------------------------