├── .github └── workflows │ └── manual.yml ├── .gitignore ├── CODEOWNERS ├── LICENSE.txt ├── README.md ├── cifar10-augmentation ├── aug_model.weights.best.hdf5 └── cifar10_augmentation.ipynb ├── cifar10-classification ├── MLP.weights.best.hdf5 ├── cifar10_cnn.ipynb ├── cifar10_mlp.ipynb └── model.weights.best.hdf5 ├── conv-visualization ├── conv_visualization.ipynb └── images │ └── udacity_sdc.png ├── mnist-mlp ├── mnist.model.best.hdf5 └── mnist_mlp.ipynb ├── requirements ├── dog-linux-gpu.yml ├── dog-linux.yml ├── dog-mac-gpu.yml ├── dog-mac.yml ├── dog-windows-gpu.yml ├── dog-windows.yml ├── requirements-gpu.txt └── requirements.txt └── transfer-learning ├── bottleneck_features.ipynb ├── bottleneck_features └── .gitignore ├── dogvgg16.weights.best.hdf5 ├── figures ├── vgg16.png └── vgg16_transfer.png ├── images ├── American_water_spaniel_00648.jpg ├── Brittany_02625.jpg ├── Curly-coated_retriever_03896.jpg ├── Labrador_retriever_06449.jpg ├── Labrador_retriever_06455.jpg ├── Labrador_retriever_06457.jpg ├── Welsh_springer_spaniel_08203.jpg └── sopa.jpg └── transfer_learning.ipynb /.github/workflows/manual.yml: -------------------------------------------------------------------------------- 1 | # Workflow to ensure whenever a Github PR is submitted, 2 | # a JIRA ticket gets created automatically. 3 | name: Manual Workflow 4 | 5 | # Controls when the action will run. 6 | on: 7 | # Triggers the workflow on pull request events but only for the master branch 8 | pull_request_target: 9 | types: [opened, reopened] 10 | 11 | # Allows you to run this workflow manually from the Actions tab 12 | workflow_dispatch: 13 | 14 | jobs: 15 | test-transition-issue: 16 | name: Convert Github Issue to Jira Issue 17 | runs-on: ubuntu-latest 18 | steps: 19 | - name: Checkout 20 | uses: actions/checkout@master 21 | 22 | - name: Login 23 | uses: atlassian/gajira-login@master 24 | env: 25 | JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }} 26 | JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }} 27 | JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }} 28 | 29 | - name: Create NEW JIRA ticket 30 | id: create 31 | uses: atlassian/gajira-create@master 32 | with: 33 | project: CONUPDATE 34 | issuetype: Task 35 | summary: | 36 | Github PR [Assign the ND component] | Repo: ${{ github.repository }} | PR# ${{github.event.number}} 37 | description: | 38 | Repo link: https://github.com/${{ github.repository }} 39 | PR no. ${{ github.event.pull_request.number }} 40 | PR title: ${{ github.event.pull_request.title }} 41 | PR description: ${{ github.event.pull_request.description }} 42 | In addition, please resolve other issues, if any. 43 | fields: '{"components": [{"name":"Github PR"}], "customfield_16449":"https://classroom.udacity.com/", "customfield_16450":"Resolve the PR", "labels": ["github"], "priority":{"id": "4"}}' 44 | 45 | - name: Log created issue 46 | run: echo "Issue ${{ steps.create.outputs.issue }} was created" 47 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | mnist-mlp/.ipynb_checkpoints/ 3 | mnist-mlp/.DS_Store 4 | conv-visualization/.ipynb_checkpoints/ 5 | conv-visualization/.DS_Store 6 | cifar10-classification/.ipynb_checkpoints/ 7 | cifar10-classification/.DS_Store 8 | cifar10-augmentation/.ipynb_checkpoints/ 9 | cifar10-augmentation/.DS_Store 10 | transfer-learning/dogImages 11 | transfer-learning/bottleneck_features/DogVGG16Data.npz 12 | transfer-learning/.ipynb_checkpoints/ 13 | transfer-learning/.DS_Store 14 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | s is a comment. 2 | # Each line is a file pattern followed by one or more owners. 3 | 4 | # These owners will be the default owners for everything in 5 | # the repo. 6 | * @alexisbcook @cgearhart @luisguiserrano 7 | 8 | 9 | * @udacity/active-public-content -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2017 Udacity, Inc. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | SOFTWARE. 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # aind2-cnn 2 | 3 | ### Instructions 4 | 5 | 1. Clone the repository and navigate to the downloaded folder. 6 | 7 | ``` 8 | git clone https://github.com/udacity/aind2-cnn.git 9 | cd aind2-cnn 10 | ``` 11 | 12 | 2. (Optional) __If you plan to install TensorFlow with GPU support on your local machine__, follow [the guide](https://www.tensorflow.org/install/) to install the necessary NVIDIA software on your system. If you are using an EC2 GPU instance, you can skip this step. 13 | 14 | 3. (Optional) **If you are running the project on your local machine (and not using AWS)**, create (and activate) a new environment. 15 | 16 | - __Linux__ (to install with __GPU support__, change `requirements/dog-linux.yml` to `requirements/dog-linux-gpu.yml`): 17 | ``` 18 | conda env create -f requirements/dog-linux.yml 19 | source activate dog-project 20 | ``` 21 | - __Mac__ (to install with __GPU support__, change `requirements/dog-mac.yml` to `requirements/dog-mac-gpu.yml`): 22 | ``` 23 | conda env create -f requirements/dog-mac.yml 24 | source activate dog-project 25 | ``` 26 | - __Windows__ (to install with __GPU support__, change `requirements/dog-windows.yml` to `requirements/dog-windows-gpu.yml`): 27 | ``` 28 | conda env create -f requirements/dog-windows.yml 29 | activate dog-project 30 | ``` 31 | 32 | 4. (Optional) **If you are running the project on your local machine (and not using AWS)** and Step 6 throws errors, try this __alternative__ step to create your environment. 33 | 34 | - __Linux__ or __Mac__ (to install with __GPU support__, change `requirements/requirements.txt` to `requirements/requirements-gpu.txt`): 35 | ``` 36 | conda create --name dog-project python=3.5 37 | source activate dog-project 38 | pip install -r requirements/requirements.txt 39 | ``` 40 | - __Windows__ (to install with __GPU support__, change `requirements/requirements.txt` to `requirements/requirements-gpu.txt`): 41 | ``` 42 | conda create --name dog-project python=3.5 43 | activate dog-project 44 | pip install -r requirements/requirements.txt 45 | ``` 46 | 47 | 5. (Optional) **If you are using AWS**, install Tensorflow. 48 | ``` 49 | sudo python3 -m pip install -r requirements/requirements-gpu.txt 50 | ``` 51 | 52 | 6. Switch [Keras backend](https://keras.io/backend/) to TensorFlow. 53 | - __Linux__ or __Mac__: 54 | ``` 55 | KERAS_BACKEND=tensorflow python -c "from keras import backend" 56 | ``` 57 | - __Windows__: 58 | ``` 59 | set KERAS_BACKEND=tensorflow 60 | python -c "from keras import backend" 61 | ``` 62 | 63 | 7. (Optional) **If you are running the project on your local machine (and not using AWS)**, create an [IPython kernel](http://ipython.readthedocs.io/en/stable/install/kernel_install.html) for the `dog-project` environment. 64 | ``` 65 | python -m ipykernel install --user --name dog-project --display-name "dog-project" 66 | ``` 67 | 68 | 8. Launch Jupyter notebook. 69 | ``` 70 | jupyter notebook 71 | ``` 72 | 73 | 9. (Optional) **If you are running the project on your local machine (and not using AWS)**, before running code, change the kernel to match the dog-project environment by using the drop-down menu (**Kernel > Change kernel > dog-project**). 74 | -------------------------------------------------------------------------------- /cifar10-augmentation/aug_model.weights.best.hdf5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udacity/aind2-cnn/4f64fa0a9c4de94a92308ac15fc3fc0335d13b4d/cifar10-augmentation/aug_model.weights.best.hdf5 -------------------------------------------------------------------------------- /cifar10-classification/MLP.weights.best.hdf5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udacity/aind2-cnn/4f64fa0a9c4de94a92308ac15fc3fc0335d13b4d/cifar10-classification/MLP.weights.best.hdf5 -------------------------------------------------------------------------------- /cifar10-classification/model.weights.best.hdf5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udacity/aind2-cnn/4f64fa0a9c4de94a92308ac15fc3fc0335d13b4d/cifar10-classification/model.weights.best.hdf5 -------------------------------------------------------------------------------- /conv-visualization/images/udacity_sdc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udacity/aind2-cnn/4f64fa0a9c4de94a92308ac15fc3fc0335d13b4d/conv-visualization/images/udacity_sdc.png -------------------------------------------------------------------------------- /mnist-mlp/mnist.model.best.hdf5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udacity/aind2-cnn/4f64fa0a9c4de94a92308ac15fc3fc0335d13b4d/mnist-mlp/mnist.model.best.hdf5 -------------------------------------------------------------------------------- /mnist-mlp/mnist_mlp.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Artificial Intelligence Nanodegree\n", 8 | "\n", 9 | "## Convolutional Neural Networks\n", 10 | "\n", 11 | "---\n", 12 | "\n", 13 | "In this notebook, we train an MLP to classify images from the MNIST database.\n", 14 | "\n", 15 | "### 1. Load MNIST Database" 16 | ] 17 | }, 18 | { 19 | "cell_type": "code", 20 | "execution_count": 1, 21 | "metadata": {}, 22 | "outputs": [ 23 | { 24 | "name": "stderr", 25 | "output_type": "stream", 26 | "text": [ 27 | "Using TensorFlow backend.\n" 28 | ] 29 | }, 30 | { 31 | "name": "stdout", 32 | "output_type": "stream", 33 | "text": [ 34 | "The MNIST database has a training set of 60000 examples.\n", 35 | "The MNIST database has a test set of 10000 examples.\n" 36 | ] 37 | } 38 | ], 39 | "source": [ 40 | "from keras.datasets import mnist\n", 41 | "\n", 42 | "# use Keras to import pre-shuffled MNIST database\n", 43 | "(X_train, y_train), (X_test, y_test) = mnist.load_data()\n", 44 | "\n", 45 | "print(\"The MNIST database has a training set of %d examples.\" % len(X_train))\n", 46 | "print(\"The MNIST database has a test set of %d examples.\" % len(X_test))" 47 | ] 48 | }, 49 | { 50 | "cell_type": "markdown", 51 | "metadata": {}, 52 | "source": [ 53 | "### 2. Visualize the First Six Training Images" 54 | ] 55 | }, 56 | { 57 | "cell_type": "code", 58 | "execution_count": 2, 59 | "metadata": {}, 60 | "outputs": [ 61 | { 62 | "data": { 63 | "image/png": "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\nPx3mhx56aCn7+te/HtZOmDAhzE844YQw33DDDUvZnnvuWdUiy7jowNKUUlphhRXC/M033yxlN954\nY6f21Gp9+vQJ89GjRzd8jSlTpoT5j3/84460xL856aSTwvzll18O81122aVL+njllVfC/NZbbw3z\nv/71r2H++OOPd1pPjTj++OPDPDrAM6X40Fho1siRI8O86oD4Zpx77rlLfQ16hjlz5oT5sGHDwvzO\nO+8sZauttlpY++KLL4b5bbfdFubXXHNNKXv33XfD2kmTJoV5dHBsVS1Eqp75o4ODb7755qaufdZZ\nZ4V59Jz8yCOPhLVVX2/RNbbYYosmuqt+7jnnnHNKWbPPfB999FFTvbSaN3EAAAAAasAQBwAAAKAG\nDHEAAAAAasAQBwAAAKAGDHEAAAAAasB2qmVAdPL+9ddfH9ZeddVVYd6rV/y/crfdditlu+++e1j7\nwAMPxA1SW9FJ67Nnz25BJ0uvagvVqFGjwnzEiBGlbObMmWHtRRddFObz589vsDs64rzzzmt1C7Ww\nxx57NFU/efLkLuqEdjR48OAw32uvvZb62lVbfp5//vmlvjY929SpU8O8antNV4mes1NKaciQIWEe\nbXezUZBI7969w7xqg1T03Fvl7rvvDvNLLrkkzKOfVau+1u66664w33LLLUvZwoULw9rzzz8/zKu2\nWR1wwAGlbOLEiWHtH/7whzCPnknfe++9sLbKk08+2VT90vAmDgAAAEANGOIAAAAA1IAhDgAAAEAN\nGOIAAAAA1IAhDgAAAEAN2E7VjQYNGhTm3/jGN0rZ9ttvH9ZWbaGq8uyzz5ayhx56qKlrUF+33357\nq1toWtWmlKpT9w877LAwj7aiHHzwwR1vDGrilltuaXUL1Mi9994b5p/97Gcbvsbjjz8e5sccc0xH\nWoLa6Nu3b5hHW6hSSqkoilI2adKkTu2J+ll++eVL2ZgxY8La008/PcwXLFhQyn70ox+FtVX3XLSF\nKqWUtttuu1J26aWXhrVbb711mM+YMaOUnXjiiWHt/fffH+b9+/cP81122aWUDR8+PKzdf//9w/y+\n++4L88irr74a5uuvv37D11ha3sQBAAAAqAFDHAAAAIAaMMQBAAAAqAFDHAAAAIAaMMQBAAAAqAHb\nqZbSxhtvXMpOPvnksPaggw4K87XWWmup+/jkk0/CfPbs2aWs6sR8ln0556byYcOGlbLTTjutU3ta\n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\nAwAAAFAD/xcDZnijSPDcOAAAAABJRU5ErkJggg==\n", 64 | "text/plain": [ 65 | "" 66 | ] 67 | }, 68 | "metadata": {}, 69 | "output_type": "display_data" 70 | } 71 | ], 72 | "source": [ 73 | "import matplotlib.pyplot as plt\n", 74 | "%matplotlib inline\n", 75 | "import matplotlib.cm as cm\n", 76 | "import numpy as np\n", 77 | "\n", 78 | "# plot first six training images\n", 79 | "fig = plt.figure(figsize=(20,20))\n", 80 | "for i in range(6):\n", 81 | " ax = fig.add_subplot(1, 6, i+1, xticks=[], yticks=[])\n", 82 | " ax.imshow(X_train[i], cmap='gray')\n", 83 | " ax.set_title(str(y_train[i]))" 84 | ] 85 | }, 86 | { 87 | "cell_type": "markdown", 88 | "metadata": {}, 89 | "source": [ 90 | "### 3. View an Image in More Detail" 91 | ] 92 | }, 93 | { 94 | "cell_type": "code", 95 | "execution_count": 3, 96 | "metadata": {}, 97 | "outputs": [ 98 | { 99 | "data": { 100 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAArEAAAKvCAYAAAB9BpfGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlcVPX+x/H3DDOggGiQCyIJpgIqsqSYmmapkWWaa2Ja\n1/Wiol1z4Yal4oJlua/ZdSktSXH/iWlqZoohqbghyAAqg7iXImggfH9/cDkXUhaBM81X38/HYx73\nMgwvvh4JPp4580UjhAARERERkUy0f/cCiIiIiIgeF4dYIiIiIpIOh1giIiIikg6HWCIiIiKSDodY\nIiIiIpIOh1giIiIikg6HWCIiIiKSDodYIiIiIpIOh1giIiIiko7OlJ9Mo9Hw14MRERERUYmEEJrS\nHsMzsUREREQkHQ6xRERERCQdDrFEREREJB0OsUREREQkHQ6xRERERCQdDrFEREREJB2zHGL9/f0R\nHx+PxMREBAcHS9NWuy9rW+0+26bvy9pWu8+26fuyttXuy9pWu8+26fuqrl0IUe4bgNcBJAAwAPh3\nGR4vSrtptVphMBiEq6ur0Ov1IjY2Vnh4eJT6cX93W+a187g8WW2Z187j8mS1ZV47jwuPy9PQNue1\nl2UOLfeZWI1GYwFgCYAuAJoACNBoNE3K2yvg5+cHg8GAlJQU5OTkIDw8HN27d69oVvW22n1Z22r3\n2TZ9X9a22n22Td+Xta12X9a22n22Td9Xe+0VuZzAD4BBCJEshMgGEA6gwitzcnJCamqq8rbRaIST\nk1NFs6q31e7L2la7z7bp+7K21e6zbfq+rG21+7K21e6zbfq+2muvyBDrBCC10NvG/95HRERERKQq\nndqfQKPRDAcwvKyPT0tLg7Ozs/J2vXr1kJaWVilrUbOtdl/Wttp9tk3fl7Wtdp9t0/dlbavdl7Wt\ndp9t0/fVXntFXtTVGsDuQm9/BOCjir6wy8LCQiQlJQkXFxflIuAmTZpUygXGarZlXjuPy5PVlnnt\nPC5PVlvmtfO48Lg8DW1zXnuZZtEKDLE6AMkAXAFYAjgJoGlFh1gAokuXLiIhIUEYDAYREhJSaX9R\nardlXjuPy5PVlnntPC5PVlvmtfO48Lg8DW1zXXtZZlHNf4fLctFoNG8AmA/AAsAqIcTMUh5f/k9G\nRERERE8FIYSmtMdUaIh9XBxiiYiIiKg0ZRlizfI3dhERERERlYRDLBERERFJh0MsEREREUmHQywR\nERERSYdDLBERERFJh0MsEREREUmHQywRERERSYdDLBERERFJh0MsEREREUmHQywRERERSYdDLBER\nERFJh0MsEREREUmHQywRERERSYdDLBERERFJxyyHWH9/f8THxyMxMRHBwcHStNXuy9pWu8+26fuy\nttXus236vqxttfuyttXus236vqprF0KY7AZAlHbTarXCYDAIV1dXodfrRWxsrPDw8Cj14/7utsxr\n53F5stoyr53H5clqy7x2Hhcel6ehbc5rL8tcaXZnYv38/GAwGJCSkoKcnByEh4eje/fuZt9Wuy9r\nW+0+26bvy9pWu8+26fuyttXuy9pWu8+26ftqr93shlgnJyekpqYqbxuNRjg5OZl9W+2+rG21+2yb\nvi9rW+0+26bvy9pWuy9rW+0+26bvq712sxtiiYiIiIhKY3ZDbFpaGpydnZW369Wrh7S0NLNvq92X\nta12n23T92Vtq91n2/R9Wdtq92Vtq91n2/R9tddudi/ssrCwEElJScLFxUW5CLhJkyaVcoGxmm2Z\n187j8mS1ZV47j8uT1ZZ57TwuPC5PQ9uc116mudLchlgAokuXLiIhIUEYDAYREhJSaX9RardlXjuP\ny5PVlnntPC5PVlvmtfO48Lg8DW1zXXtZ5krNf4dLk9BoNKb7ZEREREQkJSGEprTHmN01sURERERE\npeEQS0RERETS4RBLRERERNLhEEtERERE0uEQS0RERETS4RBLRERERNLhEEtERERE0uEQS0RERETS\n4RBLRERERNLhEEtERERE0uEQS0RERETS4RBLRERERNLhEEtERERE0uEQS0RERETSMcsh1t/fH/Hx\n8UhMTERwcLA0bbX7srbV7rNt+r6sbbX7bJu+L2tb7b6sbbX7bJu+r+rahRAmuwEQpd20Wq0wGAzC\n1dVV6PV6ERsbKzw8PEr9uL+7LfPaeVyerLbMa+dxebLaMq+dx4XH5Wlom/PayzJXmt2ZWD8/PxgM\nBqSkpCAnJwfh4eHo3r272bfV7svaVrvPtun7srbV7rNt+r6sbbX7srbV7rNt+r7aaze7IdbJyQmp\nqanK20ajEU5OTmbfVrsva1vtPtum78vaVrvPtun7srbV7svaVrvPtun7aq/d7IZYIiIiIqLSmN0Q\nm5aWBmdnZ+XtevXqIS0tzezbavdlbavdZ9v0fVnbavfZNn1f1rbafVnbavfZNn1f7bWb3Qu7LCws\nRFJSknBxcVEuAm7SpEmlXGCsZlvmtfO4PFltmdfO4/JktWVeO48Lj8vT0DbntZdprjS3IRaA6NKl\ni0hISBAGg0GEhIRU2l+U2m2Z187j8mS1ZV47j8uT1ZZ57TwuPC5PQ9tc116WuVLz3+HSJDQajek+\nGRERERFJSQihKe0xZndNLBERERFRaTjEEhEREZF0OMQSERERkXQ4xBIRERGRdDjEEhEREZF0OMQS\nERERkXQ4xBIRERGRdDjEEhEREZF0OMQSERERkXQ4xBIRERGRdDjEEhEREZF0OMQSERERkXQ4xBIR\nERGRdDjEEhEREZF0zHKI9ff3R3x8PBITExEcHCxNW+2+rG21+2ybvi9rW+0+26bvy9pWuy9rW+0+\n26bvq7p2IYTJbgBEaTetVisMBoNwdXUVer1exMbGCg8Pj1I/7u9uy7x2Hpcnqy3z2nlcnqy2zGvn\nceFxeRra5rz2ssyVZncm1s/PDwaDASkpKcjJyUF4eDi6d+9u9m21+7K21e6zbfq+rG21+2ybvi9r\nW+2+rG21+2ybvq/22s1uiHVyckJqaqryttFohJOTk9m31e7L2la7z7bp+7K21e6zbfq+rG21+7K2\n1e6zbfq+2ms3uyGWiIiIiKg0ZjfEpqWlwdnZWXm7Xr16SEtLM/u22n1Z22r32TZ9X9a22n22Td+X\nta12X9a22n22Td9Xe+1m98IuCwsLkZSUJFxcXJSLgJs0aVIpFxir2ZZ57TwuT1Zb5rXzuDxZbZnX\nzuPC4/I0tM157WWaK81tiAUgunTpIhISEoTBYBAhISGV9heldlvmtfO4PFltmdfO4/JktWVeO48L\nj8vT0DbXtZdlrtT8d7g0CY1GY7pPRkRERERSEkJoSnuM2V0TS0RERERUGg6xRERERCQdDrFERERE\nJB0OsUREREQkHQ6xRERERCQdDrFEREREJB0OsUREREQkHQ6xRERERCQdDrFEREREJB0OsUREREQk\nHQ6xRERERCQdDrFEREREJB0OsUREREQkHQ6xRERERCQdDrFEREREJB2zHGL9/f0RHx+PxMREBAcH\nS9NWuy9rW+0+26bvy9pWu8+26fuyttXuy9pWu8+26fuqrl0IYbIbAFHaTavVCoPBIFxdXYVerxex\nsbHCw8Oj1I/7u9syr53H5clqy7x2Hpcnqy3z2nlceFyehrY5r70sc6XZnYn18/ODwWBASkoKcnJy\nEB4eju7du5t9W+2+rG21+2ybvi9rW+0+26bvy9pWuy9rW+0+26bvq712sxtinZyckJqaqrxtNBrh\n5ORk9m21+7K21e6zbfq+rG21+2ybvi9rW+2+rG21+2ybvq/22s1uiCUiIiIiKo3ZDbFpaWlwdnZW\n3q5Xrx7S0tLMvq12X9a22n22Td+Xta12n23T92Vtq92Xta12n23T99Veu9m9sMvCwkIkJSUJFxcX\n5SLgJk2aVMoFxmq2ZV47j8uT1ZZ57TwuT1Zb5rXzuPC4PA1tc157meZKcxtiAYguXbqIhIQEYTAY\nREhISKX9RandlnntPC5PVlvmtfO4PFltmdfO48Lj8jS0zXXtZZkrNf8dLk1Co9GY7pMRERERkZSE\nEJrSHmN218QSEREREZWGQywRERERSYdDLBERERFJh0MsEREREUmHQywRERERSYdDLBERERFJh0Ms\nEREREUlH93cvgIioMlhYWKjWrl69umptmQUFBanWtra2Vq0NAG5ubqq1R40apVr7iy++UK0NAAEB\nAaq179+/r1r7008/Va0NAKGhoar2qXx4JpaIiIiIpMMhloiIiIikwyGWiIiIiKTDIZaIiIiIpMMh\nloiIiIikwyGWiIiIiKRjlkOsv78/4uPjkZiYiODgYGnaavdlbavdZ9v0fVnbVlZWOHLkCI4dO4aT\nJ09iypQpFeotXLgQ8fHxOHTokHJfs2bNsHv3bhw4cAD79u2Dr6+vWfYru719+3Z88cUXWLZsmXLf\njz/+iCVLlmD58uX4/vvvi2yxdPXqVaxcuRLLli3D8uXL8eDBg2LbGzduxPTp0zFv3jzlvj179mD+\n/PlYsGABVq5ciTt37ijvS09Px9KlSzF37lzMmzcPOTk5Ja590aJFeP/99zFmzBjlvi+++AJjx47F\n2LFjMXz4cIwdOxYAcO3aNbzzzjvK+wr/eUtTt25dbNy4ET/99BP279+PIUOGKO8bNGgQfv75Z+zf\nvx+TJk0qU+/LL79EYGAgJk6cWOT+3bt3Y9y4cZgwYQK+++475f5Lly5h8uTJmDBhAoKDg5GdnV1s\nOzU1Fa+88gqaNGmCpk2bYsGCBQCAqVOnwsnJCd7e3vD29kZkZCQA4MKFC6hatapyf2BgYIltf39/\n+Pj4wNfXF4sXLy7y/vnz56Nq1aq4ceMGAGD9+vVo1aqVcrO2tsbJkyeL7W/btg2ff/45li5dqty3\n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\nM3BycsIvv/yC2rVr448//kCfPn0QGhqqfL95XAWXPeTl5eGbb75Rrp38/ffflWN++fJlGI3GMl8f\n//vvv+PatWvKIOXr64vz58+jZ8+eCAgIQEBAAK5fv47hw4cXueziccn0s8iUfbXXXrYLnEwoNzcX\nQUFB2L17NywsLLBq1SrExcWZfVvtvqxttfsytWvVqoW5c+cqZxv/7//+D/v378fx48exdOlSvPPO\nO0hLS8PIkSPL1a9ZsyZmz56t9Hft2oWffvoJer0es2bNws6dO5GTk1PuLbZGjx4NW1tb5ObmYu3a\ntcqLyMrjq6++QkJCAu7evYuJEyeiW7duSEhIQGpqKjQaDRwcHDBgwIBy9+fPn4+4uDhkZGQgMDAQ\nffv2xauvvvrISwmcnZ3RunVrfPjhh9BqtRgyZEiRnQn+6vDhw1i3bh08PT2VF9XMmDED4eHhOHny\nJDQaDerXr6/spnDo0CHMnj0ber0eWq0WixcvLva6Z1nbMq/9t99+w+bNm+Hu7q6chZ0wYQKmTp2K\n7Oxs5evQx8cHYWFhiI6Oxty5c6HX66HRaBAWFlZkZ4y/mjdvHs6ePYuMjAwMHz5c2c7rUV+Lu3bt\nwpUrVxAREYGIiAgAUC6vMfVx+fXXXxEeHo6mTZsq65w8eTL8/f0f+fgVK1YgOTkZn332GT777DMA\n+QN0zZo1H/n4qVOn4sSJE7h9+zZ69uyJwYMH4969e8rlSS+//DLeeOMNAPm7GqxcuRI6nQ4ajQbj\nx49/rC2xFi5ciEmTJim7MhSsrzLJ9LPIlH211252W2wRPQnKc2amrEraYquiittiqzI86tq/ylTS\nIFFRhbfYoidDwRZbanjU0/eVpfAWW2oo67Wm5fE4L8h6XCVtsVUZKmOnBHo8Um6xRURERERUGg6x\nRERERCQdDrFEREREJB0OsUREREQkHQ6xRERERCQdDrFEREREJB0OsUREREQkHe4TS08lb29vVfvl\n/bWoZVHeX+tKJJO8vDxV+4MHD1atfffuXdXaaiv8274qW0V+I1ZpEhISVGvT34P7xBIRERHRE4lD\nLBERERFJh0MsEREREUmHQywRERERSYdDLBERERFJh0MsEREREUnHLIdYf39/xMfHIzExEcHBwdK0\n1e7L2la7r0Zbq9Vi/fr1WLBgAQCgcePG+Prrr7FhwwbMnz8fNjY2ZeoYjUZ069YNL774Ilq3bo3l\n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\ndu7cSUBAAMOGDdO2jYqKIiMjg9TUVKZOnUpRUdFN71ekZcuW+Pj48P7777NhwwYCAwMrPIv8W7Vq\n1WLu3LmMGTOGwsJC3n//fe666y7uvfdejh49ymuvvVblcQohqs7tJrH5+fkEBQVp3zdq1Kjcl6Tc\npa1336htvfvSdn3fqG09+i1btuTo0aP8/PPPOBwOUlNTCQsLq9IYi4uLGTRoEP3796dXr15kZ2eT\nk5ND+/btsVqtHDp0iLvvvpujR48SEBBQavyHDh0q9+Xv4uJi+vXrx8CBA+nbty8ADRo0wMPDA7PZ\nTGxsLGlpab/bLzw8HG9vb/bs2VPh2PXsO8NsNtO5c2eeeOIJHnroIYqKiqhXr57T+3t6ejJ37lw+\n++wz1qxZA1y+RKGkpASlFB999JF2yUdVGPX3yGi/o9K+uX29x+52k9i0tDRCQ0MJDg7GYrEwYMAA\nUlJS3L6td9+obb370nZ936htPfonTpygWbNmVKtWDQCr1UpeXt5195RSxMXF0axZM+Li4gBo3rw5\ndrudjIwMMjIyaNiwIZs3b6ZBgwb06NGDJUuWcOHCBQ4cOMD+/ftp06ZNme3Y2FjCw8MZOnSotv7q\nyw+WLVtG8+bNAcjOzubSpUvA5UsbMjMzCQ4OLnfsevadVVxczMWLF7XHMJvN+Pn5Ob3/66+/TlZW\nFnPmzNHW3XLLLdrXPXr0YN++fVUep1F/j4z2Oyrtm9vXe+xVvwDpBnM4HMTFxbF27Vo8PDxISkpi\n7969bt/Wu2/Utt59abu+b9S2Hv2srCy++eYbpk+fTklJCT/99BPr1q0jKiqK2NhYfH19eeWVV8jO\nzmbChAkV9rZv387ixYv505/+RPv27QEYM2YMXbt2veb24eHh9OnTh6ioKDw9PZk+fToeHh7X3Hbr\n1q0sXLgQq9WqvQFr4sSJJCcns2vXLkwmE40bN2b27NkAbNmyhfj4eCwWC2azmcTExHIng3r2U1JS\nOHjwIL/88gtvv/027du3p2bNmqxfv55ffvmFTz/9lFtuuYVHHnmE8+fP8/HHHwOX32DWs2fPip52\nTWRkJP3792fv3r2sX78egClTpvDggw/SvHlzlFLk5eUxYsQIp5tlMervkdF+R6V9c/t6j930662v\nXMJkMrnuwYQQ4gbp06ePbu358+fr1obLEzkjulHXAJflgw8+0K3t7N0QhBBlU0pVeDG7211OIIQQ\n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\n7XannqPfMtKx6Mq+tF3f13XsSimXLYCqaDGbzcput6uQkBBlsVhUenq6Cg8Pr3C/m90LdT+hAAAg\nAElEQVQ28tjlefljtY08dnlebny7Tp0611zuu+8+1bFjR7V3715tXc+ePdWXX36pbrnlFlWnTh3V\ntGnTMvevU6eOevzxx6+5vPzyyyo3N1fFxMSov/71r2rPnj3qpZdeUoMHD9a2+eCDD9SGDRvKbFy6\ndElbcnNz1Y4dO9SlS5fU6dOnVWhoqNq9e7d69dVX1dSpU0tte+nSJZWWlqYOHjyoLl26pNLT01XD\nhg1/t43D4VAOh0Pl5eWptLQ05XA4VEFBgQoNDVUZGRlqzJgxKj4+XtvuynL27Fl14cIFbV9/f3/t\n+yvL+vXrteX1119Xs2bNUsHBwdo6m82mJk2apNavX68mTpyoWrZsWWqf9evXqzlz5qiAgIDfrTfy\nsXiz+9I21tidmVe63ZnYyMhI7HY72dnZFBcXk5ycTO/evd2+rXffqG29+9J2fd+obb37Rmtv27aN\n06dPl1r35JNP8sYbb3Dx4kUATpw4cV3thg0bsn//fi5evEhJSQmZmZm0bduWoqIibZvq1atfOblR\noYCAAGw2GwA+Pj6EhYWRn59f5vYRERE0bNgQgObNm/PLL79w4cKFG9KuVasWnp6eABQVFVX4oQkt\nW7bEx8en1DqTycT58+cBOHfuHPXr1//dfhs3biQ6OrrcdlmMdiy6qi9t1/f1HrvbTWIDAwPJzc3V\nvs/LyyMwMNDt23r3jdrWuy9t1/eN2ta7b9T21Zo2bUq7du1Yv349K1euJCIi4ro6+fn53HHHHXh7\ne1OtWjVatWqlTdT69evHjBkz+L//+z8+++yzSrcPHDhAeno6UVFRALz99ttEREQQGxv7u0k5wGef\nfUZERATVq1evdDsxMZHWrVsTExNTqp2amorVaqVVq1bMmjVLm9Q665lnnmHOnDkMHDiQOXPmEBMT\n87ttNm/ezD333FOp7hVGPhaNOnajtvXu6z12t5vECiGEuDk8PT2pW7cu9957L2PGjLnuj349dOgQ\nK1euZPjw4QwbNoycnBxKSkoA+PTTTxk6dCjbtm2jS5culeoWFhby8MMPk5CQgK+vL0OGDCErK4tv\nv/2WW2+9leHDh5fa/vvvv2fUqFG88847TrX79+9fqm2329m5cycBAQEMGzZM2zYqKoqMjAxSU1OZ\nOnVqqTPMzli5ciXPPPMMixYt4plnnuH1118v9fMffviB6tWrExISUqmuEP9r3G4Sm5+fT1BQkPZ9\no0aNyn1px13aeveN2ta7L23X943a1rtv1PZvH2fFihUA7Ny5k5KSkmu+1O2Mr776itdee43Jkydz\n7tw5jhw5Uurn33zzDXfeeafTveLiYvr378+jjz5Knz59AGjQoAEeHh6YzWZiY2NJS0vTts/Ly6Nf\nv37Mnz+fJk2aVNju168fAwcOpG/fvhW2rwgPD8fb25s9e/Y4/ecAWLduHe3btwegY8eO7Nu3r9TP\nN23adN1nYcHYx6JRx27Utt59vcfudpPYtLQ0QkNDCQ4OxmKxMGDAAFJSUty+rXffqG29+9J2fd+o\nbb37Rm1fbfXq1XTo0AGAJk2aUK1aNU6ePHldrSvXgdavX5+2bdvyzTff0KBBA+3nNpuNQ4cOOdVS\nSjF48GDCw8MZOnSotv7w4cPa18uWLaN58+YAFBQU0KtXLyZPnsyf//znCtuxsbFOt7Ozs7l06RIA\nOTk5ZGZmEhwc7NSf44r69euze/duAL777rtSL6+WlJRU6VICMPaxaNSxG7Wtd1/vsVfuQh4XcDgc\nxMXFsXbtWjw8PEhKSmLv3r1u39a7b9S23n1pu75v1LbefaO1586dy5///Gfq16/Pnj17+Ne//sXC\nhQtJTExk27ZtXLx4kWeeeea6+88//zze3t44HA4++OADzp8/T0xMDAEBAZSUlHDy5EkWLFjgVGvr\n1q0sXLgQq9VKmzZtAJgwYQKLFy9m165dmEwmGjdurF028Pbbb2O325k4cSITJ04EYM2aNdxyyy3l\ntq+8wWvixIkkJyeXas+ePRuALVu2EB8fj8ViwWw2k5iYiJ+fX5ljnzRpErt37+bMmTM8+uijDBo0\niBdffJFZs2bhcDioVq0aL7zwgrZ9RkYG/v7+BAQEOPXcXIvRjkVX9aXt+r7eYzc5++7QG/JgJpPr\nHkwIIYTT92K9Hg888IBu7eu9HtdZFd1VoCrKuy9tVd177726tYVwJ0qpCn9J3e5yAiGEEEIIISoi\nk1ghhBBCCGE4MokVQgghhBCGI5NYIYQQQghhODKJFUIIIYQQhiOTWCGEEEIIYTgyiRVCCCGEEIYj\n94kVQgjhdi5cuKBr39NTv8/6ufKJXnro1q2bbm24/JG3QrgDuU+sEEIIIYT4Q5JJrBBCCCGEMByZ\nxAohhBBCCMORSawQQgghhDAcmcQKIYQQQgjDkUmsEEIIIYQwHLecxHbr1o3MzEyysrIYOXKkYdp6\n943a1rsvbdf3jdrWuy9tffq5ubl07dqVVq1a0bp1a956661SP58xYwbVq1fnxIkTAFy8eJHBgwdj\ns9lo27YtmzdvLrfduXNnWrRogdVqZebMmQCMGzeOoKAgbDYbNpuN1atXA7Bjxw5tXUREBEuXLr0p\n474WLy8vxo4dy/vvv8+CBQv405/+pP2sf//+fPnll/j6+laqeS3ufrxI2736uo5dKeWyBVAVLWaz\nWdntdhUSEqIsFotKT09X4eHhFe53s9tGHrs8L3+stpHHLs/LH6tdlf6FCxe05cCBA2r79u3qwoUL\n6sSJE6pp06YqPT1dXbhwQdntdtWlSxd12223qfz8fHXhwgX1xhtvqEGDBqkLFy6o3NxcFRERoX75\n5ZdSTYfDoRwOh8rLy1NpaWnK4XCogoICFRoaqjIyMtSYMWNUfHy8tt2V5ezZs9r+eXl5yt/fv1TP\n4XDoOu7o6Ogyl88//1zFx8er6Oho1aVLF3X//fer6Oho1b9/f7Vjxw51+PBh1atXr3IbRj1epO2e\n/aq0nZlXut2Z2MjISOx2O9nZ2RQXF5OcnEzv3r3dvq1336htvfvSdn3fqG29+9LWrx8QEEBERAQA\nPj4+hIWFkZ+fD8Dw4cOZMmUKJtN/74v+ww8/EB0dDcAtt9xC7dq1+fbbb8ts22y2a7avpVatWtoH\nJRQVFZV6XFeO+7e8vLxo2bKldsb40qVLnDt3Dv6fvTuPq6rOHz/+ugumgphbisCAJSrKRSDFKUfL\nIbO0NE1zHzNwRyeT1LHScEuY1FQiLZc0K0rFLXF0NNO0QkxZXFBIdABBcRcQWTy/PxzPD0Y2hYMc\nv+/n43EfI+ee+7qfFM58OPfczwXGjRvHsmXLytUpix6+X6Rdffpaj73aTWLt7e1JTk5Wv05JScHe\n3r7at7Xu67WtdV/aVd/Xa1vrvrSrpn/mzBliYmLw9vZmy5YtNG3aFHd39yL7uLu788MPP5Cfn09S\nUhJHjhwhJSWlXO3o6Gg6dOgAQEhICB4eHvj6+nLlyhV1v8jISCwWC23btiU0NLRcn/6l5bgBmjRp\nwtWrV5kyZQqff/45AQEB1KxZk44dO3Lx4kX++OOPcnXKorfvF2k/3L7WY692k1ghhBCiOJmZmQwY\nMICPP/4Ys9lMcHAwM2bMuGe/N998E3t7e5555hkCAgL485//jNFY+v/dZWZm0q9fPxYsWICtrS2j\nR48mMTGRw4cPY2dnR0BAgLpvhw4diIuLIzIykqCgIHJych7auO8ymUy0aNGCLVu2MHLkSHJychg2\nbBiDBw9m1apV5WoIoTfVbhKbmpqKo6Oj+rWDg0OpL+1Ul7bWfb22te5Lu+r7em1r3Ze2tv28vDz6\n9+/PgAEDeO211zh9+jRnzpyhffv2tGjRgpSUFP785z+Tnp6O2Wzm448/Jioqig0bNnDt2jVatGhR\nartv374MGjSIPn36ANC4cWNMJhNGoxE/Pz+ioqLueZyrqys2NjYcPXr0oYy7sIyMDDIyMjhx4gQA\ne/fupUWLFjRp0oTly5fz7bff0qhRIz7//HPq1atXrmZx9PL9Iu3q0dd67NXujV0mk0n5448/FGdn\nZ/Ui4NatW1fKBcZatvU8dvl7ebTaeh67/L08Wu2K9Au/mSknJ0cZPHiw4u/vX2R74ZuTk5P6Bqkr\nV64oly9fVm7duqVs27ZN+ctf/nLP/nffhJWfn68MGTJEmTBhQpE3Z6WkpKh/nj9/vvLGG28oBQUF\nSmJiovr406dPK3Z2dsr58+eLfWOXFuMu7U1ZMTExytChQ5Xnn39eWbVqlfLtt98Wub8y3thVXb9f\npF09+xVpl2teWd0msYDy8ssvKydPnlQSExOVadOmVdo/lNZtPY9d/l4erbaexy5/L49W+0H7hSdu\nP/74owIobm5uiru7u+Lu7q5s2rSpxMngyZMnFRcXF6Vly5ZKly5dlFOnTpU4id27d68CKBaLRWnb\ntq3Stm1bZevWrcrgwYMVNzc3xWKxKK+88oo6qf3yyy+V1q1bK23btlU8PT2VDRs23LOCgZbjLm0C\n6uvrq8THxyuJiYnKzz//rLzyyiuVPomtrt8v0q6+/Qdtl2deafjv5LJKGAyGqnsyIYQQunXr1i1N\n++V5M9aDys/P16zdrVs3zdoAP/30k6Z9IcpLUZSSl/74r2p3TawQQgghhBBlkUmsEEIIIYTQHZnE\nCiGEEEII3ZFJrBBCCCGE0B2ZxAohhBBCCN2RSawQQgghhNAdmcQKIYQQQgjdkUmsEEIIIYTQHe1W\nexZCCFEmd3d3Tft9+/bVrN2+fXvN2lp+GIHWjh8/rll73759mrWF0Bs5EyuEEEIIIXRHJrFCCCGE\nEEJ3ZBIrhBBCCCF0RyaxQgghhBBCd2QSK4QQQgghdEcmsUIIIYQQQneq5SS2W7duxMfHk5CQwJQp\nU3TT1rqv17bWfWlXfV+vba37WrSNRiPfffcdS5YsUbcNHDiQTZs2ER4ezttvv13u1saNGwkKCiIk\nJETdtnv3bj799FNCQ0NZvXo1169fV+/bt28fn3zyCYsWLSIhIaHU9oIFCxgwYACjR49Wt/3xxx+8\n/fbbjBs3jgkTJnDy5EkATp48ybhx4xg3bhxjx47lwIEDpbaTk5Px8fHBzc0Ni8XC4sWLAQgMDMTR\n0REvLy+8vLyIiIgA4ODBg+o2T09PNm7c+FDa6enpjBgxgj59+vD666/zzTffAHDt2jVGjx5Nz549\nGT16tPp3HhERQf/+/dWbl5eX+nd2PxwcHNi1axdxcXHExsYyfvz4+26URn5GH6221n1Nx64oSpXd\nAKWsm9FoVBITE5VmzZopVlZWSnR0tOLq6lrm4x52W89jl7+XR6ut57H/X/x7cXd3L/X2z3/+U9m2\nbZuyd+9exd3dXfH19VV+/fVX5emnn1bc3d2V559/vtTHz5w5U7299dZbyujRo5UnnnhC3TZt2jT1\nz927d1fatWunzJw5U/H391caN26sTJ8+XZk4caJSr1495cMPPyzS2759u3oLDg5WlixZojg5Oanb\nPD091f0CAwMVi8WibN++Xdm4caPyww8/KNu3b1e+/vprpW7duurXd28FBQXqLSUlRYmKilIKCgqU\nq1evKi4uLkpcXJwyffp0JTg4uMi+BQUFyo0bN5Rbt26pj23UqJH69f/etGgfOXJEOXLkiLJz507l\nm2++UY4cOaLs379f+dOf/qSsX79eGTZsmDJ+/HjlyJEjyvjx45U333xTfczd2/fff684ODjcs91o\nNJZ5a9q0qfL0008rRqNRsbW1VU6ePKm0adOmXI+Vn9H/W+3qPPbyzCur3ZlYb29vEhMTSUpKIi8v\nj7CwMHr16lXt21r39drWui/tqu/rta11X4v2E088QadOnYqc7evXrx8rV64kLy8PgMuXL5e75+zs\nTK1atYpsq1mzpvrn3NxcDAYDAPHx8VgsFsxmM/Xq1aN+/fqkpKSU2LZYLNSpU6fINoPBQHZ2NgDZ\n2dk0aNBAfU6TyXTPc5bEzs4OLy8vAOrUqUOrVq1ITU0tcf/atWurH5aQk5NTal/LdqNGjXB1dQXA\n2tqaZs2akZGRwU8//cSrr74KwKuvvsqePXvueey//vUvunXrVmK7NOnp6Rw5cgSAzMxM4uPjsbe3\nf6DW/5Kf0UerrXVf67FXu0msvb09ycnJ6tcpKSmV9sOnZVvrvl7bWvelXfV9vba17mvRnjx5MgsX\nLuT27dvqNicnJ7y8vFi7di0rVqygTZs2FXoOgF27dvHxxx8TGxvLX//6VwCuX79O3bp11X3q1q3L\njRs37qs7atQoVqxYwdChQ1m+fDlvvvmmel98fDyjRo1izJgx+Pv7q5Paspw5c4bo6Gg6dOgAQEhI\nCB4eHvj6+nLlyhV1v8jISCwWC23btiU0NLRcnwCmZfvcuXOcPHkSNzc3Ll26RKNGjQBo2LAhly5d\numf/nTt38tJLL5XZLYuTkxMeHh5ERkZWuAXyM/qotbXuaz32ajeJFUIIAZ07d+by5cucOHGiyHaz\n2UzdunUZMmQICxcu5J///GeFn+uFF14gICAAd3f3SpvsAGzbto2RI0fy1VdfMXLkSD755BP1vlat\nWrFs2TIWLVrE999/T25ubpm9zMxM+vXrx4IFC7C1tWX06NEkJiZy+PBh7OzsCAgIUPft0KEDcXFx\nREZGEhQURE5OzkNrZ2dnExAQQEBAADY2NkXuMxgM95zNjYuLo2bNmjRv3rzMv5PSWFtbs27dOt55\n5537/gVECD2odpPY1NRUHB0d1a8dHBxKfWmnurS17uu1rXVf2lXf12tb635ltz08PHj++eeJiIgg\nKCiI9u3bM3fuXM6fP8/u3bsBOHr0KLdv36ZevXoVHj+Au7s7x48fB8DW1pZr166p9127du2eywXK\nsmvXLjp27AhAp06din2T0p/+9Cdq1arFmTNnSm3l5eXRt29fBg0aRJ8+fQBo3LgxJpMJo9GIn58f\nUVFR9zzO1dUVGxsbjh49+tDaAQEBvPzyy/j4+ADQoEEDMjIyAMjIyKB+/fpFHrNjx44Kn4U1m82s\nX7+eb775ptQ3n90v+Rl9tNpa97Uee7WbxEZFReHi4oKzszNWVlYMGDCALVu2VPu21n29trXuS7vq\n+3pta92v7PbixYt58cUX6d69O1OmTCEqKopp06axZ88e2rdvD9x5qdjKyqrIS933q/BL2fHx8TRs\n2BC4c6Y0Li6O/Px8rly5wuXLl3FwcLivdoMGDYiLiwMgOjpafRkxPT2dgoICAM6fP09ycjKNGzcu\nsaMoCn5+fri6ujJx4kR1e1pamvrnTZs2qZdWJCUlkZ+fD8DZs2eJj4/H2dn5obQDAwNp1qwZQ4cO\nVbc/99xzbN26FYCtW7fy/PPPq/fdvn2bnTt3PvD1sHctX76cEydOFDn7XRnkZ/TRamvd13rsZV/I\nU8UKCgrw9/dnx44dmEwmVq5cqZ4ZqM5trft6bWvdl3bV9/Xa1rqv9djv2rhxIzNnzmTDhg3k5eXx\nwQcflPux69atIykpiezsbD7++GO6dOlCQkICFy9exGAwULduXXr27AnceVOZm5sbS5YswWg00qNH\nD4zGks97zJs3j9jYWK5fv86QIUMYOnQoEyZMYNmyZRQUFFCjRg0mTJgAwLFjx/j+++8xm80YDAbG\njRtX5Prb/3XgwAHWrl2LxWJR34Q1e/ZswsLCiImJwWAw4OTkxNKlSwHYv38/wcHBWFlZYTQaCQkJ\nUSfnVdmOjo5m27ZtuLi40L9/fwD8/f0ZPnw4U6ZMYdOmTdjZ2REcHKw+5vDhwzRp0uS+f2EorGPH\njgwdOpTY2Fh+//13AN5//322b9/+wM275Gf00Wpr3dd67Ib/Ln1VJQwGQ9U9mRBC6IC7u7um/b59\n+2rWvntGWAsvvviiZm2txcbGatZ++umnNWsDRd5EKMTDpChK6cuWUA0vJxBCCCGEEKIsMokVQggh\nhBC6I5NYIYQQQgihOzKJFUIIIYQQuiOTWCGEEEIIoTsyiRVCCCGEELojk1ghhBBCCKE71e7DDoQQ\n4kG0bNlSs7a/v79m7bsfc6qVJk2aaNrXq7ufGKaFwp/2VdlkHVch/j85EyuEEEIIIXRHJrFCCCGE\nEEJ3ZBIrhBBCCCF0RyaxQgghhBBCd2QSK4QQQgghdEcmsUIIIYQQQneq5SS2W7duxMfHk5CQwJQp\nU3TT1rqv17bWfWlXfV9P7Ro1avD999+zadMmtm7dyvjx44E7S3KFhYWxZcsWPvvsM6ytrcvV+/rr\nr/nHP/7B3Llz77lv9+7djB8/nszMTODOMk5fffUVc+fOZfbs2ezcubPUdmpqKn379uX555+nS5cu\nLF++HIBZs2bRuXNnXnjhBXx9fbl27RoAubm5TJw4ER8fH1544QV++eWXEtvJycn4+Pjg5uaGxWJh\n8eLFAAQGBuLo6IiXlxdeXl5EREQAcPDgQXWbp6cnGzduLHXsWva1bnft2hV3d3fatm3LkiVLAJg5\ncybOzs60a9eOdu3asX37dvUxQUFBuLq60qZNmzL/TRcuXMjAgQMZM2aMuu2PP/5g4sSJ+Pv7M2HC\nBE6ePAnA4cOHmTBhAmPGjGHChAlER0eX2i6Nnn5Gq7Iv7arvazp2RVGq7AYoZd2MRqOSmJioNGvW\nTLGyslKio6MVV1fXMh/3sNt6Hrv8vTxabT2PvSLtli1blnjz9PRUWrZsqbRp00aJjo5W3njjDSU2\nNlYZMmSI0rJlS+Uf//iH8umnn5b4+CVLlqi3v//978rkyZMVOzu7IttnzpyptGrVSqlXr57y0Ucf\nKUuWLFGGDRumeHl5KUuWLFHmz5+v1K9fX/nwww+LPC41NVW9HT58WPnXv/6lpKamKidPnlSaNWum\n7NmzR/nmm2+Us2fPKqmpqcrYsWOVsWPHKqmpqcqcOXOUN954Q0lNTVViYmIUi8WiJCcnF2kWFBQo\nBQUFSkpKihIVFaUUFBQoV69eVVxcXJS4uDhl+vTpSnBwsLrf3duNGzeUW7duqY9t1KiR+nVxNy37\nWrRzc3OV3Nxc5ezZs0pkZKSSm5urXLp0SWnevLkSHR2tvP/++8q8efPU/e7eoqOjFYvFoty4cUM5\nefKk8uSTTyo3b94ssk9ERIR6CwoKUhYvXqw4OTmp2zw9PZXAwEAlIiJCCQwMVCwWixIREaEsWbJE\n+eqrr5SIiAglNDRUadCgQZFWRESErn9GH3Zf2voae3nmldXuTKy3tzeJiYkkJSWRl5dHWFgYvXr1\nqvZtrft6bWvdl3bV9/XYzs7OBsBsNmM2m1EUBWdnZ6KiogD45ZdfePHFF8vVat68ObVr175ne3h4\nOL169cJgMBTZnpubS0FBAXl5eZhMJmrWrFliu3HjxlgsFgBsbGxwcXEhPT2d5557DrP5zmfTeHl5\nqYvpnzp1io4dOwLQsGFDbG1tiYmJKbZtZ2eHl5cXAHXq1KFVq1akpqaWOJbatWurz5mTk3PPf1dV\n9rVue3p6FmmfO3euxP23bt3KG2+8wWOPPUazZs146qmn1O+j4lgsFurUqVNkm8FgUL8ns7KyqF+/\nPgBPPfUUDRo0AMDJyYlbt26Rl5dXYrskevwZrYq+tKu+r/XYq90k1t7enuTkZPXrlJQU7O3tq31b\n675e21r3pV31fT22jUYjGzdu5MCBA/zyyy/ExsaSmJiIj48PAC+99BJ2dnYP3I+NjaVu3bo4ODgU\n2e7p6UmNGjV4//33mT59Oj4+PuW+bCE5OZmjR4+qE6y7wsLC6NKlCwCtW7dm586d5Ofn85///Ie4\nuLhSJ2B3nTlzhujoaDp06ABASEgIHh4e+Pr6cuXKFXW/yMhILBYLbdu2JTQ0VJ0YPsy+1u2YmBi8\nvb0BCA0NxcvLixEjRqjtc+fOFfl3tre3L3VCXZyRI0eycuVK/va3v7FixQrefPPNe/Y5cOAAzZs3\nx8rK6r7ad8ekt5/RquhLu+r7Wo+92k1ihRCist2+fZvevXvz/PPP4+7ujouLC9OmTWPQoEFs2LAB\na2vrBzrjBXfOtO7cuZMePXrcc9/Zs2cxGo3Mnj2bDz/8kB9//JGLFy+W2czKymLEiBEEBgYWOYu3\naNEizGaz+lG1AwYMwM7OjpdffpkZM2bQrl07TCZTqe3MzEz69evHggULsLW1ZfTo0SQmJnL48GHs\n7OwICAhQ9+3QoQNxcXFERkYSFBRETk5OmWPXsq91u3///nz88cfY2toyatQoTp48yaFDh2jSpAmT\nJ08u87+9vCIiIhgxYgRr1qxhxIgRLFq0qMj9Z8+eZeXKler120KI4lW7SWxqaiqOjo7q1w4ODvf9\nW+7DaGvd12tb6760q76v1zbAjRs3iIyMpFOnTiQlJeHr68vrr7/Otm3b+M9//vNAzYsXL3Lp0iXm\nzZvHjBkzuHr1KsHBwVy/fp1Dhw7h6uqKyWSiTp06PPnkk2U+T15eHiNGjKB37950795d3f7dd9+x\na9cuQkJC1JfHzWYzgYGB/Pvf/2bVqlVcu3aNJ598stR23759GTRokDoRbty4MSaTCaPRiJ+fX7Ev\njbu6umJjY8PRo0fLHLtWfa3b/fv3Z+DAgfTu3fuetq+vr9pu2rQpKSkp6mNTU1Pv+8zSrl271MtA\nOnXqpL6xC+58P82aNYtJkyY98KsDev4Z1evY9drWuq/12KvdJDYqKgoXFxecnZ2xsrJiwIABbNmy\npdq3te7rta11X9pV39dbu169eurZzMcee4xnn32W06dPq9chGgwGRo8eTVhY2AP1mzZtykcffURg\nYCCBgYE8/vjjTJ48GVtbW+rVq8epU6cAuHXrFmfOnKFx48YlthRFYdKkSTRv3pxRo0ap2/fs2cNn\nn33Gl19+Sa1atdTtN2/eVK+t3LdvH2azmRYtWpTY9vPzw9XVlYkTJ6rb715fC7Bp0ybatGkDQFJS\nEvn5+cCdM4Px8fE4OzuXOnat+lq3R44cSatWrXj77beLbW/evFltv/LKK3z//ZiEti0AACAASURB\nVPfcunWLpKQkEhMTad++fYl/L8Vp0KABcXFxAMTExKiT4MzMTGbMmMHw4cPV53sQevsZraq+tKu+\nr/XYy3eBUxUqKCjA39+fHTt2YDKZWLlyJcePH6/2ba37em1r3Zd21ff11m7UqBHz5s3DZDJhMBj4\n17/+xU8//cTQoUMZPHgwADt37iQ8PLxcvVWrVpGYmEhmZiYffPAB3bt355lnnil2386dO7N27Vrm\nzJkD3HmJu7SzdlFRUWzYsAFXV1e6du0KwNSpU5k+fTq3bt1iwIABwJ03dwUFBXHx4kUGDRqE0Wik\nSZMm6tJTxTlw4ABr167FYrGob5KaPXs2YWFhxMTEYDAYcHJyYunSpQDs37+f4OBgrKysMBqNhISE\n0LBhw4fS17L9yy+/8PXXX+Pm5ka7du2AO0uafffdd0XaoaGhALRp04a+ffvStm1bTCYTixYtKvUS\njqCgIGJjY7l+/TpDhw5lyJAhTJgwgWXLllFQUICVlZV62cDWrVs5d+4c3377Ld9++6363/n444+X\n2C+O3n5Gq6ov7arvaz12w3+XvqoSBoOh6p5MCPF/SsuWLTVr+/v7a9a++9K4Vpo0aaJpX68KCgo0\na+/atUuzduFLTIR4lCmKUvqSKFTDywmEEEIIIYQoi0xihRBCCCGE7sgkVgghhBBC6I5MYoUQQggh\nhO7IJFYIIYQQQuiOTGKFEEIIIYTuyCRWCCGEEELoTrX7sAMhxMOj5ZqiAwcO1KwN2q7lWtonVQlt\nHDp0SNP+3Q+g0EJlfiKREKJkciZWCCGEEELojkxihRBCCCGE7sgkVgghhBBC6I5MYoUQQgghhO7I\nJFYIIYQQQuiOTGKFEEIIIYTuVMtJbLdu3YiPjychIYEpU6bopq11X69trfvS1r7ftGlT1q9fz969\ne/npp5/w8/Mrcv+oUaNIS0ujfv365ert3LmTpUuXsmbNGnXbqVOnWL16NQsXLiQ9Pf2ex1y/fp2Q\nkJAyl146d+4cgwYNolu3brz00kusWrUKgI8++oiuXbvSvXt3Ro8ezfXr1wG4cuUKgwYNwmKx8OGH\nH5Y59uTkZHx8fHBzc8NisbB48WIAAgMDcXR0xMvLCy8vLyIiIgA4ePCgus3T05ONGzc+cm2t++fP\nn2fMmDH079+fAQMGEBYWBsC1a9cYP348r7/+OuPHj1f/Ta9du8aYMWN4/vnn+ec//1nquAuzt7dn\n4cKF6u3bb7/l1VdfpVmzZgQHB7Nw4ULmz5+Pi4tLuZul0evxRU/HLmk//L6WbYOiKKXvYDA4AmuA\nxoACfK4oyiKDwVAf+A5wBs4AbyiKcqWMVulPBhiNRk6dOkXXrl1JSUkhKiqKgQMHcuLEiXL9Bz2s\nttZ9vba17ku7cvslrRP7xBNP0LhxY+Li4rC2tmbHjh289dZbnDp1iqZNmzJ//nyaN29Ot27duHz5\ncrGNwuvEpqSkYGVlxY4dO/jb3/4GwKVLlzAYDOzevZtOnTrdM5atW7diMBho0qQJ7dq1u6d/d53Y\nCxcucOHCBdzc3MjMzKRXr14sXbqU9PR0nnnmGcxmM0FBQQBMmTKF7Oxsjh8/zqlTpzh16lSxE9nC\n68SmpaWRlpaGl5cXN27coH379oSHh7Nu3TpsbGyYNGlSkcdmZ2dTo0YNzGYzaWlpeHp6kpKSgtl8\n7zLdem1r0S/8y8rFixe5ePEirVq1Iisri2HDhhEcHMy2bduwtbVl2LBhrF69mhs3buDv78/Nmzc5\nefIkp0+f5o8//uDdd9+9Z7xlrRNrNBpZuXIl7777LuPGjWPLli0cPnyYp59+mt69e/P++++X+Njy\nrBOr1+NLdT12Sbt69ivSVhTFUGa/HGPIByYpitIa+DMwzmAwtAamArsVRXEBdv/36wrz9vYmMTGR\npKQk8vLyCAsLo1evXpWR1rStdV+vba370q6a/oULF4iLiwMgKyuLhIQEdZIZGBjIrFmzKOsX4sIc\nHByoWbNmkW0NGjQo8UxuYmIidevWpUGDBmW2n3jiCdzc3ACwsbGhefPmnD9/nk6dOqkTJA8PD/Vs\nb+3atWnXrh01atQo19jt7Ozw8vICoE6dOrRq1YrU1NQS969du7b6vDk5ORgMJR+X9drWut+wYUNa\ntWoFgLW1Nc7OzmRkZLBv3z569OgBQI8ePdi7dy8AtWrVwsPDo9z/psVxd3cnPT2djIwMdbx3/7ek\nX9Tuh16PL3o7dkn74fa1HnuZk1hFUdIURTn83z/fAE4A9kAvYPV/d1sNvFYZA7K3tyc5OVn9OiUl\nBXt7+8pIa9rWuq/XttZ9aVd938HBAYvFwuHDh+nWrRvp6ekcP368UtrFyc3N5dChQ/z5z3++78em\npKRw7Ngx2rZtW2T7+vXree655yo8tjNnzhAdHU2HDh0ACAkJwcPDA19fX65c+f8vTEVGRmKxWGjb\nti2hoaElns18FNpa98+dO8epU6do06YNly9fpmHDhsCdX4IqY3J5V6dOndi3bx8Ay5cv580332TF\nihUMHz6cr776qsJ9vR5f9HzsknbV97Ue+31dE2swGJwBTyASaKwoStp/70rnzuUGQohHWO3atVmx\nYgXTp0+noKCACRMmEBwcrOlz/vbbb3h6et73WbWsrCzGjh3LBx98QJ06ddTtn376KSaTqcJnAzIz\nM+nXrx8LFizA1taW0aNHk5iYyOHDh7GzsyMgIEDdt0OHDsTFxREZGUlQUBA5OTmPZFvrfnZ2NlOn\nTmXixInY2NgUuc9gMJR5tri8zGYz3t7eHDhwAICXX36ZFStW4Ovry4oVKxg/fnylPI8QomLKPYk1\nGAw2wAbgbUVRrhe+T7nzOmKxryUaDIaRBoPhkMFgKNcHYaempuLo6Kh+7eDgUOpLUvdDy7bWfb22\nte5Lu+r6ZrOZFStWEB4eTkREBE5OTvzpT39i9+7dHDx4EDs7O3bu3EmjRo0qOvwi0tLS2L9/PytW\nrODIkSMcPHiQ6OjoUh+Tl5fHuHHj6NWrF926dVO3r1+/nj179rBw4cIKTXjy8vLo27cvgwYNok+f\nPgA0btwYk8mE0WjEz8+PqKioex7n6uqKjY0NR48efeTaWvfz8/OZOnUqL730El26dAGgfv36XLx4\nEbhz3Wy9evVKHV95eXl58ccff3Dt2jUAunTpwq+//grAgQMHKuWNXXo9vujx2CXth9fXeuzlmsQa\nDAYr7kxgv1YUJfy/m88bDAa7/95vB1wo7rGKonyuKEo7RVHufSdGMaKionBxccHZ2RkrKysGDBhQ\nrovkH3Zb675e21r3pV11/QULFpCQkMCyZcsAiI+Px2Kx4O3tjbe3N2lpabz44ovqNYSVpX///vj6\n+uLr64unpyfe3t54eHiUuL+iKEydOpWnnnoKX19fdfvevXv54osvWLZsGbVq1Xrg8SiKgp+fH66u\nrkycOFHdnpaWpv5506ZNtGnTBoCkpCTy8/MBOHv2LPHx8UXeKPYotKti7LNnz8bZ2ZlBgwap2zt1\n6sS2bdsA2LZtG507dy5xfPejc+fO/Pzzz+rXly9fVq+zdnd359y5cxV+Dr0eX/R47JL2w+trPfYy\nL0Ay3DldsQI4oSjKgkJ3bQGGAfP++7+bK2NABQUF+Pv7s2PHDkwmEytXrqy06+20bGvd12tb6760\nq6bv7e1Nv379OH78OP/+97+BO0tW/fjjjw/Ui4iIIDk5mZycHL744gueeeYZatasyZ49e7h58yab\nN2+mUaNG6tm8+/H777+zadMmWrZsySuvvALApEmTmDlzJrm5uQwbNgy48+au2bNnA3cmLZmZmeTl\n5fHvf/+bL7/8ssSzbQcOHGDt2rVYLBb1jUyzZ88mLCyMmJgYDAYDTk5OLF26FID9+/cTHByMlZUV\nRqORkJAQ9TrOR6WtdT8mJobt27fTvHlzhgwZAsCYMWMYNmwY06ZNY8uWLdjZ2RVZceC1114jKyuL\nvLw89u7dy+LFi3nyySdLHP9djz32mHqN7l2ffvopfn5+mEwm8vLyitz3oPR6fNHbsUvaD7ev9djL\ns8TWX4CfgTjg9n83T+POdbHfA38CznJnia1Sr6ovzxJbQoiHp6QltipD4SW2tHB3iS0tlHYGUmij\nrPWAK6qsJbYqojLPNAnxf1V5ltgq80ysoij7gZJCPvc7KCGEEEIIISqqWn5ilxBCCCGEEKWRSawQ\nQgghhNAdmcQKIYQQQgjdkUmsEEIIIYTQHZnECiGEEEII3ZFJrBBCCCGE0B2ZxAohhBBCCN0pc51Y\nIcT9a9y4sWbt1q1ba9YOCQnRrN2qVSvN2qJkkZGRmrX/+c9/atbevLlSPgSyRLdv3y57JyFEtSZn\nYoUQQgghhO7IJFYIIYQQQuiOTGKFEEIIIYTuyCRWCCGEEELojkxihRBCCCGE7sgkVgghhBBC6E61\nnMR269aN+Ph4EhISmDJlim7aWvf12ta6r5d206ZN2bBhA/v27WPv3r34+fkBMHnyZH788Ud27dpF\nWFhYhZbnsra2ZsaMGXz55ZesWrVKXY6rd+/efPnll6xcuZKRI0eWq5WWlsabb77Jq6++Ss+ePfnq\nq68A2LFjBz179sTNzY2jR4+q+8fGxtKnTx/69OlD79692bVrV4nt5ORkfHx8cHNzw2KxsHjxYgAC\nAwNxdHTEy8sLLy8vIiIiADh48KC6zdPTk40bNz6Utt7HPmfOHLp3787gwYPVbQkJCYwYMYIhQ4bw\n7rvvkpWVBUB+fj6zZs1iyJAhDBw4kDVr1pTa/l+vvPIKn3zyCZ988gkTJ07EysqKZ555hk8++YT1\n69fz1FNP3VevOA4ODuzatYu4uDhiY2MZP358hZuFyXGx6tta96Vd9X0t2wZFUSo1WOqTGQxlPpnR\naOTUqVN07dqVlJQUoqKiGDhwICdOnKjw82vZ1rqv17bW/eraLm4i+sQTT9C4cWPi4uKwtrZm586d\nDB8+nHPnzpGZmQmAr68vLVq0KPUHvbR1YqdMmUJcXBwRERGYzWYee+wxXFxcGDx4MNOmTSMvL4/H\nH3+cq1evFvv4wuvEZmRkkJGRQevWrcnKyqJfv34sXrwYg8GA0WgkMDCQgIAA3NzcALh58yZWVlaY\nzWYyMjLo06cPe/bswWy+sxx14XVi09LSSEtLw8vLixs3btC+fXvCw8NZt24dNjY2TJo0qci4srOz\nqVGjBmazmbS0NDw9PUlJSVHbhWnZ1uPYC68Te+TIEWrXrs3MmTP5+uuvAXjrrbcYP348np6e/PDD\nD5w7d46RI0eyc+dOfv75Z2bNmkVOTg6DBg3i008/xc7OTu2VtE5s/fr1mTNnDn//+9/Jzc1l0qRJ\nHD58mFOnTqEoCqNHj2b16tX88ccfxT4eyrdObJMmTbCzs+PIkSPY2NgQFRVFnz59yvUzWtY6sXJc\nrPq21n1pV32/Im1FUQxl9is8wkrm7e1NYmIiSUlJ5OXlERYWRq9evap9W+u+Xtta9/XUvnDhAnFx\ncQBkZWWRkJBAkyZN1AksQO3atR+4b21tjbu7u3qWLj8/n6ysLHr27Mm3335LXl4eQIkT2P/VqFEj\ndcJsbW3Nk08+yYULF3jqqado1qzZPfvXqlVLnTzdunULg6Hk44+dnR1eXl4A1KlTh1atWpGamlri\n/rVr11bbOTk5D62t97F7enpia2tbZFtycjIeHh4AtG/fnp9++km9Lycnh/z8fG7duoWVlRXW1tal\n9gszmUzUqFEDo9HIY489xuXLl0lNTeXcuXPlbpQlPT2dI0eOAJCZmUl8fDz29vaV0pbjYtW3te5L\nu+r7Wo+92k1i7e3tSU5OVr9OSUmptIOSlm2t+3pta93Xa9vR0RE3NzcOHz4MwNSpU/n99995/fXX\nCQ4OfqBmkyZNuHbtGpMnT2bZsmVMmjSJmjVr4uDggMVi4dNPP2XhwoW0bNnyvtupqamcOHECd3f3\nUveLjY2lZ8+evPbaa0yfPr3Es5mFnTlzhujoaDp06ADcORvs4eGBr68vV65cUfeLjIzEYrHQtm1b\nQkNDH3pb72O/q1mzZuzbtw+AH3/8kQsXLgDw17/+lZo1a9KzZ0969+7NwIED75kAl+Ty5cts3ryZ\nZcuWsWLFCrKzs4mJibmvcd0vJycnPDw8Ku0TyuS4WPVtrfvSrvq+1mOvdpNYIR51tWvXZvny5Uyf\nPl09Cztv3jyefvppNmzYwFtvvfVAXZPJhIuLC1u2bGHUqFHk5OQwcOBATCYTtra2jBs3jmXLljF9\n+vT76mZlZfH2228zdepUbGxsSt3X3d2dLVu28N133/HFF19w69atUvfPzMykX79+LFiwAFtbW0aP\nHk1iYiKHDx/Gzs6OgIAAdd8OHToQFxdHZGQkQUFB5OTkPLS23sde2LRp0wgPD2f48OFkZ2erk+Dj\nx49jMpnYsmUL69evJywsrNSzwoVZW1vj7e3NmDFj8PPz47HHHqNz5873Na77YW1tzbp163jnnXe4\nceOGZs8jhKheqt0kNjU1FUdHR/VrBweHch84H2Zb675e21r39dY2m82sWLGC8PBw9WX/wsLDw+nR\no8cDte9ewxofHw/Avn37cHFxISMjg59//hmA+Ph4FEWhbt265Wrm5eXx9ttv06NHD7p27VrusTz1\n1FPUrl2bhISEUtt9+/Zl0KBB9OnTB7hzLbHJZMJoNOLn50dUVNQ9j3N1dcXGxqbIm8qqsq33sf8v\nZ2dnFi1axKpVq+jatat6lmTnzp106NABs9lM/fr1sVgs6vdWWdzd3Tl//jzXr1+noKCAyMjIItdE\nVyaz2cz69ev55ptvynxj2/2Q42LVt7XuS7vq+1qPvdpNYqOionBxccHZ2RkrKysGDBjAli1bqn1b\n675e21r39dZeuHAhCQkJLFu2TN1W+PrSl156icTExAdqX7lyhQsXLqgHDC8vL86ePcuBAwfUax4d\nHBwwm81cu3atzJ6iKEyfPp0nn3ySN998s8z9U1JSyM/PB+DcuXMkJSWV+LKRoij4+fnh6urKxIkT\n1e1paWnqnzdt2kSbNm0ASEpKUttnz54lPj4eZ2fnKm/rfezFuXz5MnDnjU5ffvklvXv3Bu5MnH//\n/Xfgzpv2jh07hpOTU7maFy9epEWLFtSoUQMAi8VCSkrKfY2rvJYvX86JEyf45JNPKrUrx8Wqb2vd\nl3bV97Ue+/1dPFUFCgoK8Pf3Z8eOHZhMJlauXMnx48erfVvrvl7bWvf11Pb29qZfv34cP35cXX7q\no48+YuDAgTRv3pzbt2+TkpLC5MmTH/g5lixZwrRp09R3qwcHB5OTk8O7777LihUryM/PJygoqFyt\nw4cPs2XLFlq0aKGeEXz77bfJzc1l7ty5XL58mbFjx9KyZUu++OILDh8+zPLlyzGbzRiNRj744APq\n1atXbPvAgQOsXbsWi8WivpFp9uzZhIWFERMTg8FgwMnJiaVLlwKwf/9+goODsbKywmg0EhISQsOG\nDau8rfexT58+nSNHjnD16lV69eqFn58f2dnZhIeHA/Dcc8+prwS8/vrrzJkzh8GDB6MoCj169KB5\n8+YltgtLSEjg119/5eOPP+b27ducPn1aPbPr5+eHra0t7733HklJScyaNatczeJ07NiRoUOHEhsb\nq06433//fbZv3/7AzbvkuFj1ba370q76vtZjr3ZLbAnxKKjIWq9lKW2JrYoqvMRWZdPq5WRRusp6\no1NxSlpiqzKUZ4mtiihriS0hxMOlyyW2hBBCCCGEKItMYoUQQgghhO7IJFYIIYQQQuiOTGKFEEII\nIYTuyCRWCCGEEELojkxihRBCCCGE7sgkVgghhBBC6E61+7ADIe6qX7++Zu3Cn5ilhbufkKWFJ598\nUrO2KN4vv/yiWXv+/PmatQF27NihWfvmzZuatYUQoixyJlYIIYQQQuiOTGKFEEIIIYTuyCRWCCGE\nEELojkxihRBCCCGE7sgkVgghhBBC6I5MYoUQQgghhO5Uy0lst27diI+PJyEhgSlTpuimrXVfr+3K\n7i9evJj4+Hj279+vbnNzc2PHjh389NNP7N69Gy8vr3L3QkND8fX15Z133lG3LViwgICAAAICAhg7\ndiwBAQEA3Lhxgw8//JAhQ4awfPnyMttpaWkMGTKEl156iZdffpkvv/wSgO3bt/Pyyy/TokUL4uLi\n1P1zc3OZMmUKPXr04NVXXyUyMrLEdnJyMj4+Pri5uWGxWFi8eDEAgYGBODo64uXlhZeXFxEREQAc\nPHhQ3ebp6cnGjRtLHbuWfb22AT766CNeffVV/va3v6nbEhMTGT16NMOGDWPKlClkZWUBd/79fXx8\nGD58OMOHD+fjjz8utf2/Xn31VRYtWsSiRYt45513sLKywsbGhhkzZvDpp58yY8YMrK2t76tZnLFj\nxxIVFcWhQ4cYN25chXv/S6/HLj0dFx+VttZ9aVd9X8u2QVGUSg2W+mQGQ5lPZjQaOXXqFF27diUl\nJYWoqCgGDhzIiRMnKvz8Wra17uu1XZF+SevEPvPMM2RlZREaGspf/vIXANavX89nn33G7t27eeGF\nFxg/fjy9evUqsV14ndjjx49Ts2ZNQkJCWLBgwT37rl69mtq1a9OvXz9ycnJISkoiOTmZ//znP/j5\n+RXbv7tO7IULF8jIyKBNmzZkZmbSu3dvQkNDMRgMGI1GPvjgA6ZOnYrFYgFg7dq1xMXFERQUxKVL\nl/D19SU8PByj8f//vnl3ndi0tDTS0tLw8vLixo0btG/fnvDwcNatW4eNjQ2TJk0qMqbs7Gxq1KiB\n2WwmLS0NT09PUlJSMJuLXy5ay77e2oXXiY2OjqZWrVrMmTOHNWvWADBixAjGjh2Lp6cn27ZtIy0t\nDT8/P9LS0pgyZYq6X3FKWie2fv36zJ07lwkTJpCbm0tAQAC///47jo6OZGZmEh4eTp8+fbC2tuar\nr74qsV/WOrGtW7dm9erVdO7cmdzcXDZv3syECRM4ffp0qY+D8q0Tq9djV3U9Lj7Kba370q76fkXa\niqIYyuxXeISVzNvbm8TERJKSksjLyyMsLKzUyUh1aWvd12tbi/6vv/7KlStXimxTFIU6deoAYGtr\nS3p6erl7rVu3xsbGptj7FEXh119/VSfLNWvWxNXVFSsrq3K1n3jiCdq0aQOAjY0NTz31FOfPn6d5\n8+bFfmhBYmIizzzzDAANGjTA1ta2yJnawuzs7NQzznXq1KFVq1akpqaWOJbatWurE7OcnBwMhtKP\nD1r29dqGO7+g2NraFtmWnJys/uLSrl07fvrpp1Ib5WUymahRowZGo5HHHnuMy5cv4+3tzZ49ewDY\ns2cPHTp0qNBztGzZkkOHDnHz5k0KCgrYv39/tf75fxTaWvf12ta6L+2q72s99mo3ibW3tyc5OVn9\nOiUlBXt7+2rf1rqv13ZV9AHee+89AgMDiY2NZebMmcyaNatSuidOnKBu3brY2dlVuJWSksLx48dp\n27Ztifu0atWK3bt3k5+fT3JyMkePHiUtLa3M9pkzZ4iOjlYnNCEhIXh4eODr61tkwh8ZGYnFYqFt\n27aEhoaWeBa2Kvt6bRfWrFkzfv75Z+DOxPLChQvqfWlpaQwfPhx/f39iYmLK3bx8+TKbN2/m888/\nZ+XKlWRlZRETE8Pjjz+ujv3KlSs8/vjj9zXW/3X8+HGeffZZ6tevT61atejWrRsODg4Vaham12OX\nno+Lem1r3Zd21fe1Hnu1m8QK8SCGDx/O+++/j7u7O++99556HWRF7d+/Xz0LWxFZWVn4+/vz3nvv\nqWeMi9O3b1+aNGlC7969mTNnDl5eXphMplLbmZmZ9OvXjwULFmBra8vo0aNJTEzk8OHD2NnZqdfz\nAnTo0IG4uDgiIyMJCgoiJyenzLFr2ddr+39NnTqVTZs24evry82bN9Uz9Q0aNGD9+vWsWrWK8ePH\nM3PmTPV62bJYW1vj7e3N6NGj8fX1pWbNmjz33HP37FfRS8JOnjzJggUL2Lp1K5s3byY2NpaCgoIK\nNYUQoipUu0lsamoqjo6O6tcODg6lvhRYXdpa9/Xaroo+wIABA9i6dSsAmzdvvq83dpWkoKCAgwcP\n8uyzz1aok5eXh7+/Pz179qRbt26l7ms2m3nvvffYunUrS5cu5fr16zg7O5fa7tu3L4MGDaJPnz4A\nNG7cGJPJhNFoxM/Pj6ioqHse5+rqio2NDUePHi1z7Fr19doujpOTEwsWLGDFihX4+PioZxpq1KhB\n3bp1gTsv2zdt2rTIWYnStG3blvPnz3P9+nUKCgr47bffaNmyJVevXqVevXoA1KtXj2vXrt3XWIuz\nevVqOnbsyIsvvsjVq1dJTEyscPMuvR679Hxc1Gtb6760q76v9dir3SQ2KioKFxcXnJ2dsbKyYsCA\nAWzZsqXat7Xu67VdFX2A9PR0OnbsCEDnzp35448/KtyMjY2ladOmNGjQ4IEbiqIwbdo0nnrqKd56\n660y97958ybZ2dnAnbPAJpMJFxeXEtt+fn64uroyceJEdXvhyw82bdqkXpOblJREfn4+AGfPniU+\nPr7UCbKWfb22S3L35f3bt2+zZs0a9ZqvK1euqGc1z507R0pKCk2bNi1XMyMjgxYtWlCjRg0A3N3d\n1TdGdOnSBYAuXbpw8ODB+xprcRo1agTc+T+Ynj178t1331W4eZdej116Pi7qta11X9pV39d67Pd3\n4VcVKCgowN/fnx07dmAymVi5ciXHjx+v9m2t+3pta9H//PPP6dixIw0aNCAuLo558+bx9ttvM3fu\nXMxmM7du3SqyXFZZPvnkE44dO8aNGzcYNWoUb7zxBj4+Phw4cKDYSwnGjh1LdnY2+fn5REVF8f77\n7xf5TbOw33//nU2bNtGyZUteffVVACZNmkRubi4zZ87k8uXLjBgxAldXV1atWsWlS5d46623MBgM\nNGnSpNQlmQ4cOMDatWuxWCzqmefZs2cTFhZGTEwMBoMBJycnli5dCtyZJTaZ6wAAIABJREFUFAcH\nB2NlZYXRaCQkJISGDRs+lL5e2wAffvghR44c4dq1a/Tp04e33nqLmzdvEh4eDsBzzz1H9+7dAYiJ\niWHFihWYzWYMBgMBAQH3vCmsJAkJCfz666/Mnz+f27dvc/r0aXbu3EmtWrUICAjAx8eHjIyM+162\nqzjffPMN9evXJy8vj4kTJ1bK2d279Hrs0ttx8VFoa92XdtX3tR57tVtiS4i7SlpiqzIUXmJLC3ff\nqa6F4lY1ENoqvMRWZStpia3KUtYSWxVRniW2hBDiQehyiS0hhBBCCCHKIpNYIYQQQgihOzKJFUII\nIYQQuiOTWCGEEEIIoTsyiRVCCCGEELojk1ghhBBCCKE7MokVQgghhBC6U+0+7EBUrg4dOmjaf/fd\ndzVre3t7a9a++7Ggourc/SQyrSxevFiz9ty5czVrZ2VladYWQohHmZyJFUIIIYQQuiOTWCGEEEII\noTsyiRVCCCGEELojk1ghhBBCCKE7MokVQgghhBC6I5NYIYQQQgihO9VyEtutWzfi4+NJSEhgypQp\numlr3a/s9saNG1m7di1r1qxh1apVAPj5+bFlyxbWrFnDmjVreOaZZ8rd+/TTT3nrrbeYOHGium3B\nggUEBAQQEBDAmDFjCAgIACAmJobJkyfzzjvvMHnyZOLi4kptnzt3jv79+/PXv/4VHx8fVqxYAcCc\nOXPo0qULL774IiNGjODatWvqY06cOMFrr72Gj48PXbt2JScnp9h2cnIyPj4+uLm5YbFY1KWaAgMD\ncXR0xMvLCy8vLyIiIgA4ePCgus3T05ONGzeWOG69trXup6Sk0L17d9q1a0f79u0JDQ0tcv/ixYup\nU6cOFy9evGdMTZo0YdGiRaWOfcOGDcydO7fIfv/+979ZvHgxS5YsYdWqVVy/fl1tLlmyRL0dO3as\n1HZhoaGhJCUlcfDgQXVb7969iYqK4vr163h6epa7VRY9HVuqsq/XttZ9vba17ku76vtatg2KolRq\nsNQnMxjKfDKj0cipU6fo2rUrKSkpREVFMXDgQE6cOFHh59eyrXX/QdulrRO7ceNG3nzzzSITPz8/\nP7Kzs/nmm2/KNa7C68QeP36cmjVrsmTJEhYuXHjPvqtXr6Z27dr069eP06dP8/jjj1O/fn3+85//\nMHv2bD7//PMi+xdeJ/b8+fNcuHABi8VCZmYmPXr04IsvviA9PZ1nn30Ws9msruU5bdo08vPz6d69\nO5988gmtW7fmypUr2NraYjKZgKLrxKalpZGWloaXlxc3btygffv2hIeHs27dOmxsbJg0aVKRcWVn\nZ1OjRg3MZjNpaWl4enqSkpKC2Xzvsst6bWvRL7xObHp6Ounp6Xh4eHDjxg06depEWFgYrVq1IiUl\nBX9/f06dOsW+ffto2LCh+rghQ4ZgMBho164df//734s8f+F1YpOSkqhRowbr169X98vJyaFmzZoA\n/PLLL1y4cIHXXnuN3NxcTCYTJpOJ69evExISwpQpU9TvFSh5ndiOHTuSmZnJF198oX6/tmzZktu3\nb7N48WKmTZvGkSNHin3sXeVZJ7Y6HluqQ1+vba37em1r3Zd21fcr0lYUxVBmv8IjrGTe3t4kJiaS\nlJREXl4eYWFh9OrVq9q3te5rPfbK0Lp1a2xsbIq9T1EUfvnlF/7yl78A8OSTT1K/fn0AHB0dyc3N\nJS8vr8R248aNsVgsANjY2NC8eXPS09Pp3LmzOkny8vIiPT0dgH379uHq6krr1q0BqFevXpFJSWF2\ndnZ4eXkBUKdOHVq1akVqamqJY6ldu7b6nDk5ORgMJf+c6bWtdb9JkyZ4eHio7ZYtW3Lu3DkApk6d\nyqxZs+55/NatW3FycsLV1bXUcQM0a9aM2rVrF9l2dwILkJeXp/Zr1Kihfm/k5+eX2S7swIEDXLly\npci2kydPkpCQcF+dsuj52KLXscvfS9W3te5Lu+r7Wo+92k1i7e3tSU5OVr9OSUmptE9X0rKtdV+L\ntqIoLFmyhC+//LLIN1W/fv1Yu3Yt7733HnXq1KnQc9x14sQJ6tati52d3T33/fbbbzRr1gwrK6ty\ntZKTkzl27Ng9L9V+9913PP/88wCcPn0auHPmrnv37nz22Wflap85c4bo6Gj1DHZISAgeHh74+voW\nmaxERkZisVho27YtoaGhJZ7NfBTaWvfPnj1LbGws7dq144cffqBp06bqLyx3ZWZmsnDhQv7xj3+U\na7wl2blzJ8HBwURHR/PCCy+o25OTk1m0aBFLliyhV69eJf7C87Do7dhSVX29trXu67WtdV/aVd/X\neuzVbhIrqs6oUaP429/+xsSJE+nbty8eHh6Eh4fz+uuvM3ToUC5dusSECRMq5bn279+vnoUtLDk5\nmbVr1zJq1KhydbKyshg1ahQzZswoMsFesmQJZrOZ3r17A1BQUMChQ4dYvHgxGzZsYMeOHezfv7/U\ndmZmJv369WPBggXY2toyevRoEhMTOXz4MHZ2dur1vHDnMo24uDgiIyMJCgoq8XpbvberYuxDhgxh\n3rx5mM1m5s+fz3vvvXfPfnPnzsXf37/EM/3l9eKLLzJ58mQ8PDz49ddf1e2Ojo78/e9/Z8yYMezd\nu7fUVwWEEEJUD9VuEpuamoqjo6P6tYODQ6kvYVaXttZ9LdoZGRkAXLlyhb1799K6dWsuX77M7du3\nURSFzZs3qy/HV0RBQQGRkZF07NixyPZLly4RHBzM+PHjadKkSZmdvLw8Ro0aRe/evXn55ZfV7evW\nrWP37t0sXrxYfYnYzs4Ob29v6tevT61atejSpQtHjx4ttd23b18GDRpEnz59gDuXMJhMJoxGI35+\nfkRFRd3zOFdXV2xsbB7JdlWMfciQIbzxxhv06tWLpKQkzpw5w7PPPkubNm1ITU2lU6dOnD9/nkOH\nDvHBBx/Qpk0bQkNDmT9/PsuWLSt17KVp27ZtsW/geuKJJ3jsscc4f/78A7e1oLdjS1X19drWuq/X\nttZ9aVd9X+uxV7tJbFRUFC4uLjg7O2NlZcWAAQPYsmVLtW9r3a/sds2aNdVrBmvWrIm3tzenT5+m\nQYMG6j7PPfec+rJ8RcTGxmJvb1+knZWVxdy5cxk8eDCtWrUqs6EoCu+++y7NmzdnxIgR6vaffvqJ\nzz77jBUrVlCrVi11e+fOnTl58iQ3b94kPz+f3377DRcXlxLbfn5+uLq6FllZIS0tTf3zpk2baNOm\nDXDnTUN3r508e/Ys8fHxODs7P1Ltqhj7uHHjaNmyJePHjwegTZs2JCUlcezYMY4dO4a9vT0///wz\njRs3ZufOner2sWPHMmnSpHKfvb+r8EoHJ06coFGjRgBcvnyZgoIC4M4vdBkZGdSrV+++2lrT07Gl\nKvt6bWvd12tb6760q76v9djLd0FcFSooKMDf358dO3ZgMplYuXIlx48fr/ZtrfuV3a5fvz5BQUEA\nmEwmdu7cyW+//caMGTPUyV5aWhrz5s0rd3PhwoUcO3aMGzduMHLkSPr374+Pjw8HDhy45yzs9u3b\nSU9PZ/369axfvx6ADz74gLp16xbbjoqKIjw8nFatWvHSSy8BMHnyZGbMmEFubi6DBw8GwNPTk48+\n+ojHH38cPz8/XnnlFQwGA126dMHHx6fY9oEDB1i7di0Wi0V9I9Ps2bMJCwsjJiYGg8GAk5MTS5cu\nBe5cGhEcHIyVlRVGo5GQkJAi76B/FNpa93/99Ve+/fZb2rRpw7PPPgvAjBkz6NatW4njuR/fffcd\np0+fJjs7m6CgIHx8fDh16hQZGRkYDAYef/xx9Trws2fPsm/fPoxGIwaDgZ49e2JtbV2u51m1ahWd\nOnWiQYMGnDx5kjlz5nDlyhU+/vhjGjZsyIYNG4iNjeW1116r0H+Pno4tVdnXa1vrvl7bWvelXfV9\nrcde7ZbYEpWrtCW2KkPhJbYqW+EltipbZV5YLsqn8BJbWii8xFZlK2mJrcpQniW2hBDi/xpdLrEl\nhBBCCCFEWWQSK4QQQgghdEcmsUIIIYQQQndkEiuEEEIIIXRHJrFCCCGEEEJ3ZBIrhBBCCCF0Ryax\nQgghhBBCd2QSK4QQQgghdKfafWKXqFy9e/fWdV+vKvMTSf7XDz/8oFn77sfGamH+/PmatQGuXr2q\naV8IIUT1ImdihRBCCCGE7sgkVgghhBBC6I5MYoUQQgghhO7IJFYIIYQQQuiOTGKFEEIIIYTuVMtJ\nbLdu3YiPjychIYEpU6bopq11v6LtdevWMWvWLP5fe/cfHHV953H89UlIWiXQCgiFJEdCZSSpIGHa\neLV606mmOeqMgdYi9h9urG1prRYObSwzLbXjYapXfoRU0Cu2tNwlxSqedpgJ2Km91tgUS1MlEsjC\nxkm2AVGYIlCGCJ/7I8tOAia7Mfv55vvZPB8zGZPN5rkfvh++zpvku5u1a9cmbtu5c6fWrVun9evX\na/PmzTpx4kTic93d3Xrssce0Zs0arV27Vj09PQO2Ozs7ddNNN+maa67R7NmzVVtbK0l68MEHVVhY\nqHnz5mnevHnasWOHJOlPf/pT4raysjJt37590LW77LtsHz58WHfeeaeqqqq0YMECbd26VZLU2Nio\nBQsWaM6cOWptbU3cv6mpSYsWLdLChQu1aNEiNTc3D3pcfvWrX+mhhx7SunXrErft3LlT69evV21t\nbb89PX78uL773e+qtrZWtbW1SY/59u3bVVNTow0bNiRue+GFF1RXV6cf//jH+tnPfpZoRyIRbdy4\nURs2bNDGjRt16NChQdsX27Bhgw4cOKCmpqZ+t3/lK19Rc3Ozmpqa9OCDDw6pOZAwn6OZ2Hbd97Xt\nuu9r23WfdvB9l21jrU1rcNAHMybpg2VlZenAgQOqqKhQV1eXdu/erTvuuEP79u0b9uO7bLvuv992\nTU1N4v1Dhw7pAx/4gLZt26bly5dLks6cOaMPfvCDkqSXXnpJb775phYuXKhz585pw4YNWrRokaZN\nm6ZTp07psssuU1ZW/3/33H///ZJ6B97u7m7NmzdP77zzjj7xiU/omWee0VNPPaW8vDytWLGi39ed\nPn1aubm5GjNmjLq7u1VWVqauri6NGfPer/rmsu+ifeElto4ePaqjR4+qtLRUp06d0u23367169fL\nGCNjjH7wgx/ovvvu08c+9jFJ0r59+zRx4kRNnjxZ7e3tWrp0qX7zm9/0e/y+L7EVjUaVm5urp556\nSsuWLRt0T48fP64tW7Yk7vde+r7EVkdHh3Jzc/X000/rnnvuuaT98ssv6+jRo7r11lv1t7/9TXl5\neRo/fryOHDmiLVu26Nvf/na/9mAvsXX99dfr5MmT2rRpk66//npJ0g033KAVK1bo9ttv19mzZzVp\n0iS99dZbAzZSeYmtMJ6jmdx23fe17brva9t1n3bw/eG0rbUmaX/YK0yz8vJyRSIRRaNR9fT0qKGh\nQVVVVaFvu+6noz1jxgxddtll/W67MJBI0tmzZxPvt7e36yMf+YimTZsmSRo7duwlA2xfU6dO1bx5\n8yRJ48aN06xZsxSLxQa8/+WXX54Y+s6cOSNjBv+76rLvsn3llVeqtLRUUu8xLC4u1pEjRzRjxgwV\nFxdfcv+SkhJNnjxZknTVVVfpzJkz/fblYsXFxbr88sv73dZ3T3t6epIe24EUFRWl/Pdl2rRpGj9+\nvCRp8uTJevfdd4f0mrNNTU06fvx4v9vuvPNOrVu3LvE4gw2wqQr7OZppbdd9X9uu+762XfdpB993\nvfbQDbH5+fnq7OxMfNzV1aX8/PzQt133XbYbGxv18MMPq6WlRRUVFZJ6BwZjjDZv3qza2lr97ne/\nS7nX0dGhlpYWXXfddZKkuro6zZ07V1/+8pf7DSrNzc2aPXu2rr32Wj322GMDfhc2yL7LdiwWU1tb\nm+bMmZPSn3PXrl0qKSlRbm5uSvfvq7GxUTU1NWppadHNN9+cuP3YsWOqra3VE088oWg0OuTuhXU9\n+uijevXVV3XTTTdd8vnW1lZNnTo15f0cyFVXXaVPfvKT2rVrl37961+rrKxsWD3J33PU17brvq9t\n131f2677tIPvu1576IZYBK+yslLf+c53NHfuXL388suSpPPnz6ujo0OLFy/W0qVL1draqkgkkrR1\n8uRJffGLX9SaNWs0fvx4LV26VJFIRHv27NHUqVN13333Je573XXX6bXXXlNzc7N++MMf6syZMyPa\nd9k+ffq0li9frurqauXl5SX9c0YiEa1du1arVq1Ket/3UllZqQceeKDfno4bN07V1dW69957dcst\nt+iXv/xlSsf8YhUVFbr//vs1Z84c/fGPf+z3uSNHjmjnzp1p+Zf2mDFjdMUVV6iiokLf+9739NOf\n/nTYTQBA5gjdEBuLxVRYWJj4uKCgYNAf7Yal7brveu2SVFZWpr1790qSPvShD6m4uFhjx45Vbm6u\nrr766qSP19PTo9tuu01f+tKX9PnPf16SNGXKFGVnZysrK0t33XWXdu/efcnXlZSUKC8vL/HYI9F3\n3V6+fLluueWWft8VHcjhw4e1bNkyrV69ut+evx9z585NPHFszJgxGjt2rKTefx1PmDBhWD+iv/ba\na/v9et2///3vqq+v1xe+8AVNmDBhWOuWev/OP//885KkPXv26Pz585o4ceKwmz6eo762Xfd9bbvu\n+9p23acdfN/12kM3xO7evVszZ85UUVGRcnJytHjxYj333HOhb7vuu2r3HWJaW1t15ZVXSpJmzpyp\nw4cP6+zZszp37pyi0aimTJkyYMdaq7vuukslJSWJJ41JvU+auuDZZ59NPIEpGo0mrpl844031NbW\npqKiohHpu26vWrVKM2bM0JIlSwb8811w4sQJ3X333Vq2bNn7/vF53z19/fXXE3t68uRJnT9/XlLv\nZQVvv/32kIfNt99+O/F+W1ubJk2aJEn6xz/+oV/84heqqKjQ9OnT39e6L7Zjxw7deOONkqSPfvSj\nys3N7ff474eP56jPbdd9X9uu+762XfdpB993vfbhXbTmwLlz5/TNb35TjY2Nys7O1pNPPtnvuz1h\nbbvup6NdX1+vQ4cO6dSpU1q9erUqKirU1taWuP71wx/+sBYuXCip98lLN954o+rq6mSM0dVXX61Z\ns2YN2H7ppZe0detWzZ49O/EkqYceekgNDQ3661//KmOMpk+frk2bNkmS/vCHP+iRRx5RTk6OsrKy\nVFdXlxiIgu67bP/lL3/R888/r5kzZ+q2226TJN17773q6enR6tWrdfz4cX3jG9/QrFmz9Pjjj6u+\n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\n/w/Kp+iU07JcAAAAAABJRU5ErkJggg==\n", 101 | "text/plain": [ 102 | "" 103 | ] 104 | }, 105 | "metadata": {}, 106 | "output_type": "display_data" 107 | } 108 | ], 109 | "source": [ 110 | "def visualize_input(img, ax):\n", 111 | " ax.imshow(img, cmap='gray')\n", 112 | " width, height = img.shape\n", 113 | " thresh = img.max()/2.5\n", 114 | " for x in range(width):\n", 115 | " for y in range(height):\n", 116 | " ax.annotate(str(round(img[x][y],2)), xy=(y,x),\n", 117 | " horizontalalignment='center',\n", 118 | " verticalalignment='center',\n", 119 | " color='white' if img[x][y] [0,1]\n", 142 | "X_train = X_train.astype('float32')/255\n", 143 | "X_test = X_test.astype('float32')/255 " 144 | ] 145 | }, 146 | { 147 | "cell_type": "markdown", 148 | "metadata": {}, 149 | "source": [ 150 | "### 5. Encode Categorical Integer Labels Using a One-Hot Scheme" 151 | ] 152 | }, 153 | { 154 | "cell_type": "code", 155 | "execution_count": 5, 156 | "metadata": {}, 157 | "outputs": [ 158 | { 159 | "name": "stdout", 160 | "output_type": "stream", 161 | "text": [ 162 | "Integer-valued labels:\n", 163 | "[5 0 4 1 9 2 1 3 1 4]\n", 164 | "One-hot labels:\n", 165 | "[[ 0. 0. 0. 0. 0. 1. 0. 0. 0. 0.]\n", 166 | " [ 1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", 167 | " [ 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]\n", 168 | " [ 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]\n", 169 | " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]\n", 170 | " [ 0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]\n", 171 | " [ 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]\n", 172 | " [ 0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n", 173 | " [ 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]\n", 174 | " [ 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]]\n" 175 | ] 176 | } 177 | ], 178 | "source": [ 179 | "from keras.utils import np_utils\n", 180 | "\n", 181 | "# print first ten (integer-valued) training labels\n", 182 | "print('Integer-valued labels:')\n", 183 | "print(y_train[:10])\n", 184 | "\n", 185 | "# one-hot encode the labels\n", 186 | "y_train = np_utils.to_categorical(y_train, 10)\n", 187 | "y_test = np_utils.to_categorical(y_test, 10)\n", 188 | "\n", 189 | "# print first ten (one-hot) training labels\n", 190 | "print('One-hot labels:')\n", 191 | "print(y_train[:10])" 192 | ] 193 | }, 194 | { 195 | "cell_type": "markdown", 196 | "metadata": {}, 197 | "source": [ 198 | "### 6. Define the Model Architecture" 199 | ] 200 | }, 201 | { 202 | "cell_type": "code", 203 | "execution_count": 6, 204 | "metadata": {}, 205 | "outputs": [ 206 | { 207 | "name": "stdout", 208 | "output_type": "stream", 209 | "text": [ 210 | "_________________________________________________________________\n", 211 | "Layer (type) Output Shape Param # \n", 212 | "=================================================================\n", 213 | "flatten_1 (Flatten) (None, 784) 0 \n", 214 | "_________________________________________________________________\n", 215 | "dense_1 (Dense) (None, 512) 401920 \n", 216 | "_________________________________________________________________\n", 217 | "dropout_1 (Dropout) (None, 512) 0 \n", 218 | "_________________________________________________________________\n", 219 | "dense_2 (Dense) (None, 512) 262656 \n", 220 | "_________________________________________________________________\n", 221 | "dropout_2 (Dropout) (None, 512) 0 \n", 222 | "_________________________________________________________________\n", 223 | "dense_3 (Dense) (None, 10) 5130 \n", 224 | "=================================================================\n", 225 | "Total params: 669,706.0\n", 226 | "Trainable params: 669,706.0\n", 227 | "Non-trainable params: 0.0\n", 228 | "_________________________________________________________________\n" 229 | ] 230 | } 231 | ], 232 | "source": [ 233 | "from keras.models import Sequential\n", 234 | "from keras.layers import Dense, Dropout, Flatten\n", 235 | "\n", 236 | "# define the model\n", 237 | "model = Sequential()\n", 238 | "model.add(Flatten(input_shape=X_train.shape[1:]))\n", 239 | "model.add(Dense(512, activation='relu'))\n", 240 | "model.add(Dropout(0.2))\n", 241 | "model.add(Dense(512, activation='relu'))\n", 242 | "model.add(Dropout(0.2))\n", 243 | "model.add(Dense(10, activation='softmax'))\n", 244 | "\n", 245 | "# summarize the model\n", 246 | "model.summary()" 247 | ] 248 | }, 249 | { 250 | "cell_type": "markdown", 251 | "metadata": {}, 252 | "source": [ 253 | "### 7. Compile the Model" 254 | ] 255 | }, 256 | { 257 | "cell_type": "code", 258 | "execution_count": 7, 259 | "metadata": { 260 | "collapsed": true 261 | }, 262 | "outputs": [], 263 | "source": [ 264 | "# compile the model\n", 265 | "model.compile(loss='categorical_crossentropy', optimizer='rmsprop', \n", 266 | " metrics=['accuracy'])" 267 | ] 268 | }, 269 | { 270 | "cell_type": "markdown", 271 | "metadata": {}, 272 | "source": [ 273 | "### 8. Calculate the Classification Accuracy on the Test Set (Before Training)" 274 | ] 275 | }, 276 | { 277 | "cell_type": "code", 278 | "execution_count": 8, 279 | "metadata": {}, 280 | "outputs": [ 281 | { 282 | "name": "stdout", 283 | "output_type": "stream", 284 | "text": [ 285 | "Test accuracy: 6.2500%\n" 286 | ] 287 | } 288 | ], 289 | "source": [ 290 | "# evaluate test accuracy\n", 291 | "score = model.evaluate(X_test, y_test, verbose=0)\n", 292 | "accuracy = 100*score[1]\n", 293 | "\n", 294 | "# print test accuracy\n", 295 | "print('Test accuracy: %.4f%%' % accuracy)" 296 | ] 297 | }, 298 | { 299 | "cell_type": "markdown", 300 | "metadata": {}, 301 | "source": [ 302 | "### 9. Train the Model" 303 | ] 304 | }, 305 | { 306 | "cell_type": "code", 307 | "execution_count": 9, 308 | "metadata": {}, 309 | "outputs": [ 310 | { 311 | "name": "stdout", 312 | "output_type": "stream", 313 | "text": [ 314 | "Train on 48000 samples, validate on 12000 samples\n", 315 | "Epoch 1/10\n", 316 | "47104/48000 [============================>.] - ETA: 0s - loss: 0.2756 - acc: 0.9150 \b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\bEpoch 00000: val_loss improved from inf to 0.11112, saving model to mnist.model.best.hdf5\n", 317 | "48000/48000 [==============================] - 3s - loss: 0.2735 - acc: 0.9155 - val_loss: 0.1111 - val_acc: 0.9663\n", 318 | "Epoch 2/10\n", 319 | "47616/48000 [============================>.] - ETA: 0s - loss: 0.1105 - acc: 0.9664\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\bEpoch 00001: val_loss improved from 0.11112 to 0.09212, saving model to mnist.model.best.hdf5\n", 320 | "48000/48000 [==============================] - 2s - loss: 0.1104 - acc: 0.9664 - val_loss: 0.0921 - val_acc: 0.9739\n", 321 | "Epoch 3/10\n", 322 | "47488/48000 [============================>.] - ETA: 0s - loss: 0.0777 - acc: 0.9764\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\bEpoch 00002: val_loss improved from 0.09212 to 0.09021, saving model to mnist.model.best.hdf5\n", 323 | "48000/48000 [==============================] - 2s - loss: 0.0779 - acc: 0.9763 - val_loss: 0.0902 - val_acc: 0.9741\n", 324 | "Epoch 4/10\n", 325 | "47232/48000 [============================>.] - ETA: 0s - loss: 0.0629 - acc: 0.9815\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\bEpoch 00003: val_loss did not improve\n", 326 | "48000/48000 [==============================] - 2s - loss: 0.0630 - acc: 0.9814 - val_loss: 0.1114 - val_acc: 0.9710\n", 327 | "Epoch 5/10\n", 328 | "47616/48000 [============================>.] - ETA: 0s - loss: 0.0529 - acc: 0.9840\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\bEpoch 00004: val_loss did not improve\n", 329 | "48000/48000 [==============================] - 2s - loss: 0.0534 - acc: 0.9839 - val_loss: 0.0987 - val_acc: 0.9752\n", 330 | "Epoch 6/10\n", 331 | "47616/48000 [============================>.] - ETA: 0s - loss: 0.0442 - acc: 0.9868\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\bEpoch 00005: val_loss improved from 0.09021 to 0.08665, saving model to mnist.model.best.hdf5\n", 332 | "48000/48000 [==============================] - 3s - loss: 0.0443 - acc: 0.9867 - val_loss: 0.0866 - val_acc: 0.9798\n", 333 | "Epoch 7/10\n", 334 | "47616/48000 [============================>.] - ETA: 0s - loss: 0.0384 - acc: 0.9886\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\bEpoch 00006: val_loss did not improve\n", 335 | "48000/48000 [==============================] - 3s - loss: 0.0386 - acc: 0.9886 - val_loss: 0.0926 - val_acc: 0.9800\n", 336 | "Epoch 8/10\n", 337 | "47616/48000 [============================>.] - ETA: 0s - loss: 0.0324 - acc: 0.9900 \b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\bEpoch 00007: val_loss did not improve\n", 338 | "48000/48000 [==============================] - 3s - loss: 0.0323 - acc: 0.9900 - val_loss: 0.0919 - val_acc: 0.9800\n", 339 | "Epoch 9/10\n", 340 | "47360/48000 [============================>.] - ETA: 0s - loss: 0.0310 - acc: 0.9907\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\bEpoch 00008: val_loss did not improve\n", 341 | "48000/48000 [==============================] - 3s - loss: 0.0310 - acc: 0.9907 - val_loss: 0.0996 - val_acc: 0.9805\n", 342 | "Epoch 10/10\n", 343 | "47744/48000 [============================>.] - ETA: 0s - loss: 0.0272 - acc: 0.9923\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\bEpoch 00009: val_loss did not improve\n", 344 | "48000/48000 [==============================] - 3s - loss: 0.0272 - acc: 0.9923 - val_loss: 0.1024 - val_acc: 0.9802\n" 345 | ] 346 | } 347 | ], 348 | "source": [ 349 | "from keras.callbacks import ModelCheckpoint \n", 350 | "\n", 351 | "# train the model\n", 352 | "checkpointer = ModelCheckpoint(filepath='mnist.model.best.hdf5', \n", 353 | " verbose=2, save_best_only=True)\n", 354 | "hist = model.fit(X_train, y_train, batch_size=128, epochs=10,\n", 355 | " validation_split=0.2, callbacks=[checkpointer],\n", 356 | " verbose=1, shuffle=True)" 357 | ] 358 | }, 359 | { 360 | "cell_type": "markdown", 361 | "metadata": {}, 362 | "source": [ 363 | "### 10. Load the Model with the Best Classification Accuracy on the Validation Set" 364 | ] 365 | }, 366 | { 367 | "cell_type": "code", 368 | "execution_count": 10, 369 | "metadata": { 370 | "collapsed": true 371 | }, 372 | "outputs": [], 373 | "source": [ 374 | "# load the weights that yielded the best validation accuracy\n", 375 | "model.load_weights('mnist.model.best.hdf5')" 376 | ] 377 | }, 378 | { 379 | "cell_type": "markdown", 380 | "metadata": {}, 381 | "source": [ 382 | "### 11. Calculate the Classification Accuracy on the Test Set" 383 | ] 384 | }, 385 | { 386 | "cell_type": "code", 387 | "execution_count": 11, 388 | "metadata": {}, 389 | "outputs": [ 390 | { 391 | "name": "stdout", 392 | "output_type": "stream", 393 | "text": [ 394 | "Test accuracy: 98.2100%\n" 395 | ] 396 | } 397 | ], 398 | "source": [ 399 | "# evaluate test accuracy\n", 400 | "score = model.evaluate(X_test, y_test, verbose=0)\n", 401 | "accuracy = 100*score[1]\n", 402 | "\n", 403 | "# print test accuracy\n", 404 | "print('Test accuracy: %.4f%%' % accuracy)" 405 | ] 406 | } 407 | ], 408 | "metadata": { 409 | "anaconda-cloud": {}, 410 | "kernelspec": { 411 | "display_name": "Python [default]", 412 | "language": "python", 413 | "name": "python3" 414 | }, 415 | "language_info": { 416 | "codemirror_mode": { 417 | "name": "ipython", 418 | "version": 3 419 | }, 420 | "file_extension": ".py", 421 | "mimetype": "text/x-python", 422 | "name": "python", 423 | "nbconvert_exporter": "python", 424 | "pygments_lexer": "ipython3", 425 | "version": "3.5.3" 426 | } 427 | }, 428 | "nbformat": 4, 429 | "nbformat_minor": 2 430 | } 431 | -------------------------------------------------------------------------------- /requirements/dog-linux-gpu.yml: -------------------------------------------------------------------------------- 1 | name: dog-project 2 | channels: 3 | - defaults 4 | dependencies: 5 | - openssl=1.0.2l=0 6 | - pip=9.0.1=py36_1 7 | - python=3.6.1=2 8 | - readline=6.2=2 9 | - setuptools=27.2.0=py36_0 10 | - sqlite=3.13.0=0 11 | - tk=8.5.18=0 12 | - wheel=0.29.0=py36_0 13 | - xz=5.2.2=1 14 | - zlib=1.2.8=3 15 | - pip: 16 | - bleach==2.0.0 17 | - cycler==0.10.0 18 | - decorator==4.0.11 19 | - entrypoints==0.2.3 20 | - h5py==2.6.0 21 | - html5lib==0.999999999 22 | - ipykernel==4.6.1 23 | - ipython==6.1.0 24 | - ipython-genutils==0.2.0 25 | - ipywidgets==6.0.0 26 | - jedi==0.10.2 27 | - jinja2==2.9.6 28 | - jsonschema==2.6.0 29 | - jupyter==1.0.0 30 | - jupyter-client==5.0.1 31 | - jupyter-console==5.1.0 32 | - jupyter-core==4.3.0 33 | - keras==2.0.2 34 | - markupsafe==1.0 35 | - matplotlib==2.0.0 36 | - mistune==0.7.4 37 | - nbconvert==5.2.1 38 | - nbformat==4.3.0 39 | - notebook==5.0.0 40 | - numpy==1.12.0 41 | - olefile==0.44 42 | - opencv-python==3.2.0.6 43 | - pandocfilters==1.4.1 44 | - pexpect==4.2.1 45 | - pickleshare==0.7.4 46 | - pillow==4.0.0 47 | - prompt-toolkit==1.0.14 48 | - protobuf==3.3.0 49 | - ptyprocess==0.5.1 50 | - pygments==2.2.0 51 | - pyparsing==2.2.0 52 | - python-dateutil==2.6.0 53 | - pytz==2017.2 54 | - pyyaml==3.12 55 | - pyzmq==16.0.2 56 | - qtconsole==4.3.0 57 | - scikit-learn==0.18.1 58 | - scipy==0.18.1 59 | - simplegeneric==0.8.1 60 | - six==1.10.0 61 | - tensorflow-gpu==1.0.0 62 | - terminado==0.6 63 | - testpath==0.3.1 64 | - theano==0.9.0 65 | - tornado==4.5.1 66 | - tqdm==4.11.2 67 | - traitlets==4.3.2 68 | - wcwidth==0.1.7 69 | - webencodings==0.5.1 70 | - widgetsnbextension==2.0.0 71 | -------------------------------------------------------------------------------- /requirements/dog-linux.yml: -------------------------------------------------------------------------------- 1 | name: dog-project 2 | channels: 3 | - defaults 4 | dependencies: 5 | - openssl=1.0.2l=0 6 | - pip=9.0.1=py36_1 7 | - python=3.6.1=2 8 | - readline=6.2=2 9 | - setuptools=27.2.0=py36_0 10 | - sqlite=3.13.0=0 11 | - tk=8.5.18=0 12 | - wheel=0.29.0=py36_0 13 | - xz=5.2.2=1 14 | - zlib=1.2.8=3 15 | - pip: 16 | - bleach==2.0.0 17 | - cycler==0.10.0 18 | - decorator==4.0.11 19 | - entrypoints==0.2.3 20 | - h5py==2.6.0 21 | - html5lib==0.999999999 22 | - ipykernel==4.6.1 23 | - ipython==6.1.0 24 | - ipython-genutils==0.2.0 25 | - ipywidgets==6.0.0 26 | - jedi==0.10.2 27 | - jinja2==2.9.6 28 | - jsonschema==2.6.0 29 | - jupyter==1.0.0 30 | - jupyter-client==5.0.1 31 | - jupyter-console==5.1.0 32 | - jupyter-core==4.3.0 33 | - keras==2.0.2 34 | - markupsafe==1.0 35 | - matplotlib==2.0.0 36 | - mistune==0.7.4 37 | - nbconvert==5.2.1 38 | - nbformat==4.3.0 39 | - notebook==5.0.0 40 | - numpy==1.12.0 41 | - olefile==0.44 42 | - opencv-python==3.2.0.6 43 | - pandocfilters==1.4.1 44 | - pexpect==4.2.1 45 | - pickleshare==0.7.4 46 | - pillow==4.0.0 47 | - prompt-toolkit==1.0.14 48 | - protobuf==3.3.0 49 | - ptyprocess==0.5.1 50 | - pygments==2.2.0 51 | - pyparsing==2.2.0 52 | - python-dateutil==2.6.0 53 | - pytz==2017.2 54 | - pyyaml==3.12 55 | - pyzmq==16.0.2 56 | - qtconsole==4.3.0 57 | - scikit-learn==0.18.1 58 | - scipy==0.18.1 59 | - simplegeneric==0.8.1 60 | - six==1.10.0 61 | - tensorflow==1.0.0 62 | - terminado==0.6 63 | - testpath==0.3.1 64 | - theano==0.9.0 65 | - tornado==4.5.1 66 | - tqdm==4.11.2 67 | - traitlets==4.3.2 68 | - wcwidth==0.1.7 69 | - webencodings==0.5.1 70 | - widgetsnbextension==2.0.0 71 | -------------------------------------------------------------------------------- /requirements/dog-mac-gpu.yml: -------------------------------------------------------------------------------- 1 | name: dog-project 2 | channels: 3 | - damianavila82 4 | - defaults 5 | dependencies: 6 | - rise=4.0.0b1=py35_0 7 | - _license=1.1=py35_1 8 | - alabaster=0.7.10=py35_0 9 | - anaconda-client=1.6.2=py35_0 10 | - anaconda=custom=py35_0 11 | - anaconda-navigator=1.5.0=py35_0 12 | - anaconda-project=0.4.1=py35_0 13 | - appnope=0.1.0=py35_0 14 | - appscript=1.0.1=py35_0 15 | - astroid=1.4.9=py35_0 16 | - astropy=1.3=np112py35_0 17 | - babel=2.3.4=py35_0 18 | - backports=1.0=py35_0 19 | - beautifulsoup4=4.5.3=py35_0 20 | - bitarray=0.8.1=py35_0 21 | - blaze=0.10.1=py35_0 22 | - bleach=1.5.0=py35_0 23 | - bokeh=0.12.4=py35_0 24 | - boto=2.46.1=py35_0 25 | - bottleneck=1.2.0=np112py35_0 26 | - cffi=1.9.1=py35_0 27 | - chardet=2.3.0=py35_0 28 | - chest=0.2.3=py35_0 29 | - click=6.7=py35_0 30 | - cloudpickle=0.2.2=py35_0 31 | - clyent=1.2.2=py35_0 32 | - colorama=0.3.7=py35_0 33 | - configobj=5.0.6=py35_0 34 | - contextlib2=0.5.4=py35_0 35 | - cryptography=1.7.1=py35_0 36 | - curl=7.52.1=0 37 | - cycler=0.10.0=py35_0 38 | - cython=0.25.2=py35_0 39 | - cytoolz=0.8.2=py35_0 40 | - dask=0.14.0=py35_0 41 | - datashape=0.5.4=py35_0 42 | - decorator=4.0.11=py35_0 43 | - dill=0.2.5=py35_0 44 | - docutils=0.13.1=py35_0 45 | - entrypoints=0.2.2=py35_1 46 | - et_xmlfile=1.0.1=py35_0 47 | - fastcache=1.0.2=py35_1 48 | - flask=0.12=py35_0 49 | - flask-cors=3.0.2=py35_0 50 | - freetype=2.5.5=2 51 | - get_terminal_size=1.0.0=py35_0 52 | - gevent=1.2.1=py35_0 53 | - greenlet=0.4.12=py35_0 54 | - h5py=2.6.0=np112py35_2 55 | - hdf5=1.8.17=1 56 | - heapdict=1.0.0=py35_1 57 | - html5lib=0.999=py35_0 58 | - icu=54.1=0 59 | - idna=2.2=py35_0 60 | - imagesize=0.7.1=py35_0 61 | - ipykernel=4.5.2=py35_0 62 | - ipython=5.3.0=py35_0 63 | - ipython_genutils=0.1.0=py35_0 64 | - ipywidgets=6.0.0=py35_0 65 | - isort=4.2.5=py35_0 66 | - itsdangerous=0.24=py35_0 67 | - jbig=2.1=0 68 | - jdcal=1.3=py35_0 69 | - jedi=0.9.0=py35_1 70 | - jinja2=2.9.5=py35_0 71 | - jpeg=9b=0 72 | - jsonschema=2.5.1=py35_0 73 | - jupyter=1.0.0=py35_3 74 | - jupyter_client=5.0.0=py35_0 75 | - jupyter_console=5.1.0=py35_0 76 | - jupyter_core=4.3.0=py35_0 77 | - lazy-object-proxy=1.2.2=py35_0 78 | - libiconv=1.14=0 79 | - libpng=1.6.27=0 80 | - libtiff=4.0.6=3 81 | - libxml2=2.9.4=0 82 | - libxslt=1.1.29=0 83 | - llvmlite=0.16.0=py35_0 84 | - locket=0.2.0=py35_1 85 | - lxml=3.7.3=py35_0 86 | - markupsafe=0.23=py35_2 87 | - matplotlib=2.0.0=np112py35_0 88 | - mistune=0.7.4=py35_0 89 | - mkl=2017.0.1=0 90 | - mkl-service=1.1.2=py35_3 91 | - mpmath=0.19=py35_1 92 | - multipledispatch=0.4.9=py35_0 93 | - nbconvert=5.1.1=py35_0 94 | - nbformat=4.3.0=py35_0 95 | - networkx=1.11=py35_0 96 | - nltk=3.2.2=py35_0 97 | - nose=1.3.7=py35_1 98 | - notebook=4.4.1=py35_0 99 | - numba=0.31.0=np112py35_0 100 | - numexpr=2.6.2=np112py35_0 101 | - numpy=1.12.0=py35_0 102 | - numpydoc=0.6.0=py35_0 103 | - odo=0.5.0=py35_1 104 | - olefile=0.44=py35_0 105 | - openpyxl=2.4.1=py35_0 106 | - openssl=1.0.2k=0 107 | - pandas=0.19.2=np112py35_1 108 | - pandocfilters=1.4.1=py35_0 109 | - partd=0.3.7=py35_0 110 | - path.py=10.1=py35_0 111 | - pathlib2=2.2.0=py35_0 112 | - patsy=0.4.1=py35_0 113 | - pep8=1.7.0=py35_0 114 | - pexpect=4.2.1=py35_0 115 | - pickleshare=0.7.4=py35_0 116 | - pillow=4.0.0=py35_1 117 | - pip=9.0.1=py35_1 118 | - ply=3.10=py35_0 119 | - prompt_toolkit=1.0.13=py35_0 120 | - psutil=5.2.0=py35_0 121 | - ptyprocess=0.5.1=py35_0 122 | - py=1.4.32=py35_0 123 | - pyasn1=0.2.3=py35_0 124 | - pycosat=0.6.1=py35_1 125 | - pycparser=2.17=py35_0 126 | - pycrypto=2.6.1=py35_4 127 | - pycurl=7.43.0=py35_2 128 | - pyflakes=1.5.0=py35_0 129 | - pygments=2.2.0=py35_0 130 | - pylint=1.6.4=py35_1 131 | - pyopenssl=16.2.0=py35_0 132 | - pyparsing=2.1.4=py35_0 133 | - pyqt=5.6.0=py35_2 134 | - pytables=3.3.0=np112py35_0 135 | - pytest=3.0.6=py35_0 136 | - python=3.5.3=1 137 | - python-dateutil=2.6.0=py35_0 138 | - python.app=1.2=py35_4 139 | - pytz=2016.10=py35_0 140 | - pyyaml=3.12=py35_0 141 | - pyzmq=16.0.2=py35_0 142 | - qt=5.6.2=0 143 | - qtawesome=0.4.4=py35_0 144 | - qtconsole=4.2.1=py35_1 145 | - qtpy=1.2.1=py35_0 146 | - readline=6.2=2 147 | - redis=3.2.0=0 148 | - redis-py=2.10.5=py35_0 149 | - requests=2.13.0=py35_0 150 | - rope=0.9.4=py35_1 151 | - ruamel_yaml=0.11.14=py35_1 152 | - scikit-image=0.12.3=np112py35_1 153 | - scikit-learn=0.18.1=np112py35_1 154 | - scipy=0.19.0=np112py35_0 155 | - seaborn=0.7.1=py35_0 156 | - setuptools=27.2.0=py35_0 157 | - simplegeneric=0.8.1=py35_1 158 | - singledispatch=3.4.0.3=py35_0 159 | - sip=4.18=py35_0 160 | - six=1.10.0=py35_0 161 | - snowballstemmer=1.2.1=py35_0 162 | - sockjs-tornado=1.0.3=py35_0 163 | - sphinx=1.5.1=py35_0 164 | - spyder=3.1.3=py35_0 165 | - sqlalchemy=1.1.6=py35_0 166 | - sqlite=3.13.0=0 167 | - statsmodels=0.8.0=np112py35_0 168 | - sympy=1.0=py35_0 169 | - terminado=0.6=py35_0 170 | - testpath=0.3=py35_0 171 | - tk=8.5.18=0 172 | - toolz=0.8.2=py35_0 173 | - tornado=4.4.2=py35_0 174 | - traitlets=4.3.2=py35_0 175 | - unicodecsv=0.14.1=py35_0 176 | - wcwidth=0.1.7=py35_0 177 | - werkzeug=0.12=py35_0 178 | - wheel=0.29.0=py35_0 179 | - widgetsnbextension=2.0.0=py35_0 180 | - wrapt=1.10.8=py35_0 181 | - xlrd=1.0.0=py35_0 182 | - xlsxwriter=0.9.6=py35_0 183 | - xlwings=0.10.2=py35_0 184 | - xlwt=1.2.0=py35_0 185 | - xz=5.2.2=1 186 | - yaml=0.1.6=0 187 | - zlib=1.2.8=3 188 | - pip: 189 | - backports.shutil-get-terminal-size==1.0.0 190 | - cvxopt==1.1.9 191 | - et-xmlfile==1.0.1 192 | - ipython-genutils==0.1.0 193 | - jupyter-client==5.0.0 194 | - jupyter-console==5.1.0 195 | - jupyter-core==4.3.0 196 | - keras==2.0.0 197 | - opencv-python==3.2.0.6 198 | - prompt-toolkit==1.0.13 199 | - protobuf==3.2.0 200 | - rope-py3k==0.9.4.post1 201 | - tables==3.3.0 202 | - tensorflow-gpu==1.0.0 203 | - theano==0.8.2 204 | - tqdm==4.11.2 -------------------------------------------------------------------------------- /requirements/dog-mac.yml: -------------------------------------------------------------------------------- 1 | name: dog-project 2 | channels: 3 | - damianavila82 4 | - defaults 5 | dependencies: 6 | - rise=4.0.0b1=py35_0 7 | - _license=1.1=py35_1 8 | - alabaster=0.7.10=py35_0 9 | - anaconda-client=1.6.2=py35_0 10 | - anaconda=custom=py35_0 11 | - anaconda-navigator=1.5.0=py35_0 12 | - anaconda-project=0.4.1=py35_0 13 | - appnope=0.1.0=py35_0 14 | - appscript=1.0.1=py35_0 15 | - astroid=1.4.9=py35_0 16 | - astropy=1.3=np112py35_0 17 | - babel=2.3.4=py35_0 18 | - backports=1.0=py35_0 19 | - beautifulsoup4=4.5.3=py35_0 20 | - bitarray=0.8.1=py35_0 21 | - blaze=0.10.1=py35_0 22 | - bleach=1.5.0=py35_0 23 | - bokeh=0.12.4=py35_0 24 | - boto=2.46.1=py35_0 25 | - bottleneck=1.2.0=np112py35_0 26 | - cffi=1.9.1=py35_0 27 | - chardet=2.3.0=py35_0 28 | - chest=0.2.3=py35_0 29 | - click=6.7=py35_0 30 | - cloudpickle=0.2.2=py35_0 31 | - clyent=1.2.2=py35_0 32 | - colorama=0.3.7=py35_0 33 | - configobj=5.0.6=py35_0 34 | - contextlib2=0.5.4=py35_0 35 | - cryptography=1.7.1=py35_0 36 | - curl=7.52.1=0 37 | - cycler=0.10.0=py35_0 38 | - cython=0.25.2=py35_0 39 | - cytoolz=0.8.2=py35_0 40 | - dask=0.14.0=py35_0 41 | - datashape=0.5.4=py35_0 42 | - decorator=4.0.11=py35_0 43 | - dill=0.2.5=py35_0 44 | - docutils=0.13.1=py35_0 45 | - entrypoints=0.2.2=py35_1 46 | - et_xmlfile=1.0.1=py35_0 47 | - fastcache=1.0.2=py35_1 48 | - flask=0.12=py35_0 49 | - flask-cors=3.0.2=py35_0 50 | - freetype=2.5.5=2 51 | - get_terminal_size=1.0.0=py35_0 52 | - gevent=1.2.1=py35_0 53 | - greenlet=0.4.12=py35_0 54 | - h5py=2.6.0=np112py35_2 55 | - hdf5=1.8.17=1 56 | - heapdict=1.0.0=py35_1 57 | - html5lib=0.999=py35_0 58 | - icu=54.1=0 59 | - idna=2.2=py35_0 60 | - imagesize=0.7.1=py35_0 61 | - ipykernel=4.5.2=py35_0 62 | - ipython=5.3.0=py35_0 63 | - ipython_genutils=0.1.0=py35_0 64 | - ipywidgets=6.0.0=py35_0 65 | - isort=4.2.5=py35_0 66 | - itsdangerous=0.24=py35_0 67 | - jbig=2.1=0 68 | - jdcal=1.3=py35_0 69 | - jedi=0.9.0=py35_1 70 | - jinja2=2.9.5=py35_0 71 | - jpeg=9b=0 72 | - jsonschema=2.5.1=py35_0 73 | - jupyter=1.0.0=py35_3 74 | - jupyter_client=5.0.0=py35_0 75 | - jupyter_console=5.1.0=py35_0 76 | - jupyter_core=4.3.0=py35_0 77 | - lazy-object-proxy=1.2.2=py35_0 78 | - libiconv=1.14=0 79 | - libpng=1.6.27=0 80 | - libtiff=4.0.6=3 81 | - libxml2=2.9.4=0 82 | - libxslt=1.1.29=0 83 | - llvmlite=0.16.0=py35_0 84 | - locket=0.2.0=py35_1 85 | - lxml=3.7.3=py35_0 86 | - markupsafe=0.23=py35_2 87 | - matplotlib=2.0.0=np112py35_0 88 | - mistune=0.7.4=py35_0 89 | - mkl=2017.0.1=0 90 | - mkl-service=1.1.2=py35_3 91 | - mpmath=0.19=py35_1 92 | - multipledispatch=0.4.9=py35_0 93 | - nbconvert=5.1.1=py35_0 94 | - nbformat=4.3.0=py35_0 95 | - networkx=1.11=py35_0 96 | - nltk=3.2.2=py35_0 97 | - nose=1.3.7=py35_1 98 | - notebook=4.4.1=py35_0 99 | - numba=0.31.0=np112py35_0 100 | - numexpr=2.6.2=np112py35_0 101 | - numpy=1.12.0=py35_0 102 | - numpydoc=0.6.0=py35_0 103 | - odo=0.5.0=py35_1 104 | - olefile=0.44=py35_0 105 | - openpyxl=2.4.1=py35_0 106 | - openssl=1.0.2k=0 107 | - pandas=0.19.2=np112py35_1 108 | - pandocfilters=1.4.1=py35_0 109 | - partd=0.3.7=py35_0 110 | - path.py=10.1=py35_0 111 | - pathlib2=2.2.0=py35_0 112 | - patsy=0.4.1=py35_0 113 | - pep8=1.7.0=py35_0 114 | - pexpect=4.2.1=py35_0 115 | - pickleshare=0.7.4=py35_0 116 | - pillow=4.0.0=py35_1 117 | - pip=9.0.1=py35_1 118 | - ply=3.10=py35_0 119 | - prompt_toolkit=1.0.13=py35_0 120 | - psutil=5.2.0=py35_0 121 | - ptyprocess=0.5.1=py35_0 122 | - py=1.4.32=py35_0 123 | - pyasn1=0.2.3=py35_0 124 | - pycosat=0.6.1=py35_1 125 | - pycparser=2.17=py35_0 126 | - pycrypto=2.6.1=py35_4 127 | - pycurl=7.43.0=py35_2 128 | - pyflakes=1.5.0=py35_0 129 | - pygments=2.2.0=py35_0 130 | - pylint=1.6.4=py35_1 131 | - pyopenssl=16.2.0=py35_0 132 | - pyparsing=2.1.4=py35_0 133 | - pyqt=5.6.0=py35_2 134 | - pytables=3.3.0=np112py35_0 135 | - pytest=3.0.6=py35_0 136 | - python=3.5.3=1 137 | - python-dateutil=2.6.0=py35_0 138 | - python.app=1.2=py35_4 139 | - pytz=2016.10=py35_0 140 | - pyyaml=3.12=py35_0 141 | - pyzmq=16.0.2=py35_0 142 | - qt=5.6.2=0 143 | - qtawesome=0.4.4=py35_0 144 | - qtconsole=4.2.1=py35_1 145 | - qtpy=1.2.1=py35_0 146 | - readline=6.2=2 147 | - redis=3.2.0=0 148 | - redis-py=2.10.5=py35_0 149 | - requests=2.13.0=py35_0 150 | - rope=0.9.4=py35_1 151 | - ruamel_yaml=0.11.14=py35_1 152 | - scikit-image=0.12.3=np112py35_1 153 | - scikit-learn=0.18.1=np112py35_1 154 | - scipy=0.19.0=np112py35_0 155 | - seaborn=0.7.1=py35_0 156 | - setuptools=27.2.0=py35_0 157 | - simplegeneric=0.8.1=py35_1 158 | - singledispatch=3.4.0.3=py35_0 159 | - sip=4.18=py35_0 160 | - six=1.10.0=py35_0 161 | - snowballstemmer=1.2.1=py35_0 162 | - sockjs-tornado=1.0.3=py35_0 163 | - sphinx=1.5.1=py35_0 164 | - spyder=3.1.3=py35_0 165 | - sqlalchemy=1.1.6=py35_0 166 | - sqlite=3.13.0=0 167 | - statsmodels=0.8.0=np112py35_0 168 | - sympy=1.0=py35_0 169 | - terminado=0.6=py35_0 170 | - testpath=0.3=py35_0 171 | - tk=8.5.18=0 172 | - toolz=0.8.2=py35_0 173 | - tornado=4.4.2=py35_0 174 | - traitlets=4.3.2=py35_0 175 | - unicodecsv=0.14.1=py35_0 176 | - wcwidth=0.1.7=py35_0 177 | - werkzeug=0.12=py35_0 178 | - wheel=0.29.0=py35_0 179 | - widgetsnbextension=2.0.0=py35_0 180 | - wrapt=1.10.8=py35_0 181 | - xlrd=1.0.0=py35_0 182 | - xlsxwriter=0.9.6=py35_0 183 | - xlwings=0.10.2=py35_0 184 | - xlwt=1.2.0=py35_0 185 | - xz=5.2.2=1 186 | - yaml=0.1.6=0 187 | - zlib=1.2.8=3 188 | - pip: 189 | - backports.shutil-get-terminal-size==1.0.0 190 | - cvxopt==1.1.9 191 | - et-xmlfile==1.0.1 192 | - ipython-genutils==0.1.0 193 | - jupyter-client==5.0.0 194 | - jupyter-console==5.1.0 195 | - jupyter-core==4.3.0 196 | - keras==2.0.0 197 | - opencv-python==3.2.0.6 198 | - prompt-toolkit==1.0.13 199 | - protobuf==3.2.0 200 | - rope-py3k==0.9.4.post1 201 | - tables==3.3.0 202 | - tensorflow==1.0.0 203 | - theano==0.8.2 204 | - tqdm==4.11.2 -------------------------------------------------------------------------------- /requirements/dog-windows-gpu.yml: -------------------------------------------------------------------------------- 1 | name: dog-project 2 | channels: 3 | - defaults 4 | dependencies: 5 | - _nb_ext_conf=0.3.0=py35_0 6 | - anaconda-client=1.6.2=py35_0 7 | - bleach=1.5.0=py35_0 8 | - bzip2=1.0.6=vc14_3 9 | - clyent=1.2.2=py35_0 10 | - colorama=0.3.7=py35_0 11 | - cycler=0.10.0=py35_0 12 | - decorator=4.0.11=py35_0 13 | - entrypoints=0.2.2=py35_1 14 | - freetype=2.5.5=vc14_2 15 | - h5py=2.7.0=np112py35_0 16 | - hdf5=1.8.15.1=vc14_4 17 | - html5lib=0.999=py35_0 18 | - icu=57.1=vc14_0 19 | - ipykernel=4.5.2=py35_0 20 | - ipython=5.3.0=py35_0 21 | - ipython_genutils=0.1.0=py35_0 22 | - ipywidgets=6.0.0=py35_0 23 | - jinja2=2.9.5=py35_0 24 | - jpeg=9b=vc14_0 25 | - jsonschema=2.5.1=py35_0 26 | - jupyter=1.0.0=py35_3 27 | - jupyter_client=5.0.0=py35_0 28 | - jupyter_console=5.1.0=py35_0 29 | - jupyter_core=4.3.0=py35_0 30 | - libpng=1.6.27=vc14_0 31 | - libtiff=4.0.6=vc14_3 32 | - markupsafe=0.23=py35_2 33 | - matplotlib=2.0.0=np112py35_0 34 | - mistune=0.7.4=py35_0 35 | - mkl=2017.0.1=0 36 | - nb_anacondacloud=1.2.0=py35_0 37 | - nb_conda=2.0.0=py35_0 38 | - nb_conda_kernels=2.0.0=py35_0 39 | - nbconvert=5.1.1=py35_0 40 | - nbformat=4.3.0=py35_0 41 | - nbpresent=3.0.2=py35_0 42 | - notebook=4.4.1=py35_0 43 | - numpy=1.12.1=py35_0 44 | - olefile=0.44=py35_0 45 | - openssl=1.0.2k=vc14_0 46 | - pandocfilters=1.4.1=py35_0 47 | - path.py=10.1=py35_0 48 | - pickleshare=0.7.4=py35_0 49 | - pillow=4.0.0=py35_1 50 | - pip=9.0.1=py35_1 51 | - prompt_toolkit=1.0.13=py35_0 52 | - pygments=2.2.0=py35_0 53 | - pyparsing=2.1.4=py35_0 54 | - pyqt=5.6.0=py35_2 55 | - python=3.5.3=0 56 | - python-dateutil=2.6.0=py35_0 57 | - pytz=2016.10=py35_0 58 | - pyyaml=3.12=py35_0 59 | - pyzmq=16.0.2=py35_0 60 | - qt=5.6.2=vc14_3 61 | - qtconsole=4.2.1=py35_2 62 | - requests=2.13.0=py35_0 63 | - scikit-learn=0.18.1=np112py35_1 64 | - scipy=0.19.0=np112py35_0 65 | - setuptools=27.2.0=py35_1 66 | - simplegeneric=0.8.1=py35_1 67 | - sip=4.18=py35_0 68 | - six=1.10.0=py35_0 69 | - testpath=0.3=py35_0 70 | - tk=8.5.18=vc14_0 71 | - tornado=4.4.2=py35_0 72 | - traitlets=4.3.2=py35_0 73 | - vs2015_runtime=14.0.25123=0 74 | - wcwidth=0.1.7=py35_0 75 | - wheel=0.29.0=py35_0 76 | - widgetsnbextension=2.0.0=py35_0 77 | - win_unicode_console=0.5=py35_0 78 | - zlib=1.2.8=vc14_3 79 | - pip: 80 | - ipython-genutils==0.1.0 81 | - jupyter-client==5.0.0 82 | - jupyter-console==5.1.0 83 | - jupyter-core==4.3.0 84 | - keras==2.0.2 85 | - nb-anacondacloud==1.2.0 86 | - nb-conda==2.0.0 87 | - nb-conda-kernels==2.0.0 88 | - opencv-python==3.1.0.0 89 | - prompt-toolkit==1.0.13 90 | - protobuf==3.2.0 91 | - tensorflow-gpu==1.0.1 92 | - theano==0.9.0 93 | - tqdm==4.11.2 94 | - win-unicode-console==0.5 95 | 96 | 97 | -------------------------------------------------------------------------------- /requirements/dog-windows.yml: -------------------------------------------------------------------------------- 1 | name: dog-project 2 | channels: 3 | - defaults 4 | dependencies: 5 | - _nb_ext_conf=0.3.0=py35_0 6 | - anaconda-client=1.6.2=py35_0 7 | - bleach=1.5.0=py35_0 8 | - bzip2=1.0.6=vc14_3 9 | - clyent=1.2.2=py35_0 10 | - colorama=0.3.7=py35_0 11 | - cycler=0.10.0=py35_0 12 | - decorator=4.0.11=py35_0 13 | - entrypoints=0.2.2=py35_1 14 | - freetype=2.5.5=vc14_2 15 | - h5py=2.7.0=np112py35_0 16 | - hdf5=1.8.15.1=vc14_4 17 | - html5lib=0.999=py35_0 18 | - icu=57.1=vc14_0 19 | - ipykernel=4.5.2=py35_0 20 | - ipython=5.3.0=py35_0 21 | - ipython_genutils=0.1.0=py35_0 22 | - ipywidgets=6.0.0=py35_0 23 | - jinja2=2.9.5=py35_0 24 | - jpeg=9b=vc14_0 25 | - jsonschema=2.5.1=py35_0 26 | - jupyter=1.0.0=py35_3 27 | - jupyter_client=5.0.0=py35_0 28 | - jupyter_console=5.1.0=py35_0 29 | - jupyter_core=4.3.0=py35_0 30 | - libpng=1.6.27=vc14_0 31 | - libtiff=4.0.6=vc14_3 32 | - markupsafe=0.23=py35_2 33 | - matplotlib=2.0.0=np112py35_0 34 | - mistune=0.7.4=py35_0 35 | - mkl=2017.0.1=0 36 | - nb_anacondacloud=1.2.0=py35_0 37 | - nb_conda=2.0.0=py35_0 38 | - nb_conda_kernels=2.0.0=py35_0 39 | - nbconvert=5.1.1=py35_0 40 | - nbformat=4.3.0=py35_0 41 | - nbpresent=3.0.2=py35_0 42 | - notebook=4.4.1=py35_0 43 | - numpy=1.12.1=py35_0 44 | - olefile=0.44=py35_0 45 | - openssl=1.0.2k=vc14_0 46 | - pandocfilters=1.4.1=py35_0 47 | - path.py=10.1=py35_0 48 | - pickleshare=0.7.4=py35_0 49 | - pillow=4.0.0=py35_1 50 | - pip=9.0.1=py35_1 51 | - prompt_toolkit=1.0.13=py35_0 52 | - pygments=2.2.0=py35_0 53 | - pyparsing=2.1.4=py35_0 54 | - pyqt=5.6.0=py35_2 55 | - python=3.5.3=0 56 | - python-dateutil=2.6.0=py35_0 57 | - pytz=2016.10=py35_0 58 | - pyyaml=3.12=py35_0 59 | - pyzmq=16.0.2=py35_0 60 | - qt=5.6.2=vc14_3 61 | - qtconsole=4.2.1=py35_2 62 | - requests=2.13.0=py35_0 63 | - scikit-learn=0.18.1=np112py35_1 64 | - scipy=0.19.0=np112py35_0 65 | - setuptools=27.2.0=py35_1 66 | - simplegeneric=0.8.1=py35_1 67 | - sip=4.18=py35_0 68 | - six=1.10.0=py35_0 69 | - testpath=0.3=py35_0 70 | - tk=8.5.18=vc14_0 71 | - tornado=4.4.2=py35_0 72 | - traitlets=4.3.2=py35_0 73 | - vs2015_runtime=14.0.25123=0 74 | - wcwidth=0.1.7=py35_0 75 | - wheel=0.29.0=py35_0 76 | - widgetsnbextension=2.0.0=py35_0 77 | - win_unicode_console=0.5=py35_0 78 | - zlib=1.2.8=vc14_3 79 | - pip: 80 | - ipython-genutils==0.1.0 81 | - jupyter-client==5.0.0 82 | - jupyter-console==5.1.0 83 | - jupyter-core==4.3.0 84 | - keras==2.0.2 85 | - nb-anacondacloud==1.2.0 86 | - nb-conda==2.0.0 87 | - nb-conda-kernels==2.0.0 88 | - opencv-python==3.1.0.0 89 | - prompt-toolkit==1.0.13 90 | - protobuf==3.2.0 91 | - tensorflow==1.0.1 92 | - theano==0.9.0 93 | - tqdm==4.11.2 94 | - win-unicode-console==0.5 95 | 96 | 97 | -------------------------------------------------------------------------------- /requirements/requirements-gpu.txt: -------------------------------------------------------------------------------- 1 | opencv-python==3.2.0.6 2 | h5py==2.6.0 3 | matplotlib==2.0.0 4 | numpy==1.12.0 5 | scipy==0.18.1 6 | tqdm==4.11.2 7 | keras==2.0.2 8 | scikit-learn==0.18.1 9 | pillow==4.0.0 10 | ipykernel==4.6.1 11 | tensorflow-gpu==1.0.0 -------------------------------------------------------------------------------- /requirements/requirements.txt: -------------------------------------------------------------------------------- 1 | opencv-python==3.2.0.6 2 | h5py==2.6.0 3 | matplotlib==2.0.0 4 | numpy==1.12.0 5 | scipy==0.18.1 6 | tqdm==4.11.2 7 | keras==2.0.2 8 | scikit-learn==0.18.1 9 | pillow==4.0.0 10 | ipykernel==4.6.1 11 | tensorflow==1.0.0 -------------------------------------------------------------------------------- /transfer-learning/bottleneck_features.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": { 6 | "deletable": true, 7 | "editable": true 8 | }, 9 | "source": [ 10 | "# Artificial Intelligence Nanodegree\n", 11 | "\n", 12 | "## Convolutional Neural Networks\n", 13 | "\n", 14 | "---\n", 15 | "\n", 16 | "In your upcoming project, you will download pre-computed bottleneck features. In this notebook, we'll show you how to calculate VGG-16 bottleneck features on a toy dataset. Note that unless you have a powerful GPU, computing the bottleneck features takes a significant amount of time.\n", 17 | "\n", 18 | "### 1. Load and Preprocess Sample Images\n", 19 | "\n", 20 | "Before supplying an image to a pre-trained network in Keras, there are some required preprocessing steps. You will learn more about this in the project; for now, we have implemented this functionality for you in the first code cell of the notebook. We have imported a very small dataset of 8 images and stored the preprocessed image input as `img_input`. Note that the dimensionality of this array is `(8, 224, 224, 3)`. In this case, each of the 8 images is a 3D tensor, with shape `(224, 224, 3)`." 21 | ] 22 | }, 23 | { 24 | "cell_type": "code", 25 | "execution_count": 1, 26 | "metadata": { 27 | "collapsed": false, 28 | "deletable": true, 29 | "editable": true 30 | }, 31 | "outputs": [ 32 | { 33 | "name": "stderr", 34 | "output_type": "stream", 35 | "text": [ 36 | "Using TensorFlow backend.\n" 37 | ] 38 | }, 39 | { 40 | "name": "stdout", 41 | "output_type": "stream", 42 | "text": [ 43 | "(8, 224, 224, 3)\n" 44 | ] 45 | } 46 | ], 47 | "source": [ 48 | "from keras.applications.vgg16 import preprocess_input\n", 49 | "from keras.preprocessing import image\n", 50 | "import numpy as np\n", 51 | "import glob\n", 52 | "\n", 53 | "img_paths = glob.glob(\"images/*.jpg\")\n", 54 | "\n", 55 | "def path_to_tensor(img_path):\n", 56 | " # loads RGB image as PIL.Image.Image type\n", 57 | " img = image.load_img(img_path, target_size=(224, 224))\n", 58 | " # convert PIL.Image.Image type to 3D tensor with shape (224, 224, 3)\n", 59 | " x = image.img_to_array(img)\n", 60 | " # convert 3D tensor to 4D tensor with shape (1, 224, 224, 3) and return 4D tensor\n", 61 | " return np.expand_dims(x, axis=0)\n", 62 | "\n", 63 | "def paths_to_tensor(img_paths):\n", 64 | " list_of_tensors = [path_to_tensor(img_path) for img_path in img_paths]\n", 65 | " return np.vstack(list_of_tensors)\n", 66 | "\n", 67 | "# calculate the image input. you will learn more about how this works the project!\n", 68 | "img_input = preprocess_input(paths_to_tensor(img_paths))\n", 69 | "\n", 70 | "print(img_input.shape)" 71 | ] 72 | }, 73 | { 74 | "cell_type": "markdown", 75 | "metadata": { 76 | "deletable": true, 77 | "editable": true 78 | }, 79 | "source": [ 80 | "### 2. Recap How to Import VGG-16\n", 81 | "\n", 82 | "Recall how we import the VGG-16 network (including the final classification layer) that has been pre-trained on ImageNet.\n", 83 | "\n", 84 | "![VGG-16 model](figures/vgg16.png)" 85 | ] 86 | }, 87 | { 88 | "cell_type": "code", 89 | "execution_count": 2, 90 | "metadata": { 91 | "collapsed": false, 92 | "deletable": true, 93 | "editable": true 94 | }, 95 | "outputs": [ 96 | { 97 | "name": "stdout", 98 | "output_type": "stream", 99 | "text": [ 100 | "_________________________________________________________________\n", 101 | "Layer (type) Output Shape Param # \n", 102 | "=================================================================\n", 103 | "input_1 (InputLayer) (None, 224, 224, 3) 0 \n", 104 | "_________________________________________________________________\n", 105 | "block1_conv1 (Conv2D) (None, 224, 224, 64) 1792 \n", 106 | "_________________________________________________________________\n", 107 | "block1_conv2 (Conv2D) (None, 224, 224, 64) 36928 \n", 108 | "_________________________________________________________________\n", 109 | "block1_pool (MaxPooling2D) (None, 112, 112, 64) 0 \n", 110 | "_________________________________________________________________\n", 111 | "block2_conv1 (Conv2D) (None, 112, 112, 128) 73856 \n", 112 | "_________________________________________________________________\n", 113 | "block2_conv2 (Conv2D) (None, 112, 112, 128) 147584 \n", 114 | "_________________________________________________________________\n", 115 | "block2_pool (MaxPooling2D) (None, 56, 56, 128) 0 \n", 116 | "_________________________________________________________________\n", 117 | "block3_conv1 (Conv2D) (None, 56, 56, 256) 295168 \n", 118 | "_________________________________________________________________\n", 119 | "block3_conv2 (Conv2D) (None, 56, 56, 256) 590080 \n", 120 | "_________________________________________________________________\n", 121 | "block3_conv3 (Conv2D) (None, 56, 56, 256) 590080 \n", 122 | "_________________________________________________________________\n", 123 | "block3_pool (MaxPooling2D) (None, 28, 28, 256) 0 \n", 124 | "_________________________________________________________________\n", 125 | "block4_conv1 (Conv2D) (None, 28, 28, 512) 1180160 \n", 126 | "_________________________________________________________________\n", 127 | "block4_conv2 (Conv2D) (None, 28, 28, 512) 2359808 \n", 128 | "_________________________________________________________________\n", 129 | "block4_conv3 (Conv2D) (None, 28, 28, 512) 2359808 \n", 130 | "_________________________________________________________________\n", 131 | "block4_pool (MaxPooling2D) (None, 14, 14, 512) 0 \n", 132 | "_________________________________________________________________\n", 133 | "block5_conv1 (Conv2D) (None, 14, 14, 512) 2359808 \n", 134 | "_________________________________________________________________\n", 135 | "block5_conv2 (Conv2D) (None, 14, 14, 512) 2359808 \n", 136 | "_________________________________________________________________\n", 137 | "block5_conv3 (Conv2D) (None, 14, 14, 512) 2359808 \n", 138 | "_________________________________________________________________\n", 139 | "block5_pool (MaxPooling2D) (None, 7, 7, 512) 0 \n", 140 | "_________________________________________________________________\n", 141 | "flatten (Flatten) (None, 25088) 0 \n", 142 | "_________________________________________________________________\n", 143 | "fc1 (Dense) (None, 4096) 102764544 \n", 144 | "_________________________________________________________________\n", 145 | "fc2 (Dense) (None, 4096) 16781312 \n", 146 | "_________________________________________________________________\n", 147 | "predictions (Dense) (None, 1000) 4097000 \n", 148 | "=================================================================\n", 149 | "Total params: 138,357,544.0\n", 150 | "Trainable params: 138,357,544.0\n", 151 | "Non-trainable params: 0.0\n", 152 | "_________________________________________________________________\n" 153 | ] 154 | } 155 | ], 156 | "source": [ 157 | "from keras.applications.vgg16 import VGG16\n", 158 | "model = VGG16()\n", 159 | "model.summary()" 160 | ] 161 | }, 162 | { 163 | "cell_type": "markdown", 164 | "metadata": { 165 | "deletable": true, 166 | "editable": true 167 | }, 168 | "source": [ 169 | "For this network, `model.predict` returns a 1000-dimensional probability vector containing the predicted probability that an image returns each of the 1000 ImageNet categories. The dimensionality of the obtained output from passing `img_input` through the model is `(8, 1000)`. The first value of `8` merely denotes that 8 images were passed through the network." 170 | ] 171 | }, 172 | { 173 | "cell_type": "code", 174 | "execution_count": 3, 175 | "metadata": { 176 | "collapsed": false, 177 | "deletable": true, 178 | "editable": true 179 | }, 180 | "outputs": [ 181 | { 182 | "data": { 183 | "text/plain": [ 184 | "(8, 1000)" 185 | ] 186 | }, 187 | "execution_count": 3, 188 | "metadata": {}, 189 | "output_type": "execute_result" 190 | } 191 | ], 192 | "source": [ 193 | "model.predict(img_input).shape" 194 | ] 195 | }, 196 | { 197 | "cell_type": "markdown", 198 | "metadata": { 199 | "deletable": true, 200 | "editable": true 201 | }, 202 | "source": [ 203 | "### 3. Import the VGG-16 Model, with the Final Fully-Connected Layers Removed\n", 204 | "\n", 205 | "When performing transfer learning, we need to remove the final layers of the network, as they are too specific to the ImageNet database. This is accomplished in the code cell below.\n", 206 | "\n", 207 | "![VGG-16 model for transfer learning](figures/vgg16_transfer.png)" 208 | ] 209 | }, 210 | { 211 | "cell_type": "code", 212 | "execution_count": 4, 213 | "metadata": { 214 | "collapsed": false, 215 | "deletable": true, 216 | "editable": true 217 | }, 218 | "outputs": [ 219 | { 220 | "name": "stdout", 221 | "output_type": "stream", 222 | "text": [ 223 | "_________________________________________________________________\n", 224 | "Layer (type) Output Shape Param # \n", 225 | "=================================================================\n", 226 | "input_2 (InputLayer) (None, None, None, 3) 0 \n", 227 | "_________________________________________________________________\n", 228 | "block1_conv1 (Conv2D) (None, None, None, 64) 1792 \n", 229 | "_________________________________________________________________\n", 230 | "block1_conv2 (Conv2D) (None, None, None, 64) 36928 \n", 231 | "_________________________________________________________________\n", 232 | "block1_pool (MaxPooling2D) (None, None, None, 64) 0 \n", 233 | "_________________________________________________________________\n", 234 | "block2_conv1 (Conv2D) (None, None, None, 128) 73856 \n", 235 | "_________________________________________________________________\n", 236 | "block2_conv2 (Conv2D) (None, None, None, 128) 147584 \n", 237 | "_________________________________________________________________\n", 238 | "block2_pool (MaxPooling2D) (None, None, None, 128) 0 \n", 239 | "_________________________________________________________________\n", 240 | "block3_conv1 (Conv2D) (None, None, None, 256) 295168 \n", 241 | "_________________________________________________________________\n", 242 | "block3_conv2 (Conv2D) (None, None, None, 256) 590080 \n", 243 | "_________________________________________________________________\n", 244 | "block3_conv3 (Conv2D) (None, None, None, 256) 590080 \n", 245 | "_________________________________________________________________\n", 246 | "block3_pool (MaxPooling2D) (None, None, None, 256) 0 \n", 247 | "_________________________________________________________________\n", 248 | "block4_conv1 (Conv2D) (None, None, None, 512) 1180160 \n", 249 | "_________________________________________________________________\n", 250 | "block4_conv2 (Conv2D) (None, None, None, 512) 2359808 \n", 251 | "_________________________________________________________________\n", 252 | "block4_conv3 (Conv2D) (None, None, None, 512) 2359808 \n", 253 | "_________________________________________________________________\n", 254 | "block4_pool (MaxPooling2D) (None, None, None, 512) 0 \n", 255 | "_________________________________________________________________\n", 256 | "block5_conv1 (Conv2D) (None, None, None, 512) 2359808 \n", 257 | "_________________________________________________________________\n", 258 | "block5_conv2 (Conv2D) (None, None, None, 512) 2359808 \n", 259 | "_________________________________________________________________\n", 260 | "block5_conv3 (Conv2D) (None, None, None, 512) 2359808 \n", 261 | "_________________________________________________________________\n", 262 | "block5_pool (MaxPooling2D) (None, None, None, 512) 0 \n", 263 | "=================================================================\n", 264 | "Total params: 14,714,688.0\n", 265 | "Trainable params: 14,714,688.0\n", 266 | "Non-trainable params: 0.0\n", 267 | "_________________________________________________________________\n" 268 | ] 269 | } 270 | ], 271 | "source": [ 272 | "from keras.applications.vgg16 import VGG16\n", 273 | "model = VGG16(include_top=False)\n", 274 | "model.summary()" 275 | ] 276 | }, 277 | { 278 | "cell_type": "markdown", 279 | "metadata": { 280 | "deletable": true, 281 | "editable": true 282 | }, 283 | "source": [ 284 | "### 4. Extract Output of Final Max Pooling Layer\n", 285 | "\n", 286 | "Now, the network stored in `model` is a truncated version of the VGG-16 network, where the final three fully-connected layers have been removed. In this case, `model.predict` returns a 3D array (with dimensions $7\\times 7\\times 512$) corresponding to the final max pooling layer of VGG-16. The dimensionality of the obtained output from passing `img_input` through the model is `(8, 7, 7, 512)`. The first value of `8` merely denotes that 8 images were passed through the network. " 287 | ] 288 | }, 289 | { 290 | "cell_type": "code", 291 | "execution_count": 5, 292 | "metadata": { 293 | "collapsed": false, 294 | "deletable": true, 295 | "editable": true 296 | }, 297 | "outputs": [ 298 | { 299 | "name": "stdout", 300 | "output_type": "stream", 301 | "text": [ 302 | "(8, 7, 7, 512)\n" 303 | ] 304 | } 305 | ], 306 | "source": [ 307 | "print(model.predict(img_input).shape)" 308 | ] 309 | }, 310 | { 311 | "cell_type": "markdown", 312 | "metadata": { 313 | "deletable": true, 314 | "editable": true 315 | }, 316 | "source": [ 317 | "This is exactly how we calculate the bottleneck features for your project!" 318 | ] 319 | } 320 | ], 321 | "metadata": { 322 | "kernelspec": { 323 | "display_name": "Python 3", 324 | "language": "python", 325 | "name": "python3" 326 | }, 327 | "language_info": { 328 | "codemirror_mode": { 329 | "name": "ipython", 330 | "version": 3 331 | }, 332 | "file_extension": ".py", 333 | "mimetype": "text/x-python", 334 | "name": "python", 335 | "nbconvert_exporter": "python", 336 | "pygments_lexer": "ipython3", 337 | "version": "3.5.3" 338 | } 339 | }, 340 | "nbformat": 4, 341 | "nbformat_minor": 2 342 | } 343 | -------------------------------------------------------------------------------- /transfer-learning/bottleneck_features/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udacity/aind2-cnn/4f64fa0a9c4de94a92308ac15fc3fc0335d13b4d/transfer-learning/bottleneck_features/.gitignore -------------------------------------------------------------------------------- /transfer-learning/dogvgg16.weights.best.hdf5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udacity/aind2-cnn/4f64fa0a9c4de94a92308ac15fc3fc0335d13b4d/transfer-learning/dogvgg16.weights.best.hdf5 -------------------------------------------------------------------------------- /transfer-learning/figures/vgg16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udacity/aind2-cnn/4f64fa0a9c4de94a92308ac15fc3fc0335d13b4d/transfer-learning/figures/vgg16.png -------------------------------------------------------------------------------- /transfer-learning/figures/vgg16_transfer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udacity/aind2-cnn/4f64fa0a9c4de94a92308ac15fc3fc0335d13b4d/transfer-learning/figures/vgg16_transfer.png -------------------------------------------------------------------------------- /transfer-learning/images/American_water_spaniel_00648.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udacity/aind2-cnn/4f64fa0a9c4de94a92308ac15fc3fc0335d13b4d/transfer-learning/images/American_water_spaniel_00648.jpg -------------------------------------------------------------------------------- /transfer-learning/images/Brittany_02625.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udacity/aind2-cnn/4f64fa0a9c4de94a92308ac15fc3fc0335d13b4d/transfer-learning/images/Brittany_02625.jpg -------------------------------------------------------------------------------- /transfer-learning/images/Curly-coated_retriever_03896.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udacity/aind2-cnn/4f64fa0a9c4de94a92308ac15fc3fc0335d13b4d/transfer-learning/images/Curly-coated_retriever_03896.jpg -------------------------------------------------------------------------------- /transfer-learning/images/Labrador_retriever_06449.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udacity/aind2-cnn/4f64fa0a9c4de94a92308ac15fc3fc0335d13b4d/transfer-learning/images/Labrador_retriever_06449.jpg -------------------------------------------------------------------------------- /transfer-learning/images/Labrador_retriever_06455.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udacity/aind2-cnn/4f64fa0a9c4de94a92308ac15fc3fc0335d13b4d/transfer-learning/images/Labrador_retriever_06455.jpg -------------------------------------------------------------------------------- /transfer-learning/images/Labrador_retriever_06457.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udacity/aind2-cnn/4f64fa0a9c4de94a92308ac15fc3fc0335d13b4d/transfer-learning/images/Labrador_retriever_06457.jpg -------------------------------------------------------------------------------- /transfer-learning/images/Welsh_springer_spaniel_08203.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udacity/aind2-cnn/4f64fa0a9c4de94a92308ac15fc3fc0335d13b4d/transfer-learning/images/Welsh_springer_spaniel_08203.jpg -------------------------------------------------------------------------------- /transfer-learning/images/sopa.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udacity/aind2-cnn/4f64fa0a9c4de94a92308ac15fc3fc0335d13b4d/transfer-learning/images/sopa.jpg --------------------------------------------------------------------------------