Last active
February 6, 2019 11:00
-
-
Save x1001000/a5926825f2df7c07c1896dc56a3a2374 to your computer and use it in GitHub Desktop.
week3.ipynb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"nbformat": 4, | |
"nbformat_minor": 0, | |
"metadata": { | |
"colab": { | |
"name": "week3.ipynb", | |
"version": "0.3.2", | |
"provenance": [], | |
"collapsed_sections": [], | |
"include_colab_link": true | |
}, | |
"kernelspec": { | |
"name": "python3", | |
"display_name": "Python 3" | |
}, | |
"accelerator": "GPU" | |
}, | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "view-in-github", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"<a href=\"https://colab.research.google.com/gist/x1001000/a5926825f2df7c07c1896dc56a3a2374/week3.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" | |
] | |
}, | |
{ | |
"metadata": { | |
"id": "DtxKXfrD6nnS", | |
"colab_type": "text" | |
}, | |
"cell_type": "markdown", | |
"source": [ | |
"# Data" | |
] | |
}, | |
{ | |
"metadata": { | |
"id": "i0Fc3j_p6nnT", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"cell_type": "code", | |
"source": [ | |
"import numpy as np\n", | |
"import matplotlib.pyplot as plt" | |
], | |
"execution_count": 1, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"id": "_ro8Akjd6nnY", | |
"colab_type": "code", | |
"outputId": "f7cc2a58-21dc-438f-b5db-25c8e6c58bad", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 68 | |
} | |
}, | |
"cell_type": "code", | |
"source": [ | |
"from keras.datasets import mnist\n", | |
"(x_train, y_train), (x_test, y_test) = mnist.load_data()\n", | |
"x_train = x_train.reshape(60000, 28, 28, 1) / 255\n", | |
"x_test = x_test.reshape(10000, 28, 28, 1) / 255" | |
], | |
"execution_count": 2, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"Using TensorFlow backend.\n" | |
], | |
"name": "stderr" | |
}, | |
{ | |
"output_type": "stream", | |
"text": [ | |
"Downloading data from https://s3.amazonaws.com/img-datasets/mnist.npz\n", | |
"11493376/11490434 [==============================] - 3s 0us/step\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"id": "9c7RCtEE6nni", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"cell_type": "code", | |
"source": [ | |
"from keras.utils import np_utils\n", | |
"y_train = np_utils.to_categorical(y_train, 10)\n", | |
"y_test = np_utils.to_categorical(y_test, 10)" | |
], | |
"execution_count": 3, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"id": "nHkLCQAq6nnq", | |
"colab_type": "text" | |
}, | |
"cell_type": "markdown", | |
"source": [ | |
"# Model" | |
] | |
}, | |
{ | |
"metadata": { | |
"id": "O92BdUsc4ay1", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"cell_type": "code", | |
"source": [ | |
"from keras.models import Sequential\n", | |
"from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense\n", | |
"from keras.optimizers import SGD" | |
], | |
"execution_count": 4, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"id": "vXOYizQ56nnv", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"cell_type": "code", | |
"source": [ | |
"model = Sequential()\n", | |
"#1\n", | |
"model.add(Conv2D(filters=32,\n", | |
" kernel_size=(3,3),\n", | |
" padding='same',\n", | |
" input_shape=(28,28,1), \n", | |
" activation='relu'))\n", | |
"#2\n", | |
"model.add(MaxPooling2D(pool_size=(2,2)))\n", | |
"#3\n", | |
"model.add(Conv2D(filters=64,\n", | |
" kernel_size=(3,3),\n", | |
" padding='same',\n", | |
" activation='relu'))\n", | |
"#4\n", | |
"model.add(MaxPooling2D(pool_size=(2,2)))\n", | |
"#5\n", | |
"model.add(Conv2D(filters=128,\n", | |
" kernel_size=(3,3),\n", | |
" padding='same',\n", | |
" activation='relu'))\n", | |
"#6\n", | |
"model.add(MaxPooling2D(pool_size=(2,2)))\n", | |
"#7\n", | |
"model.add(Flatten())\n", | |
"model.add(Dense(200, activation='relu'))\n", | |
"#8\n", | |
"model.add(Dense(10, activation='softmax'))" | |
], | |
"execution_count": 5, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"id": "uypLOJ8D6nn1", | |
"colab_type": "code", | |
"colab": {} | |
}, | |
"cell_type": "code", | |
"source": [ | |
"model.compile(loss='MSE',\n", | |
" optimizer=SGD(lr=0.05),\n", | |
" metrics=['accuracy'])" | |
], | |
"execution_count": 6, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"id": "wD6bTV_k6nn5", | |
"colab_type": "code", | |
"outputId": "dcd69c1e-06dd-4ff6-85a6-0baa083e9f6c", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 442 | |
} | |
}, | |
"cell_type": "code", | |
"source": [ | |
"model.summary()" | |
], | |
"execution_count": 7, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"_________________________________________________________________\n", | |
"Layer (type) Output Shape Param # \n", | |
"=================================================================\n", | |
"conv2d_1 (Conv2D) (None, 28, 28, 32) 320 \n", | |
"_________________________________________________________________\n", | |
"max_pooling2d_1 (MaxPooling2 (None, 14, 14, 32) 0 \n", | |
"_________________________________________________________________\n", | |
"conv2d_2 (Conv2D) (None, 14, 14, 64) 18496 \n", | |
"_________________________________________________________________\n", | |
"max_pooling2d_2 (MaxPooling2 (None, 7, 7, 64) 0 \n", | |
"_________________________________________________________________\n", | |
"conv2d_3 (Conv2D) (None, 7, 7, 128) 73856 \n", | |
"_________________________________________________________________\n", | |
"max_pooling2d_3 (MaxPooling2 (None, 3, 3, 128) 0 \n", | |
"_________________________________________________________________\n", | |
"flatten_1 (Flatten) (None, 1152) 0 \n", | |
"_________________________________________________________________\n", | |
"dense_1 (Dense) (None, 200) 230600 \n", | |
"_________________________________________________________________\n", | |
"dense_2 (Dense) (None, 10) 2010 \n", | |
"=================================================================\n", | |
"Total params: 325,282\n", | |
"Trainable params: 325,282\n", | |
"Non-trainable params: 0\n", | |
"_________________________________________________________________\n" | |
], | |
"name": "stdout" | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"id": "5sV1s2sL6nn9", | |
"colab_type": "text" | |
}, | |
"cell_type": "markdown", | |
"source": [ | |
"# Train" | |
] | |
}, | |
{ | |
"metadata": { | |
"id": "x6IpaIr76nn-", | |
"colab_type": "code", | |
"outputId": "efabf86b-2061-44ed-9729-6a7856a9aaab", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 1054 | |
} | |
}, | |
"cell_type": "code", | |
"source": [ | |
"from time import time\n", | |
"t = time()\n", | |
"model.fit(x_train, y_train, batch_size=100, epochs=30)" | |
], | |
"execution_count": 8, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"Epoch 1/30\n", | |
"60000/60000 [==============================] - 11s 181us/step - loss: 0.0898 - acc: 0.1829\n", | |
"Epoch 2/30\n", | |
"60000/60000 [==============================] - 7s 110us/step - loss: 0.0887 - acc: 0.2875\n", | |
"Epoch 3/30\n", | |
"60000/60000 [==============================] - 7s 109us/step - loss: 0.0860 - acc: 0.3214\n", | |
"Epoch 4/30\n", | |
"60000/60000 [==============================] - 7s 109us/step - loss: 0.0646 - acc: 0.5640\n", | |
"Epoch 5/30\n", | |
"60000/60000 [==============================] - 7s 109us/step - loss: 0.0268 - acc: 0.8454\n", | |
"Epoch 6/30\n", | |
"60000/60000 [==============================] - 7s 110us/step - loss: 0.0156 - acc: 0.9057\n", | |
"Epoch 7/30\n", | |
"60000/60000 [==============================] - 7s 111us/step - loss: 0.0119 - acc: 0.9263\n", | |
"Epoch 8/30\n", | |
"60000/60000 [==============================] - 7s 110us/step - loss: 0.0099 - acc: 0.9385\n", | |
"Epoch 9/30\n", | |
"60000/60000 [==============================] - 7s 110us/step - loss: 0.0086 - acc: 0.9465\n", | |
"Epoch 10/30\n", | |
"60000/60000 [==============================] - 7s 111us/step - loss: 0.0076 - acc: 0.9526\n", | |
"Epoch 11/30\n", | |
"60000/60000 [==============================] - 7s 111us/step - loss: 0.0068 - acc: 0.9583\n", | |
"Epoch 12/30\n", | |
"60000/60000 [==============================] - 7s 111us/step - loss: 0.0063 - acc: 0.9605\n", | |
"Epoch 13/30\n", | |
"60000/60000 [==============================] - 7s 111us/step - loss: 0.0058 - acc: 0.9642\n", | |
"Epoch 14/30\n", | |
"60000/60000 [==============================] - 7s 110us/step - loss: 0.0054 - acc: 0.9673\n", | |
"Epoch 15/30\n", | |
"60000/60000 [==============================] - 7s 110us/step - loss: 0.0050 - acc: 0.9694\n", | |
"Epoch 16/30\n", | |
"60000/60000 [==============================] - 7s 110us/step - loss: 0.0048 - acc: 0.9706\n", | |
"Epoch 17/30\n", | |
"60000/60000 [==============================] - 7s 111us/step - loss: 0.0045 - acc: 0.9712\n", | |
"Epoch 18/30\n", | |
"60000/60000 [==============================] - 7s 111us/step - loss: 0.0043 - acc: 0.9733\n", | |
"Epoch 19/30\n", | |
"60000/60000 [==============================] - 7s 111us/step - loss: 0.0042 - acc: 0.9743\n", | |
"Epoch 20/30\n", | |
"60000/60000 [==============================] - 7s 111us/step - loss: 0.0040 - acc: 0.9755\n", | |
"Epoch 21/30\n", | |
"60000/60000 [==============================] - 7s 111us/step - loss: 0.0038 - acc: 0.9763\n", | |
"Epoch 22/30\n", | |
"60000/60000 [==============================] - 7s 112us/step - loss: 0.0037 - acc: 0.9765\n", | |
"Epoch 23/30\n", | |
"60000/60000 [==============================] - 7s 111us/step - loss: 0.0036 - acc: 0.9778\n", | |
"Epoch 24/30\n", | |
"60000/60000 [==============================] - 7s 111us/step - loss: 0.0035 - acc: 0.9785\n", | |
"Epoch 25/30\n", | |
"60000/60000 [==============================] - 7s 111us/step - loss: 0.0034 - acc: 0.9795\n", | |
"Epoch 26/30\n", | |
"60000/60000 [==============================] - 7s 111us/step - loss: 0.0032 - acc: 0.9803\n", | |
"Epoch 27/30\n", | |
"60000/60000 [==============================] - 7s 111us/step - loss: 0.0032 - acc: 0.9804\n", | |
"Epoch 28/30\n", | |
"60000/60000 [==============================] - 7s 111us/step - loss: 0.0031 - acc: 0.9809\n", | |
"Epoch 29/30\n", | |
"60000/60000 [==============================] - 7s 111us/step - loss: 0.0030 - acc: 0.9820\n", | |
"Epoch 30/30\n", | |
"60000/60000 [==============================] - 7s 109us/step - loss: 0.0029 - acc: 0.9821\n" | |
], | |
"name": "stdout" | |
}, | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"<keras.callbacks.History at 0x7f356f9a18d0>" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 8 | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"id": "7tehj-Fl6noB", | |
"colab_type": "code", | |
"outputId": "5046a9ed-f3f2-41df-c6fa-6b456246e162", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 34 | |
} | |
}, | |
"cell_type": "code", | |
"source": [ | |
"time() - t" | |
], | |
"execution_count": 9, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"203.50480675697327" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 9 | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"id": "T0roX8gKG3kk", | |
"colab_type": "code", | |
"outputId": "774e8a5c-13ae-4d1d-bd1b-7783c0251dfd", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 51 | |
} | |
}, | |
"cell_type": "code", | |
"source": [ | |
"loss, accuracy = model.evaluate(x_test, y_test)\n", | |
"accuracy" | |
], | |
"execution_count": 10, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": [ | |
"10000/10000 [==============================] - 1s 92us/step\n" | |
], | |
"name": "stdout" | |
}, | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"0.9802" | |
] | |
}, | |
"metadata": { | |
"tags": [] | |
}, | |
"execution_count": 10 | |
} | |
] | |
} | |
] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment