{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Sequential and Functional Interfaces" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import warnings\n", "warnings.simplefilter(action='ignore', category=FutureWarning)\n", "import h5py\n", "warnings.resetwarnings()\n", "warnings.simplefilter(action='ignore', category=ImportWarning)\n", "warnings.simplefilter(action='ignore', category=RuntimeWarning)\n", "warnings.simplefilter(action='ignore', category=DeprecationWarning)\n", "warnings.simplefilter(action='ignore', category=ResourceWarning)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Using TensorFlow backend.\n" ] } ], "source": [ "from keras import models\n", "from keras import layers\n", "from keras import optimizers" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "from keras.utils import to_categorical\n", "from keras.datasets import mnist" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "(X_train, y_train), (X_test, y_test) = mnist.load_data()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "X_train = X_train.reshape((-1, 28*28))\n", "X_train = X_train.astype('float32')/255\n", "X_test = X_test.reshape((-1, 28*28))\n", "X_test = X_test.astype('float32')/255\n", "y_train = to_categorical(y_train)\n", "y_test = to_categorical(y_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Sequential Model" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "model = models.Sequential()\n", "model.add(layers.Dense(32, activation='relu', input_shape=(28*28,)))\n", "model.add(layers.Dense(10, activation='softmax'))" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "model.compile(optimizer='rmsprop',\n", " loss='categorical_crossentropy',\n", " metrics=['accuracy'])" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/10\n", "60000/60000 [==============================] - 7s 113us/step - loss: 0.4663 - acc: 0.8763\n", "Epoch 2/10\n", "60000/60000 [==============================] - 1s 22us/step - loss: 0.2368 - acc: 0.9319\n", "Epoch 3/10\n", "60000/60000 [==============================] - 1s 22us/step - loss: 0.1959 - acc: 0.9429\n", "Epoch 4/10\n", "60000/60000 [==============================] - 1s 22us/step - loss: 0.1701 - acc: 0.9505\n", "Epoch 5/10\n", "60000/60000 [==============================] - 1s 22us/step - loss: 0.1519 - acc: 0.9554\n", "Epoch 6/10\n", "60000/60000 [==============================] - 1s 23us/step - loss: 0.1380 - acc: 0.9591\n", "Epoch 7/10\n", "60000/60000 [==============================] - 1s 22us/step - loss: 0.1265 - acc: 0.9634\n", "Epoch 8/10\n", "60000/60000 [==============================] - 1s 22us/step - loss: 0.1175 - acc: 0.9660\n", "Epoch 9/10\n", "60000/60000 [==============================] - 1s 22us/step - loss: 0.1104 - acc: 0.9675\n", "Epoch 10/10\n", "60000/60000 [==============================] - 1s 21us/step - loss: 0.1038 - acc: 0.9688\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.fit(X_train, y_train, \n", " batch_size=128, epochs=10)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "10000/10000 [==============================] - 0s 38us/step\n" ] } ], "source": [ "test_loss, test_acc = model.evaluate(X_test, y_test)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.12339150645062327, 0.9629)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_loss, test_acc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Functional Model" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "input_tensor = layers.Input(shape=(784,))\n", "x = layers.Dense(32, activation='relu')(input_tensor)\n", "output_tensor = layers.Dense(10, activation='softmax')(x)\n", "model = models.Model(inputs=input_tensor, outputs=output_tensor)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "model.compile(optimizer='rmsprop',\n", " loss='categorical_crossentropy',\n", " metrics=['accuracy'])" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/10\n", "60000/60000 [==============================] - 1s 23us/step - loss: 0.4438 - acc: 0.8815\n", "Epoch 2/10\n", "60000/60000 [==============================] - 1s 21us/step - loss: 0.2417 - acc: 0.9304\n", "Epoch 3/10\n", "60000/60000 [==============================] - 1s 22us/step - loss: 0.1989 - acc: 0.9432\n", "Epoch 4/10\n", "60000/60000 [==============================] - 1s 22us/step - loss: 0.1719 - acc: 0.9506\n", "Epoch 5/10\n", "60000/60000 [==============================] - 1s 22us/step - loss: 0.1527 - acc: 0.9558\n", "Epoch 6/10\n", "60000/60000 [==============================] - 1s 22us/step - loss: 0.1384 - acc: 0.9600\n", "Epoch 7/10\n", "60000/60000 [==============================] - 1s 21us/step - loss: 0.1272 - acc: 0.9631\n", "Epoch 8/10\n", "60000/60000 [==============================] - 1s 22us/step - loss: 0.1174 - acc: 0.9655\n", "Epoch 9/10\n", "60000/60000 [==============================] - 1s 22us/step - loss: 0.1104 - acc: 0.9677\n", "Epoch 10/10\n", "60000/60000 [==============================] - 1s 22us/step - loss: 0.1034 - acc: 0.9699\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.fit(X_train, y_train, \n", " batch_size=128, epochs=10)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "10000/10000 [==============================] - 0s 40us/step\n" ] } ], "source": [ "test_loss, test_acc = model.evaluate(X_test, y_test)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.12404100528806448, 0.964)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_loss, test_acc" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.5" } }, "nbformat": 4, "nbformat_minor": 2 }