{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "kernelspec": { "display_name": "TensorFlow 2.3 on Python 3.6 (CUDA 10.1)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.9" }, "colab": { "name": "5-1.shallow_net_in_keras.ipynb", "provenance": [] }, "accelerator": "GPU", "gpuClass": "standard" }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "UUUmjUcqwto1" }, "source": [ "# 케라스로 만드는 얕은 신경망" ] }, { "cell_type": "markdown", "metadata": { "id": "-TP9aEcKwto6" }, "source": [ "얕은 신경망을 만들어 MNIST 숫자를 분류합니다." ] }, { "cell_type": "markdown", "metadata": { "id": "EAoh-YwMwto7" }, "source": [ "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/rickiepark/dl-illustrated/blob/master/notebooks/5-1.shallow_net_in_keras.ipynb)" ] }, { "cell_type": "markdown", "metadata": { "id": "XiDhzo_zwto7" }, "source": [ "#### 라이브러리 적재" ] }, { "cell_type": "code", "metadata": { "id": "WcrcHtb9wto7" }, "source": [ "from tensorflow import keras\n", "from tensorflow.keras.datasets import mnist\n", "from tensorflow.keras.models import Sequential\n", "from tensorflow.keras.layers import Dense\n", "from tensorflow.keras.optimizers import SGD\n", "from matplotlib import pyplot as plt" ], "execution_count": 1, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "f_LzQka_wto8" }, "source": [ "#### 데이터 적재" ] }, { "cell_type": "code", "metadata": { "scrolled": true, "id": "mHmkq2HUwto8", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "cf9cbe38-b2a7-4d19-a6ce-640746a984bd" }, "source": [ "(X_train, y_train), (X_valid, y_valid) = mnist.load_data()" ], "execution_count": 2, "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", "metadata": { "id": "j1hETGafwto8", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "8e688bb0-6105-486d-bc39-00a480e5aaea" }, "source": [ "X_train.shape" ], "execution_count": 3, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(60000, 28, 28)" ] }, "metadata": {}, "execution_count": 3 } ] }, { "cell_type": "code", "metadata": { "id": "Udr4W4Ygwto9", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "3a0f8b62-1065-4dee-a57a-cb12801a3506" }, "source": [ "y_train.shape" ], "execution_count": 4, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(60000,)" ] }, "metadata": {}, "execution_count": 4 } ] }, { "cell_type": "code", "metadata": { "id": "KqH8ivM0wto9", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "6ee069f7-9733-47ac-8ae1-0295a86acfad" }, "source": [ "y_train[0:12]" ], "execution_count": 5, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([5, 0, 4, 1, 9, 2, 1, 3, 1, 4, 3, 5], dtype=uint8)" ] }, "metadata": {}, "execution_count": 5 } ] }, { "cell_type": "code", "metadata": { "id": "6JQoSEVRwto-", "colab": { "base_uri": "https://localhost:8080/", "height": 327 }, "outputId": "52778923-e650-4cdf-edaa-7e318b4bb383" }, "source": [ "plt.figure(figsize=(5,5))\n", "for k in range(12):\n", " plt.subplot(3, 4, k+1)\n", " plt.imshow(X_train[k], cmap='Greys')\n", " plt.axis('off')\n", "plt.tight_layout()\n", "plt.show()" ], "execution_count": 6, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "code", "metadata": { "id": "z943J9BRwto-", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "e4c61d7f-6ecc-4e6b-cffe-34f38111a972" }, "source": [ "X_valid.shape" ], "execution_count": 7, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(10000, 28, 28)" ] }, "metadata": {}, "execution_count": 7 } ] }, { "cell_type": "code", "metadata": { "id": "3RerA3_-wto-", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "84db2e27-9e68-4957-aea4-57c069e3a5ee" }, "source": [ "y_valid.shape" ], "execution_count": 8, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "(10000,)" ] }, "metadata": {}, "execution_count": 8 } ] }, { "cell_type": "code", "metadata": { "id": "HtnSjDMLwto_", "colab": { "base_uri": "https://localhost:8080/", "height": 265 }, "outputId": "43eaea01-042a-4c46-b7bf-97d7b5da9c72" }, "source": [ "plt.imshow(X_valid[0], cmap='Greys')\n", "plt.show()" ], "execution_count": 9, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "code", "metadata": { "id": "NguqmYmXwto_", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "23be47f6-db1c-4949-8aa5-b65c210999ca" }, "source": [ "X_valid[0]" ], "execution_count": 10, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 84, 185, 159, 151, 60, 36, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 222, 254, 254, 254, 254, 241, 198,\n", " 198, 198, 198, 198, 198, 198, 198, 170, 52, 0, 0, 0, 0,\n", " 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 67, 114, 72, 114, 163, 227, 254,\n", " 225, 254, 254, 254, 250, 229, 254, 254, 140, 0, 0, 0, 0,\n", " 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 66,\n", " 14, 67, 67, 67, 59, 21, 236, 254, 106, 0, 0, 0, 0,\n", " 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 83, 253, 209, 18, 0, 0, 0, 0,\n", " 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 22, 233, 255, 83, 0, 0, 0, 0, 0,\n", " 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 129, 254, 238, 44, 0, 0, 0, 0, 0,\n", " 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 59, 249, 254, 62, 0, 0, 0, 0, 0, 0,\n", " 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 133, 254, 187, 5, 0, 0, 0, 0, 0, 0,\n", " 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 9, 205, 248, 58, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 126, 254, 182, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 75, 251, 240, 57, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 19, 221, 254, 166, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,\n", " 203, 254, 219, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38,\n", " 254, 254, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 224,\n", " 254, 115, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 254,\n", " 254, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 242, 254,\n", " 254, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 254, 254,\n", " 219, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 254, 207,\n", " 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0]], dtype=uint8)" ] }, "metadata": {}, "execution_count": 10 } ] }, { "cell_type": "code", "metadata": { "id": "tPNGXL8Zwto_", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "47e5bed4-45ed-4a10-c12d-8f09ee489b8d" }, "source": [ "y_valid[0]" ], "execution_count": 11, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "7" ] }, "metadata": {}, "execution_count": 11 } ] }, { "cell_type": "markdown", "metadata": { "id": "9m62Mq_2wtpA" }, "source": [ "#### 데이터 전처리" ] }, { "cell_type": "code", "metadata": { "id": "ik5wnd7TwtpA" }, "source": [ "X_train = X_train.reshape(60000, 784).astype('float32')\n", "X_valid = X_valid.reshape(10000, 784).astype('float32')" ], "execution_count": 12, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "KZOvssgKwtpA" }, "source": [ "X_train /= 255\n", "X_valid /= 255" ], "execution_count": 13, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "9AHY8GQGwtpB", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "39686d3b-ef77-470b-a070-51662441829f" }, "source": [ "X_valid[0]" ], "execution_count": 14, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0.32941177, 0.7254902 , 0.62352943,\n", " 0.5921569 , 0.23529412, 0.14117648, 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0.87058824, 0.99607843, 0.99607843, 0.99607843, 0.99607843,\n", " 0.94509804, 0.7764706 , 0.7764706 , 0.7764706 , 0.7764706 ,\n", " 0.7764706 , 0.7764706 , 0.7764706 , 0.7764706 , 0.6666667 ,\n", " 0.20392157, 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0.2627451 , 0.44705883,\n", " 0.28235295, 0.44705883, 0.6392157 , 0.8901961 , 0.99607843,\n", " 0.88235295, 0.99607843, 0.99607843, 0.99607843, 0.98039216,\n", " 0.8980392 , 0.99607843, 0.99607843, 0.54901963, 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0.06666667, 0.25882354, 0.05490196, 0.2627451 ,\n", " 0.2627451 , 0.2627451 , 0.23137255, 0.08235294, 0.9254902 ,\n", " 0.99607843, 0.41568628, 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0.3254902 , 0.99215686, 0.81960785, 0.07058824,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0.08627451, 0.9137255 ,\n", " 1. , 0.3254902 , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0.5058824 , 0.99607843, 0.93333334, 0.17254902,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0.23137255, 0.9764706 ,\n", " 0.99607843, 0.24313726, 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0.52156866, 0.99607843, 0.73333335, 0.01960784,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0.03529412, 0.8039216 ,\n", " 0.972549 , 0.22745098, 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0.49411765, 0.99607843, 0.7137255 , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0.29411766, 0.9843137 ,\n", " 0.9411765 , 0.22352941, 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0.07450981, 0.8666667 , 0.99607843, 0.6509804 , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0.01176471, 0.79607844, 0.99607843,\n", " 0.85882354, 0.13725491, 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0.14901961, 0.99607843, 0.99607843, 0.3019608 , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0.12156863, 0.8784314 , 0.99607843,\n", " 0.4509804 , 0.00392157, 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0.52156866, 0.99607843, 0.99607843, 0.20392157, 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0.23921569, 0.9490196 , 0.99607843,\n", " 0.99607843, 0.20392157, 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0.4745098 , 0.99607843, 0.99607843, 0.85882354, 0.15686275,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0.4745098 , 0.99607843,\n", " 0.8117647 , 0.07058824, 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. , 0. ,\n", " 0. , 0. , 0. , 0. ], dtype=float32)" ] }, "metadata": {}, "execution_count": 14 } ] }, { "cell_type": "code", "metadata": { "id": "rA4DxLPDwtpB" }, "source": [ "n_classes = 10\n", "y_train = keras.utils.to_categorical(y_train, n_classes)\n", "y_valid = keras.utils.to_categorical(y_valid, n_classes)" ], "execution_count": 15, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "3VEHpHMUwtpB", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "ff26652f-cd98-498d-94e3-af031fd5346f" }, "source": [ "y_valid[0]" ], "execution_count": 16, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([0., 0., 0., 0., 0., 0., 0., 1., 0., 0.], dtype=float32)" ] }, "metadata": {}, "execution_count": 16 } ] }, { "cell_type": "markdown", "metadata": { "id": "S3yjzy7LwtpC" }, "source": [ "#### 신경망 구조 설계" ] }, { "cell_type": "code", "metadata": { "id": "lgfTchIFwtpC" }, "source": [ "model = Sequential()\n", "model.add(Dense(64, activation='sigmoid', input_shape=(784,)))\n", "model.add(Dense(10, activation='softmax'))" ], "execution_count": 17, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "Ccl9J8qUwtpC", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "ed035e3e-9dce-45a7-d335-cd2c92b232dc" }, "source": [ "model.summary()" ], "execution_count": 18, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Model: \"sequential\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " dense (Dense) (None, 64) 50240 \n", " \n", " dense_1 (Dense) (None, 10) 650 \n", " \n", "=================================================================\n", "Total params: 50,890\n", "Trainable params: 50,890\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] } ] }, { "cell_type": "code", "metadata": { "id": "KQ5LfYnlwtpC", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "2ff1f9cf-280f-44ba-d689-a153ebd5f21b" }, "source": [ "(64*784)" ], "execution_count": 19, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "50176" ] }, "metadata": {}, "execution_count": 19 } ] }, { "cell_type": "code", "metadata": { "id": "nE1a8H-MwtpC", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "47062065-e024-4995-db41-c833fa7e0ca2" }, "source": [ "(64*784)+64" ], "execution_count": 20, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "50240" ] }, "metadata": {}, "execution_count": 20 } ] }, { "cell_type": "code", "metadata": { "id": "3mhN327mwtpD", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "87f4bc85-7469-4e17-8556-5b1915cf419a" }, "source": [ "(10*64)+10" ], "execution_count": 21, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "650" ] }, "metadata": {}, "execution_count": 21 } ] }, { "cell_type": "markdown", "metadata": { "id": "drBdTMUewtpD" }, "source": [ "#### 모델 컴파일" ] }, { "cell_type": "code", "metadata": { "id": "PvinEUNpwtpD" }, "source": [ "model.compile(loss='mean_squared_error', optimizer=SGD(learning_rate=0.01), metrics=['accuracy'])" ], "execution_count": 22, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "GmRBCOe5wtpD" }, "source": [ "#### 훈련!" ] }, { "cell_type": "code", "metadata": { "id": "nUuMfyNZwtpD", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "d0aa0ac1-7df3-4a8f-ff1b-da6d3d27d045" }, "source": [ "model.fit(X_train, y_train, batch_size=128, epochs=200, verbose=1, validation_data=(X_valid, y_valid))" ], "execution_count": 23, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Epoch 1/200\n", "469/469 [==============================] - 6s 6ms/step - loss: 0.0962 - accuracy: 0.0877 - val_loss: 0.0938 - val_accuracy: 0.0913\n", "Epoch 2/200\n", "469/469 [==============================] - 3s 6ms/step - loss: 0.0928 - accuracy: 0.0930 - val_loss: 0.0918 - val_accuracy: 0.1056\n", "Epoch 3/200\n", "469/469 [==============================] - 3s 6ms/step - loss: 0.0914 - accuracy: 0.1230 - val_loss: 0.0908 - val_accuracy: 0.1506\n", "Epoch 4/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0906 - accuracy: 0.1632 - val_loss: 0.0902 - val_accuracy: 0.1775\n", "Epoch 5/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0900 - accuracy: 0.1816 - val_loss: 0.0897 - val_accuracy: 0.1918\n", "Epoch 6/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0895 - accuracy: 0.1964 - val_loss: 0.0892 - val_accuracy: 0.2127\n", "Epoch 7/200\n", "469/469 [==============================] - 1s 3ms/step - loss: 0.0891 - accuracy: 0.2178 - val_loss: 0.0888 - val_accuracy: 0.2354\n", "Epoch 8/200\n", "469/469 [==============================] - 1s 3ms/step - loss: 0.0887 - accuracy: 0.2364 - val_loss: 0.0884 - val_accuracy: 0.2542\n", "Epoch 9/200\n", "469/469 [==============================] - 1s 3ms/step - loss: 0.0883 - accuracy: 0.2571 - val_loss: 0.0880 - val_accuracy: 0.2766\n", "Epoch 10/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0879 - accuracy: 0.2883 - val_loss: 0.0877 - val_accuracy: 0.3176\n", "Epoch 11/200\n", "469/469 [==============================] - 1s 3ms/step - loss: 0.0875 - accuracy: 0.3277 - val_loss: 0.0873 - val_accuracy: 0.3560\n", "Epoch 12/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0872 - accuracy: 0.3574 - val_loss: 0.0869 - val_accuracy: 0.3729\n", "Epoch 13/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0868 - accuracy: 0.3719 - val_loss: 0.0866 - val_accuracy: 0.3858\n", "Epoch 14/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0864 - accuracy: 0.3805 - val_loss: 0.0862 - val_accuracy: 0.3930\n", "Epoch 15/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0861 - accuracy: 0.3876 - val_loss: 0.0858 - val_accuracy: 0.3957\n", "Epoch 16/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0857 - accuracy: 0.3898 - val_loss: 0.0854 - val_accuracy: 0.4029\n", "Epoch 17/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0853 - accuracy: 0.3950 - val_loss: 0.0850 - val_accuracy: 0.4083\n", "Epoch 18/200\n", "469/469 [==============================] - 1s 3ms/step - loss: 0.0849 - accuracy: 0.3989 - val_loss: 0.0846 - val_accuracy: 0.4146\n", "Epoch 19/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0845 - accuracy: 0.4043 - val_loss: 0.0842 - val_accuracy: 0.4189\n", "Epoch 20/200\n", "469/469 [==============================] - 2s 5ms/step - loss: 0.0841 - accuracy: 0.4101 - val_loss: 0.0838 - val_accuracy: 0.4238\n", "Epoch 21/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0837 - accuracy: 0.4142 - val_loss: 0.0834 - val_accuracy: 0.4297\n", "Epoch 22/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0833 - accuracy: 0.4186 - val_loss: 0.0830 - val_accuracy: 0.4331\n", "Epoch 23/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0829 - accuracy: 0.4231 - val_loss: 0.0825 - val_accuracy: 0.4376\n", "Epoch 24/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0824 - accuracy: 0.4294 - val_loss: 0.0821 - val_accuracy: 0.4427\n", "Epoch 25/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0820 - accuracy: 0.4347 - val_loss: 0.0817 - val_accuracy: 0.4466\n", "Epoch 26/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0816 - accuracy: 0.4385 - val_loss: 0.0812 - val_accuracy: 0.4503\n", "Epoch 27/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0811 - accuracy: 0.4434 - val_loss: 0.0807 - val_accuracy: 0.4562\n", "Epoch 28/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0807 - accuracy: 0.4484 - val_loss: 0.0803 - val_accuracy: 0.4611\n", "Epoch 29/200\n", "469/469 [==============================] - 1s 3ms/step - loss: 0.0802 - accuracy: 0.4527 - val_loss: 0.0798 - val_accuracy: 0.4659\n", "Epoch 30/200\n", "469/469 [==============================] - 1s 3ms/step - loss: 0.0797 - accuracy: 0.4588 - val_loss: 0.0793 - val_accuracy: 0.4700\n", "Epoch 31/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0792 - accuracy: 0.4633 - val_loss: 0.0788 - val_accuracy: 0.4755\n", "Epoch 32/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0788 - accuracy: 0.4685 - val_loss: 0.0783 - val_accuracy: 0.4801\n", "Epoch 33/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0783 - accuracy: 0.4718 - val_loss: 0.0778 - val_accuracy: 0.4844\n", "Epoch 34/200\n", "469/469 [==============================] - 1s 3ms/step - loss: 0.0778 - accuracy: 0.4772 - val_loss: 0.0773 - val_accuracy: 0.4892\n", "Epoch 35/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0773 - accuracy: 0.4821 - val_loss: 0.0768 - val_accuracy: 0.4926\n", "Epoch 36/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0768 - accuracy: 0.4862 - val_loss: 0.0763 - val_accuracy: 0.4962\n", "Epoch 37/200\n", "469/469 [==============================] - 1s 3ms/step - loss: 0.0763 - accuracy: 0.4902 - val_loss: 0.0758 - val_accuracy: 0.4991\n", "Epoch 38/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0757 - accuracy: 0.4945 - val_loss: 0.0753 - val_accuracy: 0.5025\n", "Epoch 39/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0752 - accuracy: 0.4976 - val_loss: 0.0747 - val_accuracy: 0.5051\n", "Epoch 40/200\n", "469/469 [==============================] - 1s 3ms/step - loss: 0.0747 - accuracy: 0.5021 - val_loss: 0.0742 - val_accuracy: 0.5091\n", "Epoch 41/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0742 - accuracy: 0.5049 - val_loss: 0.0737 - val_accuracy: 0.5134\n", "Epoch 42/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0737 - accuracy: 0.5083 - val_loss: 0.0731 - val_accuracy: 0.5171\n", "Epoch 43/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0731 - accuracy: 0.5116 - val_loss: 0.0726 - val_accuracy: 0.5204\n", "Epoch 44/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0726 - accuracy: 0.5152 - val_loss: 0.0721 - val_accuracy: 0.5237\n", "Epoch 45/200\n", "469/469 [==============================] - 1s 3ms/step - loss: 0.0721 - accuracy: 0.5187 - val_loss: 0.0715 - val_accuracy: 0.5271\n", "Epoch 46/200\n", "469/469 [==============================] - 1s 3ms/step - loss: 0.0716 - accuracy: 0.5220 - val_loss: 0.0710 - val_accuracy: 0.5294\n", "Epoch 47/200\n", "469/469 [==============================] - 1s 3ms/step - loss: 0.0710 - accuracy: 0.5247 - val_loss: 0.0704 - val_accuracy: 0.5323\n", "Epoch 48/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0705 - accuracy: 0.5282 - val_loss: 0.0699 - val_accuracy: 0.5358\n", "Epoch 49/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0700 - accuracy: 0.5307 - val_loss: 0.0694 - val_accuracy: 0.5399\n", "Epoch 50/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0694 - accuracy: 0.5336 - val_loss: 0.0688 - val_accuracy: 0.5430\n", "Epoch 51/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0689 - accuracy: 0.5368 - val_loss: 0.0683 - val_accuracy: 0.5456\n", "Epoch 52/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0684 - accuracy: 0.5402 - val_loss: 0.0678 - val_accuracy: 0.5480\n", "Epoch 53/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0679 - accuracy: 0.5432 - val_loss: 0.0673 - val_accuracy: 0.5505\n", "Epoch 54/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0674 - accuracy: 0.5459 - val_loss: 0.0667 - val_accuracy: 0.5534\n", "Epoch 55/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0668 - accuracy: 0.5487 - val_loss: 0.0662 - val_accuracy: 0.5585\n", "Epoch 56/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0663 - accuracy: 0.5520 - val_loss: 0.0657 - val_accuracy: 0.5621\n", "Epoch 57/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0658 - accuracy: 0.5558 - val_loss: 0.0652 - val_accuracy: 0.5657\n", "Epoch 58/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0653 - accuracy: 0.5590 - val_loss: 0.0647 - val_accuracy: 0.5694\n", "Epoch 59/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0648 - accuracy: 0.5627 - val_loss: 0.0642 - val_accuracy: 0.5728\n", "Epoch 60/200\n", "469/469 [==============================] - 2s 5ms/step - loss: 0.0643 - accuracy: 0.5664 - val_loss: 0.0637 - val_accuracy: 0.5772\n", "Epoch 61/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0638 - accuracy: 0.5699 - val_loss: 0.0632 - val_accuracy: 0.5815\n", "Epoch 62/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0634 - accuracy: 0.5745 - val_loss: 0.0627 - val_accuracy: 0.5867\n", "Epoch 63/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0629 - accuracy: 0.5781 - val_loss: 0.0622 - val_accuracy: 0.5911\n", "Epoch 64/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0624 - accuracy: 0.5825 - val_loss: 0.0617 - val_accuracy: 0.5961\n", "Epoch 65/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0619 - accuracy: 0.5877 - val_loss: 0.0613 - val_accuracy: 0.6007\n", "Epoch 66/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0615 - accuracy: 0.5926 - val_loss: 0.0608 - val_accuracy: 0.6063\n", "Epoch 67/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0610 - accuracy: 0.5980 - val_loss: 0.0603 - val_accuracy: 0.6115\n", "Epoch 68/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0606 - accuracy: 0.6036 - val_loss: 0.0599 - val_accuracy: 0.6165\n", "Epoch 69/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0601 - accuracy: 0.6089 - val_loss: 0.0594 - val_accuracy: 0.6213\n", "Epoch 70/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0597 - accuracy: 0.6137 - val_loss: 0.0590 - val_accuracy: 0.6266\n", "Epoch 71/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0592 - accuracy: 0.6187 - val_loss: 0.0585 - val_accuracy: 0.6313\n", "Epoch 72/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0588 - accuracy: 0.6241 - val_loss: 0.0581 - val_accuracy: 0.6359\n", "Epoch 73/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0584 - accuracy: 0.6285 - val_loss: 0.0576 - val_accuracy: 0.6420\n", "Epoch 74/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0579 - accuracy: 0.6338 - val_loss: 0.0572 - val_accuracy: 0.6473\n", "Epoch 75/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0575 - accuracy: 0.6381 - val_loss: 0.0568 - val_accuracy: 0.6520\n", "Epoch 76/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0571 - accuracy: 0.6436 - val_loss: 0.0564 - val_accuracy: 0.6578\n", "Epoch 77/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0567 - accuracy: 0.6485 - val_loss: 0.0559 - val_accuracy: 0.6638\n", "Epoch 78/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0563 - accuracy: 0.6529 - val_loss: 0.0555 - val_accuracy: 0.6678\n", "Epoch 79/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0559 - accuracy: 0.6576 - val_loss: 0.0551 - val_accuracy: 0.6712\n", "Epoch 80/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0555 - accuracy: 0.6629 - val_loss: 0.0547 - val_accuracy: 0.6749\n", "Epoch 81/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0551 - accuracy: 0.6671 - val_loss: 0.0543 - val_accuracy: 0.6780\n", "Epoch 82/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0547 - accuracy: 0.6722 - val_loss: 0.0539 - val_accuracy: 0.6821\n", "Epoch 83/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0543 - accuracy: 0.6765 - val_loss: 0.0535 - val_accuracy: 0.6860\n", "Epoch 84/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0539 - accuracy: 0.6804 - val_loss: 0.0531 - val_accuracy: 0.6899\n", "Epoch 85/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0535 - accuracy: 0.6839 - val_loss: 0.0528 - val_accuracy: 0.6938\n", "Epoch 86/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0532 - accuracy: 0.6884 - val_loss: 0.0524 - val_accuracy: 0.6977\n", "Epoch 87/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0528 - accuracy: 0.6923 - val_loss: 0.0520 - val_accuracy: 0.7023\n", "Epoch 88/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0524 - accuracy: 0.6966 - val_loss: 0.0516 - val_accuracy: 0.7063\n", "Epoch 89/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0521 - accuracy: 0.6999 - val_loss: 0.0513 - val_accuracy: 0.7102\n", "Epoch 90/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0517 - accuracy: 0.7035 - val_loss: 0.0509 - val_accuracy: 0.7128\n", "Epoch 91/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0513 - accuracy: 0.7064 - val_loss: 0.0505 - val_accuracy: 0.7169\n", "Epoch 92/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0510 - accuracy: 0.7099 - val_loss: 0.0502 - val_accuracy: 0.7193\n", "Epoch 93/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0506 - accuracy: 0.7126 - val_loss: 0.0498 - val_accuracy: 0.7230\n", "Epoch 94/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0503 - accuracy: 0.7155 - val_loss: 0.0495 - val_accuracy: 0.7257\n", "Epoch 95/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0499 - accuracy: 0.7182 - val_loss: 0.0491 - val_accuracy: 0.7288\n", "Epoch 96/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0496 - accuracy: 0.7204 - val_loss: 0.0488 - val_accuracy: 0.7308\n", "Epoch 97/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0493 - accuracy: 0.7233 - val_loss: 0.0484 - val_accuracy: 0.7331\n", "Epoch 98/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0489 - accuracy: 0.7254 - val_loss: 0.0481 - val_accuracy: 0.7362\n", "Epoch 99/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0486 - accuracy: 0.7283 - val_loss: 0.0478 - val_accuracy: 0.7385\n", "Epoch 100/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0483 - accuracy: 0.7308 - val_loss: 0.0474 - val_accuracy: 0.7415\n", "Epoch 101/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0480 - accuracy: 0.7329 - val_loss: 0.0471 - val_accuracy: 0.7436\n", "Epoch 102/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0476 - accuracy: 0.7352 - val_loss: 0.0468 - val_accuracy: 0.7451\n", "Epoch 103/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0473 - accuracy: 0.7378 - val_loss: 0.0465 - val_accuracy: 0.7472\n", "Epoch 104/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0470 - accuracy: 0.7405 - val_loss: 0.0461 - val_accuracy: 0.7504\n", "Epoch 105/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0467 - accuracy: 0.7430 - val_loss: 0.0458 - val_accuracy: 0.7523\n", "Epoch 106/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0464 - accuracy: 0.7446 - val_loss: 0.0455 - val_accuracy: 0.7552\n", "Epoch 107/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0461 - accuracy: 0.7468 - val_loss: 0.0452 - val_accuracy: 0.7561\n", "Epoch 108/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0458 - accuracy: 0.7491 - val_loss: 0.0449 - val_accuracy: 0.7591\n", "Epoch 109/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0455 - accuracy: 0.7511 - val_loss: 0.0446 - val_accuracy: 0.7609\n", "Epoch 110/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0452 - accuracy: 0.7533 - val_loss: 0.0443 - val_accuracy: 0.7630\n", "Epoch 111/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0449 - accuracy: 0.7555 - val_loss: 0.0440 - val_accuracy: 0.7648\n", "Epoch 112/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0446 - accuracy: 0.7572 - val_loss: 0.0437 - val_accuracy: 0.7674\n", "Epoch 113/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0443 - accuracy: 0.7589 - val_loss: 0.0434 - val_accuracy: 0.7694\n", "Epoch 114/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0440 - accuracy: 0.7610 - val_loss: 0.0431 - val_accuracy: 0.7713\n", "Epoch 115/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0437 - accuracy: 0.7633 - val_loss: 0.0428 - val_accuracy: 0.7728\n", "Epoch 116/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0435 - accuracy: 0.7653 - val_loss: 0.0426 - val_accuracy: 0.7746\n", "Epoch 117/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0432 - accuracy: 0.7671 - val_loss: 0.0423 - val_accuracy: 0.7763\n", "Epoch 118/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0429 - accuracy: 0.7687 - val_loss: 0.0420 - val_accuracy: 0.7782\n", "Epoch 119/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0426 - accuracy: 0.7711 - val_loss: 0.0417 - val_accuracy: 0.7803\n", "Epoch 120/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0424 - accuracy: 0.7730 - val_loss: 0.0415 - val_accuracy: 0.7834\n", "Epoch 121/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0421 - accuracy: 0.7749 - val_loss: 0.0412 - val_accuracy: 0.7859\n", "Epoch 122/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0419 - accuracy: 0.7770 - val_loss: 0.0409 - val_accuracy: 0.7883\n", "Epoch 123/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0416 - accuracy: 0.7789 - val_loss: 0.0407 - val_accuracy: 0.7899\n", "Epoch 124/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0413 - accuracy: 0.7806 - val_loss: 0.0404 - val_accuracy: 0.7916\n", "Epoch 125/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0411 - accuracy: 0.7829 - val_loss: 0.0402 - val_accuracy: 0.7933\n", "Epoch 126/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0408 - accuracy: 0.7850 - val_loss: 0.0399 - val_accuracy: 0.7953\n", "Epoch 127/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0406 - accuracy: 0.7864 - val_loss: 0.0397 - val_accuracy: 0.7971\n", "Epoch 128/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0403 - accuracy: 0.7886 - val_loss: 0.0394 - val_accuracy: 0.7983\n", "Epoch 129/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0401 - accuracy: 0.7905 - val_loss: 0.0392 - val_accuracy: 0.8001\n", "Epoch 130/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0399 - accuracy: 0.7926 - val_loss: 0.0389 - val_accuracy: 0.8020\n", "Epoch 131/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0396 - accuracy: 0.7938 - val_loss: 0.0387 - val_accuracy: 0.8042\n", "Epoch 132/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0394 - accuracy: 0.7960 - val_loss: 0.0384 - val_accuracy: 0.8060\n", "Epoch 133/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0391 - accuracy: 0.7982 - val_loss: 0.0382 - val_accuracy: 0.8074\n", "Epoch 134/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0389 - accuracy: 0.8001 - val_loss: 0.0380 - val_accuracy: 0.8096\n", "Epoch 135/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0387 - accuracy: 0.8016 - val_loss: 0.0378 - val_accuracy: 0.8110\n", "Epoch 136/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0385 - accuracy: 0.8034 - val_loss: 0.0375 - val_accuracy: 0.8129\n", "Epoch 137/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0382 - accuracy: 0.8053 - val_loss: 0.0373 - val_accuracy: 0.8148\n", "Epoch 138/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0380 - accuracy: 0.8070 - val_loss: 0.0371 - val_accuracy: 0.8165\n", "Epoch 139/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0378 - accuracy: 0.8089 - val_loss: 0.0369 - val_accuracy: 0.8178\n", "Epoch 140/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0376 - accuracy: 0.8102 - val_loss: 0.0366 - val_accuracy: 0.8195\n", "Epoch 141/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0374 - accuracy: 0.8120 - val_loss: 0.0364 - val_accuracy: 0.8216\n", "Epoch 142/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0372 - accuracy: 0.8134 - val_loss: 0.0362 - val_accuracy: 0.8242\n", "Epoch 143/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0370 - accuracy: 0.8150 - val_loss: 0.0360 - val_accuracy: 0.8259\n", "Epoch 144/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0368 - accuracy: 0.8166 - val_loss: 0.0358 - val_accuracy: 0.8269\n", "Epoch 145/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0365 - accuracy: 0.8179 - val_loss: 0.0356 - val_accuracy: 0.8283\n", "Epoch 146/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0363 - accuracy: 0.8190 - val_loss: 0.0354 - val_accuracy: 0.8291\n", "Epoch 147/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0361 - accuracy: 0.8206 - val_loss: 0.0352 - val_accuracy: 0.8302\n", "Epoch 148/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0360 - accuracy: 0.8220 - val_loss: 0.0350 - val_accuracy: 0.8309\n", "Epoch 149/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0358 - accuracy: 0.8230 - val_loss: 0.0348 - val_accuracy: 0.8320\n", "Epoch 150/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0356 - accuracy: 0.8245 - val_loss: 0.0346 - val_accuracy: 0.8337\n", "Epoch 151/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0354 - accuracy: 0.8255 - val_loss: 0.0344 - val_accuracy: 0.8352\n", "Epoch 152/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0352 - accuracy: 0.8265 - val_loss: 0.0342 - val_accuracy: 0.8361\n", "Epoch 153/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0350 - accuracy: 0.8284 - val_loss: 0.0340 - val_accuracy: 0.8374\n", "Epoch 154/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0348 - accuracy: 0.8291 - val_loss: 0.0338 - val_accuracy: 0.8381\n", "Epoch 155/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0346 - accuracy: 0.8306 - val_loss: 0.0337 - val_accuracy: 0.8394\n", "Epoch 156/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0345 - accuracy: 0.8316 - val_loss: 0.0335 - val_accuracy: 0.8409\n", "Epoch 157/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0343 - accuracy: 0.8325 - val_loss: 0.0333 - val_accuracy: 0.8417\n", "Epoch 158/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0341 - accuracy: 0.8336 - val_loss: 0.0331 - val_accuracy: 0.8426\n", "Epoch 159/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0339 - accuracy: 0.8344 - val_loss: 0.0330 - val_accuracy: 0.8434\n", "Epoch 160/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0338 - accuracy: 0.8354 - val_loss: 0.0328 - val_accuracy: 0.8443\n", "Epoch 161/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0336 - accuracy: 0.8363 - val_loss: 0.0326 - val_accuracy: 0.8456\n", "Epoch 162/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0334 - accuracy: 0.8373 - val_loss: 0.0324 - val_accuracy: 0.8463\n", "Epoch 163/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0333 - accuracy: 0.8388 - val_loss: 0.0323 - val_accuracy: 0.8472\n", "Epoch 164/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0331 - accuracy: 0.8394 - val_loss: 0.0321 - val_accuracy: 0.8483\n", "Epoch 165/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0329 - accuracy: 0.8404 - val_loss: 0.0319 - val_accuracy: 0.8500\n", "Epoch 166/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0328 - accuracy: 0.8410 - val_loss: 0.0318 - val_accuracy: 0.8501\n", "Epoch 167/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0326 - accuracy: 0.8419 - val_loss: 0.0316 - val_accuracy: 0.8504\n", "Epoch 168/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0324 - accuracy: 0.8428 - val_loss: 0.0315 - val_accuracy: 0.8508\n", "Epoch 169/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0323 - accuracy: 0.8437 - val_loss: 0.0313 - val_accuracy: 0.8517\n", "Epoch 170/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0321 - accuracy: 0.8442 - val_loss: 0.0312 - val_accuracy: 0.8520\n", "Epoch 171/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0320 - accuracy: 0.8450 - val_loss: 0.0310 - val_accuracy: 0.8529\n", "Epoch 172/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0318 - accuracy: 0.8457 - val_loss: 0.0309 - val_accuracy: 0.8536\n", "Epoch 173/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0317 - accuracy: 0.8465 - val_loss: 0.0307 - val_accuracy: 0.8541\n", "Epoch 174/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0315 - accuracy: 0.8471 - val_loss: 0.0306 - val_accuracy: 0.8547\n", "Epoch 175/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0314 - accuracy: 0.8476 - val_loss: 0.0304 - val_accuracy: 0.8552\n", "Epoch 176/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0313 - accuracy: 0.8484 - val_loss: 0.0303 - val_accuracy: 0.8559\n", "Epoch 177/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0311 - accuracy: 0.8492 - val_loss: 0.0301 - val_accuracy: 0.8566\n", "Epoch 178/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0310 - accuracy: 0.8498 - val_loss: 0.0300 - val_accuracy: 0.8567\n", "Epoch 179/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0308 - accuracy: 0.8505 - val_loss: 0.0299 - val_accuracy: 0.8576\n", "Epoch 180/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0307 - accuracy: 0.8513 - val_loss: 0.0297 - val_accuracy: 0.8582\n", "Epoch 181/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0306 - accuracy: 0.8517 - val_loss: 0.0296 - val_accuracy: 0.8588\n", "Epoch 182/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0304 - accuracy: 0.8522 - val_loss: 0.0295 - val_accuracy: 0.8596\n", "Epoch 183/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0303 - accuracy: 0.8528 - val_loss: 0.0293 - val_accuracy: 0.8596\n", "Epoch 184/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0302 - accuracy: 0.8532 - val_loss: 0.0292 - val_accuracy: 0.8604\n", "Epoch 185/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0300 - accuracy: 0.8537 - val_loss: 0.0291 - val_accuracy: 0.8606\n", "Epoch 186/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0299 - accuracy: 0.8544 - val_loss: 0.0289 - val_accuracy: 0.8617\n", "Epoch 187/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0298 - accuracy: 0.8547 - val_loss: 0.0288 - val_accuracy: 0.8621\n", "Epoch 188/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0297 - accuracy: 0.8549 - val_loss: 0.0287 - val_accuracy: 0.8628\n", "Epoch 189/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0295 - accuracy: 0.8556 - val_loss: 0.0286 - val_accuracy: 0.8632\n", "Epoch 190/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0294 - accuracy: 0.8560 - val_loss: 0.0284 - val_accuracy: 0.8633\n", "Epoch 191/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0293 - accuracy: 0.8565 - val_loss: 0.0283 - val_accuracy: 0.8637\n", "Epoch 192/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0292 - accuracy: 0.8569 - val_loss: 0.0282 - val_accuracy: 0.8640\n", "Epoch 193/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0291 - accuracy: 0.8574 - val_loss: 0.0281 - val_accuracy: 0.8647\n", "Epoch 194/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0290 - accuracy: 0.8578 - val_loss: 0.0280 - val_accuracy: 0.8650\n", "Epoch 195/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0288 - accuracy: 0.8582 - val_loss: 0.0278 - val_accuracy: 0.8654\n", "Epoch 196/200\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0287 - accuracy: 0.8586 - val_loss: 0.0277 - val_accuracy: 0.8661\n", "Epoch 197/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0286 - accuracy: 0.8590 - val_loss: 0.0276 - val_accuracy: 0.8666\n", "Epoch 198/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0285 - accuracy: 0.8594 - val_loss: 0.0275 - val_accuracy: 0.8670\n", "Epoch 199/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0284 - accuracy: 0.8596 - val_loss: 0.0274 - val_accuracy: 0.8672\n", "Epoch 200/200\n", "469/469 [==============================] - 2s 3ms/step - loss: 0.0283 - accuracy: 0.8600 - val_loss: 0.0273 - val_accuracy: 0.8673\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": {}, "execution_count": 23 } ] }, { "cell_type": "code", "metadata": { "id": "ykDsBpeXwtpE", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "ae8f7851-8da6-47d5-b95e-f4db8ec0ca91" }, "source": [ "model.evaluate(X_valid, y_valid)" ], "execution_count": 24, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "313/313 [==============================] - 1s 2ms/step - loss: 0.0273 - accuracy: 0.8673\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "[0.027292510494589806, 0.8672999739646912]" ] }, "metadata": {}, "execution_count": 24 } ] } ] }