File size: 79,385 Bytes
bc209b4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 |
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": []
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "code",
"source": [
"from google.colab import drive\n",
"drive.mount('/content/drive')"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Bp2ULvbN23t_",
"outputId": "ea49f596-21d3-44f8-edf1-8cc2b1123b2a"
},
"execution_count": 3,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n"
]
}
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"id": "Cf6RwzFiuj5H"
},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import math\n",
"import pandas as pd\n",
"\n",
"import keras\n",
"from keras.datasets import mnist\n",
"from keras.layers import Input, Flatten, Dense\n",
"from keras.models import Sequential"
]
},
{
"cell_type": "code",
"source": [
"(x_train, y_train), (x_test, y_test) = mnist.load_data()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "wrtj19FmuokG",
"outputId": "d346f863-a3dd-483a-8ce0-07c52d6bd1f8"
},
"execution_count": 4,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz\n",
"11490434/11490434 [==============================] - 0s 0us/step\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"x_train_norm = x_train / 255\n",
"x_test_norm = x_test / 255"
],
"metadata": {
"id": "8qXWhQJfur3-"
},
"execution_count": 5,
"outputs": []
},
{
"cell_type": "code",
"source": [
"model = Sequential()\n",
"\n",
"model.add(\n",
" Flatten(input_shape = x_train_norm.shape[1:])\n",
")\n",
"\n",
"model.add(\n",
" Dense(\n",
" units = 128,\n",
" activation = 'relu',\n",
" kernel_regularizer = keras.regularizers.l2(0.002)\n",
" )\n",
")\n",
"\n",
"model.add(\n",
" Dense(\n",
" units = 64,\n",
" activation = 'relu',\n",
" kernel_regularizer = keras.regularizers.l2(0.002)\n",
" )\n",
")\n",
"\n",
"model.add(\n",
" Dense(\n",
" units = 32,\n",
" activation = 'relu',\n",
" kernel_regularizer = keras.regularizers.l2(0.002)\n",
" )\n",
")\n",
"\n",
"model.add(\n",
" Dense(\n",
" units = 10,\n",
" activation = 'softmax'\n",
" )\n",
")"
],
"metadata": {
"id": "Sa_faWpPutV1"
},
"execution_count": 6,
"outputs": []
},
{
"cell_type": "code",
"source": [
"model.summary()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "phLpzKDpu4_J",
"outputId": "f28134c6-af5c-447f-ce52-a0156f8bcb0e"
},
"execution_count": 7,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Model: \"sequential\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" flatten (Flatten) (None, 784) 0 \n",
" \n",
" dense (Dense) (None, 128) 100480 \n",
" \n",
" dense_1 (Dense) (None, 64) 8256 \n",
" \n",
" dense_2 (Dense) (None, 32) 2080 \n",
" \n",
" dense_3 (Dense) (None, 10) 330 \n",
" \n",
"=================================================================\n",
"Total params: 111,146\n",
"Trainable params: 111,146\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"keras.utils.plot_model(\n",
" model,\n",
" show_shapes = True,\n",
" show_layer_activations=True,\n",
" show_layer_names = True\n",
")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 644
},
"id": "O9fAepniu7gG",
"outputId": "e1846d28-bd33-44e8-b59b-b6a6bc1a09f7"
},
"execution_count": 8,
"outputs": [
{
"output_type": "execute_result",
"data": {
"image/png": "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\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {},
"execution_count": 8
}
]
},
{
"cell_type": "code",
"source": [
"model.compile(\n",
" optimizer = 'adam',\n",
" loss = 'sparse_categorical_crossentropy',\n",
" metrics = ['accuracy']\n",
")"
],
"metadata": {
"id": "zq6JxSz5u78z"
},
"execution_count": 9,
"outputs": []
},
{
"cell_type": "code",
"source": [
"model.fit(x_train_norm,\n",
" y_train,\n",
" epochs = 15,\n",
" batch_size = 32,\n",
" validation_data = (x_test_norm, y_test),\n",
" shuffle = True\n",
" )"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "eZD9LW3lu9tY",
"outputId": "6d3a7e81-cd52-41c6-fe13-a6373a04fe06"
},
"execution_count": 10,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/15\n",
"1875/1875 [==============================] - 13s 6ms/step - loss: 0.5740 - accuracy: 0.9181 - val_loss: 0.3758 - val_accuracy: 0.9535\n",
"Epoch 2/15\n",
"1875/1875 [==============================] - 14s 7ms/step - loss: 0.3554 - accuracy: 0.9530 - val_loss: 0.3210 - val_accuracy: 0.9590\n",
"Epoch 3/15\n",
"1875/1875 [==============================] - 12s 7ms/step - loss: 0.3069 - accuracy: 0.9597 - val_loss: 0.2849 - val_accuracy: 0.9634\n",
"Epoch 4/15\n",
"1875/1875 [==============================] - 12s 6ms/step - loss: 0.2834 - accuracy: 0.9618 - val_loss: 0.2563 - val_accuracy: 0.9680\n",
"Epoch 5/15\n",
"1875/1875 [==============================] - 11s 6ms/step - loss: 0.2647 - accuracy: 0.9631 - val_loss: 0.2537 - val_accuracy: 0.9672\n",
"Epoch 6/15\n",
"1875/1875 [==============================] - 11s 6ms/step - loss: 0.2528 - accuracy: 0.9645 - val_loss: 0.2519 - val_accuracy: 0.9626\n",
"Epoch 7/15\n",
"1875/1875 [==============================] - 12s 6ms/step - loss: 0.2415 - accuracy: 0.9658 - val_loss: 0.2400 - val_accuracy: 0.9660\n",
"Epoch 8/15\n",
"1875/1875 [==============================] - 12s 6ms/step - loss: 0.2345 - accuracy: 0.9672 - val_loss: 0.2288 - val_accuracy: 0.9675\n",
"Epoch 9/15\n",
"1875/1875 [==============================] - 12s 6ms/step - loss: 0.2259 - accuracy: 0.9687 - val_loss: 0.2380 - val_accuracy: 0.9646\n",
"Epoch 10/15\n",
"1875/1875 [==============================] - 10s 5ms/step - loss: 0.2234 - accuracy: 0.9676 - val_loss: 0.2211 - val_accuracy: 0.9683\n",
"Epoch 11/15\n",
"1875/1875 [==============================] - 12s 6ms/step - loss: 0.2195 - accuracy: 0.9679 - val_loss: 0.2216 - val_accuracy: 0.9673\n",
"Epoch 12/15\n",
"1875/1875 [==============================] - 12s 6ms/step - loss: 0.2153 - accuracy: 0.9690 - val_loss: 0.2106 - val_accuracy: 0.9686\n",
"Epoch 13/15\n",
"1875/1875 [==============================] - 12s 6ms/step - loss: 0.2134 - accuracy: 0.9682 - val_loss: 0.2198 - val_accuracy: 0.9631\n",
"Epoch 14/15\n",
"1875/1875 [==============================] - 11s 6ms/step - loss: 0.2096 - accuracy: 0.9697 - val_loss: 0.2193 - val_accuracy: 0.9672\n",
"Epoch 15/15\n",
"1875/1875 [==============================] - 12s 7ms/step - loss: 0.2079 - accuracy: 0.9695 - val_loss: 0.2054 - val_accuracy: 0.9690\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<keras.callbacks.History at 0x7f6590a8ee60>"
]
},
"metadata": {},
"execution_count": 10
}
]
},
{
"cell_type": "code",
"source": [
"loss, accuracy = model.evaluate(x_test, y_test)\n",
"print(\n",
" loss,\n",
" accuracy,\n",
" sep = '\\n'\n",
")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "DkQ5j3qcvETE",
"outputId": "230be8f6-dbb2-4558-e9f9-c68971f53324"
},
"execution_count": 11,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"313/313 [==============================] - 2s 4ms/step - loss: 14.7035 - accuracy: 0.9470\n",
"14.703533172607422\n",
"0.9470000267028809\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"predictions= model.predict([x_test])\n",
"print('predictions:', predictions.shape)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "1KC8q3jxvLw4",
"outputId": "1a7b02a3-04ed-43f3-9c46-ce35830aaa31"
},
"execution_count": 12,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"313/313 [==============================] - 1s 2ms/step\n",
"predictions: (10000, 10)\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"predictions = np.argmax(predictions, axis=1)\n",
"pd.DataFrame(predictions)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 424
},
"id": "ufMgURX_wSyW",
"outputId": "31bf59e6-d9c3-4ef0-f31a-99ac53feb70d"
},
"execution_count": 13,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" 0\n",
"0 7\n",
"1 2\n",
"2 1\n",
"3 0\n",
"4 4\n",
"... ..\n",
"9995 2\n",
"9996 3\n",
"9997 4\n",
"9998 5\n",
"9999 6\n",
"\n",
"[10000 rows x 1 columns]"
],
"text/html": [
"\n",
" <div id=\"df-55701547-8522-4f10-b293-e605d398e5b3\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>0</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9995</th>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9996</th>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9997</th>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9998</th>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9999</th>\n",
" <td>6</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>10000 rows × 1 columns</p>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-55701547-8522-4f10-b293-e605d398e5b3')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-55701547-8522-4f10-b293-e605d398e5b3 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-55701547-8522-4f10-b293-e605d398e5b3');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 13
}
]
},
{
"cell_type": "code",
"source": [
"def checking(pred):\n",
" print(\n",
" pred % 3\n",
" )\n",
"\n",
"checking(predictions[34])"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "GYqxpOZ4vR9E",
"outputId": "5638d350-046d-41fb-ce0c-30dfe2578d3f"
},
"execution_count": 14,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"1\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"model.save(\"drive/MyDrive/model\")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "nKBOSiUi36O6",
"outputId": "8badd2f2-e56e-4465-a6ae-973434cf43f6"
},
"execution_count": 15,
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": [
"WARNING:absl:Found untraced functions such as _update_step_xla while saving (showing 1 of 1). These functions will not be directly callable after loading.\n"
]
}
]
}
]
} |