[
  {
    "path": "Mathematics_for_Machine_Learning_Examples.ipynb",
    "content": "{\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0,\n  \"metadata\": {\n    \"colab\": {\n      \"name\": \"Mathematics for Machine Learning Examples\",\n      \"version\": \"0.3.2\",\n      \"provenance\": [],\n      \"collapsed_sections\": []\n    },\n    \"kernelspec\": {\n      \"name\": \"python2\",\n      \"display_name\": \"Python 2\"\n    }\n  },\n  \"cells\": [\n    {\n      \"metadata\": {\n        \"id\": \"ST8QJlxSdvMU\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 34\n        },\n        \"outputId\": \"7eae7c44-6007-47b5-bd59-cb4ca1df832c\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"#@title Imports { display-mode: \\\"form\\\" }\\n\",\n        \"from __future__ import print_function\\n\",\n        \"from __future__ import division\\n\",\n        \"from __future__ import absolute_import\\n\",\n        \"\\n\",\n        \"import numpy as np\\n\",\n        \"import tensorflow as tf\\n\",\n        \"import matplotlib.pyplot as plt\\n\",\n        \"\\n\",\n        \"try:\\n\",\n        \"  tf.enable_eager_execution()\\n\",\n        \"  print('Eager execution enabled')\\n\",\n        \"except ValueError:\\n\",\n        \"  print('Already running in Eager mode')\\n\",\n        \"\\n\",\n        \"tfe = tf.contrib.eager\\n\",\n        \"  \"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Already running in Eager mode\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"RgFS1eZOdws_\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## Matrix Multiplication\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"E0TdsagndySr\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 85\n        },\n        \"outputId\": \"535c541c-da43-4154-dae9-7198ba1e9ed0\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Define matrix A\\n\",\n        \"A = np.array(\\n\",\n        \"  [[1.0, 3.0],\\n\",\n        \"   [2.0, 1.0],\\n\",\n        \"   [4.0, 2.0]]\\n\",\n        \")\\n\",\n        \"\\n\",\n        \"# Define matrix B\\n\",\n        \"B = np.array(\\n\",\n        \"  [[6.0, 2.0, 1.0],\\n\",\n        \"   [3.0, 4.0, 5.0]]\\n\",\n        \")\\n\",\n        \"\\n\",\n        \"# Define vector x\\n\",\n        \"x = np.array([3.0, 2.0])\\n\",\n        \"\\n\",\n        \"print('A.shape is:', A.shape, 'B.shape is:', B.shape, 'x.shape is:', x.shape)\\n\",\n        \"A\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"A.shape is: (3, 2) B.shape is: (2, 3) x.shape is: (2,)\\n\"\n          ],\n          \"name\": \"stdout\"\n        },\n        {\n          \"output_type\": \"execute_result\",\n          \"data\": {\n            \"text/plain\": [\n              \"array([[1., 3.],\\n\",\n              \"       [2., 1.],\\n\",\n              \"       [4., 2.]])\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"execution_count\": 56\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"4xVzrzTskHqK\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### Matrix-vector multiplication\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"ySFMEkRrkJ51\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 85\n        },\n        \"outputId\": \"f52ddad3-c34a-4a07-8ec4-8682e1abcc4e\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Using numpy dot\\n\",\n        \"y = A.dot(x)\\n\",\n        \"\\n\",\n        \"print('Using dot:\\\\t y =', y, '\\\\t y.shape =', y.shape)\\n\",\n        \"\\n\",\n        \"# Using einsum\\n\",\n        \"y = np.einsum('ij, j', A, x)\\n\",\n        \"\\n\",\n        \"print('Using einsum:\\\\t y =', y, '\\\\t y.shape =', y.shape)\\n\",\n        \"\\n\",\n        \"# Manual version 1\\n\",\n        \"y = np.array([\\n\",\n        \"    A[0,0] * x[0] + A[0,1] * x[1],\\n\",\n        \"    A[1,0] * x[0] + A[1,1] * x[1],\\n\",\n        \"    A[2,0] * x[0] + A[2,1] * x[1],\\n\",\n        \"    ])\\n\",\n        \"print('Manual 1:\\\\t y =', y, '\\\\t y.shape =', y.shape)\\n\",\n        \"\\n\",\n        \"# Manual version 2: \\n\",\n        \"# Matrix-vector multiplication can be thought of as a linear combination of the columns of of the matrix\\n\",\n        \"y = x[0] * A[:,0]  +  x[1] * A[:, 1]\\n\",\n        \"\\n\",\n        \"print('Manual 2:\\\\t y =', y, '\\\\t y.shape =', y.shape)\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Using dot:\\t y = [ 9.  8. 16.] \\t y.shape = (3,)\\n\",\n            \"Using einsum:\\t y = [ 9.  8. 16.] \\t y.shape = (3,)\\n\",\n            \"Manual 1:\\t y = [ 9.  8. 16.] \\t y.shape = (3,)\\n\",\n            \"Manual 2:\\t y = [ 9.  8. 16.] \\t y.shape = (3,)\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"IXfRCQfglg7Y\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### Matrix-matrix multiplication\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"CCw3o6GMeD1o\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 459\n        },\n        \"outputId\": \"8f963951-8502-4b13-b858-fce70e4c6538\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Using numpy dot\\n\",\n        \"C = A.dot(B)\\n\",\n        \"\\n\",\n        \"print('Using DOT: C= \\\\n\\\\n', C, '\\\\n\\\\nC.shape =', C.shape)\\n\",\n        \"\\n\",\n        \"# Using einsum\\n\",\n        \"C = np.einsum('ik, kj', A, B)\\n\",\n        \"print('\\\\n\\\\nUsing einsum: C= \\\\n\\\\n', C, '\\\\n\\\\nC.shape =', C.shape)\\n\",\n        \"\\n\",\n        \"# Note, the above einsum notation is equivalent to the following\\n\",\n        \"C = np.einsum('ik, kj -> ij', A, B)\\n\",\n        \"\\n\",\n        \"# And in Tensorflow\\n\",\n        \"C = tf.matmul(A, B)\\n\",\n        \"print('\\\\n\\\\nUsing Tensorflow: C= \\\\n\\\\n', C, '\\\\n\\\\nC.shape =', C.shape)\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Using DOT: C= \\n\",\n            \"\\n\",\n            \" [[15. 14. 16.]\\n\",\n            \" [15.  8.  7.]\\n\",\n            \" [30. 16. 14.]] \\n\",\n            \"\\n\",\n            \"C.shape = (3, 3)\\n\",\n            \"\\n\",\n            \"\\n\",\n            \"Using einsum: C= \\n\",\n            \"\\n\",\n            \" [[15. 14. 16.]\\n\",\n            \" [15.  8.  7.]\\n\",\n            \" [30. 16. 14.]] \\n\",\n            \"\\n\",\n            \"C.shape = (3, 3)\\n\",\n            \"\\n\",\n            \"\\n\",\n            \"Using Tensorflow: C= \\n\",\n            \"\\n\",\n            \" tf.Tensor(\\n\",\n            \"[[15. 14. 16.]\\n\",\n            \" [15.  8.  7.]\\n\",\n            \" [30. 16. 14.]], shape=(3, 3), dtype=float64) \\n\",\n            \"\\n\",\n            \"C.shape = (3, 3)\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"o3U0Fc7mlxSd\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Matrix multiplication is not commutative\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"iiI6J7ZDj9Fl\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 102\n        },\n        \"outputId\": \"1c0e575f-1b2c-4da6-aab1-7f1e5ed60f19\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Matrix multiplication is not commutative:\\n\",\n        \"C = B.dot(A)\\n\",\n        \"print('C: \\\\n', C)\\n\",\n        \"print()\\n\",\n        \"print('C.shape:', C.shape)\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"C: \\n\",\n            \" [[14. 22.]\\n\",\n            \" [31. 23.]]\\n\",\n            \"\\n\",\n            \"C.shape: (2, 2)\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"WxJ0muOj34SB\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## Computing gradients with TensorFlow\\n\",\n        \"$y = Ax$\\n\",\n        \"\\n\",\n        \"In the code below, we use Tensorflow to calculate the following derivatives:\\n\",\n        \"\\n\",\n        \"$\\\\frac{dy}{dx}$ \\n\",\n        \"\\n\",\n        \"and \\n\",\n        \"\\n\",\n        \"$\\\\frac{\\\\partial y}{\\\\partial A}$ \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"5wCGTn1s3zlV\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 119\n        },\n        \"outputId\": \"2b250cbe-4c07-481d-ecf9-ed8d449cf921\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"A_tensor = tfe.Variable(A)\\n\",\n        \"x_tensor = tfe.Variable(x)\\n\",\n        \"\\n\",\n        \"with tf.GradientTape() as tape:\\n\",\n        \"  y = tf.einsum('ij,j', A_tensor, x_tensor)\\n\",\n        \"\\n\",\n        \"dydx, dydA = tape.gradient(y, [x_tensor, A_tensor])\\n\",\n        \"\\n\",\n        \"print('dy/dx =', dydx)\\n\",\n        \"print()\\n\",\n        \"print('dy/dA =', dydA)\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"dy/dx = tf.Tensor([7. 6.], shape=(2,), dtype=float64)\\n\",\n            \"\\n\",\n            \"dy/dA = tf.Tensor(\\n\",\n            \"[[3. 2.]\\n\",\n            \" [3. 2.]\\n\",\n            \" [3. 2.]], shape=(3, 2), dtype=float64)\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"btAykJ_oEZ-i\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"# Neural Network Gradient Example\\n\",\n        \"In the following example, we compute the output of a 1 layer neural network and the gradients with respect to its parameters. We define an example input vector and parameters, but keep the computation generic. You can change the values and shapes of x, A and b below and run the rest of the code to compute the output and gradients for your own example.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"WRnif1ZP4kYQ\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"x = np.array([[-1.], [0.1], [2.1]])  # X has shape (3, 1)\\n\",\n        \"A = np.array([              # A has shape (2, 3)\\n\",\n        \"    [ 1.1, -2.5,  0.3],\\n\",\n        \"    [-2.1,  0.2, -1.1]\\n\",\n        \"])  \\n\",\n        \"b = np.array([[-1.0], [2.0]])      # b has shape (2)\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"XaTm7-r9FBxl\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Compute the neural network output\\n\",\n        \"$\\\\mathbf{f} = \\\\operatorname{tanh}(A\\\\mathbf{x} + \\\\mathbf{b})$\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"1HR6uCTjFAvV\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"ff5beb67-d370-4a70-a8ee-b6c4b64a585e\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"M, N = A.shape\\n\",\n        \"z = A.dot(x) + b\\n\",\n        \"f = np.tanh(z)\\n\",\n        \"\\n\",\n        \"print('f =', f)\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"f = [[-0.93786303]\\n\",\n            \" [ 0.94783185]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"wQKVQ13jGkIH\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Compute the partial derivatives:\\n\",\n        \"\\n\",\n        \"\\\\begin{align}\\n\",\n        \"\\\\frac{d\\\\mathbf{f}}{d\\\\mathbf{z}} ; \\\\frac{\\\\partial\\\\mathbf{z}}{\\\\partial\\\\mathbf{x}} ; \\\\frac{\\\\partial\\\\mathbf{z}}{\\\\partial\\\\mathbf{b}} ; \\\\frac{\\\\partial\\\\mathbf{z}}{\\\\partial\\\\mathbf{A}}\\n\",\n        \"\\\\end{align}\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"sJF9p5lHE4Z_\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 425\n        },\n        \"outputId\": \"3900b59e-ab3d-4f9d-caa4-dd79c7fd49c6\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# partial derivatives\\n\",\n        \"dfdz = 1-f**2       # (derivative of tanh is 1-tanh^2)\\n\",\n        \"print('df/dz =', dfdz, '\\\\nshape:', dfdz.shape)\\n\",\n        \"print()\\n\",\n        \"\\n\",\n        \"dzdx = A\\n\",\n        \"print('dz/dx =\\\\n', dzdx, '\\\\n\\\\nshape:', dzdx.shape)\\n\",\n        \"print()\\n\",\n        \"\\n\",\n        \"dzdb = np.eye(M)\\n\",\n        \"print('dz/db =\\\\n', dzdb, '\\\\n\\\\nshape:', dzdb.shape)\\n\",\n        \"print()\\n\",\n        \"\\n\",\n        \"dzdA = np.zeros((M, M, N))  # Start with a tensor of zeros of the correct shape\\n\",\n        \"for i in range(M):          # Then set the diagonal elements of dzdA\\n\",\n        \"  dzdA[i,i,:] = x.T  \\n\",\n        \"\\n\",\n        \"print('dz/dA =\\\\n', dzdA, '\\\\n\\\\nshape:', dzdA.shape)\\n\",\n        \"\\n\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"df/dz = [[0.12041293]\\n\",\n            \" [0.10161478]] \\n\",\n            \"shape: (2, 1)\\n\",\n            \"\\n\",\n            \"dz/dx =\\n\",\n            \" [[ 1.1 -2.5  0.3]\\n\",\n            \" [-2.1  0.2 -1.1]] \\n\",\n            \"\\n\",\n            \"shape: (2, 3)\\n\",\n            \"\\n\",\n            \"dz/db =\\n\",\n            \" [[1. 0.]\\n\",\n            \" [0. 1.]] \\n\",\n            \"\\n\",\n            \"shape: (2, 2)\\n\",\n            \"\\n\",\n            \"dz/dA =\\n\",\n            \" [[[-1.   0.1  2.1]\\n\",\n            \"  [ 0.   0.   0. ]]\\n\",\n            \"\\n\",\n            \" [[ 0.   0.   0. ]\\n\",\n            \"  [-1.   0.1  2.1]]] \\n\",\n            \"\\n\",\n            \"shape: (2, 2, 3)\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"Gcw6bNirweZl\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Finally, we compute the gradients of the neural network output $f$ with respect to the parameters $A$ and $\\\\mathbf{b}$ and the input $\\\\mathbf{x}$ using the chain rule:\\n\",\n        \"\\n\",\n        \"\\\\begin{align}\\n\",\n        \"\\\\frac{\\\\partial \\\\mathbf{f}}{\\\\partial \\\\mathbf{x}} &= \\\\frac{d \\\\mathbf{f}}{d \\\\mathbf{z}} \\\\frac{\\\\partial \\\\mathbf{z}}{\\\\partial \\\\mathbf{x}} \\\\ ; \\\\ \\n\",\n        \"\\\\frac{\\\\partial \\\\mathbf{f}}{\\\\partial \\\\mathbf{b}} = \\\\frac{d \\\\mathbf{f}}{d \\\\mathbf{z}} \\\\frac{\\\\partial \\\\mathbf{z}}{\\\\partial \\\\mathbf{b}} \\\\ ; \\\\ \\n\",\n        \"\\\\frac{\\\\partial \\\\mathbf{f}}{\\\\partial A} = \\\\frac{d \\\\mathbf{f}}{d \\\\mathbf{z}} \\\\frac{\\\\partial \\\\mathbf{z}}{\\\\partial A} \\n\",\n        \"\\\\end{align}\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"o22q4uljzbpR\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 357\n        },\n        \"outputId\": \"c07b47af-c680-4e0a-ef47-f9bf921a8346\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"dfdx = np.einsum('il, lj', dfdz, dzdx)\\n\",\n        \"print('df/dx =\\\\n', dfdx, '\\\\n\\\\nshape:', dfdx.shape)\\n\",\n        \"print()\\n\",\n        \"\\n\",\n        \"dfdb = np.einsum('il, lj', dfdz, dzdb)\\n\",\n        \"print('df/db =\\\\n', dfdb, '\\\\n\\\\nshape:', dfdb.shape)\\n\",\n        \"print()\\n\",\n        \"\\n\",\n        \"dfdA = np.einsum('il, ljk', dfdz, dzdA)\\n\",\n        \"print('df/dA =\\\\n', dfdA, '\\\\n\\\\nshape:', dfdA.shape)\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"df/dx =\\n\",\n            \" [[-0.12041293 -0.27694975 -0.09633035]\\n\",\n            \" [-0.10161478 -0.233714   -0.08129183]] \\n\",\n            \"\\n\",\n            \"shape: (2, 3)\\n\",\n            \"\\n\",\n            \"df/db =\\n\",\n            \" [[0.12041293 0.12041293]\\n\",\n            \" [0.10161478 0.10161478]] \\n\",\n            \"\\n\",\n            \"shape: (2, 2)\\n\",\n            \"\\n\",\n            \"df/dA =\\n\",\n            \" [[[-0.12041293  0.01204129  0.25286716]\\n\",\n            \"  [-0.12041293  0.01204129  0.25286716]]\\n\",\n            \"\\n\",\n            \" [[-0.10161478  0.01016148  0.21339105]\\n\",\n            \"  [-0.10161478  0.01016148  0.21339105]]] \\n\",\n            \"\\n\",\n            \"shape: (2, 2, 3)\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    }\n  ]\n}"
  },
  {
    "path": "Practical_0_5_Machine_Learning_Basics.ipynb",
    "content": "{\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0,\n  \"metadata\": {\n    \"colab\": {\n      \"name\": \"Practical 0.5: Machine Learning Basics\",\n      \"version\": \"0.3.2\",\n      \"provenance\": [],\n      \"collapsed_sections\": [\n        \"RyJ1PgtEFpa7\",\n        \"sFJBmN5Hivhv\",\n        \"EgLuuVNRQHqy\"\n      ]\n    },\n    \"kernelspec\": {\n      \"name\": \"python2\",\n      \"display_name\": \"Python 2\"\n    }\n  },\n  \"cells\": [\n    {\n      \"metadata\": {\n        \"id\": \"SB0EeXzyu_sz\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"# Practical 0.5: Machine Learning Basics\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"c9tLLZUyVwcV\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## Introduction\\n\",\n        \"In this practical, we introduce the idea of classification (sorting things into categories) using a machine-learning model. We explore the relationship between a classifier's parameters and the decision boundary (a line that separates categories) and also introduce the idea of a loss function. Finally, we briefly introduce Tensorflow.\\n\",\n        \"\\n\",\n        \"## Learning Objectives \\n\",\n        \"* Understand the idea of **classification**\\n\",\n        \"* Understand the concept of (linear) **separability** of a dataset.\\n\",\n        \"* Understand what the **parameters** of a classifier are and how they relate to the **decision boundary**\\n\",\n        \"* Be able to briefly explain what **Tensorflow** is.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"mHlHxAdBu7Dy\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 119\n        },\n        \"outputId\": \"9b77f6e9-46c7-4004-f0bb-9d108bbffa95\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"#@title [RUN ME!] Imports { display-mode: \\\"form\\\" }\\n\",\n        \"!pip install -q moviepy\\n\",\n        \"!pip install -q imageio\\n\",\n        \"from __future__ import absolute_import, division, print_function\\n\",\n        \"\\n\",\n        \"import tensorflow as tf\\n\",\n        \"import numpy as np                 # Numpy is an efficient linear algebra library.\\n\",\n        \"import matplotlib.pyplot as plt    # Matplotlib is used to generate plots of data.\\n\",\n        \"from matplotlib import animation, rc\\n\",\n        \"\\n\",\n        \"from IPython import display\\n\",\n        \"\\n\",\n        \"try:\\n\",\n        \"  tf.enable_eager_execution()\\n\",\n        \"  print('Running eagerly')\\n\",\n        \"except ValueError:\\n\",\n        \"  print('Already running eagerly')\\n\",\n        \"  \\n\",\n        \"tfe = tf.contrib.eager\"\n      ],\n      \"execution_count\": 1,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Imageio: 'ffmpeg-linux64-v3.3.1' was not found on your computer; downloading it now.\\n\",\n            \"Try 1. Download from https://github.com/imageio/imageio-binaries/raw/master/ffmpeg/ffmpeg-linux64-v3.3.1 (43.8 MB)\\n\",\n            \"Downloading: 8192/45929032 bytes (0.0%)\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b630784/45929032 bytes (1.4%)\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b1761280/45929032 bytes (3.8%)\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b3309568/45929032 bytes (7.2%)\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b5693440/45929032 bytes (12.4%)\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b9068544/45929032 bytes (19.7%)\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b13049856/45929032 bytes (28.4%)\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b17113088/45929032 bytes (37.3%)\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b21045248/45929032 bytes (45.8%)\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b24961024/45929032 bytes (54.3%)\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b28975104/45929032 bytes (63.1%)\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b33030144/45929032 bytes (71.9%)\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b37052416/45929032 bytes (80.7%)\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b41066496/45929032 bytes (89.4%)\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b45080576/45929032 bytes (98.2%)\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b45929032/45929032 bytes (100.0%)\\n\",\n            \"  Done\\n\",\n            \"File saved as /root/.imageio/ffmpeg/ffmpeg-linux64-v3.3.1.\\n\",\n            \"Running eagerly\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"1xhQkS8A_KrJ\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## Outline\\n\",\n        \"In this practical, we tackle the task of **classification** of a simple, synthetic dataset. Classification in machine learning involves learning a labelling of examples into one (or more) discrete categories. This differs from another common task in machine learning called **regression**, which involves learning a mapping from inputs to a continuous-valued output. \\n\",\n        \"\\n\",\n        \"1. We begin by introducing a synthetic dataset of red and blue points which we want to separate\\n\",\n        \"2. We introduce and explore the idea of **linear seperability**\\n\",\n        \"3. We define a **loss** as a measure of how good of a seperator a particular line is\\n\",\n        \"4. We briefly introduce TensorFlow and show how it can be used to automatically find the minimum of a loss function.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"H020s1EsB_9p\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"#@title [RUN ME!] Helper functions { display-mode: \\\"form\\\" }\\n\",\n        \"def plot_dataset(inputs, labels):\\n\",\n        \"  # Plot the given 2D inputs and labels using Matplotlib.   \\n\",\n        \"  plt.scatter(\\n\",\n        \"      inputs[:, 0], inputs[:, 1], \\n\",\n        \"      c=['red' if label > 0 else 'blue' for label in labels])\\n\",\n        \"\\n\",\n        \"  plt.axis('equal')\\n\",\n        \"\\n\",\n        \"  plt.xlabel('x1')\\n\",\n        \"  plt.ylabel('x2')\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"3l1rLP3HufZv\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## The Data\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"FCu4YZy-uj0v\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Run the code in the cell below, and look at the resulting plot. It should produce a simple 2-D data set consisting of 2 classes of points, the classes are represented by colours blue and red. Our task is to build a **binary classifier** that can distinguish between red and blue points (red and blue are referred to as the **classes** of the points), using only the 2-D coordinates of a point. In other words, we want a function that takes as input a 2-D vector representing the coordinates of a point and returns a value of 1 or 0 indicating whether the point is red or blue. Here we have **encoded** the colours red and blue into the numbers 1 and 0 (which make it easier to work with in maths and code!)\\n\",\n        \"\\n\",\n        \"Note: we have arbitrarily encoded red as 1 and blue as 0, you could do it the other way around too as long as you're consistent!\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"2SrsrFSTtrl6\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 361\n        },\n        \"outputId\": \"73c152d0-097e-444b-ce34-dd483940c083\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"#@title Generate the Dataset  {run: \\\"auto\\\"}\\n\",\n        \"# Define the centre(s) of the points\\n\",\n        \"centre = 1    #@param {type:\\\"slider\\\", min:0, max:2, step:0.1}\\n\",\n        \"\\n\",\n        \"points_in_class = 20  # How many points we want per class\\n\",\n        \"\\n\",\n        \"# A fixed random seed is a common \\\"trick\\\" used in ML that allows us to recreate\\n\",\n        \"# the same data when there is a random element involved. \\n\",\n        \"np.random.seed(0)  \\n\",\n        \"\\n\",\n        \"# Generate random points in the \\\"red\\\" class\\n\",\n        \"red_inputs = np.random.normal(loc=centre, scale=1.0, size=[points_in_class, 2])     \\n\",\n        \"# Generate random points in the \\\"blue\\\" class\\n\",\n        \"blue_inputs = np.random.normal(loc=-centre, scale=1.0, size=[points_in_class, 2])    \\n\",\n        \"# Put these together\\n\",\n        \"inputs = np.concatenate((red_inputs, blue_inputs), axis=0) \\n\",\n        \"    \\n\",\n        \"# The class (label) is 1 for red or 0 for blue\\n\",\n        \"red_labels = np.ones(points_in_class)    \\n\",\n        \"blue_labels = np.zeros(points_in_class)\\n\",\n        \"labels = np.concatenate((red_labels, blue_labels), axis=0)\\n\",\n        \"\\n\",\n        \"# num_data_points is the total data set size\\n\",\n        \"num_data_points = 2 * points_in_class\\n\",\n        \"\\n\",\n        \"plot_dataset(inputs, labels)\"\n      ],\n      \"execution_count\": 3,\n      \"outputs\": [\n        {\n          \"output_type\": \"display_data\",\n          \"data\": {\n            \"image/png\": \"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\\nB/OXgJIZT2EKAAAAAElFTkSuQmCC\\n\",\n            \"text/plain\": [\n              \"<matplotlib.figure.Figure at 0x7f06f0e943d0>\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          }\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"an9GF8nZWS4K\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"###What does the data look like? \\n\",\n        \"The inputs are 2-dimensional vectors (points in a 2-D space). Here are the coordinates of 4 points, which we've deliberately chosen so that points 1 and 2 are \\\"red\\\" and points 3 and 4 are \\\"blue\\\". \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"5f8M-vQYWUuI\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"print('Input 1:\\\\t', inputs[0])\\n\",\n        \"print('Input 2:\\\\t', inputs[1])\\n\",\n        \"\\n\",\n        \"print('Input 3:\\\\t', inputs[-1])\\n\",\n        \"print('Input 4:\\\\t', inputs[-2])\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"E14elwRYWoxB\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"The labels are either 0 or 1. Here are the labels corresponding to the points above:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"q4EJG8g4Wtih\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"print('Label 1:\\\\t', labels[0])\\n\",\n        \"print('Label 2:\\\\t', labels[1])\\n\",\n        \"\\n\",\n        \"print('Label 3:\\\\t', labels[-1])\\n\",\n        \"print('Label 4:\\\\t', labels[-2])\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"RyJ1PgtEFpa7\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### Aside: Other Examples of Binary Classification Problems\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"7LAhNs_GFwOZ\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"In this practical, we are using a synthetic dataset where we have 2 classes of 2-D points that come from different distributions, distinguised by the colours, red and blue. To make this more concrete, here are some examples of more real-world binary classification problems.\\n\",\n        \"\\n\",\n        \"* Determine whether an email message (input) is SPAM or NOT SPAM (label)\\n\",\n        \"* Determine whether an image, represented by its encoded pixel values (input) is a picture of a DOG or a CAT (label)\\n\",\n        \"* Determine whether energy usage of a building will go UP or DOWN (label) next month, using a time series of past energy usage values (input)\\n\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"qNuMy1XwIJ-z\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## Linear separability\\n\",\n        \"\\n\",\n        \"Linear separability of a D-dimensional dataset with 2 classes means that there exists a single (D-1)-dimensional (hyper-)plane that separates the classes (a hyperplane is a generalisation of a straight line to many dimensions). In this case, the dataset is 2-dimensional and is **linearly separable** if it is possible to draw a (1-D) line between the red and blue points such that all of the red points lie on one side of the line and all of the blue points on the other. \\n\",\n        \"\\n\",\n        \"### Exploratory Task\\n\",\n        \"In the code cell under the heading \\\"The Data\\\", change the slider for the ```centre``` value. This will automatically update the value in the code and will redraw the plot.\\n\",\n        \"\\n\",\n        \"* At what value of centre does the dataset become linearly separable?\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"### Question for discussion\\n\",\n        \"Can you think of some 2-D, 2-class datasets, similar to the one above, that are separable (the points from the 2 classes don't overlap each other), but are not **linearly** separable? Draw some examples on paper or plot them using Matplotlib and discuss this with your neighbour and tutors. \\n\",\n        \"\\n\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"GV5plkAowLy8\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## Drawing the line\\n\",\n        \"\\n\",\n        \"As you may recall from school, a line in 2 dimensions, with coordinate axes $x_1$ and $x_2$, which passes through the origin (0, 0) can be represented by the equation $w_1x_1 + w_2x_2 = 0$\\n\",\n        \"\\n\",\n        \"We can also write this in vector form as: $\\\\mathbf{w}^T\\\\mathbf{x} = 0$, where $\\\\mathbf{w}^T = [w_1, w_2]$ and $\\\\mathbf{x}^T = [x_1, x_2]$.\\n\",\n        \"\\n\",\n        \"When a line (or hyperplane) is defined this way, we call the **parameters**, $\\\\mathbf{w} = (w_1, w_2)$ a **normal vector** for the line. The normal vector is orthogonal (perpendicular) to the line. We want to construct such a line that separates red and blue  points, which we will call a **decision boundary**. \\n\",\n        \"\\n\",\n        \"In the following cell, we plot our dataset along with a normal vector $\\\\mathbf{w}$ and decision boundary. You can adjust the values of $w_1$ and $w_2$ by using the sliders on the right. Observe the effect that the values have on the normal vector drawn in *red* and decision boundary in *black*. Adjust the values so that the black line separates the blue and red points (i.e. red points on one side and blue on the other). Your line should also have the normal vector pointing in the direction of the red points. The reason that direction is significant is that we want to eventually **classify** points on one side of the line as being red and the other as being blue. \\n\",\n        \"\\n\",\n        \"Is it possible to find a line through the origin that perfectly separates the points?\\n\",\n        \"\\n\",\n        \"**Note**: Each of our inputs is a 2-D vector, made up of two coordinate values. We refer to these 2 coordinate axes as $x_1$ and $x_2$. For example, if we have an input $(1, 2)$, then we would say $x_1 = 1$ and $x_2 = 2$ for that point.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"TAXUNshcvPsg\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 365\n        },\n        \"outputId\": \"e8a20f5e-039b-4932-83f2-033d9513899b\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"#@title Effect of parameters {run: \\\"auto\\\"}\\n\",\n        \"\\n\",\n        \"# Define the parameters\\n\",\n        \"w1 = -1 #@param { type: \\\"slider\\\", min: -5, max: 5, step: 0.1 }\\n\",\n        \"w2 = 1 #@param { type: \\\"slider\\\", min: -5, max: 5, step: 0.1 }\\n\",\n        \"\\n\",\n        \"plot_dataset(inputs, labels)\\n\",\n        \"\\n\",\n        \"# Add the weight vector to the plot. We plot it in red, as it has to \\\"point\\\"\\n\",\n        \"# in the direction of the red points.\\n\",\n        \"ax = plt.axes()\\n\",\n        \"ax.arrow(0, 0, w1, w2, head_width=0.3, head_length=0.3, fc='r', ec='r')\\n\",\n        \"\\n\",\n        \"# Plot part of the decision boundary in black. It is orthogonal to the weight\\n\",\n        \"# vector.\\n\",\n        \"t = 2\\n\",\n        \"plt.plot([-t * w2, t * w2], [t * w1, -t * w1], 'k-')\\n\",\n        \"\\n\",\n        \"plt.xlim([-4, 4])\\n\",\n        \"plt.ylim([-4, 4])\\n\",\n        \"\\n\",\n        \"plt.show()\"\n      ],\n      \"execution_count\": 6,\n      \"outputs\": [\n        {\n          \"output_type\": \"display_data\",\n          \"data\": {\n            \"image/png\": \"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\\nx8PzCIMAAAAASUVORK5CYII=\\n\",\n            \"text/plain\": [\n              \"<matplotlib.figure.Figure at 0x7f0707754dd0>\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          }\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"igAjsyMldbMr\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## Classification\\n\",\n        \"Given a normal vector $\\\\mathbf{w}$, we can evaluate which side of the decision boundary a particular point $\\\\mathbf{x_i} = (x_{i,1}, x_{i, 2})$ lies by evaluating $\\\\mathbf{w^Tx_i}$. If $\\\\mathbf{w^Tx_i} > 0$, the point $\\\\mathbf{x_i}$ lies to one side of the boundary (in the direction of the normal vector), and we can classify that point as belonging to class 1 (in our case, \\\"red\\\"). If $\\\\mathbf{w^Tx_i} < 0$ the point lies on the other side and can be classified as class 0 (in our case, \\\"blue\\\"). Finally if $\\\\mathbf{w^Tx_i} = 0$ the point lies on the decision boundary and we can decide whether to classify it as either 0 or 1, or ignore it. \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"jqW7RpSTaRZH\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## How \\\"good\\\" is the line?\\n\",\n        \"\\n\",\n        \"If you've played around with the above code, you may have developed some intuition around how different settings of the parameters influence the final placement of the decision boundary. The purpose of machine learning is to *automatically* adjust the values of $w_1$ and $w_2$ to find a suitable decision boundary! But to do this, we need to mathematically specify some **loss** or **objective** function. The loss is a function of the parameters $w_1$ and $w_2$ and tells us how good a certain configuration of the parameter values are at classifying the data. This function is defined such that it reaches its optimum setting when it is minimised, i.e. the *smaller* its value, the *better* the separation between the classes. An additional property a loss function can have that is often crucial for machine learning is being *differentiable*. A differentiable loss function allows us to use *gradient-based optimisation* to find its minimum and the corresponding optimal values of $w_1$ and $w_2$. \\n\",\n        \"\\n\",\n        \"For this classification problem, we consider the **binary cross-entropy** loss function to measure how good the model's predictions are.  This loss function compares the model's prediction for each example, $\\\\mathbf{x_i}$ to the true **target** $y_i$ (we often refer to the true label associated with an input as the \\\"target\\\"). It then applies the non-linear log function to penalise the model for being further from the true class. The equation for the binary cross entropy loss, on a dataset with $N$ points is:\\n\",\n        \"\\n\",\n        \"\\\\begin{align}\\n\",\n        \"l(\\\\mathbf{w}) = -\\\\frac{1}{N}\\\\sum_{i=1}^N y_i log(\\\\hat{y}_i) + (1-y_i)log(1-\\\\hat{y}_i)\\n\",\n        \"\\\\end{align}\\n\",\n        \"\\n\",\n        \"where $\\\\hat{y}_i = \\\\operatorname{sigmoid}(\\\\mathbf{w}^T\\\\mathbf{x_i})$ and the $\\\\operatorname{sigmoid}$ function is defined as:\\n\",\n        \"\\n\",\n        \"$$\\n\",\n        \"\\\\mathrm{sigmoid}(a) = \\\\frac{1}{1 + e^{-a}} .\\n\",\n        \"$$\\n\",\n        \"\\n\",\n        \"The reason we use the $\\\\operatorname{sigmoid}$ function is because our classifier can output any real value. The binary cross entropy loss function, however, expects the predictions made by a classifier to be between $0$ and $1$. The sigmoid function \\\"squashes\\\" any real number inputs to lie in the interval $(0, 1)$.\\n\",\n        \"\\n\",\n        \"Let's now wrap this in a Python function so that we can compute the loss for any values of $w_1$ and $w_2$:\\n\",\n        \"\\n\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"wKkpBZ6ZWLoF\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"def compute_loss(w1, w2):\\n\",\n        \"  \\n\",\n        \"  total_log_likelihood = 0  \\n\",\n        \"  \\n\",\n        \"  # Add the contribution of each datapoint to the loss\\n\",\n        \"  for (x1, x2), target in zip(inputs, labels):\\n\",\n        \"    # As our targets are 0 or 1, our prediction function must output a value between 0 and 1.\\n\",\n        \"    # The sigmoid function 'squashes' any value to lie between 0 and 1:\\n\",\n        \"    prediction = tf.sigmoid(w1*x1 + w2*x2)  \\n\",\n        \"    \\n\",\n        \"    # Compute the local loss term\\n\",\n        \"    # We add 1e-10 to make the log operations numerically stable (i.e. avoid taking the log of 0.)\\n\",\n        \"    log_likelihood = target * tf.log(prediction + 1e-10) + (1.-target)*tf.log(1.-prediction + 1e-10)\\n\",\n        \"    total_log_likelihood += log_likelihood\\n\",\n        \"  \\n\",\n        \"  loss = -total_log_likelihood\\n\",\n        \"  average_loss = loss / len(inputs)\\n\",\n        \"  return average_loss\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"x2P-s50pgj-N\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### More on the sigmoid function\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"AQqQ_quqwCFF\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"\\n\",\n        \"\\n\",\n        \"The sigmoid function is defined as\\n\",\n        \"$$\\n\",\n        \"\\\\mathrm{sigmoid}(a) = \\\\frac{1}{1 + e^{-a}} .\\n\",\n        \"$$\\n\",\n        \"Can you show that\\n\",\n        \"$$\\n\",\n        \"1 - \\\\mathrm{sigmoid}(a) = \\\\frac{1}{1 + e^{a}} ,\\n\",\n        \"$$\\n\",\n        \"and draw both of these on a sheet of paper?\\n\",\n        \"\\n\",\n        \"* What is its value when $a = \\\\mathbf{w}^{T}\\\\mathbf{x}$ is positive? negative? and zero?\\n\",\n        \"* What happends to its value when  $a = \\\\mathbf{w}^{T}\\\\mathbf{x}$ becomes larger?\\n\",\n        \"* What is the value of $\\\\mathrm{sigmoid}(\\\\mathbf{w^Tx})$ when $\\\\mathbf{w}^T\\\\mathbf{x} = 0$? How does this change how we classify points on either side of the decision boundary?\\n\",\n        \"\\n\",\n        \"After working through the above questions, explain to your neighbour why the binary cross-entropy loss function makes sense. \\n\",\n        \"\\n\",\n        \"**HINT**: Remember the idea of the loss function is to return small values when the classifier makes good predictions and large values when the classifier makes bad predictions. \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"x46fjqTUf4Dj\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### Bonus Question\\n\",\n        \"We derived the `compute_loss()` function above based on minimising the log-loss of the prediction error. This is related to a concept called 'cross-entropy'. But another way of deriving exactly the same loss function is by maximising the likelihood of the data under the model $P(y | x, w_1, w_2)$. If you are familiar with this concept (eg. from statistics), see if you can derive it this way as well.\\n\",\n        \"\\n\",\n        \"### Optional Further Reading\\n\",\n        \"More information on the [cross-entropy loss](http://ml-cheatsheet.readthedocs.io/en/latest/loss_functions.html) and another interesting connection to [information theory](https://rdipietro.github.io/friendly-intro-to-cross-entropy-loss/).\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"0tJJrBynf6ms\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## Loss value for your chosen $w_1$ and $w_2$\\n\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"edKlqlACgFsE\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"The following line of code computes the loss value for your chosen values of $w_1$ and $w_2$. Try changing the values of $w_1$ and $w_2$ using the sliders above and rerun the line below. Can you see how a better separation results in a lower loss? \\n\",\n        \"\\n\",\n        \"Note: If you've used TensorFlow before, it might be confusing how this code cell works! We explain more about this later... \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"QyzwKx6ef_Vm\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 34\n        },\n        \"outputId\": \"4f013900-35c4-4d70-9a61-4e1677767c07\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"compute_loss(w1, w2).numpy()\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"execute_result\",\n          \"data\": {\n            \"text/plain\": [\n              \"0.09962160420831814\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"execution_count\": 9\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"Z9KAMYSUgmkM\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## Visualising the loss function\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"ukphZS4_hMgN\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"We can visualise the loss function for our dataset by plotting its value at every point in a whole grid of $w_1$ and $w_2$ parameter values. We do this using a **contour plot**, which is a technique for visualising a 3-D function on a 2-D plot by letting colour represent the third dimension. All of the points with the same colour have the same loss value. \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"y4HZS5zZt3Pu\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 376\n        },\n        \"outputId\": \"0befe58e-fc5e-42aa-aae9-49f9fe5cab8c\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# We define a function so we can re-use this code later\\n\",\n        \"def plot_contours():  \\n\",\n        \"  # Generate a whole bunch of (w1, w2) points in a grid\\n\",\n        \"  ind = np.linspace(-5, 5, 50)\\n\",\n        \"  w1grid, w2grid = np.meshgrid(ind, ind)\\n\",\n        \"\\n\",\n        \"  # Compute the loss for each point in the grid\\n\",\n        \"  losses = []\\n\",\n        \"  for w1s, w2s in zip(w1grid, w2grid):\\n\",\n        \"    loss = compute_loss(w1s, w2s)\\n\",\n        \"    losses.append(loss)\\n\",\n        \"\\n\",\n        \"  # Pack the loss values for every value of w1 & w2 into one (50,50) array\\n\",\n        \"  losses_array = np.concatenate(losses).reshape(50,50)\\n\",\n        \"\\n\",\n        \"  # Now plot the resulting loss function as a contour plot over the whole grid of (w1, w2) values.\\n\",\n        \"  fig = plt.figure()\\n\",\n        \"  plt.contourf(w1grid, w2grid, losses_array, 20, cmap=plt.cm.jet)\\n\",\n        \"  cbar = plt.colorbar()\\n\",\n        \"  cbar.ax.set_ylabel('Binary cross-entropy loss value')\\n\",\n        \"  plt.xlabel('w1 value')\\n\",\n        \"  plt.ylabel('w2 value')\\n\",\n        \"  plt.title('Total loss for different values of w1 and w2')\\n\",\n        \"\\n\",\n        \"plot_contours()\"\n      ],\n      \"execution_count\": 8,\n      \"outputs\": [\n        {\n          \"output_type\": \"display_data\",\n          \"data\": {\n            \"image/png\": \"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\\nCxfGy8uL0NBQtm/fDoC/vz/ffvstsbGxNGzYkFGjRuX5+qMcPHiQypUrU7t2bQA6dOjA9evXuXLl\\nCgBPPPEEVatWzTHu3LlzZGZm0rhxYwBCQ0NV/UxZTp8+za1bt6zj6tevT9GiRTl8+DAARYoUoX79\\n+gBs27aNJk2a8MQTTwD3K89Nmzah/O/k1wYNGlChQgUsFgvPPPOMde6P0rp1a44cOWKtKDdu3EiH\\nDh3w8fFh9+7d1nvy9erVs1ayauzZs4fKlSvTqFEjALp27crp06e5du0apUqVYtu2bezfv5+CBQsy\\na9YsSpcunW28rT+L3AQEBJCamkpCQgL79u2jefPmxMfHk5GRwf79+61/Pmr9+OOPtG/fPtefPz09\\nnRdffBEg2+/zvn37aN++PV5eXvj7+9OyZctcr92wYUMOHTpEfHw8jz32GNWrV+fEiROcOnWKatWq\\nUbRoUev3JiUlMXjwYN58803KlStn188ghBpyT9jAEhIS8Pb2pkiRItbXihUrRnx8fI7v3bp1K/Pn\\nzychIQGLxQJgDQ9bbt68SbFixbJ9xs2bN4H74T5v3jxCQ0OpWLEi48aNo169eo98Pa/PKF68uPVr\\ni8VC0aJFrT/Lg+89KCkpCT8/v2xzs8etW7e4c+eO9d4xwO3bt0lMTKRQoULZPjc5OZldu3Zl+94i\\nRYqQlJQEkG0eBQoUICMjI8/P9vPzo2HDhmzbto2aNWty9+5dAgMDAVi4cCGrV68mLS2NP//8Ex8f\\nH7t+pnPnzmWbZ+HChUlISKB///7A/Ya/uLg4Xn75Zd56661s4239WTxKgwYNOHz4MPv27aNt27ac\\nO3eOkydPsn//fnr16qV6/gCrV69m6dKl3Llzh4yMDDIzM63v+fj4ULBgQQC8vLysv8+JiYnZ/gyK\\nFy+e65wbNWrEwYMHyczMpG7dulSsWJEDBw7g4+OT7R8L165dY+DAgbRv356BAwfaNX8h1JIQNjB/\\nf3/S09O5ffu29S+fxMRESpUqle370tLSGDp0KJ9++inNmzfn7t271ipHjVKlSlnvfT78GdWqVWP6\\n9OlkZGQQHR3NiBEj+OWXXx75+qOULl0622dkZmaSlJSUo0p7WLFixbJ1iSckJKj+uQDKli1L8eLF\\nWb9+fY73duzYke3rcuXK0bx5c2bOnGnXZ+QlJCSEn3/+mStXrlgrv71797Jw4UIiIyOpWLEiW7du\\n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\\n\",\n            \"text/plain\": [\n              \"<matplotlib.figure.Figure at 0x7f06ee305350>\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          }\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"676bWBwTiXXD\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## Optimising the loss using TensorFlow\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"MMLA-wk5xB7p\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Now that we have a function that gives us the loss for different values of $w_1$ and $w_2$, we want an automated method to find the values that minimise the loss function. This is where optimisation by **gradient descent** comes in. The idea is that for each (batch of) data points, we compute the loss using the current values of $w_1$ and $w_2$ on the data. We then compute the **gradient** (or derivative) of the loss function at the current values of $w_1$ and $w_2$. The negative of the gradient points in the direction of *steepest descent* along the loss function. By adjusting the values of $w_1$ and $w_2$ in the direction of the negative gradient, we move closer towards the minimum of the loss function (provided the loss function is \\\"well behaved\\\"). How big of a step we take is mediated by the **learning rate**. To do this more easily, we will use TensorFlow.\\n\",\n        \"\\n\",\n        \"Don't worry if you don't understand what's going on here, you will see this in a lot more detail during the **Mathematics for Machine Learning** lectures!\\n\",\n        \"\\n\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"sFJBmN5Hivhv\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### Aside: TensorFlow\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"DRtDggkBi0X3\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"TensorFlow (TF) is an open source software library for numerical computation using the concept of Tensors. You can think of Tensors as being a generalisation of matrices to higher dimensions, or roughly equivalent to multi-dimensional arrays. Scalars are 0-dimensional tensors, vectors are 1-dimensional, standard matrices are 2-dimensional, and higher-dimensional tensors have 3 or more dimensions. You can think of dimensions as representing groups of numbers that mean the same thing. For example, for images, we often use 3-dimensional tensors where the first dimension represents the red, green, and blue color channels of the image, and the next two are the columns and rows of pixels of the image. \\n\",\n        \"\\n\",\n        \"**Note**: Don't be confused when people say \\\"2-D vector\\\" or \\\"3-D vector\\\", which refers to a 1-dimensional tensor that has size 2 or 3.\\n\",\n        \"\\n\",\n        \"The major advantage of using TensorFlow is that it can automatically derive the gradients of many mathematical expressions involving tensors. It achieves this through a process called \\\"automatic differentiation\\\". Tensorflow also supports multiple \\\"kernels\\\", allowing you to easily run your code on normal processors (CPUs), graphics cards (GPUs) and other more exotic hardware accelerators like Google's Tensor Processing Units (TPUs)\\n\",\n        \"\\n\",\n        \"Tensorflow actually provides **two modes of operation**, the first, called \\\"graph mode\\\", builds a computation graph upfront and then feeds data into the graph. By building the graph upfront, Tensorflow can apply optimisations to the graph that allow it to extract peak performance from the hardware you're running on. You will have encountered this mode if you used Tensorflow before or attended the Indaba last year! The second mode, called [\\\"Eager-mode\\\"](https://www.tensorflow.org/guide/eager), is a lot newer and evaluates Tensor operations imperatively (in the order you write them), similar to NumPy and PyTorch. Eager-mode is slightly less performant but a lot more intuitive, especially if you've never used a \\\"define-and-run\\\" programming style (like graph mode) before, and is therefore the mode we will use in these practicals. \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"eLVl2PhK2VpP\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### Using Tensorflow to optimise the loss\\n\",\n        \"We use TensorFlow to optimise the parameters of the model with gradient descent. We loop over the dataset multiple times (called \\\"epochs\\\") and plot the final decision boundary along with a plot showing how the parameters and loss changed over the epochs.\\n\",\n        \"\\n\",\n        \"**Note**: TensorFlow is probably overkill for this example, becaue the gradient is very easy to calculate, but we introduce it here because it will become essential to calculate the gradients of more complex models in later practicals! \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"cKre-CI8IG9z\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"lr = 0.25  # The learning rate\\n\",\n        \"\\n\",\n        \"# Initialise Tensorflow variables representing our parameters.\\n\",\n        \"# We need to use TensorFlow variables here rather than Numpy or Python ones so \\n\",\n        \"# that TensorFlow is able to compute gradients.\\n\",\n        \"w1 = tfe.Variable(-2.0)  \\n\",\n        \"w2 = tfe.Variable(-4.0)  \\n\",\n        \"\\n\",\n        \"plot_contours()\\n\",\n        \"\\n\",\n        \"# Loop over the dataset multiple times\\n\",\n        \"parameter_values = []\\n\",\n        \"for epoch in range(20):\\n\",\n        \"  plt.scatter(w1.numpy(), w2.numpy(), marker='o', color='black')\\n\",\n        \"  \\n\",\n        \"  with tf.GradientTape() as tape:\\n\",\n        \"    loss = compute_loss(w1, w2)\\n\",\n        \"  \\n\",\n        \"  # Now we take a step in parameter space in the direction of the gradient to move the parameters closer (hopefully!) to their optimum\\n\",\n        \"  dw1, dw2 = tape.gradient(loss, [w1, w2])\\n\",\n        \"  \\n\",\n        \"  # Step 'lr units' in the direction of the negative gradient\\n\",\n        \"  # We achieve this by subtracting lr * dw1 and lr * dw2 from the w1 and w2 variables\\n\",\n        \"  w1.assign_sub(lr*dw1)\\n\",\n        \"  w2.assign_sub(lr*dw2)\\n\",\n        \"  \\n\",\n        \"print('Finished optimisation, the final values of w1 and w2 are:')\\n\",\n        \"print(w1.numpy(), w2.numpy())\\n\",\n        \"\\n\",\n        \"# Plot the final point on the loss surface.\\n\",\n        \"plt.scatter(w1.numpy(), w2.numpy(), marker='x', color='red')\\n\",\n        \"plt.show()\\n\",\n        \"\\n\",\n        \"# Plot the final decision boundary\\n\",\n        \"plot_dataset(inputs, labels)\\n\",\n        \"ax = plt.axes()\\n\",\n        \"ax.arrow(0, 0, w1.numpy(), w2.numpy(), head_width=0.3, head_length=0.3, fc='r', ec='r')\\n\",\n        \"plt.plot([-2 * w2.numpy(), 2 * w2.numpy()], [2 * w1.numpy(), -2 * w1.numpy()], 'k-')\\n\",\n        \"\\n\",\n        \"plt.xlim([-4, 4])\\n\",\n        \"plt.ylim([-4, 4])\\n\",\n        \"\\n\",\n        \"plt.show()\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"meoIDXSQjKeE\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"How did the final values of $w_1$ and $w_2$ found by Tensorflow correspond to the ones you found manually? \\n\",\n        \"\\n\",\n        \"## Optional Tasks\\n\",\n        \"If you've worked through this practical, answered all the questions and feel you have a good understanding of what's going on, try the following tasks:\\n\",\n        \"\\n\",\n        \"1. Add a **bias** parameter to the equation for the decision boundary and visualise how that changes the decision boundary, the loss and the ultimate solution found by Tensorflow.\\n\",\n        \"2. Add a **regulariser**, for example, the L2 regulariser (see the appendix below for more information) - how does it affect the contour plot of the parameters vs the loss? How does changing the strength of regularisation affect the loss? \\n\",\n        \"\\n\",\n        \"Note: The benefit of using regularisation will be discussed in the next practical! \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"SVFq4xvBmGQq\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"# Next Steps\\n\",\n        \"Have a look at [last year's practical](https://github.com/deep-learning-indaba/practicals2017/blob/master/practical1.ipynb) which takes a more \\\"bottom-up\\\" approach, covers more detail on how gradients are computed and also looks at a multi-class classification problem with a non-linear decision boundary. \\n\",\n        \"\\n\",\n        \"Note: last year's practicals use Tensorflow's \\\"graph mode\\\" as opposed to \\\"Eager mode\\\" that we use here.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"4jpKVuEkQF46\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"# Appendix\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"EgLuuVNRQHqy\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### L1 and L2 Regularisation\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"SlO75RlmQKQF\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Two of the most simple regularization methods are L1 and L2 regularization (you may have heard of them as _Lasso_ and _Ridge_ regression if you've used linear regression before). Both of these methods regularize the model by adding a term to the loss that penalizes the model if it becomes too complex.\\n\",\n        \"L1 regularization adds a term based on the L1 norm:\\n\",\n        \"\\n\",\n        \"$loss_{L1} = loss + \\\\lambda \\\\sum_i |w_i|$\\n\",\n        \"\\n\",\n        \"where $\\\\lambda$ is a parameter that controls the amount of regularization, and $w_i$ are the parameters of the model. L1 regularization has the effect of forcing some parameters to shrink to 0, effectively removing them from the model.\\n\",\n        \"\\n\",\n        \"L2 regularization similarly adds a term based on the L2 norm:\\n\",\n        \"\\n\",\n        \"$loss_{L2} = loss + \\\\lambda \\\\sum_i w_i^2$.\\n\",\n        \"\\n\",\n        \"L2 regularization has the effect of preventing any of the parameters from becoming too large and _overpowering_ the others. \\n\",\n        \"\\n\",\n        \"In some cases it can work well to use both L1 and L2 regularization. \\n\",\n        \"\\n\",\n        \"For more information see the articles [here](http://enhancedatascience.com/2017/07/04/machine-learning-explained-regularization/) and [here](https://towardsdatascience.com/l1-and-l2-regularization-methods-ce25e7fc831c).\"\n      ]\n    }\n  ]\n}"
  },
  {
    "path": "Practical_1_Deep_Feedforward_Networks.ipynb",
    "content": "{\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0,\n  \"metadata\": {\n    \"colab\": {\n      \"name\": \"Practical 1: Deep Feedforward Networks\",\n      \"version\": \"0.3.2\",\n      \"provenance\": [],\n      \"collapsed_sections\": [\n        \"tHy4bjbTVCzV\",\n        \"SIUsSjNwVk_n\",\n        \"ot-FjimzV6op\"\n      ]\n    },\n    \"kernelspec\": {\n      \"name\": \"python2\",\n      \"display_name\": \"Python 2\"\n    }\n  },\n  \"cells\": [\n    {\n      \"metadata\": {\n        \"id\": \"dYUH0qf8Dqkm\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"# Practical 1: Deep Feed-forward Networks\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"6hH4wd81A_P8\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## Introduction\\n\",\n        \"In this practical, we implement and train a feed-forward neural network (also known as an \\\"MLP\\\" for \\\"multi-layer perceptron\\\") on a dataset called \\\"Fashion MNIST\\\", consisting of small greyscale images of items of fashion. We consider the practical issues around generalisation to out-of-sample data and introduce some important techniques for addressing this. \\n\",\n        \"\\n\",\n        \"## Learning Objectives \\n\",\n        \"* Understand how to use **Tensorflow Eager** and **Keras Layers** to build a neural network architecture\\n\",\n        \"* Understand how a model is trained and evaluated\\n\",\n        \"* Be able to explain why there is a difference between **in-sample** and **out-of-sample** model performance\\n\",\n        \"* Understand the concept of **train/validation/test split** and why it's useful\\n\",\n        \"* Research at least 1 technique that can be used to improve model **generalisation**\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"NxSD3yPDfEIj\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 34\n        },\n        \"outputId\": \"6c6beb36-83c9-4658-c4d0-08dbdbbc6a0f\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"#@title Imports (RUN ME!) { display-mode: \\\"form\\\" }\\n\",\n        \"from __future__ import absolute_import, division, print_function\\n\",\n        \"\\n\",\n        \"import tensorflow as tf\\n\",\n        \"import tensorflow.contrib.eager as tfe\\n\",\n        \"import numpy as np\\n\",\n        \"import matplotlib.pyplot as plt\\n\",\n        \"%matplotlib inline\\n\",\n        \"\\n\",\n        \"try:\\n\",\n        \"  tf.enable_eager_execution()\\n\",\n        \"  print('Running in Eager mode.')\\n\",\n        \"except ValueError:\\n\",\n        \"  print('Already running Eagerly')\"\n      ],\n      \"execution_count\": 1,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Running in Eager mode.\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"sU33KeDUDomX\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## The Data\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"nL0dFs-DD6sM\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"In this practical, we use the Fashion MNIST dataset consisting of 70,000 greyscale images and their labels. The dataset is divided\\n\",\n        \" into 60,000 training images and 10,000 test images. The idea is to train a **classifier** to identify the class value (what type of fashion item it is) given the image. We train and *tune* a model on the 60,000 training images and then evaluate how well it classifies the 10,000 test images that the model did not see during training. This task is an example of a **supervised learning** problem, where we are given both input and labels (targets) to learn from. This is in contrast to **unsupervised learning** where we only have inputs from which to learn patterns or **reinforcement learning** where an agent learns how to maximise a reward signal through interaction with its environment. \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"3lEM3aBa2N63\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"###Aside: Train/Validation/Test Split\\n\",\n        \"\\n\",\n        \"When we build machine learning models, the goal is to build a model that will perform well on *future* data that we have not seen yet. We say that we want our models to be able to **generalise** well from whatever training data we can collect and do have available, to whatever data we will be applying them to in future. To do this, we split whatever data we have available into a **training set, a validation set and a test set**. The idea is that we train our model and use the performance on the validation set to make any adjustments to the model and its hyperparameters, but then we report the final accuracy on the test set. The test set (which we never train on), therefore acts as a proxy for our future data.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"9VRxcYWHfZJ5\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Tensorflow has convenient modules for loading a number of standard datasets\\n\",\n        \"fashion_mnist = tf.keras.datasets.fashion_mnist\\n\",\n        \"(train_and_validation_images, train_and_validation_labels), (test_images, test_labels) = fashion_mnist.load_data()\\n\",\n        \"\\n\",\n        \"text_labels = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"1Z_Ks31qEfUM\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### Construct a validation set\\n\",\n        \"Next, we remove 10,000 images and labels from the training set to use as a validation set. We will come back to the validation set later! \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"dZKEjjGM8I4t\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Construct a validation set from the last 10000 images and labels from \\n\",\n        \"# train_and_validation_images and train_and_validation_labels\\n\",\n        \"validation_images = train_and_validation_images[-10000:, :, :]\\n\",\n        \"validation_labels = train_and_validation_labels[-10000:]\\n\",\n        \"\\n\",\n        \"# Construct a training set from the first 50000 images and labels.\\n\",\n        \"train_images = train_and_validation_images[:50000, :, :]\\n\",\n        \"train_labels = train_and_validation_labels[:50000]\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"fbWk7qJOEkl6\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### What does the data look like?\\n\",\n        \"Each image in the dataset consists of a 28 x 28 matrix of greyscale pixels. The values are between 0 and 255 where 0 represents black, 255 represents white and there are many shades of grey in-between. Each image is assigned a corresponding numerical label, so the image in ```train_images[i]``` has its corresponding label stored in ```train_labels[i]```. We also have a lookup array called ```text_labels``` to associate a text description with each of the numerical labels. For example, the label 1 is associated with the text description \\\"Trouser\\\".\\n\",\n        \"\\n\",\n        \"The 2 cells below demonstrate how to visualise the input data. Make sure you understand what's happening, particularly how the indices correspond to individual items in the dataset. \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"PgfvNeX2gcAL\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 280\n        },\n        \"outputId\": \"4b853a99-0389-4dc8-d163-0714ad00507b\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# We use the Matplotlib plotting library to visualise an image selected at random from the training set \\n\",\n        \"plt.figure()\\n\",\n        \"random_index = np.random.randint(0, len(train_images))\\n\",\n        \"plt.imshow(train_images[random_index], cmap='gray')\\n\",\n        \"plt.colorbar()\\n\",\n        \"numerical_label = train_labels[random_index]\\n\",\n        \"text_description = text_labels[numerical_label]\\n\",\n        \"plt.title('True Class: {} (\\\"{}\\\")'.format(numerical_label, text_description))\\n\",\n        \"\\n\",\n        \"plt.gca().grid(False)\"\n      ],\n      \"execution_count\": 4,\n      \"outputs\": [\n        {\n          \"output_type\": \"display_data\",\n          \"data\": {\n            \"image/png\": \"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\\nAYPHSa3T0HhhAAAAAElFTkSuQmCC\\n\",\n            \"text/plain\": [\n              \"<matplotlib.figure.Figure at 0x7f67cfc18790>\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          }\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"-utfMlxhhL3b\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 589\n        },\n        \"outputId\": \"18781e96-bf98-4a18-8e3e-3149fac0df80\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Another view, showing 25 randomly selected images at a time\\n\",\n        \"plt.figure(figsize=(10,10))\\n\",\n        \"for i in range(25):\\n\",\n        \"    plt.subplot(5,5,i+1)\\n\",\n        \"    plt.xticks([])\\n\",\n        \"    plt.yticks([])\\n\",\n        \"    plt.grid('off')\\n\",\n        \"    \\n\",\n        \"    img_index = np.random.randint(0, 50000)\\n\",\n        \"    plt.imshow(train_images[img_index], cmap=plt.cm.gray)\\n\",\n        \"    plt.xlabel(text_labels[train_labels[img_index]])\"\n      ],\n      \"execution_count\": 5,\n      \"outputs\": [\n        {\n          \"output_type\": \"display_data\",\n          \"data\": {\n            \"image/png\": \"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\\n/N1sTp4c5mQAlzvnjkdp8Xy9/O9/AXCzc24EgH8DqHFxzwLwgHNuBUrutXHe+w+cc/8D4GrnXE07\\n7SY9WQXkAAAXOedeALAMwIcouVOfBrAtSj+M6wG4w3v/uHPuVQD/dM49AuBxlLTg/3PO7Q7gPgBP\\nO+cOWtPsD7FWtHXOTWMKIDIAACAASURBVEBpnlqjtO5OQukve+YsAFc55yai9ON3RfkHcbW1CWAO\\ngHHOueNQuibmoDTfYt2htVk8qvJ3s0mmkAshhBBCrC3NVa4SQgghhMiihxwhhBBCFBI95AghhBCi\\nkOghRwghhBCFRA85QgghhCgkesgRQgghRCHJ1slp0aJFk84vb9GiRfQ6lQ5/9NFHR6+/+MUvBvu5\\n554L9osvvhiN69y5c7AHDRoU7NatW0fjttlmm2Cfcsop0baJEyfWekw5PvvssxafP2rNWZfzOXTo\\n0GDfd9990bYHH3ww2Outt6p6/PLlcWubDz/8MNj/+c+qQpqffBI3M15//VWXMe/v/fffj8aVy5AD\\nAO66665gX3nllYlvUT80xHw21trs2rVr9LpXr17BXrJkSbA//fTTaByv1U6dOgV70003jcZtuGEo\\nuIotttgi2K1axa2rzjnnnGD/97+27mDDUYS1yfDaAeK1NWDAgGD/5S9/icadddZZwb799tuT++fr\\n449//GOwTzrppGjcjBkzKjvgeqZIa7NHj7he5tlnnx3sbbfdNthPPBF3XliwYEGwP/7442B/4Qux\\nD6R3797B3mOPPYJ92223ReP++te/BnvhwoUVHXulv+U5UnMpT44QQgghCokecoQQQghRSJprWwcA\\nlbu4dt111+g1u+fYxbfPPvtE45599tlgL1q0qjdghw4donHnnntusPv06RNte+mll4K9bNmyYFtX\\n4Lp0ua8LunfvHuyPPvoo2savN9988+Q+WHrabLPNgm1lLT6X9rMYfl+3bt2S46oRPoe5a5ElByCW\\nkT744INgd+zYMRrHa5Wlx7Zt20bjVqxYEWxec6NGjYrG8XXz4x//OHm8Ik9OFnjvvfeCbSV6lqt+\\n97vfBXvp0qXRuJdffjnY06dPD7a9/1U7lf6WsQQFAGeccUaw33777WgbS8abbLJJsIcPH17n46xh\\n5cqVwT7ttNOibT/60Y+CzSEHhx9+eDTu8cdXdWppyM4LutKEEEIIUUj0kCOEEEKIQqKHHCGEEEIU\\n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\\nEEIIUUr+P9rPn3cslCmKAAAAAElFTkSuQmCC\\n\",\n            \"text/plain\": [\n              \"<matplotlib.figure.Figure at 0x7f67cef7f090>\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          }\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"qMwKN4DHcqXV\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### Exploratory Task\\n\",\n        \"Run the above cells multiple times to get a good sense of the dataset. Look at the general structure of the images and their corresponding labels. Can you spot some classes that might be difficult for a classifier to distinguish? If so, why do you think they would be difficult to distinguish? Chat to your neighbour about this. \\n\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"S6U63sTpGYvg\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### Preparing the data with TensorFlow\\n\",\n        \"At the moment, our training data consists of two large tensors. The images are stored in a tensor of shape $[50000, 28, 28]$, consisting of all the $28 \\\\times 28$ images matrices stacked together. The labels are stored in a 1D vector of shape $[50000]$. We wish to train a model using **mini-batch stochastic gradient descent**. In order to do so, we need to shuffle the data and split it into smaller (mini-)batches. We also convert the data from numpy arrays to TensorFlow Tensors.\\n\",\n        \"\\n\",\n        \"#### Questions\\n\",\n        \"* Can you explain what the difference is between normal stochastic gradient descent and \\\"batched\\\" stochastic gradient descent? What is the purpose of chunking data into batches during training? Are there any trade-offs? What are they? **HINT**: Speak to your neighbours and tutors about this. You can also read [this blog post](https://machinelearningmastery.com/gentle-introduction-mini-batch-gradient-descent-configure-batch-size/) for more details.\\n\",\n        \"* Why is it important to randomise the data before chunking it into batches? \\n\",\n        \"\\n\",\n        \"In order to do this batching (and shuffling) we will use the Tensorflow [Dataset API](https://www.tensorflow.org/api_docs/python/tf/data/Dataset), which is a set of simple reusable components that allow you to build efficient data pipelines. Data is said to \\\"stream\\\" through the pipeline, meaning that when something at the output of the pipeline wants data, the pipeline will provide that data as soon as it has enough, rather than waiting to process all the data. This allows you to easily build pipelines that work on large datasets without having to load it all into memory in one go!\\n\",\n        \"\\n\",\n        \"We build this pipeline step-by-step:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"HO8Z6SImg_7W\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"We being by defining the ```batch_size``` hyperparameter of our model. This hyperparameter controls the sizes of the mini-batches (chunks) of data that we use to train the model. The value you use will affect the memory usage, speed of convergence and potentially also the performance of the model. It also interacts with the *learning rate* used in gradient descent. \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"x7VwqreOhbfv\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"batch_size = 128\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"3CaT9bWFheRw\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"The first component we add will group the image and label tensors together into a tuple and then split them into individual entries - ie. 50000 tuples containing a (28, 28) dimensional image and 1D label associated with that image. The following line adds this splitting component to the pipeline.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"7wITDBK8h5Z6\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"train_ds = tf.data.Dataset.from_tensor_slices((train_images, train_labels))\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"VNVG8Kb3h_CW\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"The next thing we do is apply a map operation. This lets us run an arbitrary function on each element. The function we provide returns the image values divided by 255 and converted ('cast') to a float and the label converted to a 32-bit integer.\\n\",\n        \"\\n\",\n        \"**NOTE**: \\\"Lambda\\\" functions are just one-line, anonymous functions. In this case, it defines a function that takes arguments x and y (before the colon), and outputs their manipulated values (after the colon).\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"4fcE7eTviBOi\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Divide image values and cast to float so that they end up as a floating point number between 0 and 1\\n\",\n        \"train_ds = train_ds.map(lambda x, y: (tf.cast(x, tf.float32) / 255.0, tf.cast(y, tf.int32)))  \"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"gm5iOdU0iD_0\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Then we add a **shuffle** component. This returns a random element from the pipeline. Can you spot a potential problem here? \\n\",\n        \"\\n\",\n        \"**QUESTION**:  What might happen if the shuffle component didn't have a *buffer*?  **HINT**: Refer back to the discussion about the data pipeline and \\\"data streaming through it\\\" above.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"bvr5r8k6iJGI\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Shuffle the examples.\\n\",\n        \"train_ds = train_ds.shuffle(buffer_size=batch_size * 10) \"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"OlGI65QIjOgp\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"The final component in our pipeline is the batch component. This just requests `batch_size` elements from the previous pipeline component, groups them together into a single tensor and returns that.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"PB8CZrsmjR7Z\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Now \\\"chunk\\\" the examples into batches\\n\",\n        \"train_ds = train_ds.batch(batch_size)  \\n\",\n        \"\\n\",\n        \"# The output of this pipeline will be tuples of tensors containing images and labels. \\n\",\n        \"# The images will be of shape (batch_size, 28, 28) and the labels of shape (batch_size, )\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"D6Y4EvFijYRR\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Finally, we apply the same pre-processing (converting to Tensors and normalising the values to lie between 0 and 1) to the validation set. Here we don't need to use the Dataset API (but could if we wanted to!) because we don't need batching or shuffling. \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"EHxnBJjRB_Rl\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Apply the same preprocessing to the validation set\\n\",\n        \"# Ignore this for now - it will be used later! \\n\",\n        \"validation_images = tf.convert_to_tensor(validation_images, dtype=tf.float32) / 255.0\\n\",\n        \"validation_labels = tf.convert_to_tensor(validation_labels, dtype=tf.int32)\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"v04ibRFSALQu\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## Define the model\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"KItI--nMHFRQ\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"In this section we'll build a classifier. A **classifier** is a function that takes an object's characteristics (or \\\"features\\\") as inputs and outputs a prediction of the class (or group) that the object belongs to. It may make a single prediction for each input or it may output some score (for example a probability) for each of the possible classes. Specifically, we will build a classifier that takes in (a batch of) 28 x 28 Fashion MNIST images as we've seen above, and outputs predictions about which class the image belongs to. \\n\",\n        \"\\n\",\n        \"For each (batch of) input images, we will use a **feed-forward neural network** to compute un-normalised scores (also known as **logits**) for each of the 10 possible classes that the image could belong to. We can then **classify** the image as belonging to the class which receives the highest score, or we can quantify the model's \\\"confidence\\\" about the classifications by converting the scores into a probability distribution. \\n\",\n        \"\\n\",\n        \"A feed-forward neural network consisting of $N$ layers, applied to an input vector $\\\\mathbf{x}$ can be defined as:\\n\",\n        \"\\n\",\n        \"\\\\begin{equation}\\n\",\n        \"\\\\mathbf{f_0} = \\\\mathbf{x} \\\\\\\\\\n\",\n        \"\\\\mathbf{f_i} = \\\\sigma_i(\\\\mathbf{W_if_{i-1}} + \\\\mathbf{b_i}) \\\\ \\\\ \\\\ i \\\\in [1, N]\\n\",\n        \"\\\\end{equation}\\n\",\n        \"\\n\",\n        \"Each layer has a particular number, $m_i$, of neurons. The parameters of a layer consist of a matrix $\\\\mathbf{W_i} \\\\in \\\\mathbb{R}^{m_i \\\\times m_{i-1}}$ and bias vector $\\\\mathbf{b_i} \\\\in \\\\mathbb{R}^{m_i}$. Each layer also has a non-linear activation function $\\\\sigma_i$. \\n\",\n        \"\\n\",\n        \"**QUESTION**: Why do you think the activation functions need to be *non-linear*? What would happen if they were *linear*? **HINT**: If you're stuck, consider the very simplest case of an identity activation (which essentially does nothing) and ignore the biases. \\n\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"tHy4bjbTVCzV\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### Aside: Activation functions\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"Ox7VKs3BVCFV\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"\\n\",\n        \"\\n\",\n        \"Activation functions are a core ingredient in deep neural networks. In fact they are what allows us to make use of multiple layers in a neural network. There are a number of different activation functions, each of which are more or less useful under different circumstances. The four activation functions that you are most likely to encounter are, arguably, [ReLU](https://www.tensorflow.org/api_docs/python/tf/keras/layers/ReLU), [Tanh](https://www.tensorflow.org/api_docs/python/tf/keras/activations/tanh), [Sigmoid](https://www.tensorflow.org/api_docs/python/tf/keras/activations/sigmoid), and [Softmax](https://www.tensorflow.org/api_docs/python/tf/keras/layers/Softmax). \\n\",\n        \"\\n\",\n        \"ReLU, has in recent years, become the default choice for use in MLPs and Convolutional Neural Networks (CNNs). ReLU has two advantages over Tanh and Sigmoid: it is computationally much more efficient, and, it allows us to use deeper networks because it does not suffer from [vanishing gradients](https://en.wikipedia.org/wiki/Vanishing_gradient_problem). As a result of their success, a number of ReLU variants, such as [LeakyRelu](https://www.tensorflow.org/api_docs/python/tf/keras/layers/LeakyReLU) and [PReLU](https://www.tensorflow.org/api_docs/python/tf/keras/layers/PReLU), have been developed.\\n\",\n        \"\\n\",\n        \"Sigmoid and Softmax activations are often found after the last layer in binary and multi-class classification networks, respectively, as they transform the outputs of the network in such a way that we can interpret them as class probabilities.\\n\",\n        \"\\n\",\n        \"Both Tanh and Sigmoid are found in LSTM and GRU recurrent neural networks, which we will find out more about in the coming days. They are also useful in MLPs and CNNs where we want the output to be bounded between -1 and 1 (Tanh) or 0 and 1 (Sigmoid).\\n\",\n        \"\\n\",\n        \"Read more about activation functions [here](https://towardsdatascience.com/activation-functions-neural-networks-1cbd9f8d91d6). \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"bDRoliDeAShd\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### Configure the feed-forward neural network\\n\",\n        \"We configure the feed-forward neural network part of our classifier using the [Keras Layers API](https://www.tensorflow.org/api_docs/python/tf/keras/layers). This API consists of various reusable building-blocks that allow us to define many different neural network architectures (similar to how we defined a data pipeline earlier!). \\n\",\n        \"\\n\",\n        \"Here we use the [Sequential](https://www.tensorflow.org/api_docs/python/tf/keras/Sequential) component which allows us to wrap together a sequence of layers. An important point to note here is that we are **configuring** our neural network architecture as a pipeline. We can think of the resulting ```model`` variable as a *function* that takes a batch of images as inputs and outputs a batch of logits. \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"cDPrTMSahRBu\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"model = tf.keras.Sequential([\\n\",\n        \"    # Convert the 28x28 image into a flat vector of 28x28 = 784 values\\n\",\n        \"    tf.keras.layers.Flatten(input_shape=(28, 28), name='flatten_input'),  \\n\",\n        \"    # Create a \\\"hidden\\\" layer with 256 neurons and apply the ReLU non-linearity\\n\",\n        \"    tf.keras.layers.Dense(256, activation=tf.nn.relu, name='input_to_hidden1'),  \\n\",\n        \"    # Create another hidden layer with 128 neurons\\n\",\n        \"    tf.keras.layers.Dense(128, activation=tf.nn.relu, name='hidden1_to_hidden2'),\\n\",\n        \"    # Create an \\\"output layer\\\" with 10 neurons\\n\",\n        \"    tf.keras.layers.Dense(10, name='hidden_to_logits'),  \\n\",\n        \"])\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"W3AU_94YP1st\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"The following summary shows how many parameters each layer is made up of (the number of entries in the weight matrics and bias vectors). Note that a value of ```None``` in a particular dimension of a shape means that the shape will dynamically adapt based on the shape of the inputs. In particular, the output shape of the ```flatten_input``` layer will be $[N, 784]$ when the batch of inputs passed to the model has shape $[N, 28, 28]$\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"fSW4V3HuQd1-\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 272\n        },\n        \"outputId\": \"f605f661-f91e-4ee5-ee7f-1df1d691038b\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"model.summary() \"\n      ],\n      \"execution_count\": 14,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"_________________________________________________________________\\n\",\n            \"Layer (type)                 Output Shape              Param #   \\n\",\n            \"=================================================================\\n\",\n            \"flatten_input (Flatten)      (None, 784)               0         \\n\",\n            \"_________________________________________________________________\\n\",\n            \"input_to_hidden1 (Dense)     (None, 256)               200960    \\n\",\n            \"_________________________________________________________________\\n\",\n            \"hidden1_to_hidden2 (Dense)   (None, 128)               32896     \\n\",\n            \"_________________________________________________________________\\n\",\n            \"hidden_to_logits (Dense)     (None, 10)                1290      \\n\",\n            \"=================================================================\\n\",\n            \"Total params: 235,146\\n\",\n            \"Trainable params: 235,146\\n\",\n            \"Non-trainable params: 0\\n\",\n            \"_________________________________________________________________\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"PwI8FcreWsC_\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"**QUESTION**: Note that the flattening operation has no parameters. However, the Dense (fully-connected) layer mapping from the 784-D output of the flatten operation to the 256-D hidden layer has 200,960 parameters! Can you explain why the dense layer has 200,960 parameters? **HINT**: Refer back to the equations of a feed-forward network.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"VwWoSlpDMzNZ\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### Define the loss\\n\",\n        \"As we did in the previous practical, we need to specify a loss function for our classifier. This tells us how good our model's predictions are compared to the actual labels (the targets), with a lower loss meaning better predictions. The standard loss function to use with a **multi-class classifier** is the **cross-entropy loss** also known as the \\\"negative log likelihood\\\". Suppose we have a classification problem with $C$ classes. A classifier is trained to predict a probability distribution $p(y | X_i)$ for each input $X_i$ from a batch of $N$ examples. The vector $p(y|X_i)$ is $C$ dimensional, sums to one, and we use $p(y|X_i)_c$ to denote the $c$th component of  $p(y|X_i)$. The true class for example $i$ in the batch is $y_i$ and we define the indicator function $\\\\mathbb{1}[y_i=c]$ to be 1 whenever $y_i = c$ and $0$ otherwise. This classifier has a cross-entropy loss of\\n\",\n        \"\\n\",\n        \"$- \\\\frac{1}{N}\\\\sum_{i=1}^N \\\\sum_{c=1}^C log( p(y|X_i)_c) \\\\mathbb{1}[y_i=c]$\\n\",\n        \"\\n\",\n        \"**NOTE**: The indicator is one for the true class label, and zero everywhere else. So in that sum, the indicator just \\\"lifts out\\\" the $log(p(y|X_i))$ values for all true classes. So the above expression is minimised (note the negative at the front) when the model places all its probability mass on the true labels for all the examples. Remember that  log(1)=0 , thus the closer all probabilities of $y_i = c$ are to one, the lower the loss will be and the better the model will be performing.\\n\",\n        \"\\n\",\n        \"**QUESTION**: \\n\",\n        \"* Why do you think this is a *good* loss function?\\n\",\n        \"* Can you think of any potential issues with this loss function?\\n\",\n        \"\\n\",\n        \"Fortunately we don't need to write this function ourselves as Tensorflow provides a version called \\n\",\n        \"\\n\",\n        \"```tf.nn.sparse_softmax_cross_entropy_with_logits```. \\n\",\n        \"\\n\",\n        \"**NOTE**: This function actually computes the cross entropy loss directly from the un-normalised logits, rather than from the probability distribution for numerical stability.\\n\",\n        \"\\n\",\n        \"By the way, for training data in which the labels are themselves distributions rather than exact values, this definition of cross-entropy still works, where the indicator function is replaced with the corresponding probability of each class for that example. This might be important when we are not sure whether the training data has been labelled correctly, or when the data was labelled by a human who gave their answer along with a degree of confidence that the answer was correct\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"7OHi-HftJy9_\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## Train the model\\n\",\n        \"Now that we have our data, data processing pipeline, our neural network architecture and the corresponding loss that we want to minimise, we need to **train** the model using batched stochastic gradient descent. We do this in multiple **epochs**, which is a single iteration through the entire training dataset. Briefly, in each epoch we loop over all the batches of images and labels, and for each batch we perform the following steps:\\n\",\n        \"* Get the **predictions** of the model on the current batch of images\\n\",\n        \"* Compute the **average loss** values across the batch, telling us how good these predictions are / how close they are to the true targets.\\n\",\n        \"* Compute the **gradient of the average loss** (or the average gradient of the losses in the batch) with respect to each of the model's parameters: This tells us the direction to move in \\\"parameter space\\\" to decrease the loss value\\n\",\n        \"* **Adjust the parameters** by taking a small step in the direction of each component of the gradient (where the learning rate controls the size of the step)\\n\",\n        \"\\n\",\n        \"During training we also track some metrics, such as the loss and accuracy to see how well the classifier is doing. Note that the cell below may take a few minutes to run! \\n\",\n        \"\\n\",\n        \"###ASIDE: Computing gradients in Eager mode\\n\",\n        \"\\n\",\n        \"In graph mode, TensorFlow builds up a \\\"computation graph\\\" which captures all operations of the model and their dependencies. For training, the gradient can then be computed by traversing backwards from every node through its dependents and applying the \\\"chain rule\\\" of differentiation. \\n\",\n        \"\\n\",\n        \"However, in Eager mode, we don't have the concept of the computation graph anymore. Operations are performed imperatively (in the order in which they were executed). TensorFlow therefore uses a mechanism called the \\\"GradientTape\\\" for computing gradients in Eager mode. Basically, the gradient tape records the order of all operations as they are executed, and can then be \\\"run backwards\\\" (traversed from last to first operation) for computing the gradients.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"5hpiGc40hYkK\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Create an optimizer\\n\",\n        \"# The optimizer is responsible for controlling the learning rate\\n\",\n        \"optimizer = tf.train.AdamOptimizer()\\n\",\n        \"\\n\",\n        \"step_counter = tf.train.get_or_create_global_step()  # Just a variable that keeps track of how many training steps we've run\\n\",\n        \"num_epochs = 50  # The number of epochs to run\\n\",\n        \"\\n\",\n        \"# Lists to store the loss and accuracy of every epoch\\n\",\n        \"epoch_losses = []\\n\",\n        \"epoch_accuracies = []\\n\",\n        \"\\n\",\n        \"for epoch in range(num_epochs):\\n\",\n        \"  # Tensorflow provides a convenient API for tracking a number of metrics during training/evaluation\\n\",\n        \"  loss_avg = tfe.metrics.Mean()\\n\",\n        \"  accuracy = tfe.metrics.Accuracy()\\n\",\n        \"\\n\",\n        \"  # Loop over our data pipeline\\n\",\n        \"  for step, (image_batch, label_batch) in enumerate(train_ds):\\n\",\n        \"    \\n\",\n        \"    # Initialise a GradientTape to track the operations\\n\",\n        \"    with tf.GradientTape() as tape:\\n\",\n        \"      # Compute the logits (un-normalised scores) of the current batch of examples \\n\",\n        \"      # using the neural network architecture we defined earlier\\n\",\n        \"      logits = model(image_batch, training=True)\\n\",\n        \"      # Compute the cross-entropy loss of the classification outputs on this batch\\n\",\n        \"      loss_value = tf.nn.sparse_softmax_cross_entropy_with_logits(\\n\",\n        \"          logits=logits, labels=label_batch)  \\n\",\n        \"      # Compute the average loss over the batch\\n\",\n        \"      loss_value = tf.reduce_mean(loss_value)  \\n\",\n        \"      \\n\",\n        \"      # Add current batch loss to our loss metric tracker - note the function call semantics\\n\",\n        \"      loss_avg(loss_value)  \\n\",\n        \"      # Compare most likely predicted label to actual label\\n\",\n        \"      accuracy(tf.argmax(logits, axis=1, output_type=tf.int32), label_batch)\\n\",\n        \"\\n\",\n        \"    # Play the tape backwards and get the gradient of the loss of the current batch\\n\",\n        \"    # Note we're now outside the scope of the with-block above\\n\",\n        \"    grads = tape.gradient(loss_value, model.variables)\\n\",\n        \"    # Use the optimizer to apply the gradients to the model parameters along with\\n\",\n        \"    # its internal learning rate\\n\",\n        \"    optimizer.apply_gradients(\\n\",\n        \"        zip(grads, model.variables), global_step=step_counter)\\n\",\n        \"  \\n\",\n        \"  # Get the average loss and accuracy for the epoch\\n\",\n        \"  epoch_loss = loss_avg.result()\\n\",\n        \"  epoch_losses.append(epoch_loss)\\n\",\n        \"  epoch_accuracy = accuracy.result()\\n\",\n        \"  epoch_accuracies.append(epoch_accuracy)\\n\",\n        \"  print(\\\"Epoch {:03d}: Loss: {:.3f}, Accuracy: {:.3%}\\\".format(epoch, epoch_loss, epoch_accuracy))\\n\",\n        \"  \\n\",\n        \"# Plot the loss for all epochs using Matplotlib\\n\",\n        \"plt.figure()\\n\",\n        \"plt.plot(range(num_epochs), epoch_losses)\\n\",\n        \"plt.title('Loss vs epochs')\\n\",\n        \"\\n\",\n        \"# Plot the accuracy for all epochs using Matplotlib\\n\",\n        \"plt.figure()\\n\",\n        \"plt.plot(range(num_epochs), epoch_accuracies)\\n\",\n        \"plt.title('Accuracy vs epochs')\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"i-oib_tntPIY\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"The above code block shows a typical training loop. There's actually an easier way to do this using Tenosrflow and Keras, which we'll see in the next prac, but for now we expand it so you can see what's going on.\\n\",\n        \"\\n\",\n        \"Lets visualise some of the model's prediction on the training set\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"rotl5kAX7SrW\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"images, labels = next(train_ds.make_one_shot_iterator())  # Get a batch of images and labels\\n\",\n        \"\\n\",\n        \"_logits = model(images, training=False)  # Pass the images to the model function and get its output logits\\n\",\n        \"predicted_labels = tf.argmax(_logits, axis=1, output_type=tf.int32)\\n\",\n        \"\\n\",\n        \"img_indexs = np.arange(images.numpy().shape[0])\\n\",\n        \"np.random.shuffle(img_indexs)\\n\",\n        \"\\n\",\n        \"plt.figure(figsize=(10,10))\\n\",\n        \"for i in range(25):\\n\",\n        \"    plt.subplot(5,5,i+1)\\n\",\n        \"    plt.xticks([])\\n\",\n        \"    plt.yticks([])\\n\",\n        \"    plt.grid('off')\\n\",\n        \"    \\n\",\n        \"    img_index = img_indexs[i]\\n\",\n        \"    predicted_label = int(predicted_labels[img_index])\\n\",\n        \"    \\n\",\n        \"    plt.imshow(images[img_index], cmap=plt.cm.gray)\\n\",\n        \"    \\n\",\n        \"    actual_label = int(labels[img_index].numpy())\\n\",\n        \"    plt.xlabel(\\\"Actual: {} ({})\\\\n Predicted: {} ({})\\\".format(\\n\",\n        \"        actual_label, text_labels[actual_label], predicted_label, text_labels[predicted_label]\\n\",\n        \"    ))\\n\",\n        \"    \\n\",\n        \"plt.tight_layout()\\n\",\n        \"plt.show()\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"SIUsSjNwVk_n\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \" ### Aside: Optimisation schemes\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"ExBhca58VpPH\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"You might have noticed that we are using the Adam optimizer to train our neural networks. Adam is a variant of stochastic gradient descent which often performs well in practice. In fact, there is a whole range of variations on stochastic gradient descent that are often used. Here is an illustration showing how a few of these methods perform on a toy problem: \\n\",\n        \"\\n\",\n        \"![optimization methods](http://ruder.io/content/images/2016/09/saddle_point_evaluation_optimizers.gif)\\n\",\n        \"\\n\",\n        \"For a detailed description of various optimization methods read [this](http://ruder.io/optimizing-gradient-descent/) article. For a great visual discussion on how these methods work see [this](https://distill.pub/2017/momentum/) article.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"zMwZVX1T3zWP\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## Testing\\n\",\n        \"\\n\",\n        \"After 50 epochs of training on our training set, we obtain a loss of around 0.061 and accuracy of 97.7%. That's pretty good, right? \\n\",\n        \"\\n\",\n        \"It is important to distinguish between data that is **in-sample** and **out-of-sample**. Our training data is all in-sample and we would expect any resonably powerful model (like an MLP) to be very accurate and have a low loss on this (in fact, with a sufficiently large MLP and enough training epochs, we can get the loss arbitrarily close to zero!). This is not a good thing though, because pushing the loss close to zero may mean that the model has fit the **noise** in the training data rather than the true signal. If this is the case, it will not perform well on out-of-sample data that it has not seen before (which is what we really care about!). To assess this, we evaluate our trained model on the held-out test set (but we don't update the parameters of the model when testing it, that would be cheating!)\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"SmBt_X4B4g3-\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# We need to apply the same pre-processing to the test set as we did to the training set\\n\",\n        \"# Since we don't need batching or shuffling, we can do this directly instead of \\n\",\n        \"# building a tf.Dataset pipeline\\n\",\n        \"\\n\",\n        \"tf_test_images = tf.convert_to_tensor(test_images, dtype=tf.float32) / 255.0\\n\",\n        \"tf_test_labels = tf.convert_to_tensor(test_labels, dtype=tf.int32)\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"j0BaJidP46Bm\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"a2cb8a2e-7dd7-4eee-8f7a-9838cecd414a\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"test_accuracy = tfe.metrics.Accuracy()\\n\",\n        \"\\n\",\n        \"test_logits = model(tf_test_images, training=False)\\n\",\n        \"\\n\",\n        \"# Compute the average cross-entropy loss of the classification over the entire test set\\n\",\n        \"test_loss = tf.nn.sparse_softmax_cross_entropy_with_logits(\\n\",\n        \"    logits=test_logits, labels=tf_test_labels)  \\n\",\n        \"test_loss = tf.reduce_mean(test_loss)\\n\",\n        \"\\n\",\n        \"# Compare predicted labels to actual labels\\n\",\n        \"test_accuracy(tf.argmax(test_logits, axis=1, output_type=tf.int32), tf_test_labels)\\n\",\n        \"\\n\",\n        \"print('Completed testing on', tf_test_images.shape[0], 'examples...')\\n\",\n        \"print('Loss: {:.3f}, Accuracy: {:.3%}'.format(test_loss, test_accuracy.result()))\"\n      ],\n      \"execution_count\": 17,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Completed testing on 10000 examples...\\n\",\n            \"Loss: 0.607, Accuracy: 88.920%\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"Qn4ptik28aHF\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"And again we visualise some of the model's predictions:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"JHVSTjZU8ehm\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"test_predictions = tf.argmax(test_logits, axis=1, output_type=tf.int32)\\n\",\n        \"\\n\",\n        \"plt.figure(figsize=(10,10))\\n\",\n        \"for i in range(25):\\n\",\n        \"    plt.subplot(5,5,i+1)\\n\",\n        \"    plt.xticks([])\\n\",\n        \"    plt.yticks([])\\n\",\n        \"    plt.grid('off')\\n\",\n        \"    \\n\",\n        \"    img_index = np.random.randint(0, 10000)\\n\",\n        \"    plt.imshow(test_images[img_index], cmap=plt.cm.gray)\\n\",\n        \"    \\n\",\n        \"    actual_label = int(test_labels[img_index])\\n\",\n        \"    predicted_label = int(test_predictions[img_index])\\n\",\n        \"    \\n\",\n        \"    plt.xlabel(\\\"Actual: {} ({})\\\\n Predicted: {} ({})\\\".format(\\n\",\n        \"        actual_label, text_labels[actual_label], predicted_label, text_labels[predicted_label]\\n\",\n        \"    ))\\n\",\n        \"    \\n\",\n        \"plt.tight_layout()\\n\",\n        \"plt.show()\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"yo6bEKs17a_d\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"What happened? We got 97.7% accuracy on the training set, but only 88.9% on the test set. This is an example of how a model's in-sample performance differs from its out-of-sample performance. It may even be considered **overfitting** (where the model failing to generalise its in-sample performance to unseen out-of-sample data). There are a number of ways we can address this, but first, it's important to realise that we should try and keep the number of evaluations on the test set to a minimum. \\n\",\n        \"\\n\",\n        \"**QUESTION**: Can you think of WHY we should limit the number of evaluations on the test set? This is an important point, so spend a few minutes thinking about it, discuss it with your neighbour and ask the tutors if you get stuck! \\n\",\n        \"\\n\",\n        \"The first important method is called **validation**. Using validation, we reserve a portion of our training dataset and call it the validation set. After each epoch of training (or every K epochs where K can be a fraction), we evaluate our model on this validation set (without updating the model parameters). This gives us a good sense of how well we expect our model to do on out-of-sample data. In this way, the validation set acts as a surrogate for the test set which we can safely use during model development and training. We can also use this validation set to tune our model by selecting hyperparameters such as the batch size, sizes of layers or the network architecture. \\n\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"ot-FjimzV6op\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### Aside: Underfitting\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"iQMKAkkFV7bf\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"In addition to the problem of _overfitting_ (in which the model is too complex and as a result is able to memorize the training data rather than learning a general pattern) there is the problem of _underfitting_ which is the opposite. Underfitting occurs when the model does not have enough complexity (also known as capacity) to learn a general pattern. While overfitting is characterised by diverging test/validation and training scores, underfitting is characterised by test/validation and training scores that very slowly continue to improve. \\n\",\n        \"\\n\",\n        \"\\n\",\n        \"Unlike overfitting which has a number of solutions, such as collecting more data, data augmentation, dropout, and L1/L2 regularization, underfitting has one simple solution: just make your model incrementally more complex until it no longer underfits.\\n\",\n        \"\\n\",\n        \"![underandoverfitting](https://i.imgur.com/m2bSP1S.png)\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"E8KSIHzkWC1N\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"##TASKS:\\n\",\n        \"\\n\",\n        \"1. [**ALL**] Implement **Validation** by adding some code to the loop in the \\\"Train the model\\\" section (**TIP**: The code for evaluating on the validation set will be very similar to evaluating on the test set!): \\n\",\n        \" * Evaluate your model on the validation set at the end of each training epoch and print the loss and accuracy on the validation set. We have already defined a validation set and done the necessary preprocessing for you.\\n\",\n        \"  * Evaluate how closely the loss and accuracy on the validation set matches the eventual performance on the test set. \\n\",\n        \"\\n\",\n        \"2. [**ALL**] Implement DROPOUT (see [Tensorflow documentation](https://www.tensorflow.org/api_docs/python/tf/keras/layers/Dropout) and [research paper](https://www.cs.toronto.edu/~hinton/absps/JMLRdropout.pdf) ) to improve the model's generalisation.\\n\",\n        \"\\n\",\n        \"3. [**ADVANCED**] Implement BATCH NORMALISATION ([Tensorflow documentation](https://www.tensorflow.org/api_docs/python/tf/keras/layers/BatchNormalization) and [research paper](http://proceedings.mlr.press/v37/ioffe15.pdf))to improve the model's generalisation.\\n\",\n        \"\\n\",\n        \"4. [**OPTIONAL**] Remove the shuffling from the dataset pipeline and compare the generalisation performance of the model with and without shuffling. \\n\",\n        \"\\n\",\n        \"5. [**OPTIONAL**] Adjust the model architecture by adding layers and modifying other parameters to improve the performance on your **validation** set. Once you've settled on an architecture and hyperparameters, evaluate your model on the **test** set. See the Tensorflow documentation for examples of parameters you can change in the model.\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"## Important Tip\\n\",\n        \"If you want to re-train your model, you need to rerun all the code in the \\\"Define the model\\\" section first. This is to ensure that the Tensorflow variables containing the model parameters get reset. If you don't do this, you're effectively running more epochs on an already-trained model.\"\n      ]\n    }\n  ]\n}"
  },
  {
    "path": "Practical_2_Convolutional_Neural_Networks.ipynb",
    "content": "{\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0,\n  \"metadata\": {\n    \"colab\": {\n      \"name\": \"Practical 2: Convolutional Neural Networks\",\n      \"version\": \"0.3.2\",\n      \"provenance\": [],\n      \"collapsed_sections\": [\n        \"SFvYLebFZzGG\",\n        \"5uzeJaMB7DPa\",\n        \"py0V6UwC6_kH\",\n        \"OJzCooQO66D3\"\n      ]\n    },\n    \"kernelspec\": {\n      \"name\": \"python2\",\n      \"display_name\": \"Python 2\"\n    },\n    \"accelerator\": \"GPU\"\n  },\n  \"cells\": [\n    {\n      \"metadata\": {\n        \"id\": \"NcAHF4g8Xa93\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"# Practical 2: Convolutional Networks\\n\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"zFOuMk56XjC8\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## Introduction\\n\",\n        \"In this practical we will cover the basics of convolutional neural networks, or \\\"ConvNets\\\". ConvNets were invented in the late 1980s/early 1990s, and have had tremendous success especially with vision (although they have also been used very successfully in speech processing pipelines, and more recently, for machine translation).\\n\",\n        \"\\n\",\n        \"## Learning Objectives\\n\",\n        \"* Be able to explain what a convolutional layer does and how it's different from a fully-connected layer \\n\",\n        \"* Understand  the assumptions and trade-offs that are being made when using convolutional architectures\\n\",\n        \"* Be able to build a convolutional architecture using Tensorflow and Keras Layers\\n\",\n        \"* Be able to use Keras to train a model on a dataset\\n\",\n        \"* Implement either batch normalisation or a very small residual network\\n\",\n        \"\\n\",\n        \"## Running on GPU\\n\",\n        \"For this practical, you will need to use a GPU to speed up training. To do this, go to the \\\"Runtime\\\" menu in Colab, select \\\"Change runtime type\\\" and then in the popup menu, choose \\\"GPU\\\" in the \\\"Hardware accelelator\\\" box. This is all you need to do, Colab and Tensorflow will take care of the rest! \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"bJG0K_T7wifE\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 85\n        },\n        \"outputId\": \"e9f03e31-ebd3-43b4-c4ab-6fb3aff60925\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"#@title Imports (RUN ME!) { display-mode: \\\"form\\\" }\\n\",\n        \"\\n\",\n        \"# TODO: Swallow output\\n\",\n        \"!pip -q install pydot_ng\\n\",\n        \"!pip -q install graphviz\\n\",\n        \"!apt install graphviz > /dev/null\\n\",\n        \"\\n\",\n        \"from __future__ import absolute_import, division, print_function\\n\",\n        \"\\n\",\n        \"import tensorflow as tf\\n\",\n        \"import tensorflow.contrib.eager as tfe\\n\",\n        \"import numpy as np\\n\",\n        \"import matplotlib.pyplot as plt\\n\",\n        \"from IPython import display\\n\",\n        \"%matplotlib inline\\n\",\n        \"\\n\",\n        \"try:\\n\",\n        \"  tf.enable_eager_execution()\\n\",\n        \"  print('Running in Eager mode.')\\n\",\n        \"except ValueError:\\n\",\n        \"  print('Already running in Eager mode')\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"\\n\",\n            \"WARNING: apt does not have a stable CLI interface. Use with caution in scripts.\\n\",\n            \"\\n\",\n            \"Already running in Eager mode\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"u5_zoqk-YK0D\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## Convolutional Architectures\\n\",\n        \"When modelling an image using a regular feed-forward network, we find that the number of model parameters grows exponentially. For example, the tiny network we built in Practical 1 already had over 100,000 parameters!\\n\",\n        \"\\n\",\n        \"**QUESTION**: How many parameters would there be in a feed-forward network with 2 hidden layers consisting of 512 and 256 neurons respectively, an output size of 10 and an input image of shape [32, 32, 3]? (Note that we represent each pixel in a a colour image using three real-numbers for the Red, Green and Blue values -- [called \\\"channels\\\"](https://www.quora.com/What-do-channels-refer-to-in-a-convolutional-neural-network) -- and hence the 32x32**x3** shape.)\\n\",\n        \"\\n\",\n        \"ConvNets address this model parameter issue by exploiting structure in the inputs to the network (in particular, by making the assumption that the input is a 3-D *volume*, which applies to images for example, where the 3 dimensions consist of the three RGB channels). The two key differences between a ConvNet and a Feed-forward network are:\\n\",\n        \"\\n\",\n        \"* ConvNets have neurons that are arranged in 3 dimensions: width, height, depth. Note that *depth* here means channels, i.e. the depth of the input volume, not the depth of a deep neural network!\\n\",\n        \"* The neurons in each layer are only connected to a small region of the layer before it.\\n\",\n        \"\\n\",\n        \"**QUESTION**: Unfortunately there is no such thing as a free lunch. What trade-off do you think a ConvNet makes for the reduction in memory required by fewer parameters?\\n\",\n        \"\\n\",\n        \"Generally a ConvNet architecture is made up of different types of layers, the most common being convolutional layers, pooling layers and fully-connected layers that we encountered in the last practical.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"SFvYLebFZzGG\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### Aside: The rise of deep convolutional architectures\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"kEtb0aaeZ6os\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"ConvNet architectures were key to the tremendous success of deep learning in machine vision. In particular, the first deep learning model to win the ImageNet competition in 2012 was called AlexNet (after Alex Krizhevsky, one of its inventors). It had 5 convolutional layers followed by 3 fully-connected layers. Later winners included GoogLeNet and ResNet. If you're curious, have a look at [this link](https://medium.com/towards-data-science/neural-network-architectures-156e5bad51ba) for a great summary of different ConvNet architectures.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"vOp67cfpaTlC\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### Convolutional Layers\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"6JbXSVKulDoD\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"A convolutional layer maps an input *volume* (meaning, a 3-D input tensor, e.g. [width, height, channels]) to an output volume through a set of learnable filters, which make up the parameters of the layer. Every filter is small spatially (along width and height), but extends through the full depth of the input volume. (Eg: A filter in the first layer of a ConvNet might have size [5, 5, 3]). During the forward pass, we convolve (\\\"slide\\\") each filter across the width and height of the input volume and compute element-wise dot products between the entries of the filter and the input at any position. As we slide the filter over the width and height of the input volume we will produce a 2-dimensional activation map that gives the responses of that filter at every spatial position. Each convolutional layer will have such a set of filters, and each of them will produce a separate 2-dimensional activation map. We then stack these activation maps along the depth-dimension to produce the output volume.\\n\",\n        \"\\n\",\n        \"By using these filters which map to a small sub-volume of the input, we can to a large extent,control the parameter explosion that we would get with a (fully-connected) feed-forward network. This **parameter sharing** actually also tends to improve the performance of the model on inputs like natural images because it provides the model with some limited **translation invariance**. Translation invariance means that if the image (or a feature in the image) is translated (moved), the model will not be significantly affected. Think about why this is the case!\\n\",\n        \"\\n\",\n        \"The following animation illustrates these ideas, make sure you understand them!\\n\",\n        \"\\n\",\n        \"![Convolution Animation](https://i.stack.imgur.com/FjvuN.gif)\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"eLiuT6TcmXw8\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"The hyper-parameters of a convolutional layer are as follows:\\n\",\n        \"* **Filters** defines the number of filters in the layer\\n\",\n        \"* **Kernel Size** defines the width and height of the filters (also called \\\"kernels\\\") in the layer. Note that kernels always have the same depth as the inputs to the layer.\\n\",\n        \"* **Stride** defines the number of pixels by which we move the filter when \\\"sliding\\\" it along the input volume. Typically this value would be 1, but values of 2 and 3 are also sometimes used.\\n\",\n        \"* **Padding** refers to the addition of 0-value pixels to the edges of the input volume along the width and height dimensions. In Tensorflow you can set this to \\\"VALID\\\", which essentially does no padding or \\\"SAME\\\" which pads the input such that the output width and height are the same as the input.\\n\",\n        \"\\n\",\n        \"Lets look at a very simple, dummy example to see how the values of the hyper-parameters affect the output size of a convolutional layer.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"iluvPEPInWKn\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 282\n        },\n        \"outputId\": \"7525b2e3-0e06-4d25-925a-fbc827404625\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Create a random colour \\\"image\\\" of shape 10x10 with a depth of 3 (for red, green and blue)\\n\",\n        \"dummy_input = np.random.uniform(size=[10, 10, 3])\\n\",\n        \"fig, ax = plt.subplots(1, 1)\\n\",\n        \"plt.imshow(dummy_input)\\n\",\n        \"ax.grid(False)\\n\",\n        \"print('Input shape: {}'.format(dummy_input.shape))\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Input shape: (10, 10, 3)\\n\"\n          ],\n          \"name\": \"stdout\"\n        },\n        {\n          \"output_type\": \"display_data\",\n          \"data\": {\n            \"image/png\": \"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\\n\",\n            \"text/plain\": [\n              \"<matplotlib.figure.Figure at 0x7f8435b222d0>\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          }\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"ZU1gD5hnsHbc\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Now adjust the hyperparameters using the sliders on the right and see how the output shape changes for a [10, 10, 3] input.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"OF_KxVpSpE6y\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"6fab73db-7f70-4164-84ec-0bec59808f75\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"#@title Convolutional layer parameters {run: \\\"auto\\\"}\\n\",\n        \"filters = 3  #@param { type: \\\"slider\\\", min:0, max: 10, step: 1 }\\n\",\n        \"kernel_size = 2 #@param { type: \\\"slider\\\", min:1, max: 10, step: 1 }\\n\",\n        \"stride = 1 #@param { type: \\\"slider\\\", min:1, max: 3, step: 1 }\\n\",\n        \"\\n\",\n        \"conv_layer = tf.keras.layers.Conv2D(\\n\",\n        \"    filters=filters, \\n\",\n        \"    kernel_size=kernel_size, \\n\",\n        \"    strides=stride,\\n\",\n        \"    padding=\\\"valid\\\",\\n\",\n        \"    input_shape=[10, 10, 3])\\n\",\n        \"\\n\",\n        \"# Convert the image to a tensor and add an extra batch dimension which\\n\",\n        \"# the convolutional layer expects.\\n\",\n        \"input_tensor = tf.convert_to_tensor(dummy_input[None, :, :, :])\\n\",\n        \"convoluted = conv_layer(input_tensor)\\n\",\n        \"\\n\",\n        \"print('The output dimension is:')\\n\",\n        \"list([d.value for d in convoluted.shape])[1:]\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"The output dimension is:\\n\"\n          ],\n          \"name\": \"stdout\"\n        },\n        {\n          \"output_type\": \"execute_result\",\n          \"data\": {\n            \"text/plain\": [\n              \"[9, 9, 3]\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"execution_count\": 9\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"dzh-9TL1sMCT\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Note especially how output width and height are related to ```kernel_size``` and ```stride```, and how the output depth is related to ```filters```.\\n\",\n        \"\\n\",\n        \"#### Question\\n\",\n        \"Can you come up with a formula for the output shape given the input shape, the hyperparameters of the layer and assuming no padding? \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"LhgDU-fVx2Jv\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### (Max) Pooling\\n\",\n        \"A pooling layer reduces the spatial size of the representation. There are different reasons why we may want to do this. One is to reduce the number of parameters in the network. Imagine a convnet for the MNIST dataset. If the feature tensor produced by the final conv/pool/relu layer was say, of size 20x20 and had 100 feature channels, the final dense layer would have 20*20*100*10=400k parameters. However if we down-sampled that layer to a 4x4 spatial size, we would have only 20k parameters. A big difference!\\n\",\n        \"\\n\",\n        \"Another reason is that we want later features (deeper int he network) to have larger *receptive fields* (input regions that they look at), in order to represent bigger objects and object parts for instance. In particular, pooling stride gives later features much larger receptive fields so that they can effectively combine smaller features together.\\n\",\n        \"\\n\",\n        \"A pooling layer has no trainable parameters itself. It applies some 2-D aggegation operation (usually a max(), but others like average() may also be used) to regions of the input volume. This is done independently for each depth dimension of the input. For example, a 2x2 max pooling operation with a stride of 2, downsamples every depth slice of the input by 2 along both the width and height.\\n\",\n        \"\\n\",\n        \"#### Question\\n\",\n        \"Do 2x2 max-pooling by hand, with a stride of 2, on the following 2D input. What is the size of the output?\\n\",\n        \"\\n\",\n        \"\\\\begin{bmatrix}\\n\",\n        \"  9 & 5 & 4 & 5 & 6 & 4 \\\\\\\\\\n\",\n        \"  6 & 6 & 3 & 5 & 8 & 2 \\\\\\\\\\n\",\n        \"  4 & 6 & 9 & 1 & 3 & 6 \\\\\\\\\\n\",\n        \"  9 & 7 & 1 & 5 & 8 & 1 \\\\\\\\\\n\",\n        \"  4 & 9 & 9 & 5 & 7 & 3 \\\\\\\\\\n\",\n        \"  7 & 3 & 6 & 4 & 9 & 1 \\n\",\n        \"\\\\end{bmatrix}\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"Reveal the cell below by double-clicking and running it, to check your answer when you're done!\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"e1oIm3Nlb9zY\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"#@title Answer { display-mode: \\\"form\\\" }\\n\",\n        \"X = np.array([[9, 5, 4, 5, 6, 4],\\n\",\n        \"              [6, 6, 3, 5, 8, 2],\\n\",\n        \"              [4, 6, 9, 1, 3, 6],\\n\",\n        \"              [9, 7, 1, 5, 8, 1],\\n\",\n        \"              [4, 9, 9, 5, 7, 3],\\n\",\n        \"              [7, 3, 6, 4, 9, 1]])\\n\",\n        \"\\n\",\n        \"max_pool_layer = tf.keras.layers.MaxPooling2D((2, 2), strides=2)\\n\",\n        \"max_pool_layer(tf.convert_to_tensor(X[None, :, :, None])).numpy().squeeze()\\n\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"e4Vsrgyudd2E\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## The CIFAR10 Dataset\\n\",\n        \"Now that we understand convolutional, max-pooling and feed-forward layers, we can combine these as building block to build a ConvNet classifier for images. For this practical, we will use the colour image dataset CIFAR10 (pronounced \\\"seefar ten\\\") which consists of 50,000 training images and 10,000 test images. As we did in Practical 1, we take 10,000 images from the training set to form a validation set and visualise some example images.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"flWYFg3ydvMU\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 68\n        },\n        \"outputId\": \"fde0791b-3017-4ff8-992f-8c56235eb469\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"cifar = tf.keras.datasets.cifar10\\n\",\n        \"(train_images, train_labels), (test_images, test_labels) = cifar.load_data()\\n\",\n        \"cifar_labels = ['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Downloading data from https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz\\n\",\n            \"170500096/170498071 [==============================] - 28s 0us/step\\n\",\n            \"170508288/170498071 [==============================] - 28s 0us/step\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"QSzdYWpZd8RE\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Take the last 10000 images from the training set to form a validation set \\n\",\n        \"train_labels = train_labels.squeeze()\\n\",\n        \"validation_images = train_images[-10000:, :, :]\\n\",\n        \"validation_labels = train_labels[-10000:]\\n\",\n        \"train_images = train_images[:-10000, :, :]\\n\",\n        \"train_labels = train_labels[:-10000]\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"x8jf1myGQP1O\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"What are the shapes and data-types of train_images and train_labels?\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"wzLutGn-P7mg\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 85\n        },\n        \"outputId\": \"6106a826-e509-43ca-f75f-2245feae6601\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"print('train_images.shape = {}, data-type = {}'.format(train_images.shape, train_images.dtype))\\n\",\n        \"print('train_labels.shape = {}, data-type = {}'.format(train_labels.shape, train_labels.dtype))\\n\",\n        \"\\n\",\n        \"print('validation_images.shape = {}, data-type = {}'.format(validation_images.shape, validation_images.dtype))\\n\",\n        \"print('validation_labels.shape = {}, data-type = {}'.format(validation_labels.shape, validation_labels.dtype))\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"train_images.shape = (40000, 32, 32, 3), data-type = uint8\\n\",\n            \"train_labels.shape = (40000,), data-type = uint8\\n\",\n            \"validation_images.shape = (10000, 32, 32, 3), data-type = uint8\\n\",\n            \"validation_labels.shape = (10000,), data-type = uint8\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"ynwzGIAneBbb\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### Visualise examples from the dataset\\n\",\n        \"Run the cell below multiple times to see various images. (They might look a bit blurry because we've blown up the small images.)\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"8nMTxCOjd9WW\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 589\n        },\n        \"outputId\": \"58a6e003-6b73-414c-80f3-2c7e2a79aade\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"plt.figure(figsize=(10,10))\\n\",\n        \"for i in range(25):\\n\",\n        \"  plt.subplot(5,5,i+1)\\n\",\n        \"  plt.xticks([])\\n\",\n        \"  plt.yticks([])\\n\",\n        \"  plt.grid('off')\\n\",\n        \"\\n\",\n        \"  img_index = np.random.randint(0, 40000)\\n\",\n        \"  plt.imshow(train_images[img_index])\\n\",\n        \"  plt.xlabel(cifar_labels[train_labels[img_index]])\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"display_data\",\n          \"data\": {\n            \"image/png\": \"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\\nUCj6Ev8/Spj+KevKDIUAAAAASUVORK5CYII=\\n\",\n            \"text/plain\": [\n              \"<matplotlib.figure.Figure at 0x7f848788f6d0>\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          }\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"wN-XUzp-fpyp\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## A ConvNet Classifier\\n\",\n        \"Finally, we build a simple convolutional architecture to classify the CIFAR images. We will build a mini version of the AlexNet architecture, which consists of 5 convolutional layers with max-pooling, followed by 3 fully-connected layers at the end. In order to investigate the effect each of these two layers have on the number of parameters, we'll build the model in two stages. \\n\",\n        \"\\n\",\n        \"First, the convolutional layers + max-pooling:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"q9zloewLws0b\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Define the convolutinal part of the model architecture using Keras Layers.\\n\",\n        \"model = tf.keras.models.Sequential([\\n\",\n        \"    tf.keras.layers.Conv2D(filters=48, kernel_size=(3, 3), activation=tf.nn.relu, input_shape=(32, 32, 3), padding='same'),\\n\",\n        \"    tf.keras.layers.MaxPooling2D(pool_size=(3, 3)),\\n\",\n        \"    tf.keras.layers.Conv2D(filters=128, kernel_size=(3, 3), activation=tf.nn.relu, padding='same'),\\n\",\n        \"    tf.keras.layers.MaxPooling2D(pool_size=(3, 3)),\\n\",\n        \"    tf.keras.layers.Conv2D(filters=192, kernel_size=(3, 3), activation=tf.nn.relu, padding='same'),\\n\",\n        \"    tf.keras.layers.Conv2D(filters=192, kernel_size=(3, 3), activation=tf.nn.relu, padding='same'),\\n\",\n        \"    tf.keras.layers.Conv2D(filters=128, kernel_size=(3, 3), activation=tf.nn.relu, padding='same'),\\n\",\n        \"    tf.keras.layers.MaxPooling2D(pool_size=(3, 3)),\\n\",\n        \"])\\n\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"VHoTJ0XTgWKN\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"How many parameters are there in the convolutional part of the architecture? We can easily inspect this using the model summary function in Keras:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"R4Hr3Wgtw72b\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 408\n        },\n        \"outputId\": \"e64c1237-1217-4192-f4c9-7907bcbc72a0\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"model.summary()\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"_________________________________________________________________\\n\",\n            \"Layer (type)                 Output Shape              Param #   \\n\",\n            \"=================================================================\\n\",\n            \"conv2d_8 (Conv2D)            (None, 32, 32, 48)        1344      \\n\",\n            \"_________________________________________________________________\\n\",\n            \"max_pooling2d_3 (MaxPooling2 (None, 10, 10, 48)        0         \\n\",\n            \"_________________________________________________________________\\n\",\n            \"conv2d_9 (Conv2D)            (None, 10, 10, 128)       55424     \\n\",\n            \"_________________________________________________________________\\n\",\n            \"max_pooling2d_4 (MaxPooling2 (None, 3, 3, 128)         0         \\n\",\n            \"_________________________________________________________________\\n\",\n            \"conv2d_10 (Conv2D)           (None, 3, 3, 192)         221376    \\n\",\n            \"_________________________________________________________________\\n\",\n            \"conv2d_11 (Conv2D)           (None, 3, 3, 192)         331968    \\n\",\n            \"_________________________________________________________________\\n\",\n            \"conv2d_12 (Conv2D)           (None, 3, 3, 128)         221312    \\n\",\n            \"_________________________________________________________________\\n\",\n            \"max_pooling2d_5 (MaxPooling2 (None, 1, 1, 128)         0         \\n\",\n            \"=================================================================\\n\",\n            \"Total params: 831,424\\n\",\n            \"Trainable params: 831,424\\n\",\n            \"Non-trainable params: 0\\n\",\n            \"_________________________________________________________________\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"sbJAaisIgZyX\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Now we add a fully-connected part. Note that we also add \\\"Dropout\\\" after the first fully-connected layer. Dropout is a regularization technique which randomly zeros out (\\\"drops\\\") connections between neurons, and it was one of the key innovations of the AlexNet paper in 2012.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"gaHgWaNb1C0W\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"model.add(tf.keras.layers.Flatten())  # Flatten \\\"squeezes\\\" a 3-D volume down into a single vector.\\n\",\n        \"model.add(tf.keras.layers.Dense(1024, activation=tf.nn.relu))\\n\",\n        \"model.add(tf.keras.layers.Dropout(rate=0.5))\\n\",\n        \"model.add(tf.keras.layers.Dense(1024, activation=tf.nn.relu))\\n\",\n        \"model.add(tf.keras.layers.Dense(10, activation=tf.nn.softmax))\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"WOK9_UWx1JkL\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 578\n        },\n        \"outputId\": \"32683707-9150-41e8-8203-90f7f03300c3\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"model.summary()\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"_________________________________________________________________\\n\",\n            \"Layer (type)                 Output Shape              Param #   \\n\",\n            \"=================================================================\\n\",\n            \"conv2d_8 (Conv2D)            (None, 32, 32, 48)        1344      \\n\",\n            \"_________________________________________________________________\\n\",\n            \"max_pooling2d_3 (MaxPooling2 (None, 10, 10, 48)        0         \\n\",\n            \"_________________________________________________________________\\n\",\n            \"conv2d_9 (Conv2D)            (None, 10, 10, 128)       55424     \\n\",\n            \"_________________________________________________________________\\n\",\n            \"max_pooling2d_4 (MaxPooling2 (None, 3, 3, 128)         0         \\n\",\n            \"_________________________________________________________________\\n\",\n            \"conv2d_10 (Conv2D)           (None, 3, 3, 192)         221376    \\n\",\n            \"_________________________________________________________________\\n\",\n            \"conv2d_11 (Conv2D)           (None, 3, 3, 192)         331968    \\n\",\n            \"_________________________________________________________________\\n\",\n            \"conv2d_12 (Conv2D)           (None, 3, 3, 128)         221312    \\n\",\n            \"_________________________________________________________________\\n\",\n            \"max_pooling2d_5 (MaxPooling2 (None, 1, 1, 128)         0         \\n\",\n            \"_________________________________________________________________\\n\",\n            \"flatten (Flatten)            (None, 128)               0         \\n\",\n            \"_________________________________________________________________\\n\",\n            \"dense (Dense)                (None, 1024)              132096    \\n\",\n            \"_________________________________________________________________\\n\",\n            \"dropout (Dropout)            (None, 1024)              0         \\n\",\n            \"_________________________________________________________________\\n\",\n            \"dense_1 (Dense)              (None, 1024)              1049600   \\n\",\n            \"_________________________________________________________________\\n\",\n            \"dense_2 (Dense)              (None, 10)                10250     \\n\",\n            \"=================================================================\\n\",\n            \"Total params: 2,023,370\\n\",\n            \"Trainable params: 2,023,370\\n\",\n            \"Non-trainable params: 0\\n\",\n            \"_________________________________________________________________\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"5uzeJaMB7DPa\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### Aside: Random initialization schemes\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"AUBKcjfJ6gRs\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"You might have wondered what values we are using for the initial values of the weights and biases in our model. The short answer is that we typically use random initialization. In this case, we have just been using the default keras initializers for each layer, which are usually sufficient.\\n\",\n        \"\\n\",\n        \"The longer answer is that just using completely random numbers does not always work best in practice and that there are a number of common initialization schemes (which are available in most deep learning frameworks such as TensorFlow and Keras).\\n\",\n        \"\\n\",\n        \"Lets consider a few examples:\\n\",\n        \"\\n\",\n        \" * When using the ReLU activation it is common to initialize the biases with small positive numbers because this encourages the ReLU activations to start off in the _on_ state, which helps to counteract the _dying ReLU problem_.\\n\",\n        \"\\n\",\n        \" * The deeper neural networks become the more likely it is that gradients will either shrink to the point that they vanish, or grow to the point that they overflow (the _vanishing_ and _exploding_ gradients problems). To help combat this we can initialize our weights to have a (model-specific) appropriate scale. One method for doing this is called [_Xavier_ or _Glorot_](http://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf) initialization.\\n\",\n        \"\\n\",\n        \" * The _Xavier_ initialization scheme was designed with the _traditional_ activations Sigmoid and TanH in mind, and does not work as well for ReLU activations. An alternative is [_He_](https://arxiv.org/pdf/1502.01852.pdf) initialization which is a modification of _Xavier_ initialization for ReLU activations.\\n\",\n        \"\\n\",\n        \" [This blog](http://andyljones.tumblr.com/post/110998971763/an-explanation-of-xavier-initialization) goes into more detail on _He_ and _Xavier_ initialization. [The Keras documentation](https://keras.io/initializers/) lists a number of common schemes. \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"nNMAg7s3W0gg\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"###Visualizing the model\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"wCL9cH8a3F1W\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Let's build a flow-diagram of the model we've constructed to see how information flows between the different layers.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"dFXnOsd0W5pq\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 1516\n        },\n        \"outputId\": \"3116af8d-3272-4567-9b57-07f97dda9245\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"tf.keras.utils.plot_model(model, to_file='small_lenet.png', show_shapes=True, show_layer_names=True)\\n\",\n        \"display.display(display.Image('small_lenet.png'))\\n\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"display_data\",\n          \"data\": {\n            \"image/png\": \"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\\niEhBQYHExsaKt7e3aLVa0Wg00qNHD5k2bZrRK/jq8/mY0//tmuL6qSsmh0QWkagSue2dT0TU5PRr\\n4ukf/xGRaSqVClu3bjVaR5KImtQ2jjkkIiIiIgWTQyIiIiJSMDkkIiIiIgWTQyIiIiJSMDkkIiIi\\nIgWTQyIiIiJSMDkkIiIiIgWTQyIiIiJSMDkkIiIiIgWTQyIiIiJSMDkkIiIiIgWTQyIiIiJSMDkk\\nIiIiIgWTQyIiIiJSMDkkIiIiIgWTQyIiIiJSMDkkIiIiIoWNpQMgao2Sk5MxduxYS4dBRERkhMkh\\nUTMLDw+3dAhUTX5+PjIyMjBo0CBLh0K3GTduHB5++GFLh0HU6qhERCwdBBGRJSUmJiIiIgL8OiQi\\nwjaOOSQiIiIiBZNDIiIiIlIwOSQiIiIiBZNDIiIiIlIwOSQiIiIiBZNDIiIiIlIwOSQiIiIiBZND\\nIiIiIlIwOSQiIiIiBZNDIiIiIlIwOSQiIiIiBZNDIiIiIlIwOSQiIiIiBZNDIiIiIlIwOSQiIiIi\\nBZNDIiIiIlIwOSQiIiIiBZNDIiIiIlIwOSQiIiIiBZNDIiIiIlIwOSQiIiIiBZNDIiIiIlIwOSQi\\nIiIiBZNDIiIiIlIwOSQiIiIiBZNDIiIiIlIwOSQiIiIiBZNDIiIiIlIwOSQiIiIiBZNDIiIiIlIw\\nOSQiIiIiBZNDIiIiIlIwOSQiIiIihY2lAyAiam5hYWE4ffq08ntxcTE0Gg369etn0O6VV17BlClT\\nmjs8IiKLYnJIRK3OyZMncfz4caPyP//80+D3goKC5gqJiKjF4GNlImp1nnvuOdjY1P5/44iIiGaI\\nhoioZWFySEStzrPPPosbN27UWK9SqfC3v/0NXl5ezRgVEVHLwOSQiFqdLl26YMCAAbCyMv0VaG1t\\njeeee66ZoyIiahmYHBJRq/Tcc89BpVKZrLtx4wbCw8ObOSIiopaBySERtUo1jSe0trbG4MGD0alT\\np2aOiIioZWBySEStUocOHTBkyBBYW1sb1U2cONECERERtQxMDomo1Zo4cSJExKBMpVLhqaeeslBE\\nRESWx+SQiFqtMWPGGCxpY2Njg5EjR6Jdu3YWjIqIyLKYHBJRq+Xg4IBRo0ZBrVYDuDURZcKECRaO\\niojIspgcElGrFhkZiaqqKgCAra0tRo0aZeGIiIgsi8khEbVqI0eORJs2bQAATz/9NHQ6nYUjIiKy\\n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\\nERERkYLJIREREREpmBwSERERkYLJIREREREpmBwSERERkYLJIREREREpmBwSERERkYLJIREREREp\\nmBwSERERkYLJIREREREpmBwSERERkYLJIREREREpmBwSERERkYLJIREREREpmBwSERERkYLJIRER\\nEREpmBwSERERkYLJIREREREpmBwSERERkYLJIREREREpmBwSERERkYLJIREREREpmBwSERERkYLJ\\nIREREREpmBwSERERkcLG0gEQETW3vLw8FBUVKb/n5OQAAE6fPm3Qzt3dHTqdrlljIyKyNJWIiKWD\\nICJqTu3atcOVK1dqbffyyy9j1apVzRAREVGLsY2PlYmo1Xn00UdhZVX719+jjz7aDNEQEbUsTA6J\\nqNWZMGECantootVqMXr06GaKiIio5WBySEStTmhoKGxtbWust7GxQWhoKOzt7ZsxKiKiloHJIRG1\\nOm3atMFTTz0FtVptsv7GjRuIjIxs5qiIiFoGJodE1Co9++yzqKysNFlnZ2eHJ554opkjIiJqGZgc\\nElGrFBwcDEdHR6NytVqNiIgIaLVaC0RFRGR5TA6JqFVSq9UYP348NBqNQXllZSWeffZZC0VFRGR5\\nTA6JqNUaP348rl+/blDWvn17DB482EIRERFZHpNDImq1AgIC4ObmpvyuVqsxceJEWFtbWzAqIiLL\\nYnJIRK2WlZUVJkyYoDxarqysxPjx4y0cFRGRZTE5JKJW7fZHy56enhgwYICFIyIisiwmh0TUqvn5\\n+aFHjx4AgOeffx4qlcrCERERWZZNXRuePXsWc+fOxY0bN5oyHiKiZqdftubQoUMYO3ashaMhImpc\\nnTt3xgcffFDn9nW+c3jo0CFs2bKlXkEREbVkPXv2hJ+fn8l1DxtbcnIykpOTm3w/BGzbtg3nz5+3\\ndBhEFnX+/HksX77crG3qfOdQLzEx0dxNiIjo/6e/M8nv0qanUqnw2muv8W4wtWqJiYmIiIgwaxuO\\nOSQiIiIiBZNDIiIiIlIwOSQiIiIiBZNDIiIiIlIwOSQiIqrmr7/+QmhoKIqKipCXlweVSqX8+Pr6\\nory83Gib6u1UKtU9sai6iGD//v2YOnUqevXqBa1WC1dXV/j7+2PTpk0QEYP2V65cwerVqzFs2DC0\\na9cOOp0OXl5eiIyMRFpa2j0XjymhoaFQqVRYvHixyfqqqiqsX78eDz/8MFxcXODs7Aw/Pz+sXLnS\\n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\\nIiJSMDkkIiIiIgWTQyIiIiJSMDkkIiIiIgWTQyIiIiJSMDkkIiIiIgWTQyIiIiJSMDkkIiIiIgWT\\nQyIiIiJSMDkkIiIiIgWTQyIiIiJSMDkkIiIiIgWTQyIiIiJSMDkkIiIiIgWTQyIiIiJSMDkkIiIi\\nIgWTQyIiIiJSMDkkIiIiIgWTQyIiIiJSMDkkIiIiIgWTQyIiIiJSMDkkIiIiIgWTQyIiIiJSMDkk\\nIiIiIgWTQyIiIiJSMDkkIiIiIgWTQyIiIiJSMDkkIiIiIgWTQyIiIiJSMDkkIiIiIoWVuQMgImps\\nq1evRlZWlvL3gQMHAADvvPOOTr0BAwbgkUceadTYiIjMTSUiYu4giIgaU8uWLVFQUABra+sa61RU\\nVGDixIn46KOPGjEyIiKz28DHykTU7MTGxsLS0hIVFRU1vgAgJibGzJESETU+JodE1OyMGDEC169f\\nv22dli1bom/fvo0UERFR08HkkIianT59+sDHx6fG7TY2Nnj22WdhYcGvSCJqfvjNR0TNjkqlwqhR\\no2rsc3jt2jWMGDGikaMiImoamBwSUbN0u0fL7dq1g7+/fyNHRETUNDA5JKJm6aGHHkKnTp30ym1s\\nbPD3v//dDBERETUNTA6JqNkaPXq03qPla9euYfjw4WaKiIjI/JgcElGzNWLECFRWVip/q1Qq+Pn5\\noWPHjmaMiojIvJgcElGz1a5dOzz88MNQqVQAAEtLSz5SJqJmj8khETVrzzzzDCwtLQEAN27cwLBh\\nw8wcERGReTE5JKJmbdiwYaiqqoJKpcKjjz4Kb29vc4dERGRWTA6JqFnz9PREv379ICJ8pExEBEAl\\nImLuIJq6adOm4f333zd3GERERFRHVlZW+OmnnxAUFGTuUJq6DVbmjuBucP78efTu3RvTpk0zdyhE\\nTVJqairef/99JCUlmTuUOhERXL58GS1atDB3KLXS/kd16tSpZo6E6O4ybNgwXLx40dxh3BWYHBrJ\\n19cXMTEx5g6DqEnSPoDgv5GGt2HDBgD8rImo4bDPIREREREpmBwSERERkYLJIREREREpmBwSERER\\nkYLJIRER4cyZMxg0aBCKioqQl5cHlUqlvPz9/VFeXq63T/V6KpUKPXr0MEP0DWfr1q3o2LEjrKxq\\nH7+Znp6OiIgIuLi4wMnJCaGhodizZ889HY/WoEGDoFKpsGDBAoPbKysrsXLlSjzyyCNwc3ODq6sr\\n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\\nSHh4uKSkpOjVvXLliowdO1a8vLxErVZL3759JS0tTanzOBsAACAASURBVAICApQfnldffVWpf+TI\\nEQkKChIHBwfx9fWVjz/+WKc9Pz8/8fb2lkOHDkl4eLg4OTmJWq2Wfv36ye7duxv8+EFBQeLq6mry\\nVCx1/T6aPXu2WFlZyYULF5Sy3NxcvR/vgICAGtt48cUXa1w+z5hzmZqaqne8OXPmiIjolUdERCj7\\n5efny7Rp06Rdu3ZibW0tLVu2lLCwMNm+fbteHMHBweLo6CiVlZVGfS7Jyck1JjLVp+DR+v3332Xg\\nwIHi7Owsjo6OEhwcbPCaaW7xREREmJQciogUFBTIzJkzpXPnzmJrays2NjbSvn17mThxomRnZxuM\\nKSYmRry9veXatWtGvQctJodGS1KJNMI8Cne5YcOGAQCSkpLMHAlR05SUlITY2NhGmZalvnTv3h15\\neXmNNtK1vtT1+6iwsBBdunRBZGSkwWlF7gVXrlxB69atMXLkSKxYscLc4TCeBpCRkQF/f3+sXbsW\\nw4cPN2lflUqF9evXK/+GqEYb2OeQiKgZ0Gg0SE5OxsaNG/Hxxx+bO5x6JyKYPHkynJ2dMX/+fHOH\\nw3gawMmTJxEdHY34+HiTE0MyDZNDIqJmwt/fH/v27cO2bdtQVFRk7nDqVU5ODk6ePImUlJQ6jYxm\\nPE3f8uXLsXDhQixcuNDcodzzzLfYJxGRGSQkJGDmzJnK3yqVCnPmzMGCBQvMGFXjadOmDbZs2WLu\\nMOqdp6cndu/ebe4wFIyn/r3zzjvmDqHZYHJIRM3KjBkzMGPGDHOHQUTUZPGxMhEREREpmBwSERER\\nkYLJIREREREpmBwSERERkYIDUoyUmprKiTOJanDu3DkA4L+RRpCamgqAnzURNRwmh0aIiYkxdwhE\\nTZqvry98fX3NHUad5eTk4M8//0RoaKi5Q6lVYGCguUMguisNHz4cjzzyiLnDuCtw+TwiavbuxuX/\\niIgaCJfPIyIiIqL/YnJIRERERAomh0RERESkYHJIRERERAomh0RERESkYHJIRERERAomh0RERESk\\nYHJIRERERAomh0RERESkYHJIRERERAomh0RERESkYHJIRERERAomh0RERESkYHJIRERERAomh0RE\\nRESkYHJIRERERAomh0RERESkYHJIRERERAomh0RERESkYHJIRERERAomh0RERESkYHJIRERERAom\\nh0RERESkYHJIRERERAomh0RERESkYHJIRERERAomh0RERESkYHJIRERERAomh0RERESkYHJIRERE\\nRAomh0RERESkYHJIRERERAomh0RERESksDJ3AEREje3JJ5/E6dOnlb+vXr0KjUaDbt266dQbP348\\nJk2a1MjRERGZF5NDImp2Tp06hYMHD+qVFxYW6vxdXFzcWCERETUZfKxMRM3OM888Ayur2v9vPGzY\\nsEaIhoioaWFySETNzogRI3Djxo0at6tUKvTo0QP3339/I0ZFRNQ0MDkkombH19cXvXr1goWF4a9A\\nS0tLPPPMM40cFRFR08DkkIiapdGjR0OlUhncVlVVxUfKRNRsMTkkomappuTP0tIS/fv3h4eHRyNH\\nRETUNDA5JKJmyd3dHSEhIbC0tNTbNnr0aDNERETUNDA5JKJma9SoURARnTILCwsMHjzYTBEREZkf\\nk0MiarYGDx4Ma2tr5W8rKytERETAxcXFjFEREZkXk0MiaracnJzw5JNPKgnijRs3MGrUKDNHRURk\\nXkwOiahZGzlyJCorKwEAarUaTzzxhJkjIiIyLyaHRNSsDRw4EA4ODgCAoUOHQq1WmzkiIiLz0ls/\\nqry8HFu3br3t6gFERPeSnj17YufOnfD19cWGDRvMHQ4RUaPw9PREUFCQXrlKqg3V+7//+z889dRT\\njRYYERERETU+KysrXL9+vXrxBr07h9q+N9WndyAiIuNpJ9lOSkoycyT3PpVKhfXr13NVGyITJCUl\\nITY21uA29jkkIiIiIgWTQyIiIiJSMDkkIiIiIgWTQyIiIiJSMDkkIiIiIgWTQyIiarbOnDmDQYMG\\noaioCHl5eVCpVMrL398f5eXlevtUr6dSqdCjRw8zRN9wtm7dio4dO8LKSm9SEz3p6enKmuROTk4I\\nDQ3Fnj17mn08ly9fxqefforg4GC0aNECarUaHTp0wMiRI5GRkWFwn8rKSqxcuRKPPPII3Nzc4Orq\\nioCAACxduhTXrl3TqTtr1iysX7++Xt+XFpNDIqImrqSkBB06dEBkZKS5Q7mnpKeno0ePHggLC4Oz\\nszPc3d0hIkhLS1O2T5kyRW8/bb3U1FS4ublBRLBv377GDr9BZGZmYtCgQYiPj0dOTk6t9X/99Vf0\\n6dMHTk5OOHz4ME6dOoV27dqhf//++PHHH5t1PDNnzsSkSZMQFRWFQ4cOIT8/H6tWrUJ6ejoCAgKw\\n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\\nGjIzM5GYmGiTZVnayogRI1BWVtZmM11tpaXfXzqdDsOGDcPEiRObXIakM6uoqICvry9mzpyJjz/+\\nmO3bwdGjRxEcHIxNmzZh+vTpVp2rUqmwZcsW5TNOVtvKbmUiIrKYVqtFdnY2tm3bZtJ92BWICObP\\nn48ePXq0y/qBnb19Wzh79iymTJmC1NRUqxNDahtMDomIyCrBwcE4fPgwdu3ahcrKSnuH06YuX76M\\ns2fPYs+ePS2aGd3V27eF9evXY9WqVVi1apW9Q7lrcSkbIqIWWL16NVJSUpS/VSoVli9fjtdff92O\\nUdnOgAEDbL62ni14e3sry7Gwfft444037B3CXY/JIRFRCyxevBiLFy+2dxhERG2O3cpEREREpGBy\\nSEREREQKJodEREREpGBySEREREQKTkhppZycHC60SdRGLly4AAD8b8oGcnJyAPC9JiJTTA5bISEh\\nwd4hEHUp/v7+8Pf3t/l1L1++jJ9//hnjxo2z+bXtJSwszN4hELWL6dOn449//KO9w+jUuH0eEd31\\nOuO2fURE7YTb5xERERHR/2FySEREREQKJodEREREpGBySEREREQKJodEREREpGBySEREREQKJodE\\nREREpGBySEREREQKJodEREREpGBySEREREQKJodEREREpGBySEREREQKJodEREREpGBySEREREQK\\nJodEREREpGBySEREREQKJodEREREpGBySEREREQKJodEREREpGBySEREREQKJodEREREpGBySERE\\nREQKJodEREREpGBySEREREQKJodEREREpGBySEREREQKJodEREREpGBySEREREQKJodEREREpGBy\\nSEREREQKJodEREREpGBySEREREQKJodEREREpHC0dwBERLb26KOPoqioSPn7+vXr0Gq1uO+++4zq\\nPf3005g3b56NoyMisi8mh0R01zl37hyOHz9uUq7T6Yz+rqqqslVIREQdBruVieiu89hjj8HRsfn/\\nN542bZoNoiEi6liYHBLRXWfGjBm4detWo8dVKhVCQ0MxZMgQG0ZFRNQxMDkkoruOv78/Ro0aBQcH\\n81+B3bp1w2OPPWbjqIiIOgYmh0R0V5o9ezZUKpXZYw0NDexSJqK7FpNDIrorNZb8devWDQ8//DC8\\nvLxsHBERUcfA5JCI7kq9e/dGVFQUunXrZnJs9uzZdoiIiKhjYHJIRHetWbNmQUSMyhwcHDBp0iQ7\\n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\\nwKxZs5S/VSoV5s4wyIvIAAAgAElEQVSdiwULFtgwqubTpUsXm9TWa2o+Pj7Ys2cPx7ehJUuW2DqE\\nNo/JIRFRPcycORMzZ860dRhERI2Ot5WJiIiISMHkkIiIiIgUTA6JiIiISMHkkIiIiIgUTA6JiIiI\\nSMHZyg1gb2+PjRs3QqVS2ToUolaF/001Hx5rao3atWN60xB8fV4DnD59GhkZGbYOg4gaKD09He+9\\n9x5fhUnUCtjb22PUqFFwcHCwdSh3qs1MrRugS5cu6NKli63DIKIGMv0/clRUlI0jISKyPT5zSERE\\nREQKJodEREREpGBySEREREQKJodEREREpGBySEREREQKJodEREREpGBySEREREQKJodEREREpGBy\\nSEREREQKJodEREREpGBySEREREQKJodEREREpGBySEREREQKJodEREREpGBySEREREQKJodERERE\\npGBySEREREQKJodEREREpGBySEREREQKJodEREREpGBySEREREQKJodEREREpGBySEREREQKJodE\\nREREpGBySEREREQKJodEREREpGBySEREREQKJodEREREpGBySEREREQKJodEREREpGBySEREREQK\\nJodEREREpGhn6wCIiJpbQUEBSkpKlL/z8vIAACdPnjTr5+vrC51O16yxERHZmkpExNZBEBE1p/bt\\n2+PSpUs19nvxxRfx0UcfNUNEREQtxmbeViaiNuehhx6CnV3N//w99NBDzRANEVHLwuSQiNqciRMn\\noqabJlqtFmPGjGmmiIiIWg4mh0TU5owePRoODg7VLm/Xrh1Gjx4NZ2fnZoyKiKhlYHJIRG2Oo6Mj\\nHn/8cajVaqvLr1+/jgkTJjRzVERELQOTQyJqk5566ilcu3bN6jInJyc8+uijzRwREVHLwOSQiNqk\\n0NBQuLq6WrSr1WpER0dDq9XaICoiIttjckhEbZJarcb48eOh0WjM2q9du4annnrKRlEREdkek0Mi\\narPGjx+Pq1evmrV5enpiyJAhNoqIiMj2mBwSUZsVFBQEb29v5W+1Wo2nn34a9vb2NoyKiMi2mBwS\\nUZtlZ2eHiRMnKreWr127hvHjx9s4KiIi22JySERt2s23ljt37oz+/fvbOCIiIttickhEbVpAQAD8\\n/f0BAM888wxUKpWNIyIisq12DR3g9OnTiI+Px/Xr1xsjHiKiZmcqW/PTTz9h7NixNo6GiKh+OnXq\\nhGXLljV4nAZfOfzpp5+wcePGBgdCRGQr99xzDwICAqzWPWwu6enpSE9Pt9n225LNmzfj7Nmztg6D\\nqFGdPXsW7733XqOM1eArhybJycmNNRQRUZtjumLJf0ubnkqlwvTp03mVmFqV5ORkREdHN8pYfOaQ\\niIiIiBRMDomIiIhIweSQiIiIiBRMDomIiIhIweSQiIiols6cOYPRo0ejpKQEBQUFUKlUyqdfv364\\ncuWKxTq39lOpVK2i2LqIYO/evXjllVfQo0cPaLVaeHl5YfDgwUhKSoKItOjxb/b111+jR48eaNeu\\n+nm6ly5dwurVqzF8+HC0b98eOp0O3bt3x4QJE5CVlWV1naqqKqxbtw4PPvggPDw84O7ujoCAAKxY\\nscLive6vvfYaNm3a1Gj71BBMDomIWpmysjJ0794d4eHhtg6lVcnMzET//v0REhICV1dXeHp6QkSQ\\nkZGhLJ82bZrFeqZ+6enp8PDwgIhg//79zR1+o/vtt98wePBgHD9+HF9++SWMRiN+/PFH3HXXXXj6\\n6acxa9asFj0+AGRnZ2P06NGIj49HXl7ebfvOmjULU6ZMQUREBI4ePYrCwkJ88sknyMzMREBAAFJT\\nUy3WefbZZxETE4MRI0bg119/xe+//47o6GhMmTIFTzzxhFnfF154AfHx8XjjjTcavF8NJg20adMm\\naYRhiIjatKioKImKimqUsUpKSqRbt24ycuTIRhmvKTk5OcnDDz/crNsEIJs2barTOkajUTp16iSx\\nsbEWyzIyMkSr1YqHh4cAkA0bNlgdIz09XTw8POoVc0v066+/Srt27aSoqMisvbKyUjw8PESr1cqV\\nK1da7PgiIuPHj5fFixfLtWvXxM/PT+zt7avt+/zzz8ukSZMs2jMzMwWAdO/e3aw9OztbAEi/fv0s\\n1nnkkUcEgPz0008WY6lUqjqfnyKNmo8l88ohEVEr4+LiguzsbHz99de2DqXVWLp0KXJzczFv3jyr\\nyx0cHPD555/Dzs4OsbGxOH78eDNH2Px69uyJa9euwd3d3axdo9Ggc+fOqKystHqbvaWMDwDr1q3D\\na6+9dtvbySaJiYlYs2aNRbvBYIBOp0N2drbZrW5TofW//OUvFuv07NkTAPDHH39YjPXkk0/ib3/7\\nG6qqquq0L42JySEREdFtiAgSExMxcOBAdOzYsdp+oaGheP3111FaWoqoqKgGJy53quLiYpw4cQL9\\n+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\\n5vfd/vbbb/L444+Lq6urODo6ykMPPST/+te/ZOjQoeLo6GgWd1hYWJ1/eG8e31SqZNu2bRIcHKys\\n8/zzz9fpu7ly5Yps3rxZxowZI/7+/qLVakWv18vQoUNlw4YNVtcJCgqq9WxlJycns30KDQ29bX9r\\nx+HDDz8UkaY7l2+NEYDFrP9b8Ry1PEetHUeVSiV6vV769OkjL730khw4cOC2x7UmTA6bD5NDao0a\\nMzlUiTTsJnVycjKio6Nb1evQ6qJv374oKCjAuXPnbB2KTfTs2RMVFRU4c+aMrUMhsupOOUfHjh0L\\nAMojD9R0VCoVNm3apBxzotagEfOxzXfsM4fUfHJzc9G+fXuLNz6cPn0a2dnZGD58uI0iI/oTz1Fq\\nLmfOnMHo0aNRUlKCgoICs7f59OvXT3nTz81u7adSqWo1Ue1O8vXXX6NHjx5mE7ta2/iXLl3C6tWr\\nMXz4cLRv3x46nQ7du3fHhAkTkJWVZXWdqqoqrFu3Dg8++CA8PDzg7u6OgIAArFixAlevXjXr+9pr\\nr2HTpk2Nul/1xeSQauXSpUuIjY3F2bNncfnyZfz000+Ijo6Gq6sr3njjDVuHR8RzlJpcZmYm+vfv\\nj5CQELi6usLT0xMiokxIzMzMxLRp0yzWM/VLT0+Hh4cHRAT79+9v7vCbRHZ2NkaPHo34+HilSkFr\\nHX/WrFmYMmUKIiIicPToURQWFuKTTz5BZmYmAgICkJqaarHOs88+i5iYGIwYMQK//vorfv/9d0RH\\nR2PKlCl44oknzPq+8MILiI+PbxH/XjE5vMWt/3dn7fPWW28p71bOysrC+fPnoVKpajUz9U7k4+OD\\nXbt2obi4GP/xH/8Bd3d3jB49Gt27d8dPP/2Ebt26NVsstf1+qG1pSedoa+Ls7Ky8L7otbv9mJSUl\\neOyxx/DEE09g8uTJFsu1Wi08PDywZs0afPHFFzaI0DbeeOMNPPTQQzhw4IDVmqetbfznnnsOU6dO\\nhY+PDxwdHREUFIQNGzbg+vXrePXVV836njx5EklJSejXrx8WLVoELy8veHh44NVXX8UjjzyCbdu2\\nmVU68ff3R0pKChYuXGjzx0vu6DqHTaEu9+pnzpzZhJG0LMHBwQgODrZ1GG322VaqWUs5R6l1Wrp0\\nKXJzczFv3jyryx0cHPD5559j1KhRiI2NRUBAAHr06NHMUTa/devWQafTtYnxExMTrbYbDAbodDpk\\nZ2eb1Tw+exbwns8AACAASURBVPYsAOAvf/mLxTo9e/bEzp078ccff2DAgAFmYz355JP429/+hsjI\\nyCa7jV4TXjkkIiK6DRFBYmIiBg4ciI4dO1bbLzQ0FK+//jpKS0sRFRVl9fnD1qYpE7c7Zfzy8nJU\\nVFSgd+/eZi/D6NmzJ9RqNY4dO2axzrFjx6BSqdCnTx+LZWPGjMG5c+csasg2JyaHRER3sMLCQsyY\\nMQP+/v7QaDRwd3fHyJEj8f333yt9FixYoDx2cfNt2m+++UZp9/T0VNpNj82Ul5dj7969Sh/TVQzT\\ncpVKhU6dOiEjIwPBwcFwcXGBo6Mjhg0bhr179zbZ9ptbVlYW8vLyavUGojfffBMhISE4ePAgpkyZ\\nUutt1OZ7TE1NNXuE5vTp04iOjoabmxs8PDwQHh6O7Oxsi7Hz8/MRFxeHLl26QKPRoEOHDoiMjERm\\nZmat46Pqbd68GQAwd+5cs3Zvb28kJCQgKysLc+bMQX5+PoqKirB06VLs2rUL8+bNs3p1uW/fvgCA\\nb7/9tumDr05Di+E0Yl0dIqI2qz51Dm8tRG40Gs0Kka9du9asv5OTkzz88MMW4wQEBIiHh4dFe3X9\\nTQwGgzg5OUlgYGCNLwFoiu3XtWi9CepY53D9+vUCQBYtWmR1eUZGhuj1euXv/Px86dy5swCQpKQk\\npT09Pd3qftb1ezQViI+IiFCO+86dO5UasTfLycmRu+++W7y9vWX79u1SWloqhw8fliFDhoiDg0Ot\\narrWlp+fn9WXWLTm8XNzc8Xb21tiYmKq7ZOcnCydOnVSaqR6enrKunXrqu1vNBoFgAQFBdUplsas\\nc8grh0REd6j4+HicOnUK77//PsLDw+Hq6ooePXpgw4YN8PX1RVxcXJPM8LxZeXk5Vq1ahcDAQDg5\\nOaF///5ISkrC1atXMXXq1Cbd9o0bNyAiTf4s8oULFwD8+WrM2vD09ERycjLUajViY2Ot3la8WX2/\\nx5iYGOW4jxgxAmFhYcjIyEBBQYHZ2GfOnMGyZcswatQoODs7o1evXti4cSNEpE5XN8lcYWEhHn30\\nUQwdOhSrV6+2WC4imDRpEiZMmIAZM2YgNzcX+fn5WLhwISZPnoxx48ahqqrKYj1XV1eoVCrlvLMF\\nJodERHeolJQUAEBYWJhZu1arRXBwMCoqKpr81pSTk5NyG8ykT58+6NixI7Kyspr0B2737t0oKipC\\nYGBgk20DgPLsoFqtrvU6gwYNQkJCAsrLyxEVFVXte9KB+n+PN09kAIDOnTsDAHJycpS21NRU2NnZ\\nITw83Kyvj48PevXqhQMHDrTZlzg0RHl5OUJDQ3Hffffh888/h729vUWf9evXY+3atXjxxRcxffp0\\neHt7w9PTE5MmTVJqGq5YscLq+O3atbvtOdPUmBwSEd2BKisrYTQa4eDgYLUEh7e3N4A/C4Q3JTc3\\nN6vtXl5eAICLFy826fabg4ODAwBYFFmvSVxcHKKjo3H48GGr5W+Ahn2Pt17J1Gg0AP68onrz2Ddu\\n3IBer7co+/Xzzz8DAE6cOFGn/WrrqqqqEBUVBT8/P3z22WdWE0Pgz2dqAWDEiBEWy0yVFXbs2FHt\\nNpp6Ms7tsJQNEdEdSKvVQq/Xw2g0orS01CKxMN2G9PHxUdrs7Ows3soAAMXFxVa3cfPMy+oUFhaa\\nle8wMSWFpiSxqbbfHHx9fQEARqOxzusmJiYiMzMTn3zyiZJk3qw+32NtabVauLm5oaysDBUVFTab\\n0NPaxMbGorKyEikpKWbH9J577kFSUhIGDRoE4M+rizUpKyuzaCspKYGIKOedLfDKIRHRHWrMmDEA\\nYFHyorKyEmlpadDpdAgNDVXafX19cf78ebO+ubm5+OOPP6yO7+joaJbM3Xvvvfj444/N+ly5csWs\\nkC8AHDp0CDk5OTAYDGY/cE2x/ebQu3dvAKjX7VdnZ2d89dVXcHJywqpVq6z2qev3WBeRkZGoqqoy\\nmz1usmTJEtx1111Wn3sj69566y0cOXIEW7ZsgVarvW3fgQMHAgDS0tIsln333XcAoCSSNzP9N2I6\\n72yBySER0R1q8eLF6Nq1K6ZNm4Zt27ahtLQUx48fx1NPPYULFy5g+fLlym1JAAgJCUFOTg5WrFiB\\nsrIyZGdnY+rUqWZX9272wAMP4Pjx4zh79izS09Nx8uRJBAUFmfXR6/WYM2cO0tPTUV5ejv3792Pi\\nxInQaDRYvny5Wd/G3v7w4cPh4eGBH3/8sb6HsFYMBgO8vLyqfX9uTXr16oU1a9ZUu7yu32NdLF68\\nGP7+/njuueewY8cOGI1GFBUVYc2aNXjnnXeQkJBgdvVr4sSJUKlUOHXqVL22V5M7efxPP/0Ub7/9\\nNv7973/DxcXF4jb9rWWEXn75ZXTv3h0fffQRPvjgA1y8eBGFhYVYt24d3n33Xfj5+Vl9mYapxFBI\\nSEij70OtNXS+M0vZEBE1XH1K2YiIFBQUyLRp06Rr166iVqtFr9dLaGiopKWlWfQtLi6WmJgY8fX1\\nFZ1OJ4MHD5aMjAwJCAhQymzMnj1b6X/s2DEJCgoSJycn6dy5s6xcudJsPIPBIH5+fnL06FEJDQ0V\\nFxcX0el0MmTIENmzZ0+Tbz8oKEjc3d3rXI4FdSxlIyIyZ84cadeunZw/f15py8/PV+I2fQICAqod\\n46WXXrJaykakdt9jenq6xfbmzp2r7NPNn7CwMGW9wsJCmTFjhnTr1k3UarV06NBBQkJCZOfOnRZx\\nDB8+XJydnaWqqqpWx2Xr1q0W2zZ9bi3Bc6ePHxYWVm1f0+fWskpFRUUya9Ys6dmzp2i1WtFoNOLv\\n7y+TJ0+W3NxcqzFFRUWJn5+fXL16tVb7YNKYpWyYHBIRtQD1TQ5tyZQc3mnqkxwWFxeLn5+fxMbG\\nNlFUtnfp0iXR6XS3rdnXlsdvDpmZmaJSqeSLL76o87qsc0hERNSM9Ho9tm7dii+//BIrV660dTiN\\nTkQQFxcHV1dXzJ8/n+PbwMmTJxEZGYn4+HiMGzfOprEwOSQiIqqFfv36Yf/+/dixYwdKSkpsHU6j\\nysvLw8mTJ5GWllavmdGtffzmsGbNGixcuBALFy60dSgsZUNERHWTkJCAWbNmKX+rVCrMnTsXCxYs\\nsGFUzaNLly7Ytm2brcNodD4+PtizZw/Ht6ElS5bYOgQFk0MiIqqTmTNnWp1lSUStA28rExEREZGC\\nySERERERKZgcEhEREZGCySERERERKRptQsrmzZsbaygiojbH9N5e/lvaPH788UeoVCpbh0HUaBrz\\nNZIqEZGGDPDDDz9g+PDhfHE3ERERkQ116tQJZ8+ebegwmxucHBIR3emSk5MRHR0N/nNIRITNfOaQ\\niIiIiBRMDomIiIhIweSQiIiIiBRMDomIiIhIweSQiIiIiBRMDomIiIhIweSQiIiIiBRMDomIiIhI\\nweSQiIiIiBRMDomIiIhIweSQiIiIiBRMDomIiIhIweSQiIiIiBRMDomIiIhIweSQiIiIiBRMDomI\\niIhIweSQiIiIiBRMDomIiIhIweSQiIiIiBRMDomIiIhIweSQiIiIiBRMDomIiIhIweSQiIiIiBRM\\nDomIiIhIweSQiIiIiBRMDomIiIhIweSQiIiIiBRMDomIiIhIweSQiIiIiBRMDomIiIhIweSQiIiI\\niBRMDomIiIhIweSQiIiIiBTtbB0AEVFzW79+PXJycpS/Dx48CABYsmSJWb9hw4bhwQcfbNbYiIhs\\nTSUiYusgiIiaU4cOHVBUVAS1Wl1tn8rKSkyePBkffvhhM0ZGRGRzm3lbmYjanOjoaNjb26OysrLa\\nDwBERUXZOFIioubH5JCI2pzx48fj2rVrt+3ToUMHDB48uJkiIiJqOZgcElGb89BDD6FTp07VLtdo\\nNHjmmWdgZ8d/Iomo7eG/fETU5qhUKkycOLHaZw6vXr2K8ePHN3NUREQtA5NDImqTbndruVu3bujX\\nr18zR0RE1DIwOSSiNun+++/Hvffea9Gu0Wjw17/+1QYRERG1DEwOiajNevrppy1uLV+9ehXjxo2z\\nUURERLbH5JCI2qzx48ejqqpK+VulUsFgMKBHjx42jIqIyLaYHBJRm9WtWzc88MADUKlUAAB7e3ve\\nUiaiNo/JIRG1af/5n/8Je3t7AMD169cxduxYG0dERGRbTA6JqE0bO3Ysbty4AZVKhYcffhh+fn62\\nDomIyKaYHBJRm+bj44MhQ4ZARHhLmYgIgEpExNZBkKUffvgBw4cPN3tYnoiIqDXo1KkTzp49a+sw\\nyLrN7WwdAVl34cIFVFVVITk52dahEJl57733AADTp0+3cSSNR0Rw6dIltG/f3tahmBk7diymT5+O\\nwMBAW4dC1GjS09OVf0eoZWJy2MJFRUXZOgQiM5s3bwbAc7O5DBo0iMeaWhXesGz5+MwhERERESmY\\nHBIRERGRgskhERERESmYHBIRERGRgskhEVErdObMGYwePRolJSUoKCiASqVSPv369cOVK1cs1rm1\\nn0qlQv/+/W0QfdP5+uuv0aNHD7Rr1zTzMVvC+JcuXcLq1asxfPhwtG/fHjqdDt27d8eECROQlZVl\\ndZ2qqiqsW7cODz74IDw8PODu7o6AgACsWLECV69eNev72muvYdOmTY26X9SyMDkkIpspKytD9+7d\\nER4ebutQWpXMzEz0798fISEhcHV1haenJ0QEGRkZyvJp06ZZrGfql56eDg8PD4gI9u/f39zhN4ns\\n7GyMHj0a8fHxyMvLa9Xjz5o1C1OmTEFERASOHj2KwsJCfPLJJ8jMzERAQABSU1Mt1nn22WcRExOD\\nESNG4Ndff8Xvv/+O6OhoTJkyBU888YRZ3xdeeAHx8fF44403GnUfqeVgckhENiMiuHHjBm7cuGHr\\nUGrk7OyMwYMH2zqMGpWUlOCxxx7DE088gcmTJ1ss12q18PDwwJo1a/DFF1/YIELbeOONN/DQQw/h\\nwIEDcHFxafXjP/fcc5g6dSp8fHzg6OiIoKAgbNiwAdevX8err75q1vfkyZNISkpCv379sGjRInh5\\necHDwwOvvvoqHnnkEWzbtk35HwsA8Pf3R0pKChYuXMhavK0U6xwSkc24uLggOzvb1mG0KkuXLkVu\\nbi7mzZtndbmDgwM+//xzjBo1CrGxsQgICECPHj2aOcrmt27dOuh0ujYxfmJiotV2g8EAnU6H7Oxs\\niAhUKhUAKG8q+ctf/mKxTs+ePbFz50788ccfGDBggNlYTz75JP72t78hMjKyyW6jk23wyiERUSsh\\nIkhMTMTAgQPRsWPHavuFhobi9ddfR2lpKaKioqw+f9jaNGXidqeMX15ejoqKCvTu3VtJDIE/E0C1\\nWo1jx45ZrHPs2DGoVCr06dPHYtmYMWNw7tw5bN++vcGxUcvC5JCIbCI1NdVs4oMpQbm1/fTp04iO\\njoabmxs8PDwQHh5udrUxISFB6dupUydkZGQgODgYLi4ucHR0xLBhw7B3716l/4IFC5T+N98m/uab\\nb5R2T09Pi/HLy8uxd+9epU9LvFKSlZWFvLw8GAyGGvu++eabCAkJwcGDBzFlypRab6OwsBAzZsyA\\nv78/NBoN3N3dMXLkSHz//fdKn7p+hyb5+fmIi4tDly5doNFo0KFDB0RGRiIzM7PW8VH1TG83mjt3\\nrlm7t7c3EhISkJWVhTlz5iA/Px9FRUVYunQpdu3ahXnz5lm9uty3b18AwLffftv0wVPzEmqRNm3a\\nJPx6qCWKioqSqKioRhsvIiJCAEhFRYXV9oiICNm3b5+UlZXJzp07RafTyYABAyzGMRgM4uTkJIGB\\ngUr/jIwMuf/++0Wj0cju3bvN+js5OcnDDz9sMU5AQIB4eHhYtFfX32TYsGHSvn17SU9Pr+2u1wiA\\nbNq0qdb9169fLwBk0aJFVpdnZGSIXq9X/s7Pz5fOnTsLAElKSlLa09PTrR6DCxcuSNeuXcXb21u2\\nbt0qRqNRfvvtN4mMjBSVSiVr164161+X7zAnJ0fuvvtu8fb2lu3bt0tpaakcPnxYhgwZIg4ODrJv\\n375aH4ea+Pn5ib29faONdyeMn5ubK97e3hITE1Ntn+TkZOnUqZMAEADi6ekp69atq7a/0WgUABIU\\nFFSnWPj71uIl88ohEbVoMTExCAwMhJOTE0aMGIGwsDBkZGSgoKDAom95eTlWrVql9O/fvz+SkpJw\\n9epVTJ06tUnjvHHjBkTEpu+NvXDhAgBAr9fXqr+npyeSk5OhVqsRGxtr9bbizeLj43Hq1Cm8//77\\nCA8Ph6urK3r06IENGzbA19cXcXFxVmfS1uY7jI+Px5kzZ7Bs2TKMGjUKzs7O6NWrFzZu3AgRqdPV\\nTTJXWFiIRx99FEOHDsXq1astlosIJk2ahAkTJmDGjBnIzc1Ffn4+Fi5ciMmTJ2PcuHGoqqqyWM/V\\n1RUqlUo576j1YHJIRC3azQ/BA0Dnzp0BADk5ORZ9nZyclFtdJn369EHHjh2RlZXVpD9iu3fvRlFR\\nEQIDA5tsGzUx3ZpXq9W1XmfQoEFISEhAeXk5oqKiUFFRUW3flJQUAEBYWJhZu1arRXBwMCoqKqze\\nYqzNd5iamgo7OzuLskY+Pj7o1asXDhw4gHPnztV6v+hP5eXlCA0NxX333YfPP/8c9vb2Fn3Wr1+P\\ntWvX4sUXX8T06dPh7e0NT09PTJo0SalpuGLFCqvjt2vX7rbnDN2ZmBwSUYt261UwjUYDAFbL37i5\\nuVkdw8vLCwBw8eLFRo6uZXFwcAAAXLt2rU7rxcXFITo6GocPH7Za/gYAKisrYTQa4eDgYLWUire3\\nNwAgNzfXYllN36Fp7Bs3bkCv11sU4v75558BACdOnKjTfrV1VVVViIqKgp+fHz777DOriSHw5/O2\\nADBixAiLZcHBwQCAHTt2VLuNpp6MQ82v5T1RTURUT4WFhWYlOkxMSaEpSQQAOzs7izc/AEBxcbHV\\nsW8dsyXy9fUFABiNxjqvm5iYiMzMTHzyySdKknkzrVYLvV4Po9GI0tJSiwTRdDvZx8enztvWarVw\\nc3NDWVkZKioqWuRknztRbGwsKisrkZKSYnZM77nnHiQlJWHQoEEA/ry6WJOysjKLtpKSEoiIct5R\\n68Erh0TUaly5csWsWC8AHDp0CDk5OTAYDGY/Yr6+vjh//rxZ39zcXPzxxx9Wx3Z0dDRLJu+99158\\n/PHHjRh9w/Xu3RsA6nX71dnZGV999RWcnJywatUqq33GjBkDABalSyorK5GWlgadTofQ0NA6bxsA\\nIiMjUVVVZTaz3GTJkiW46667rD73Rta99dZbOHLkCLZs2QKtVnvbvgMHDgQApKWlWSz77rvvAEBJ\\nJG9m+u/HdN5R68HkkIhaDb1ejzlz5iA9PR3l5eXYv38/Jk6cCI1Gg+XLl5v1DQkJQU5ODlasWIGy\\nsjJkZ2dj6tSpZlcXb/bAAw/g+PHjOHv2LNLT03Hy5EkEBQUpy4cPHw4PDw/8+OOPTbqPt2MwGODl\\n5VXt+3Nr0qtXL6xZs6ba5YsXL0bXrl0xbdo0bNu2DaWlpTh+/DieeuopXLhwAcuXL1duL9fV4sWL\\n4e/vj+eeew47duyA0WhEUVER1qxZg3feeQcJCQlmV78mTpwIlUqFU6dO1Wt7NbmTx//000/x9ttv\\n49///jdcXFwsbtPfWkbo5ZdfRvfu3fHRRx/hgw8+wMWLF1FYWIh169bh3XffhZ+fH2bOnGmxHVOJ\\noZCQkEbfB7IxW86Vpupxqj+1VI1VyiYlJUUpmWH6TJgwQdLT0y3a586dKyJi0R4WFqaMZzAYxM/P\\nT44ePSqhoaHi4uIiOp1OhgwZInv27LHYfnFxscTExIivr6/odDoZPHiwZGRkSEBAgDL+7Nmzlf7H\\njh2ToKAgcXJyks6dO8vKlSvNxgsKChJ3d/dGLbmCOpayERGZM2eOtGvXTs6fP6+05efnWxy7gICA\\nasd46aWXrJayEREpKCiQadOmSdeuXUWtVoter5fQ0FBJS0tT+tT3OywsLJQZM2ZIt27dRK1WS4cO\\nHSQkJER27txpEcfw4cPF2dlZqqqqanVctm7darFt0+fWEjx3+vhhYWHV9jV9bi25VFRUJLNmzZKe\\nPXuKVqsVjUYj/v7+MnnyZMnNzbUaU1RUlPj5+cnVq1drtQ8m/H1r8ZL57bRQ/I+HWqrGrnPYWEzJ\\nYWtSn+SwuLhY/Pz8JDY2tomisr1Lly6JTqe7bc2+tjx+c8jMzBSVSiVffPFFndfl71uLxzqHrdGZ\\nM2fw7LPP4q677oJGozG7nbBgwQJbh9ciODs7W9xqqe6TmJho8RYOopZKr9dj69at+PLLL7Fy5Upb\\nh9PoRARxcXFwdXXF/PnzOb4NnDx5EpGRkYiPj8e4ceNsHQ41ASaHrUx+fj4GDRqEn3/+GcnJySgu\\nLoaIID093dahtShlZWX45ZdfAAARERFK8eJbP0OGDAEAzJw5EyJSq9eSEdlav379sH//fuzYsQMl\\nJSW2DqdR5eXl4eTJk0hLS6vXzOjWPn5zWLNmDRYuXIiFCxfaOhRqIkwOW5nExETk5ubivffew6BB\\ng+Do6Nio4zs7O5u9j7auy4nHsLGZrupmZWXh/PnzUKlUeP31120dls116dIF27Ztg6urq61DaVQ+\\nPj7Ys2cPevXqxfFtZMmSJbxi2MqxmFQrc+jQIQB/vhWCGm737t22DoFqMHPmTKszKYmIqH545bCV\\nuXz5MgBYfYMB1d7kyZMxbdo0W4dBRETU7JgcthKpqalQqVTYsmULAECn00GlUtV4e7KqqgqbNm3C\\nI488Ah8fH+h0OvTp0wfLly83ez2Z6dZdeXk59u7dq0zOMNUdq2m5SX5+PuLi4tClSxdoNBp06NAB\\nkZGRSr2sm/fF9Dl9+jSio6Ph5uYGDw8PhIeHW9TpsiUeQyIialVsNE2aalDfqf4RERECQCoqKsza\\nTXXH5s+fb9Zuqp21aNEiKSoqkvz8fPnggw/Ezs5OZs6caTG+k5OTPPzww9Vu/3bLc3Jy5O677xZv\\nb2/Zvn27lJaWyuHDh2XIkCHi4OBgUR/OtC8RERGyb98+KSsrk507d4pOp5MBAwZYjD9s2DBp3769\\nRf2u6vzyyy+3rQM2depUi3WslUtpTcewNlpqKZvWCPUoZUPU0rGUTYvHUjYEDB06FPHx8XB3d4en\\npyemTJmCp556CsuXL2/UmY7x8fE4c+YMli1bhlGjRsHZ2Rm9evXCxo0bISKYMmWK1fViYmIQGBgI\\nJycnjBgxAmFhYcjIyEBBQYFZvxs3biizjOvC2mzlV155pU5jtJZjSERExAkpbVx4eDjCw8Mt2g0G\\nA5KSknDkyBEEBgY2yrZSU1NhZ2dnsT0fHx/06tULBw4cwLlz5yzqCA4YMMDs787/H3t3HxZVnf+P\\n/zncDcMAg4JyJ62Kohu6o6HrTXKp4IIGipITKrbfzaXoRpFMTbxpyzTTZSv3UpNAtzY1QbuwRbNy\\nUbdLGw0tMDXSQE25k5sYbkIUef/+8Dfn4ziD3AgMMs/Hdc0fvM/7vM9rzhmYF+d9zuv4+AAACgsL\\n4ebmJrWb6+aR7rQPW+ratWvYs2dPq9ej1jtx4gRkMpm5wyBqN+Z8xCS1DJNDC6fT6fCPf/wD6enp\\nuHbtGiorKw2W629weVD19fXQ6XQA7hTpbcrFixeNEpt7+9vZ2QGAwfV87W3Tpk0t7muJ+1Cr1bJ2\\nZid599138e6775o7DCKyIJxWtnBTp07Fm2++iWeffRYXLlyQpmb1X0b3TtE2dwajqeVyuRwuLi6w\\nsbHBrVu3miw6PXHixPZ5Y53IEvehRqNpcvt8td8LAFJTU80eB198tecrNTW1w/9G0YNhcmjBbt++\\njePHj8PDwwNxcXHo1auXlJjU1dWZXMfBwQE3b96Ufh40aBA++OCDFi2PjIxEQ0MDjh8/bjTu+vXr\\n8cgjj6ChoaFd3ltn4T4kIqLuhsmhBbO2tsaECRNQXFyMv//97ygrK0NdXR2OHDmCrVu3mlznscce\\nw4ULF3D16lVotVrk5+cjMDCwRcvXrVsHX19fzJs3DwcPHoROp0NFRQWSkpKwevVqJCYmGpVtaY2g\\noCC4urp26vUs3W0fEhERQVCX1Npb/dPT041KsURHRwshhPD19TVadvXqVSGEEKWlpSI2Nlb4+PgI\\nW1tb4e7uLv7yl7+IZcuWSX0DAgKk7eTm5orAwEChVCqFj4+P2Lx5s0EczS0vLy8XixYtEv379xe2\\ntraiV69eIiQkRBw6dEjqoy+7c/drxYoVQghh1B4WFiatFxgYKHr06GFUzsUUpVJpNJa7u3uT/f/+\\n9783GVN32octwVI2nQcsZUPdEEvZdHlpMiFE6+p+UKdIS0tDVFQUeHioq3nqqacA3PmMUseSyWRI\\nTU2V9jlRd8Dvty5vD6eViYiIiEjC5JCIiFrtypUrmDZtGqqqqlBWVmbwuMbhw4fjxo0bRuvc208m\\nk2HEiBFmiL7jfP755/Dz87vvtb+//vortm7diqCgIPTs2RMKhQIDBw5EdHQ0cnJyTK7T0NCAbdu2\\n4Y9//CNcXV3Ro0cPBAQEYNOmTQY3sAHAsmXLeEcwPRAmh0RE1CrZ2dkYMWIEQkJC4OzsDDc3Nwgh\\nkJWVJS2Pj483Wk/fT6vVwtXVFUIInDp1qrPD7xB5eXmYNm0aEhISUFJSct++S5YswYIFCxAREYHz\\n58+jvLwc27dvR3Z2NgICArBv3z6jdZ555hnExMRg0qRJ+PHHH/Hzzz8jKioKCxYswJNPPmnQ99ln\\nn0VCQgJWrVrVru+RLAeTQyJ66Dk6OmLcuHEWu/3OVFVVhalTp+LJJ5/E/PnzjZbL5XK4uroiKSkJ\\nn3zyiRkiNI9Vq1Zh7NixOH36NJycnJrtP2/ePCxcuBAeHh5wcHBAYGAgdu3ahdu3b2Pp0qUGffPz\\n87Fjxw4MHz4cb731Fnr37g1XV1csXboUf/rTn7B//34pMQcAX19fpKenY+3atbw2mNqEySEREbXY\\nhg0b/y1GnwAAIABJREFUUFxcjNdee83kcnt7e+zcuRNWVlaIjY3FhQsXOjlC89i2bRuWLVvWolJS\\nKSkpSEpKMmpXq9VQKBTIy8szuFnj6tWrAIDf//73RusMHjwYAPDLL78YjTVz5ky88sorrH1Krcbk\\nkIiIWkQIgZSUFIwaNQpeXl5N9gsNDcXKlStRXV0NjUZj8vrD7kahUDzwGLW1tairq8OQIUMMnpQ0\\nePBg2NraIjc312id3NxcyGQyDB061GjZjBkzcO3aNRw4cOCBYyPLwuSQiDpFeXk5Fi1aBF9fX9jZ\\n2aFHjx6YMmUKjhw5IvVZs2aNdKPC3dO0X3zxhdTu5uYmtScmJkImk6G2thbHjx+X+ujP3uiXy2Qy\\n9OnTB1lZWQgODoaTkxMcHBwwceJEg6fNtPf2u5ucnByUlJRArVY32/dvf/sbQkJCcObMGSxYsKDF\\n22jJ52Tfvn0GN7VcvnwZUVFRcHFxgaurK8LDw5GXl2c0dmlpKeLi4tC3b1/Y2dmhV69eiIyMRHZ2\\ndovj60h79uwBAKxYscKg3d3dHYmJicjJycHy5ctRWlqKiooKbNiwAf/973/x2muvwc/Pz2i8YcOG\\nAQC+/PLLjg+euhezlVik+2KRUOqq2lIEu6ioSPTr10+4u7uLjIwModPpxE8//SQiIyOFTCYTycnJ\\nBv2VSqV4/PHHjcYJCAgQrq6uRu1N9ddTq9VCqVSKMWPGiG+++UbU1NSIrKws8Yc//EHY2dmJo0eP\\nduj2J06cKHr27Cm0Wm2TfUxBFyuC/fHHHwsA4q233jK5PCsrS6hUKunn0tJS4ePjIwCIHTt2SO1a\\nrdbkfmzt5yQiIkIAEBEREdJxPXTokFAoFGLkyJEGfQsLC8Xvfvc74e7uLg4cOCCqq6vF2bNnxfjx\\n44W9vX2Liue3lLe3t7C2tm7VOsXFxcLd3V3ExMQ02SctLU306dNHKmDv5uYmtm3b1mR/nU4nAIjA\\nwMBWxdLR+P3W5aXxzCERdbiEhARcunQJ7733HsLDw+Hs7Aw/Pz/s2rULnp6eiIuLa/YOzwdVW1uL\\nLVu2YMyYMVAqlRgxYgR27NiBmzdvYuHChR267cbGRgghHvqiv0VFRQAAlUrVov5ubm5IS0uDra0t\\nYmNjTU6L3q2tn5OYmBjpuE6aNAlhYWHIyspCWVmZwdhXrlzBO++8gyeeeAKOjo7w9/fH7t27IYRo\\n1dnN9lZeXo7JkydjwoQJJh+7KYTAc889h+joaCxatAjFxcUoLS3F2rVrMX/+fMyaNcvkdYXOzs6Q\\nyWTScSNqKSaHRNTh0tPTAQBhYWEG7XK5HMHBwairq+vwqS+lUilNs+kNHToUXl5eyMnJ6dAv0KNH\\nj6KiogJjxozpsG10Bv21g7a2ti1eZ/To0UhMTERtbS00Gg3q6uqa7NvWz8nIkSMNfvbx8QEAFBYW\\nSm379u2DlZUVwsPDDfp6eHjA398fp0+fxrVr11r8vtpLbW0tQkND8eijj2Lnzp2wtrY26vPxxx8j\\nOTkZzz//PF5++WW4u7vDzc0Nzz33nFTTcNOmTSbHt7Gxue8+JzKFySERdaj6+nrodDrY29ubLPHh\\n7u4OACguLu7QOFxcXEy29+7dGwBw/fr1Dt1+d2Bvbw8AuHXrVqvWi4uLQ1RUFM6ePWuy/A3wYJ+T\\ne89k2tnZAbhzxvbusRsbG6FSqYwKcX/33XcAgIsXL7bqfT2ohoYGaDQaeHt746OPPjKZGAJ3rnkF\\ngEmTJhktCw4OBgAcPHiwyW20x80yZFm651XTRNRlyOVyqFQq6HQ6VFdXG33x66cJPTw8pDYrKyuj\\npz4AQGVlpclt3H1nZ1PKy8shhDDqq08K9UliR22/O/D09AQA6HS6Vq+bkpKC7OxsbN++XUoy79aW\\nz0lLyeVyuLi4oKamBnV1dV3mhqHY2FjU19cjPT3dIKYBAwZgx44dGD16NIA7ZxebU1NTY9RWVVUF\\nIYR03IhaimcOiajDzZgxAwCMSmrU19cjMzMTCoUCoaGhUrunpycKCgoM+hYXFxvVctNzcHAwSOYG\\nDRqEDz74wKDPjRs3DAoFA8APP/yAwsJCqNVqgy/Qjth+dzBkyBAAaNP0q6OjIz799FMolUps2bLF\\nZJ/Wfk5aIzIyEg0NDQZ3p+utX78ejzzySKfWA3z99ddx7tw5fPbZZ5DL5fftO2rUKABAZmam0bLD\\nhw8DgJRI3k3/GdYfN6KWYnJIRB1u3bp16NevH+Lj47F//35UV1fjwoULmDNnDoqKirBx40Zp2hAA\\nQkJCUFhYiE2bNqGmpgZ5eXlYuHChwdm9uz322GO4cOECrl69Cq1Wi/z8fAQGBhr0UalUWL58ObRa\\nLWpra3Hq1CnMnTsXdnZ22Lhxo0Hf9t5+UFAQXF1dceLEibbuwi5BrVajd+/eTT7/tzn+/v4miz/r\\ntfZz0hrr1q2Dr68v5s2bh4MHD0Kn06GiogJJSUlYvXo1EhMTDc7ezZ07FzKZDJcuXWrT9u7nww8/\\nxBtvvIGTJ0/CycnJaJr73jI8L774IgYOHIj3338f//znP3H9+nWUl5dj27ZtePvtt+Ht7Y3Fixcb\\nbUdfoickJKTd3wN1c+a8V5qaxlv9qatqSykbIYQoKysT8fHxol+/fsLW1laoVCoRGhoqMjMzjfpW\\nVlaKmJgY4enpKRQKhRg3bpzIysoSAQEBUhmPV199Veqfm5srAgMDhVKpFD4+PmLz5s0G46nVauHt\\n7S3Onz8vQkNDhZOTk1AoFGL8+PHi2LFjHb79wMBA0aNHj1aXS0EXK2UjhBDLly8XNjY2oqCgQGor\\nLS2V9ov+FRAQ0OQYL7zwgslSNkK07HOi1WqNtrdixQohhDBqDwsLk9YrLy8XixYtEv379xe2trai\\nV69eIiQkRBw6dMgojqCgIOHo6CgaGhpatF8yMjKMtq1/3VuCJywsrMm++te9ZY8qKirEkiVLxODB\\ng4VcLhd2dnbC19dXzJ8/XxQXF5uMSaPRCG9vb3Hz5s0WvYfOwu+3Li9NJsRDXluhm0pLS0NUVNRD\\nX/qCup+nnnoKAB6qZ7YOGzYMZWVlZrkb9UHIZDKkpqZK+7wr0Ol08Pf3R3h4uMmyK91BZWUlvLy8\\nEB0djeTkZHOH0yY5OTkYPnw4du3ahVmzZpk7HAP8fuvy9nBamYiIWkylUiEjIwN79+7F5s2bzR1O\\nuxNCIC4uDs7OznjzzTfNHU6b5OfnIzIyEgkJCV0uMaSHA5NDIiJqleHDh+PUqVM4ePAgqqqqzB1O\\nuyopKUF+fj4yMzPbdGd0V5CUlIS1a9di7dq15g6FHlJMDomo29I/+zgnJwcFBQWQyWRYuXKlucPq\\nFvr27Yv9+/fD2dnZ3KG0Kw8PDxw7dgz+/v7mDqXN1q9fzzOG9EC6RrEnIqIOsHjxYpN3cRIRUdN4\\n5pCIiIiIJEwOiYiIiEjC5JCIiIiIJEwOiYiIiEjCG1K6uK5U/JYIALRaLQB+NjvLu+++i71795o7\\nDKJ2c/XqVXOHQM3gE1K6qMuXLyMhIQG3b982dyhE3V5JSQl++OEHTJo0ydyhEFmEPn364J133jF3\\nGGTaHiaHRGTx+DgvIiIJH59HRERERP+HySERERERSZgcEhEREZGEySERERERSZgcEhEREZGEySER\\nERERSZgcEhEREZGEySERERERSZgcEhEREZGEySERERERSZgcEhEREZGEySERERERSZgcEhEREZGE\\nySERERERSZgcEhEREZGEySERERERSZgcEhEREZGEySERERERSZgcEhEREZGEySERERERSZgcEhER\\nEZGEySERERERSZgcEhEREZGEySERERERSZgcEhEREZGEySERERERSZgcEhEREZGEySERERERSZgc\\nEhEREZGEySERERERSZgcEhEREZGEySERERERSZgcEhEREZHExtwBEBF1tqlTp+Ly5cvSz7/99htU\\nKhWGDh1q0O+5557DggULOjk6IiLzYnJIRBbn0qVLOHfunFG7Tqcz+Lm6urqzQiIi6jI4rUxEFufP\\nf/4zbGya/9/4qaee6oRoiIi6FiaHRGRxZs+ejdu3bze5XCaTYcSIERgwYEAnRkVE1DUwOSQii+Pj\\n44NRo0bBysr0n0Bra2v8+c9/7uSoiIi6BiaHRGSRnn76achkMpPLGhsbOaVMRBaLySERWaSmkj9r\\na2tMmDAB7u7unRwREVHXwOSQiCySm5sbgoODYW1tbbTs6aefNkNERERdA5NDIrJYc+fOhRDCoM3K\\nygrTp083U0RERObH5JCILNb06dNha2sr/WxjY4OwsDC4uLiYMSoiIvNickhEFsvJyQlTp06VEsTb\\nt29j7ty5Zo6KiMi8mBwSkUWLjo5GQ0MDAEChUOCJJ54wc0RERObF5JCILNqUKVOgVCoBADNnzoRC\\noTBzRERE5sVnKxMuX76MrKwsc4dBZDYjR47EkSNH4OPjgz179pg7HCKzsLa2xhNPPAF7e3tzh0Jm\\nJhP33qpHFmf27NnYvXu3ucMgIiIz+/TTTxEZGWnuMMi89vDMIeH27dvQaDRIS0szdyjUTaSlpSEq\\nKsqoTAy1P30xb/7+0oOSyWTS9bdk2XjNIRERERFJmBwSERERkYTJIRERERFJmBwSERERkYTJIRER\\nERFJmBwSEZGRK1euYNq0aaiqqkJZWRlkMpn0Gj58OG7cuGG0zr39ZDIZRowYYYboO87nn38OPz8/\\n2Ng0Xezj119/xdatWxEUFISePXtCoVBg4MCBiI6ORk5Ojsl1GhoasG3bNvzxj3+Eq6srevTogYCA\\nAGzatAk3b9406Lts2TKkpqa26/siuhuTQyLq0mpqajBw4ECEh4ebOxSLkZ2djREjRiAkJATOzs5w\\nc3ODEEIqlp+dnY34+Hij9fT9tFotXF1dIYTAqVOnOjv8DpGXl4dp06YhISEBJSUl9+27ZMkSLFiw\\nABERETh//jzKy8uxfft2ZGdnIyAgAPv27TNa55lnnkFMTAwmTZqEH3/8ET///DOioqKwYMECPPnk\\nkwZ9n332WSQkJGDVqlXt+h6J9JgcElGXJoRAY2MjGhsbzR1KsxwdHTFu3Dhzh/FAqqqqMHXqVDz5\\n5JOYP3++0XK5XA5XV1ckJSXhk08+MUOE5rFq1SqMHTsWp0+fhpOTU7P9582bh4ULF8LDwwMODg4I\\nDAzErl27cPv2bSxdutSgb35+Pnbs2IHhw4fjrbfeQu/eveHq6oqlS5fiT3/6E/bv32/wFCtfX1+k\\np6dj7dq1rG9JHYLJIRF1aU5OTsjLy8Pnn39u7lAswoYNG1BcXIzXXnvN5HJ7e3vs3LkTVlZWiI2N\\nxYULFzo5QvPYtm0bli1bdt/pZL2UlBQkJSUZtavVaigUCuTl5RkUiL969SoA4Pe//73ROoMHDwYA\\n/PLLL0ZjzZw5E6+88goLV1O7Y3JIREQA7pylTUlJwahRo+Dl5dVkv9DQUKxcuRLV1dXQaDQmrz/s\\nbhQKxQOPUVtbi7q6OgwZMgQymUxqHzx4MGxtbZGbm2u0Tm5uLmQyGYYOHWq0bMaMGbh27RoOHDjw\\nwLER3Y3JIRF1Wfv27TO4uUGfhNzbfvnyZURFRcHFxQWurq4IDw9HXl6eNE5iYqLUt0+fPsjKykJw\\ncDCcnJzg4OCAiRMn4vjx41L/NWvWSP3vnib+4osvpHY3Nzej8Wtra3H8+HGpT0vOMnUlOTk5KCkp\\ngVqtbrbv3/72N4SEhODMmTNYsGBBi7dRXl6ORYsWwdfXF3Z2dujRowemTJmCI0eOSH1ae3z1SktL\\nERcXh759+8LOzg69evVCZGQksrOzWxxfR9qzZw8AYMWKFQbt7u7uSExMRE5ODpYvX47S0lJUVFRg\\nw4YN+O9//4vXXnsNfn5+RuMNGzYMAPDll192fPBkWQRZPI1GIzQajbnDoG4kNTVVtOefl4iICAFA\\n1NXVmWyPiIgQ33zzjaipqRGHDh0SCoVCjBw50mgctVotlEqlGDNmjNQ/KytL/OEPfxB2dnbi6NGj\\nBv2VSqV4/PHHjcYJCAgQrq6uRu1N9debOHGi6Nmzp9BqtS19681qz9/fjz/+WAAQb731lsnlWVlZ\\nQqVSST+XlpYKHx8fAUDs2LFDatdqtSb3T1FRkejXr59wd3cXGRkZQqfTiZ9++klERkYKmUwmkpOT\\nDfq35vgWFhaK3/3ud8Ld3V0cOHBAVFdXi7Nnz4rx48cLe3t78c033zzIrjHg7e0trK2tW7VOcXGx\\ncHd3FzExMU32SUtLE3369BEABADh5uYmtm3b1mR/nU4nAIjAwMBWxdIUACI1NbVdxqKHWhrPHBLR\\nQy8mJgZjxoyBUqnEpEmTEBYWhqysLJSVlRn1ra2txZYtW6T+I0aMwI4dO3Dz5k0sXLiwQ+NsbGyE\\nEMLgerOupKioCACgUqla1N/NzQ1paWmwtbVFbGysyWnRuyUkJODSpUt47733EB4eDmdnZ/j5+WHX\\nrl3w9PREXFycyTuBW3J8ExIScOXKFbzzzjt44okn4OjoCH9/f+zevRtCiFad3Wxv5eXlmDx5MiZM\\nmICtW7caLRdC4LnnnkN0dDQWLVqE4uJilJaWYu3atZg/fz5mzZpl8rpCZ2dnyGQy6bgRtRcmh0T0\\n0Bs5cqTBzz4+PgCAwsJCo75KpVKajtMbOnQovLy8kJOT06FftEePHkVFRQXGjBnTYdt4EPppe1tb\\n2xavM3r0aCQmJqK2thYajQZ1dXVN9k1PTwcAhIWFGbTL5XIEBwejrq7O5BRpS47vvn37YGVlZVTy\\nyMPDA/7+/jh9+jSuXbvW4vfVXmpraxEaGopHH30UO3fuhLW1tVGfjz/+GMnJyXj++efx8ssvw93d\\nHW5ubnjuueekmoabNm0yOb6Njc199zlRWzA5JKKH3r1nuuzs7ADAZPkbFxcXk2P07t0bAHD9+vV2\\nju7hYW9vDwC4detWq9aLi4tDVFQUzp49a7L8DQDU19dDp9PB3t7eZCkYd3d3AEBxcbHRsuaOr37s\\nxsZGqFQqo0Lc3333HQDg4sWLrXpfD6qhoQEajQbe3t746KOPTCaGwJ1rWQFg0qRJRsuCg4MBAAcP\\nHmxyG+1xswzR3R6uq6WJiB5QeXk5hBAGd4sC/5cU6pNEALCysjJ6OgUAVFZWmhz73jEfNp6engAA\\nnU7X6nVTUlKQnZ2N7du3S0nm3eRyOVQqFXQ6Haqrq40SRP10soeHR6u3LZfL4eLigpqaGtTV1XWZ\\nG4FiY2NRX1+P9PR0g5gGDBiAHTt2YPTo0QDunF1sTk1NjVFbVVUVhBDScSNqLzxzSEQW5caNGwYF\\nhQHghx9+QGFhIdRqtcEXraenJwoKCgz6FhcXG9Wc03NwcDBIJgcNGoQPPvigHaPvWEOGDAGANk2/\\nOjo64tNPP4VSqcSWLVtM9pkxYwYAGJVeqa+vR2ZmJhQKBUJDQ1u9bQCIjIxEQ0ODwV3neuvXr8cj\\njzzSqfUAX3/9dZw7dw6fffYZ5HL5ffuOGjUKAJCZmWm07PDhwwAgJZJ303829ceNqL0wOSQii6JS\\nqbB8+XJotVrU1tbi1KlTmDt3Luzs7LBx40aDviEhISgsLMSmTZtQU1ODvLw8LFy40ODs4t0ee+wx\\nXLhwAVevXoVWq0V+fj4CAwOl5UFBQXB1dcWJEyc69D22lVqtRu/evZt8/m9z/P39TRZ/1lu3bh36\\n9euH+Ph47N+/H9XV1bhw4QLmzJmDoqIibNy4UZpebq1169bB19cX8+bNw8GDB6HT6VBRUYGkpCSs\\nXr0aiYmJBmfv5s6dC5lMhkuXLrVpe/fz4Ycf4o033sDJkyfh5ORkNM19bxmeF198EQMHDsT777+P\\nf/7zn7h+/TrKy8uxbds2vP322/D29sbixYuNtqMv0RMSEtLu74EsnDnvlaaugaVsqL21Vymb9PR0\\nqayH/hUdHS20Wq1R+4oVK4QQwqg9LCxMGk+tVgtvb29x/vx5ERoaKpycnIRCoRDjx48Xx44dM9p+\\nZWWliImJEZ6enkKhUIhx48aJrKwsERAQII3/6quvSv1zc3NFYGCgUCqVwsfHR2zevNlgvMDAQNGj\\nR492LavS3r+/y5cvFzY2NqKgoEBqKy0tNdqvAQEBTY7xwgsvmCxlI4QQZWVlIj4+XvTr10/Y2toK\\nlUolQkNDRWZmptSnrce3vLxcLFq0SPTv31/Y2tqKXr16iZCQEHHo0CGjOIKCgoSjo6NoaGho0X7J\\nyMgw2rb+dW8JnrCwsCb76l/3ljOqqKgQS5YsEYMHDxZyuVzY2dkJX19fMX/+fFFcXGwyJo1GI7y9\\nvcXNmzdb9B6aA5ayoTvSZEJ00ZoK1GmeeuopAOAzOqndpKWlISoqqsuVbBk2bBjKysrMctdqR2nv\\n31+dTgd/f3+Eh4ebLLvSHVRWVsLLywvR0dFITk42dzhtkpOTg+HDh2PXrl2YNWtWu4wpk8mQmpoq\\nfabIYu3htDK1m927d0vTJqYuSO/OHB0djaaOrKys0KNHD6jVarz44os4ffq0ucMkapZKpUJGRgb2\\n7t2LzZs3mzucdieEQFxcHJydnfHmm2+aO5w2yc/PR2RkJBISEtotMSS6G5NDajezZs2CEEIqvWBJ\\nampq8P333wMAIiIiIITArVu3kJubi9WrVyM3NxcjRozAM888g99++83M0RLd3/Dhw3Hq1CkcPHgQ\\nVVVV5g6nXZWUlCA/Px+ZmZltujO6K0hKSsLatWuxdu1ac4dC3RSTQ6IOYm1tDXd3d0RERODw4cNY\\nunQpPvzwQ8yePbvLTbd2d/pnH+fk5KCgoAAymQwrV640d1hdWt++fbF//344OzubO5R25eHhgWPH\\njsHf39/cobTZ+vXrecaQOhSTQ6JO8vbbb2PUqFH4z3/+g927d5s7HIuyePFi6bF1+teaNWvMHRYR\\nUZfE5JCok8hkMunpEU3VgSMiIjI3JofUZrm5uZg+fTpUKhWUSiUCAwNx7NixJvuXlpYiLi4Offv2\\nhZ2dHXr16oXIyEipVhdw5/mod9/UcfnyZURFRcHFxQWurq4IDw83qhFWX1+P1157DYMHD4aDgwN6\\n9uyJqVOn4j//+Q9u377d6hg60rhx4wAAJ06cMHhEGfcNERF1GWaqoUNdSFvqpF28eFG4uLgIb29v\\n8dVXX4nq6mpx5swZERISIvr27SvkcrlB/8LCQvG73/1OuLu7iwMHDojq6mpx9uxZMX78eGFvb29U\\n9y0iIkIAEBEREeKbb74RNTU14tChQ0KhUIiRI0ca9I2JiREqlUp89dVX4rfffhPFxcVi8eLFAoA4\\ncuRIm2OYOHGi6Nmzp1E9sqZ8//33UsxNqaurk+qcFRYWPrT7pjntVeeQmsc6pdRewDqHdEca/3pT\\nm75cNBqNACD27t1r0F5QUCDkcrlRcvj//t//EwDEzp07DdqLioqEXC43KqirT4AyMjIM2mfOnCkA\\niNLSUqmtX79+YuzYsUYx+vn5GSRArY1h/PjxrSpY3JLk8LfffjNKDh/GfdMcJoedh8khtRcmh/T/\\nS+saTyenh84XX3wBAEbPQfXy8oKfnx8uXLhg0L5v3z5YWVkhPDzcoN3DwwP+/v44ffo0rl27hj59\\n+hgsHzlypMHPPj4+AIDCwkK4ubkBACZPnoz3338fzz33HObNm4eRI0fC2toaP/300wPFcPTo0Zbu\\njhYrKioCANja2krxP4z7pqVYTLfjabVaANzXRNR+eM0htVp9fT2qq6thb28PR0dHo+X3Pne2vr4e\\nOp0OjY2NUKlURsWiv/vuOwDAxYsXjcZSqVQGP9vZ2QEAGhsbpbbNmzfj3//+N/Lz8xEcHAxnZ2dM\\nnjwZ6enp7RJDe9JfkzlmzBjY2tpy3xARUZfDM4fUanK5HE5OTqiurkZNTY1RglhRUWHU38XFBTU1\\nNairq4ONTft+7GQyGZ5++mk8/fTTuHXrFo4ePYrExERERkbiH//4BxYtWtThMbREY2Oj9MSJl156\\nCUD33zd8JGPH4+Mvqb3IZDJzh0BdBM8cUptMmTIFwP9NL+uVlZUZTVkCQGRkJBoaGnD8+HGjZevX\\nr8cjjzyChoaGNsXi4uKC3NxcAHema//0pz9Jd/YeOHCgU2JoiYSEBHz77beYMWMGNBpNp8T1sOwb\\nIiLqOpgcUpu89dZb6NmzJ+Lj43Ho0CHU1NTg/PnzmDt3rsmp5nXr1sHX1xfz5s3DwYMHodPpUFFR\\ngaSkJKxevRqJiYkPdMbq+eefx5kzZ1BfX4/r169jw4YNEEIgKCiozTEEBQXB1dUVJ06caFNMjY2N\\nuH79Oj777DMEBwdjw4YNmDdvHnbu3GnwH/rDuG+IiKgbM/ctMWR+bb3b8aeffhLTp08Xzs7OUhmV\\n/fv3i+DgYOmO3L/+9a9S//LycrFo0SLRv39/YWtrK3r16iVCQkLEoUOHpD5arVZaV/9asWKFEEIY\\ntYeFhQkhhMjOzhaxsbHi97//vXBwcBA9e/YUo0ePFsnJyaKxsdEg5pbEoBcYGNjiu5WVSqVRfDKZ\\nTKhUKjF06FDxwgsviNOnTze5/sO2b5rDu5U7D+9WpvYC3q1Md6TJhOBDXi0dr1mi9paWloaoqCg+\\nQ7oT8PeX2otMJkNqairvfKc9nFYmIrJgV65cwbRp01BVVYWysjKDO9WHDx+OGzduGK1zbz+ZTIYR\\nI0aYIfqO8/nnn8PPz69Fl1NkZ2cjLCwMLi4ucHJywqRJk0xev/vrr79i69atCAoKQs+ePaFQKDBw\\n4EBER0cjJyenRXFNmzYNMpnM5LPBly1bhtTU1BaNQ3Q/TA6JiCxUdnY2RowYgZCQEDg7O8PNzQ1C\\nCGRlZUnL4+PjjdbT99NqtXB1dYUQAqdOners8DtEXl4epk2bhoSEBJSUlDTb/+TJkxg7diycnJzw\\n448/4tKlS+jfvz8mTJiAr776yqDvkiVLsGDBAkREROD8+fMoLy/H9u3bkZ2djYCAAOzbt+++2/qN\\nXMJ9AAAgAElEQVT3v/+NjIyMJpc/++yzSEhIwKpVq1r2ZomawOSQiCyCo6Oj9GxrS9z+vaqqqjB1\\n6lQ8+eSTmD9/vtFyuVwOV1dXJCUl4ZNPPjFDhOaxatUqjB07FqdPn4aTk9N9+zY2NuKvf/0rXFxc\\n8K9//Quenp5wc3PD+++/D19fX8TExKC+vt5gnXnz5mHhwoXw8PCAg4MDAgMDsWvXLty+fRtLly5t\\ncluFhYWIj4/H008/3WQfX19fpKenY+3atbzMgB4Ik0MiIgu0YcMGFBcX47XXXjO53N7eHjt37oSV\\nlRViY2ONnnrUXW3btg3Lli1r0XTy119/jXPnzmHmzJlQKBRSu7W1NWbPno2rV69i//79UntKSgqS\\nkpKMxlGr1VAoFMjLy2vyOt1nn30WGo0GISEh941JrVZj5syZeOWVV1h+itqMySERkYURQiAlJQWj\\nRo2Cl5dXk/1CQ0OxcuVKVFdXQ6PRmLz+sLu5O8lrzuHDhwHA5PWW+rbMzMxmx6mtrUVdXR2GDBli\\nshD19u3bce7cOSQmJrYorhkzZuDatWsGtUyJWoPJIRF1GeXl5Vi0aBF8fX1hZ2eHHj16YMqUKThy\\n5IjUZ82aNdJNEHdP037xxRdSu/7Z0gCQmJgImUyG2tpaHD9+XOqjPzOkXy6TydCnTx9kZWUhODgY\\nTk5OcHBwwMSJEw1uLmjv7ZtDTk4OSkpKoFarm+37t7/9DSEhIThz5gwWLFjQ4m205FjqC7LrX5cv\\nX0ZUVBRcXFzg6uqK8PBw5OXlGY1dWlqKuLg49O3bF3Z2dujVqxciIyORnZ3d4vjag77AvKlnjnt7\\newNAi8647tmzBwCwYsUKo2XXrl3DK6+8gu3btzc7za03bNgwAMCXX37Zov5E92JySERdQnFxMUaO\\nHIldu3Zh48aNKCsrw8mTJ+Hg4IDg4GCkpKQAAFauXAkhBJRKpcH6kydPhhACAQEBBu2LFy+W+j/+\\n+OMQQkAIIU256Zer1WpUVlZi4cKFWLNmDYqLi/H111+joqICQUFB+N///tch29d70KLrrXH27FkA\\nppOae1lZWWHnzp3w8fFBSkoKdu7c2ew6LT2W06dPhxACERERAID4+HjEx8ejoKAAqampOHz4MGbP\\nnm0wdlFREUaOHIm0tDRs2bIFFRUVOHr0KCoqKjBmzBhotdrW7o42q6ysBACjzwIA6WEAv/76633H\\nKCkpwbJlyxATE2OyhExMTAzmzJljULS+OfrEVH+ciVqLySERdQkJCQm4dOkS3nvvPYSHh8PZ2Rl+\\nfn7YtWsXPD09ERcX16K7Rx9EbW0ttmzZgjFjxkCpVGLEiBHYsWMHbt68iYULF3bothsbG6XEsaMV\\nFRUBAFQqVYv6u7m5IS0tDba2toiNjZXOmDWlrccyJiZG2veTJk1CWFgYsrKyUFZWZjD2lStX8M47\\n7+CJJ56Ao6Mj/P39sXv3bgghWnV2syPpj+P9nldcXl6OyZMnY8KECdi6davR8uTkZFy8eBEbNmxo\\n1badnZ0hk8mk40zUWkwOiahLSE9PBwCEhYUZtMvlcgQHB6Ourq7Dp8mUSqU0Jac3dOhQeHl5IScn\\np0O/bO8++9XR9NcO2tratnid0aNHIzExEbW1tdBoNKirq2uyb1uP5ciRIw1+9vHxAXDnTl29ffv2\\nwcrKCuHh4QZ9PTw84O/vj9OnT+PatWstfl8PwsXFBcCdfyrupW/T9zG1PDQ0FI8++ih27twJa2tr\\ng+W//PILlixZgu3bt5s8M9kcGxub+x4jovthckhEZldfXw+dTgd7e3uT11W5u7sDuDNd2ZGa+iLv\\n3bs3AOD69esduv3OYm9vDwC4detWq9aLi4tDVFQUzp49a7L8DfBgx/LeM5l2dnYA7pxVvXvsxsZG\\nqFQqo0Lc3333HQDg4sWLrXpfbTV48GAAMJmMFhQUAAD8/PyMljU0NECj0cDb2xsfffSRUWIIABkZ\\nGdDpdJgwYYLBe9SXslm1apXU9vPPP5vcRmturiG6G5NDIjI7uVwOlUqFGzduoLq62mi5fgrSw8ND\\narOyssLNmzeN+uqvA7vX/ab39MrLy01O6+qTQn2S2FHb7yyenp4AAJ1O1+p1U1JSMGjQIGzfvh0f\\nf/yx0fK2HMuWksvlcHFxgY2NDW7duiVNw9/7mjhxYqvHbgv9dk6fPm20TN8WHBxstCw2Nhb19fVI\\nS0szuDFpwIAB0jWnL730ksn3pt/nb775ptQ2YMAAg/GrqqoghJCOM1FrMTkkoi5hxowZAGBUfqO+\\nvh6ZmZlQKBQIDQ2V2j09PaWzM3rFxcX45ZdfTI7v4OBgkMwNGjQIH3zwgUGfGzduSE8H0fvhhx9Q\\nWFgItVpt8GXbEdvvLEOGDAFg+oxXcxwdHfHpp59CqVRiy5YtJvu09li2RmRkJBoaGkw+nm79+vV4\\n5JFHOq2+3/jx4/Hoo49i7969BmV+bt++jd27d8PHx8doav3111/HuXPn8Nlnn0Eul3dIXPrPpf44\\nE7UWk0Mi6hLWrVuHfv36IT4+Hvv370d1dTUuXLiAOXPmoKioCBs3bpSmJAEgJCQEhYWF2LRpE2pq\\napCXl4eFCxcanN2722OPPYYLFy7g6tWr0Gq1yM/PR2BgoEEflUqF5cuXQ6vVora2FqdOncLcuXNh\\nZ2eHjRs3GvRt7+135t3KarUavXv3bvHzfO/l7+9vspizXmuPZWusW7cOvr6+mDdvHg4ePAidToeK\\nigokJSVh9erVSExMNDgbN3fuXMhkMly6dKlN27sfKysrbNu2DRUVFXjmmWdQXFyM8vJyvPTSS7h4\\n8SKSk5OlKXwA+PDDD/HGG2/g5MmTcHJyMpoWN1W2py30JX2aK5hN1CRBFk+j0QiNRmPuMKgbSU1N\\nFW3581JWVibi4+NFv379hK2trVCpVCI0NFRkZmYa9a2srBQxMTHC09NTKBQKMW7cOJGVlSUCAgIE\\nAAFAvPrqq1L/3NxcERgYKJRKpfDx8RGbN282GE+tVgtvb29x/vx5ERoaKpycnIRCoRDjx48Xx44d\\n6/DtBwYGih49eohvvvmmVfusrb+/y5cvFzY2NqKgoEBqKy0tlWLXvwICApoc44UXXhCurq4ml7Xk\\nWGq1WqPtrVixQgghjNrDwsKk9crLy8WiRYtE//79ha2trejVq5cICQkRhw4dMoojKChIODo6ioaG\\nhhbtl4yMDKNt61/Jyckm1/nuu+/ElClThLOzs3B0dBRBQUEmPzNhYWFNjq1/abVak9uIjY012T80\\nNNSor0ajEd7e3uLmzZstes96AERqamqr1qFuKU0mRCfUTaAuTV9bi8/ipPaSlpaGqKioTinL0l6G\\nDRuGsrKyTrvTtb209fdXp9PB398f4eHhJsuodAeVlZXw8vJCdHQ0kpOTzR1Op8jJycHw4cOxa9cu\\nzJo1q1XrymQypKammqy3SBZlD6eViYgskEqlQkZGBvbu3YvNmzebO5x2J4RAXFwcnJ2d8eabb5o7\\nnE6Rn5+PyMhIJCQktDoxJLobk0MiIgs1fPhwnDp1CgcPHkRVVZW5w2lXJSUlyM/PR2ZmZpvujH4Y\\nJSUlYe3atVi7dq25Q6GHHJNDIrJo+mcf5+TkoKCgADKZDCtXrjR3WJ2mb9++2L9/P5ydnc0dSrvy\\n8PDAsWPH4O/vb+5QOs369et5xpDahfme/E5E1AUsXrwYixcvNncYRERdBs8cEhEREZGEySERERER\\nSZgcEhEREZGEySERERERSZgcEhEREZGEdysTrK2tsXv3bshkMnOHQt0MP1Odh/ua2sPdz6Umy8XH\\n5xEuX76MrKwsc4dBZDZarRbvvvsuHyFJFs3a2hpPPPEE7O3tzR0Kmdce/otA6Nu3L/r27WvuMIjM\\nRv8/skajMXMkRETmx2sOiYiIiEjC5JCIiIiIJEwOiYiIiEjC5JCIiIiIJEwOiYiIiEjC5JCIiIiI\\nJEwOiYiIiEjC5JCIiIiIJEwOiYiIiEjC5JCIiIiIJEwOiYiIiEjC5JCIiIiIJEwOiYiIiEjC5JCI\\niIiIJEwOiYiIiEjC5JCIiIiIJEwOiYiIiEjC5JCIiIiIJEwOiYiIiEjC5JCIiIiIJEwOiYiIiEjC\\n5JCIiIiIJEwOiYiIiEjC5JCIiIiIJEwOiYiIiEjC5JCIiIiIJEwOiYiIiEjC5JCIiIiIJEwOiYiI\\niEjC5JCIiIiIJEwOiYiIiEjC5JCIiIiIJDbmDoCIqLOVlZWhqqpK+rmkpAQAkJ+fb9DP09MTCoWi\\nU2MjIjI3mRBCmDsIIqLO1LNnT/z666/N9nv++efx/vvvd0JERERdxh5OKxORxRk7diysrJr/8zd2\\n7NhOiIaIqGthckhEFmfu3LlobtJELpdjxowZnRQREVHXweSQiCzOtGnTYG9v3+RyGxsbTJs2DY6O\\njp0YFRFR18DkkIgsjoODA6ZPnw5bW1uTy2/fvo3o6OhOjoqIqGtgckhEFmnOnDm4deuWyWVKpRKT\\nJ0/u5IiIiLoGJodEZJFCQ0Ph7Oxs1G5ra4uoqCjI5XIzREVEZH5MDonIItna2mL27Nmws7MzaL91\\n6xbmzJljpqiIiMyPySERWazZs2fj5s2bBm1ubm4YP368mSIiIjI/JodEZLECAwPh7u4u/Wxra4un\\nn34a1tbWZoyKiMi8mBwSkcWysrLC3LlzpanlW7duYfbs2WaOiojIvJgcEpFFu3tq2cfHByNGjDBz\\nRERE5sXkkIgsWkBAAHx9fQEAf/nLXyCTycwcERGRedmYOwBqm8uXLyMhIQG3b982dyhEDz192Zpv\\nv/0WTz31lJmjIXr49enTB++88465w6A24pnDh9S3336L3bt3mzsMog6n1Wqh1Wo7dBsDBgxAQECA\\nybqHlmTPnj24evWqucOgh9zVq1fx7rvvmjsMegA8c/iQS0tLM3cIRB1KfyaPn/WOJ5PJ8PLLL/Ps\\nKT2QtLQ0REVFmTsMegA8c0hEREREEiaHRERERCRhckhEREREEiaHRERERCRhckhERA/sypUrmDZt\\nGqqqqlBWVgaZTCa9hg8fjhs3bhitc28/mUzW7YqQf/755/Dz84ONTfP3f2ZnZyMsLAwuLi5wcnLC\\npEmTcPz4caN+v/76K7Zu3YqgoCD07NkTCoUCAwcORHR0NHJycloU17Rp0yCTybBmzRqjZcuWLUNq\\namqLxqHuickhEVmMmpoaDBw4EOHh4eYOpVvJzs7GiBEjEBISAmdnZ7i5uUEIgaysLGl5fHy80Xr6\\nflqtFq6urhBC4NSpU50dfofIy8vDtGnTkJCQgJKSkmb7nzx5EmPHjoWTkxN+/PFHXLp0Cf3798eE\\nCRPw1VdfGfRdsmQJFixYgIiICJw/fx7l5eXYvn07srOzERAQgH379t13W//+97+RkZHR5PJnn30W\\nCQkJWLVqVcveLHU7TA6JyGIIIdDY2IjGxkZzh9IsR0dHjBs3ztxhNKuqqgpTp07Fk08+ifnz5xst\\nl8vlcHV1RVJSEj755BMzRGgeq1atwtixY3H69Gk4OTndt29jYyP++te/wsXFBf/617/g6ekJNzc3\\nvP/++/D19UVMTAzq6+sN1pk3bx4WLlwIDw8PODg4IDAwELt27cLt27exdOnSJrdVWFiI+Ph4PP30\\n00328fX1RXp6OtauXcsSUhaKySERWQwnJyfk5eXh888/N3co3caGDRtQXFyM1157zeRye3t77Ny5\\nE1ZWVoiNjcWFCxc6OULz2LZtG5YtW9ai6eSvv/4a586dw8yZM6FQKKR2a2trzJ49G1evXsX+/ful\\n9pSUFCQlJRmNo1aroVAokJeXByGEyW09++yz0Gg0CAkJuW9MarUaM2fOxCuvvIKGhoZm3wN1L0wO\\niYioTYQQSElJwahRo+Dl5dVkv9DQUKxcuRLV1dXQaDQmrz/sbu5O8ppz+PBhADB5vaW+LTMzs9lx\\namtrUVdXhyFDhph8Rvj27dtx7tw5JCYmtiiuGTNm4Nq1azhw4ECL+lP3weSQiCzCvn37DG580Cco\\n97ZfvnwZUVFRcHFxgaurK8LDw5GXlyeNk5iYKPXt06cPsrKyEBwcDCcnJzg4OGDixIkGNxGsWbNG\\n6n/3NPEXX3whtbu5uRmNX1tbi+PHj0t9WnIGqrPl5OSgpKQEarW62b5/+9vfEBISgjNnzmDBggUt\\n3kZ5eTkWLVoEX19f2NnZoUePHpgyZQqOHDki9WntMdQrLS1FXFwc+vbtCzs7O/Tq1QuRkZHIzs5u\\ncXztITc3F8Cd5xHfy9vbGwBadMZ1z549AIAVK1YYLbt27RpeeeUVbN++vdlpbr1hw4YBAL788ssW\\n9afug8khEVmE6dOnQwiBiIiI+7bHx8cjPj4eBQUFSE1NxeHDhzF79myp/+LFiyGEgFqtRmVlJRYu\\nXIg1a9aguLgYX3/9NSoqKhAUFIT//e9/AICVK1dCCAGlUmmw3cmTJ0MIgYCAAIN2/fhKpRKPP/44\\nhBAQQhhN7QUFBcHV1RUnTpxot33UWmfPngVgOqm5l5WVFXbu3AkfHx+kpKRg586dza5TXFyMkSNH\\nYteuXdi4cSPKyspw8uRJODg4IDg4GCkpKQBafwwBoKioCCNHjkRaWhq2bNmCiooKHD16FBUVFRgz\\nZkyHP8/7bpWVlQBg9BkB7lx7Cty5Q/l+SkpKsGzZMsTExJh8/GFMTAzmzJmDoKCgFselT0z1x5ks\\nB5NDIqK7xMTEYMyYMVAqlZg0aRLCwsKQlZWFsrIyo761tbXYsmWL1H/EiBHYsWMHbt68iYULF3Zo\\nnI2NjVLiaC5FRUUAAJVK1aL+bm5uSEtLg62tLWJjY6UzZk1JSEjApUuX8N577yE8PBzOzs7w8/PD\\nrl274Onpibi4OJN3ArfkGCYkJODKlSt455138MQTT8DR0RH+/v7YvXs3hBCtOrvZkfTH19Q0sV55\\neTkmT56MCRMmYOvWrUbLk5OTcfHiRWzYsKFV23Z2doZMJpOOM1kOJodERHcZOXKkwc8+Pj4A7tzl\\neS+lUilNvekNHToUXl5eyMnJ6dAv1bvPcpmLfmre1ta2xeuMHj0aiYmJqK2thUajQV1dXZN909PT\\nAQBhYWEG7XK5HMHBwairqzM55dmSY7hv3z5YWVkZlTXy8PCAv78/Tp8+jWvXrrX4fT0IFxcXAHf+\\n2biXvk3fx9Ty0NBQPProo9i5cyesra0Nlv/yyy9YsmQJtm/fbvLMZHNsbGzue4yoe2JySER0l3vP\\ngtnZ2QGAyfI3TX1h9+7dGwBw/fr1do6ua7G3twcA3Lp1q1XrxcXFISoqCmfPnjVZ/gYA6uvrodPp\\nYG9vb/IaOXd3dwB3pp7v1dwx1I/d2NgIlUplVIj7u+++AwBcvHixVe+rrQYPHgwAJpPRgoICAICf\\nn5/RsoaGBmg0Gnh7e+Ojjz4ySgwBICMjAzqdDhMmTDB4j/pSNqtWrZLafv75Z5PbaM3NNdQ9MDkk\\nImqj8vJyk9O6+qRQnyQCd665u3nzplFf/fVm97rfNGJX4enpCQDQ6XStXjclJQWDBg3C9u3b8fHH\\nHxstl8vlUKlUuHHjBqqrq42W66eTPTw8Wr1tuVwOFxcX2NjY4NatW9L0/L2viRMntnrsttBv5/Tp\\n00bL9G3BwcFGy2JjY1FfX4+0tDSDG5YGDBggXYv60ksvmXxv+n3+5ptvSm0DBgwwGL+qqgpCCOk4\\nk+VgckhE1EY3btyQngKi98MPP6CwsBBqtdrgS9XT01M6C6RXXFyMX375xeTYDg4OBsnkoEGD8MEH\\nH7Rj9A9uyJAhAEyf8WqOo6MjPv30UyiVSmzZssVknxkzZgCAUSmV+vp6ZGZmQqFQIDQ0tNXbBoDI\\nyEg0NDSYfDzd+vXr8cgjj3Rafb/x48fj0Ucfxd69ew3K/Ny+fRu7d++Gj4+P0dT666+/jnPnzuGz\\nzz6DXC7vkLj0n1f9cSbLweSQiKiNVCoVli9fDq1Wi9raWpw6dQpz586FnZ0dNm7caNA3JCQEhYWF\\n2LRpE2pqapCXl4eFCxcanF2822OPPYYLFy7g6tWr0Gq1yM/PR2BgoLS8K9ytrFar0bt37xY/z/de\\n/v7+Jos5661btw79+vVDfHw89u/fj+rqaly4cAFz5sxBUVERNm7cKE0vt9a6devg6+uLefPm4eDB\\ng9DpdKioqEBSUhJWr16NxMREg7Nxc+fOhUwmw6VLl9q0vfuxsrLCtm3bUFFRgWeeeQbFxcUoLy/H\\nSy+9hIsXLyI5OVmawgeADz/8EG+88QZOnjwJJycno2lxU2V72kJf0qe5gtnUDQl6KKWmpgoePrIE\\nGo1GaDSaBx4nPT1dADB4RUdHC61Wa9S+YsUKIYQwag8LC5PGU6vVwtvbW5w/f16EhoYKJycnoVAo\\nxPjx48WxY8eMtl9ZWSliYmKEp6enUCgUYty4cSIrK0sEBARI47/66qtS/9zcXBEYGCiUSqXw8fER\\nmzdvNhgvMDBQ9OjRQ3zzzTcPvG/0AIjU1NRWrbN8+XJhY2MjCgoKpLbS0lKjfRcQENDkGC+88IJw\\ndXU1uaysrEzEx8eLfv36CVtbW6FSqURoaKjIzMyU+rT1GJaXl4tFixaJ/v37C1tbW9GrVy8REhIi\\nDh06ZBRHUFCQcHR0FA0NDS3aLxkZGUbb1r+Sk5NNrvPdd9+JKVOmCGdnZ+Ho6CiCgoJMfpbCwsKa\\nHFv/0mq1JrcRGxtrsn9oaKhRX41GI7y9vcXNmzdb9J71+P300EuTCWHGOgjUZmlpaYiKijJrGQui\\nzqCv2dbVnvE6bNgwlJWVddodrZ1BJpMhNTXVZJ28puh0Ovj7+yM8PNxkGZXuoLKyEl5eXoiOjkZy\\ncrK5w+kUOTk5GD58OHbt2oVZs2a1al1+Pz309nBamYiI2kylUiEjIwN79+7F5s2bzR1OuxNCIC4u\\nDs7OznjzzTfNHU6nyM/PR2RkJBISElqdGFL3wOTQwu3evVu6TuXua1qodRwdHY2u+7GyskKPHj2g\\nVqvx4osvmrwTkag7GD58OE6dOoWDBw+iqqrK3OG0q5KSEuTn5yMzM7NNd0Y/jJKSkrB27VqsXbvW\\n3KGQmTA5tHCzZs2CEMJkmQRquZqaGnz//fcAgIiICAghcOvWLeTm5mL16tXIzc3FiBEj8Mwzz+C3\\n334zc7T0IPTPPs7JyUFBQQFkMhlWrlxp7rDMrm/fvti/fz+cnZ3NHUq78vDwwLFjx+Dv72/uUDrN\\n+vXrecbQwjE5JIvl6OiIcePGddj41tbWcHd3R0REBA4fPoylS5fiww8/xOzZsy3qWpyO3s+dTf/s\\n47tfa9asMXdYRETthskhUSd5++23MWrUKPznP//B7t27zR0OERGRSUwOiTqJTCaTHhXWVNFfIiIi\\nc2NyaGFyc3Mxffp0qFQqKJVKBAYG4tixY0b99u3bZ3BzxU8//YSnnnoKrq6uUltZWRmAO48QW7Ro\\nEXx9fWFnZ4cePXpgypQpOHLkiDSe/jotmUyGPn36ICsrC8HBwXBycoKDgwMmTpxo8kkFLRl7zZo1\\n0th3T19+8cUXUrubm5tRLLW1tTh+/LjU5+6Ctx1FH9+JEydw69Yt7mciIup6zFNfkR5UW4qMXrx4\\nUbi4uAhvb2/x1VdfierqanHmzBkREhIi+vbtK+RyudE6ERERAoAYP368OHLkiKitrRUnTpwQ1tbW\\norS0VBQVFYl+/foJd3d3kZGRIXQ6nfjpp59EZGSkkMlkRsVe1Wq1UCqVYsyYMeKbb74RNTU1Iisr\\nS/zhD38QdnZ24ujRo1Lf1o6tVCrF448/bvQeAgICTBbYbaq/3sSJE0XPnj2bLCZ7r++//14AEBER\\nEU32qaurk4rOFhYWSu2WvJ+b015FsKl5aEMRbKJ7sQj2Qy+NR+8h1ZZfPo1GIwCIvXv3GrQXFBQI\\nuVx+3+Tw888/NznmX/7yFwFAfPLJJwbtN27cEF5eXkKhUIji4mKpXa1WCwDi+++/N+h/5swZAUCo\\n1eo2j93eScv48eNb9QSKliSHv/32232TQ0vcz81hcth5mBxSe2By+NBL47SyBfniiy8AwOhB9V5e\\nXvDz87vvun/84x9NtqenpwOA0UPh5XI5goODUVdXhy+//NJgmVKpxLBhwwzahg4dCi8vL+Tk5KCo\\nqKjNY7eno0ePoqKiAmPGjGm3MfXvzdbW1mAKVs8S93NL7Nmzx6iOJF/t/wKAqKgos8fB18P9ioqK\\nMuvfC3pwvPjHQtTX16O6uhr29vZwdHQ0Wt67d29cuHChyfWVSqXJMXU6Hezt7eHk5GS03N3dHQBQ\\nXFxs0O7i4mJyG71790ZhYSGuX7+Onj17tmnsrk5/feeYMWNga2trtJz72bQxY8bg5ZdfNmsMluCp\\np57Cyy+/3K7/EJHl0Wq1ePfdd80dBj0AJocWQi6Xw8nJCdXV1aipqTFKECsqKto0pkqlgk6nQ3V1\\ntVFyUVJSAgBGTxUoLy+HEAIymcyg/fr16wDuJC9tGdvKygo3b940irOystJk/Pduv6M1NjZKjxd7\\n6aWXWrwe9zPQp08faDSaBx6Hmjd69Gjua3ogwoLquHZXnFa2IFOmTAHwf9PLemVlZfjpp5/aNOaM\\nGTMAAAcOHDBor6+vR2ZmJhQKhdE09o0bN5CVlWXQ9sMPP6CwsBBqtRqenp5tGtvT0xMFBQUGfYuL\\ni/HLL7+YjN3BwcEgyRk0aBA++OCDZt9zWyUkJODbb7/FjBkzWv3ly/1MRESdxswXPVIbteWC359/\\n/ln07NnT4G7lc+fOif+PvTsPi+pK8wf+LfZiKxRUEEmrGMyImdIAv0Qjjwo2aEBRYkncuicGm8kY\\ngXZJxCWLy9j6MEl8OhoJSFaIoBlJMJrWwSS2puIgBowaIsGVNQKyiIgC5/eHz71jWQUUCJTC9/M8\\n9QfnnHvuW/eS8HrPPecEBweLgQMHtjkhpaGhwWCf9890ra2t1Znp+sEHH+i0V6vVQqVSiZuZ6t8A\\nACAASURBVMDAwA7Pom2v71deeUUAEH//+99FXV2d+O2338ScOXOEu7u7wYkSU6dOFSqVSly5ckX8\\n8MMPwsLCQpw7d06uf9DZys3NzaK8vFxkZGSIgIAAAUAsWrRI3Lx5k9f5nuvcHk5I6TnghBTqApyQ\\n8sjjbOVHVWf/4/v111/FzJkzhaOjo1AqlcLPz0/s379fBAYGyrNoX3rpJaHVauWf7/0YUlFRIWJj\\nY8WwYcOEpaWlUKlUIjg4WGRlZem1VavVwt3dXZw7d04EBwcLBwcHoVQqxcSJE8WxY8ceqO/q6moR\\nGRkp3NzchFKpFBMmTBDZ2dnCx8dHjv+1116T2+fn5wt/f39hZ2cnPDw8xPbt23X68/f3N3q2sp2d\\nnd61UigUQqVSiSeffFK8/PLLIicnR+84Xuf2MTnsOUwOqSswOXzkpSuE4MsBj6L09HREREQ8cu92\\njBkzBhUVFSgqKjJ1KL1ab7rOc+bMAXD3d566l0KhQFpamnzNiTrjUf37RLI9fOeQiIge2OXLlzFj\\nxgzU1taioqJCZ2mTsWPH4tatW3rH3N9OoVDA19fXBNF3nwMHDsDLy8uonYFyc3MREhICJycnODg4\\nYMqUKQZ3NLp+/Tp27tyJgIAA9O/fH0qlEo8//jjmz5+PvLw8o+KaMWMGFAoFNm7cqFe3atUqpKWl\\nGdUP9U5MDomI6IHk5ubC19cXQUFBcHR0hIuLC4QQ8oSo3NxcxMbG6h0ntdNqtXB2doYQAidPnuzp\\n8LtFYWEhZsyYgbi4OHnWf1tOnDiB8ePHw8HBAb/88gsuXryI4cOHY9KkSTh06JBO25UrV2Lp0qUI\\nCwvDuXPnUFlZieTkZOTm5sLHxwcZGRltnuuTTz5BZmZmq/WLFy9GXFwc1q1bZ9yXpV6HySH1CGmf\\n3by8PBQXF0OhUGDt2rWmDqvX4XXuGfb29jr7S/e189+rtrYW06dPx/PPP49XXnlFr97a2hrOzs5I\\nSEjA559/boIITWPdunUYP348cnJyDK4heq+Wlha89NJLcHJywocffgg3Nze4uLjg/fffh6enJyIj\\nI9HY2KhzzKJFixATEwNXV1fY2trC398fqampaG5uxquvvtrquUpKShAbG4uFCxe22sbT0xP79u3D\\npk2b+DpHH8XkkHrEihUrIITQ+RgazqAHw+tMPW3r1q0oKyvD66+/brDexsYGKSkpMDMzQ1RUVJuL\\n7fcmu3btwqpVq4waTj569CjOnj2L2bNnQ6lUyuXm5uaYO3curl69iv3798vlSUlJSEhI0OtHrVZD\\nqVSisLCw1ff9Fi9eDI1Gg6CgoDZjUqvVmD17NpYvX46mpqZ2vwP1LkwOiYioU4QQSEpKwtNPP43B\\ngwe32i44OBhr165FXV0dNBqNwfcPe5t7k7z2HDlyBAAMvm8plWVlZbXbT319PRoaGjB69GiDi88n\\nJyfj7NmziI+PNyquWbNmoaioSG8NVOr9mBwSUa9UWVmJZcuWwdPTE1ZWVujXrx+mTZuGb7/9Vm6z\\nceNGeSLEvcO033zzjVx+7x7Y0rB9fX09jh8/LreRng5J9QqFAkOGDEF2djYCAwPh4OAAW1tbTJ48\\nWWeCQVefv6fl5eWhvLwcarW63bZvvPEGgoKCcPr0aSxdutTocxhzHzMyMnQmtVy6dAkRERFwcnKC\\ns7MzQkNDUVhYqNf3tWvXEB0djaFDh8LKygoDBgxAeHg4cnNzjY6vK+Tn5wO4uxPQ/dzd3QHAqCeu\\ne/bsAQCsWbNGr66oqAjLly9HcnJyu8PcEmlvdlPvrU49j8khEfU6ZWVl8PPzQ2pqKrZt24aKigqc\\nOHECtra2CAwMRFJSEgBg7dq1EELo7Wk9depUCCHg4+OjUy4N29vZ2eHZZ5+Vh+6lYTepXq1Wo7q6\\nGjExMdi4cSPKyspw9OhRVFVVISAgAN9//323nF8SEBAAZ2dn/Pjjjw9+Mdtw5swZAIaTmvuZmZkh\\nJSUFHh4eSEpKQkpKSrvHGHsfZ86cCSEEwsLCAACxsbGIjY1FcXEx0tLScOTIEcydO1en79LSUvj5\\n+SE9PR07duxAVVUVvvvuO1RVVWHcuHHQarUdvRydJm09aWhvdWmr0+vXr7fZR3l5OVatWoXIyEiD\\nSxFFRkZi3rx5CAgIMDouKTGV7jP1HUwOiajXiYuLw8WLF/Huu+8iNDQUjo6O8PLyQmpqKtzc3BAd\\nHW3UDNIHUV9fjx07dmDcuHGws7ODr68vPvvsM9y+fRsxMTHdeu6WlhY5cexOpaWlAACVSmVUexcX\\nF6Snp8PS0hJRUVHyE7PWdPY+RkZGytd9ypQpCAkJQXZ2NioqKnT6vnz5Mt5++20899xzsLe3h7e3\\nN3bv3g0hRIeebnYn6R62tUd5ZWUlpk6dikmTJmHnzp169YmJiSgoKMDWrVs7dG5HR0coFAr5PlPf\\nweSQiHqdffv2AQBCQkJ0yq2trREYGIiGhoZuHyqzs7OTh+UkTz75JAYPHoy8vLxu/YN77xOw7iS9\\nO2hpaWn0Mc888wzi4+NRX18PjUaDhoaGVtt29j76+fnp/Ozh4QHg7kxdSUZGBszMzBAaGqrT1tXV\\nFd7e3sjJyemxReSdnJwA3P0Hxf2kMqmNofrg4GCMGjUKKSkpMDc316m/cuUKVq5cieTkZINPJttj\\nYWHR5j2i3onJIRH1Ko2NjaipqYGNjY3Bd6sGDRoE4O6QZXdq7Y/5wIEDAQC///57t56/J9jY2AAA\\n7ty506HjoqOjERERgTNnzhhc/gZ4sPt4/5NMKysrAHefqN7bd0tLC1Qqld5C3KdOnQIAFBQUdOh7\\nddYTTzwBAAaT0eLiYgCAl5eXXl1TUxM0Gg3c3d3x8ccf6yWGAJCZmYmamhpMmjRJ5ztKS9msW7dO\\nLvvtt98MnqMjk2uod2BySES9irW1NVQqFW7duoW6ujq9emkY0tXVVS4zMzPD7du39dpK74Ldr60h\\nPkllZaXBYV0pKZSSxO46f09wc3MDANTU1HT42KSkJIwcORLJycn49NNP9eo7cx+NZW1tDScnJ1hY\\nWODOnTt6yz9Jn8mTJ3e4786QzpOTk6NXJ5UFBgbq1UVFRaGxsRHp6ek6k5JGjBghv2+6ZMkSg99N\\nuuYbNmyQy0aMGKHTf21tLYQQ8n2mvoPJIRH1OrNmzQIAvSU4GhsbkZWVBaVSieDgYLnczc1NfkIj\\nKSsrw5UrVwz2b2trq5PMjRw5Eh988IFOm1u3bsk7hEh+/vlnlJSUQK1W6/zB7Y7z94TRo0cDMPzE\\nqz329vb44osvYGdnhx07dhhs09H72BHh4eFoamoyuD3dli1b8Nhjj/XY+n4TJ07EqFGjsHfvXp1l\\nfpqbm7F79254eHjoDa2/+eabOHv2LL788ktYW1t3S1zS76R0n6nvYHJIRL3O5s2bMWzYMMTGxmL/\\n/v2oq6vD+fPnMW/ePJSWlmLbtm3ysCQABAUFoaSkBO+99x5u3LiBwsJCxMTE6Dzdu9dTTz2F8+fP\\n4+rVq9Bqtbhw4QL8/f112qhUKqxevRparRb19fU4efIkFixYACsrK2zbtk2nbVefv6dmK6vVagwc\\nONDo/Xzv5+3tbXAxZ0lH72NHbN68GZ6enli0aBEOHjyImpoaVFVVISEhAevXr0d8fLzO07gFCxZA\\noVDg4sWLnTpfW8zMzLBr1y5UVVXhxRdfRFlZGSorK7FkyRIUFBQgMTFRHsIHgI8++ghvvfUWTpw4\\nAQcHB71hcUPL9nSGtKRPewtmUy8k6JGUlpYmePuoL9BoNEKj0XT4uIqKChEbGyuGDRsmLC0thUql\\nEsHBwSIrK0uvbXV1tYiMjBRubm5CqVSKCRMmiOzsbOHj4yMACADitddek9vn5+cLf39/YWdnJzw8\\nPMT27dt1+lOr1cLd3V2cO3dOBAcHCwcHB6FUKsXEiRPFsWPHuv38/v7+ol+/fuKHH37o0DUDINLS\\n0jp0zOrVq4WFhYUoLi6Wy65duybHLX18fHxa7ePll18Wzs7OBuuMuY9arVbvfGvWrJG/072fkJAQ\\n+bjKykqxbNkyMXz4cGFpaSkGDBgggoKCxOHDh/XiCAgIEPb29qKpqcmo65KZmal3bumTmJho8JhT\\np06JadOmCUdHR2Fvby8CAgIM/r6EhIS02rf00Wq1Bs8RFRVlsH1wcLBeW41GI9zd3cXt27eN+s4S\\n/n165KUrhOjmtQ6oW6SnpyMiIqLbl6ogMjVpzbZHaY/XMWPGoKKiosdmu3YVhUKBtLQ0g+vktaam\\npgbe3t4IDQ01uIxKb1BdXY3Bgwdj/vz5SExMNHU4PSIvLw9jx45FamoqXnjhhQ4dy79Pj7w9HFYm\\nIqJOU6lUyMzMxN69e7F9+3ZTh9PlhBCIjo6Go6MjNmzYYOpwesSFCxcQHh6OuLi4DieG1DswOSQi\\nogcyduxYnDx5EgcPHkRtba2pw+lS5eXluHDhArKysjo1M/pRlJCQgE2bNmHTpk2mDoVMhMkhEVEX\\nkfY+zsvLQ3FxMRQKBdauXWvqsHrE0KFDsX//fjg6Opo6lC7l6uqKY8eOwdvb29Sh9JgtW7bwiWEf\\nZ5rd2omIeqEVK1ZgxYoVpg6DiOiB8MkhEREREcmYHBIRERGRjMkhEREREcmYHBIRERGRjBNSHnF7\\n9uwxdQhE3UpaSJq/6z3jxx9/hEKhMHUY9Ajr7m0bqftxh5RH1D//+U8EBAT02MbwRERExhoyZAiu\\nXr1q6jCoc/YwOSSiPo/bfRERybh9HhERERH9HyaHRERERCRjckhEREREMiaHRERERCRjckhERERE\\nMiaHRERERCRjckhEREREMiaHRERERCRjckhEREREMiaHRERERCRjckhEREREMiaHRERERCRjckhE\\nREREMiaHRERERCRjckhEREREMiaHRERERCRjckhEREREMiaHRERERCRjckhEREREMiaHRERERCRj\\nckhEREREMiaHRERERCRjckhEREREMiaHRERERCRjckhEREREMiaHRERERCRjckhEREREMiaHRERE\\nRCRjckhEREREMiaHRERERCRjckhEREREMiaHRERERCRjckhEREREMgtTB0BE1NM+/fRTlJSUyD+f\\nPn0aALBlyxaddpMnT8b/+3//r0djIyIyNYUQQpg6CCKinjRgwABUVVXB0tKy1TaNjY145ZVX8Pe/\\n/70HIyMiMrk9HFYmoj4nIiIC5ubmaGxsbPUDABqNxsSREhH1PCaHRNTnzJ07F3fu3GmzzYABAzBh\\nwoQeioiI6OHB5JCI+pzx48djyJAhrdZbWVnh3/7t32Bmxv9FElHfw//zEVGfo1AosGDBglbfObx9\\n+zbmzp3bw1ERET0cmBwSUZ/U1tDy8OHDMXbs2B6OiIjo4cDkkIj6pH/913/FyJEj9cqtrKzw5z//\\n2QQRERE9HJgcElGftXDhQr2h5du3b+OFF14wUURERKbH5JCI+qy5c+eiqalJ/lmhUECtVsPLy8uE\\nURERmRaTQyLqs4YPH46nnnoKCoUCAGBubs4hZSLq85gcElGf9qc//Qnm5uYAgObmZsyZM8fEERER\\nmRaTQyLq0+bMmYOWlhYoFAo8++yzcHd3N3VIREQmxeSQiPo0V1dXTJw4EUIIDikTEQFQCCGEqYOg\\nrvfPf/4TAQEBOi/bExERdYUhQ4bg6tWrpg6DusceC1NHQN2jtLQUTU1NSE9PN3UoRG165513AAB/\\n/etfTRaDEALXr19H//79TRZDT5gzZw7++te/Yty4caYOhR5hWq1W/u+Weicmh72cRqMxdQhEbdqz\\nZw8A/q72lGeeeYbXmh4IBxx7P75zSEREREQyJodEREREJGNySEREREQyJodEREREJGNySERE7bp8\\n+TJmzJiB2tpaVFRUQKFQyJ+xY8fi1q1besfc306hUMDX19cE0XefAwcOwMvLCxYW7c/vzM3NRUhI\\nCJycnODg4IApU6bg+PHjeu2uX7+OnTt3IiAgAP3794dSqcTjjz+O+fPnIy8vz6i4ZsyYAYVCgY0b\\nN+rVrVq1CmlpaUb1Q30Tk0Mi6jVu3LiBxx9/HKGhoaYOpVfJzc2Fr68vgoKC4OjoCBcXFwghkJ2d\\n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\\nIcQtnPwfAO7m3ckzthEAAAAASUVORK5CYII=\\n\",\n            \"text/plain\": [\n              \"<IPython.core.display.Image object>\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          }\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"XFrH0OVORco2\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### Training and Validating the model\\n\",\n        \"In the last practical we wrote out the dataset pipeline, loss function and training-loop to give you a good appreciation for how it works. This time, we use the training loop built-in to Keras. For simple, standard datasets like CIFAR, doing it this way will work fine, but it's important to know what goes on under the hood because you may need to write some or all of the steps out manually when working with more complex datasets! \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"wJ6JAqUL1TDu\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 391\n        },\n        \"outputId\": \"7177d9c2-041d-40b6-c43a-ce2cdc3c90df\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"batch_size = 128\\n\",\n        \"num_epochs = 10  # The number of epochs (full passes through the data) to train for\\n\",\n        \"\\n\",\n        \"# Compiling the model adds a loss function, optimiser and metrics to track during training\\n\",\n        \"model.compile(optimizer=tf.train.AdamOptimizer(),\\n\",\n        \"              loss=tf.keras.losses.sparse_categorical_crossentropy,\\n\",\n        \"              metrics=['accuracy'])\\n\",\n        \"\\n\",\n        \"# The fit function allows you to fit the compiled model to some training data\\n\",\n        \"model.fit(x=train_images, \\n\",\n        \"          y=train_labels, \\n\",\n        \"          batch_size=batch_size, \\n\",\n        \"          epochs=num_epochs, \\n\",\n        \"          validation_data=(validation_images, validation_labels.astype(np.float32)))\\n\",\n        \"\\n\",\n        \"print('Training complete')\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Train on 40000 samples, validate on 10000 samples\\n\",\n            \"Epoch 1/10\\n\",\n            \"40000/40000 [==============================] - 10s 253us/step - loss: 1.7632 - acc: 0.3672 - val_loss: 1.4033 - val_acc: 0.4961\\n\",\n            \"Epoch 2/10\\n\",\n            \"40000/40000 [==============================] - 8s 205us/step - loss: 1.3070 - acc: 0.5322 - val_loss: 1.1878 - val_acc: 0.5769\\n\",\n            \"Epoch 3/10\\n\",\n            \"40000/40000 [==============================] - 8s 205us/step - loss: 1.1475 - acc: 0.5962 - val_loss: 1.1151 - val_acc: 0.6132\\n\",\n            \"Epoch 4/10\\n\",\n            \"40000/40000 [==============================] - 8s 204us/step - loss: 1.0261 - acc: 0.6404 - val_loss: 1.0382 - val_acc: 0.6371\\n\",\n            \"Epoch 5/10\\n\",\n            \"40000/40000 [==============================] - 8s 206us/step - loss: 0.9312 - acc: 0.6792 - val_loss: 1.1219 - val_acc: 0.6262\\n\",\n            \"Epoch 6/10\\n\",\n            \"40000/40000 [==============================] - 8s 204us/step - loss: 0.8550 - acc: 0.7039 - val_loss: 1.0031 - val_acc: 0.6547\\n\",\n            \"Epoch 7/10\\n\",\n            \"40000/40000 [==============================] - 9s 213us/step - loss: 0.7825 - acc: 0.7285 - val_loss: 0.9751 - val_acc: 0.6672\\n\",\n            \"Epoch 8/10\\n\",\n            \"40000/40000 [==============================] - 9s 213us/step - loss: 0.7138 - acc: 0.7526 - val_loss: 0.9877 - val_acc: 0.6761\\n\",\n            \"Epoch 9/10\\n\",\n            \"40000/40000 [==============================] - 8s 206us/step - loss: 0.6581 - acc: 0.7717 - val_loss: 0.9745 - val_acc: 0.6843\\n\",\n            \"Epoch 10/10\\n\",\n            \"40000/40000 [==============================] - 8s 210us/step - loss: 0.6053 - acc: 0.7905 - val_loss: 1.0062 - val_acc: 0.6763\\n\",\n            \"Training complete\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"waS75-jNaEL1\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### Test performance\\n\",\n        \"Finally, we evaluate how well the model does on the held-out test-set\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"AVAdjH6o13tQ\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 85\n        },\n        \"outputId\": \"72e29943-105b-4375-ecb6-fde1264f89be\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"metric_values = model.evaluate(x=test_images, y=test_labels)\\n\",\n        \"\\n\",\n        \"print('Final TEST performance')\\n\",\n        \"for metric_value, metric_name in zip(metric_values, model.metrics_names):\\n\",\n        \"  print('{}: {}'.format(metric_name, metric_value))\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"10000/10000 [==============================] - 2s 170us/step\\n\",\n            \"Final TEST performance\\n\",\n            \"loss: 1.03090104685\\n\",\n            \"acc: 0.6695\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"2lsBthNB4FlL\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Note that we achieved roughly 80% training set accuracy, but our test accuracy is only around 67%. What do you think may be the reason for this?\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"UlrSyMQpoV9f\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### Classifying examples\\n\",\n        \"We now use our trained model to classify a sample of 25 images from the test set. We pass these 25 images to the  ```model.predict``` function, which returns a [25, 10] dimensional matrix. The entry at position $(i, j)$ of this matrix contains the probability that image $i$ belongs to class $j$. We obtain the most-likely prediction using the ```np.argmax``` function which returns the index of the maximum entry along the columns. Finally, we plot the result with the prediction and prediction probability labelled underneath the image and true label on the side. \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"BjzP384wm9OW\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"img_indices = np.random.randint(0, len(test_images), size=[25])\\n\",\n        \"sample_test_images = test_images[img_indices]\\n\",\n        \"sample_test_labels = [cifar_labels[i] for i in test_labels[img_indices].squeeze()]\\n\",\n        \"\\n\",\n        \"predictions = model.predict(sample_test_images)\\n\",\n        \"max_prediction = np.argmax(predictions, axis=1)\\n\",\n        \"prediction_probs = np.max(predictions, axis=1)\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"Ol-f9SacnySQ\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 589\n        },\n        \"outputId\": \"cc4d4a4c-2bda-4d86-bf4a-9a5f1f3cd5ad\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"plt.figure(figsize=(10,10))\\n\",\n        \"for i, (img, prediction, prob, true_label) in enumerate(\\n\",\n        \"    zip(sample_test_images, max_prediction, prediction_probs, sample_test_labels)):\\n\",\n        \"  plt.subplot(5,5,i+1)\\n\",\n        \"  plt.xticks([])\\n\",\n        \"  plt.yticks([])\\n\",\n        \"  plt.grid('off')\\n\",\n        \"\\n\",\n        \"  plt.imshow(img)\\n\",\n        \"  plt.xlabel('{} ({:0.3f})'.format(cifar_labels[prediction], prob))\\n\",\n        \"  plt.ylabel('{}'.format(true_label))\\n\",\n        \"  \"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"display_data\",\n          \"data\": {\n            \"image/png\": \"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\\n\",\n            \"text/plain\": [\n              \"<matplotlib.figure.Figure at 0x7f8432b4bd10>\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          }\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"Z0618tOoMv0Y\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### Question\\n\",\n        \"What do you think of the model's predictions? Looking at the model's confidence (the probability assigned to the predicted class), look for examples of the following cases:\\n\",\n        \"1. The model was correct with high confidence\\n\",\n        \"2. The model was correct with low confidence\\n\",\n        \"3. The model was incorrect with high confidence\\n\",\n        \"4. The model was incorrect with low confidence\\n\",\n        \"\\n\",\n        \"What do you think the (relative) loss values would be in those cases? \\n\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"py0V6UwC6_kH\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### Aside: Uncertainty in deep learning\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"lpGl8VzY6B3c\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Deep neural networks are not considered to be very good at estimating the uncertainty in their predictions. However, knowing your model's uncertainty can be very important for many applications. For example, consider a deep learning tool for diagnosing diseases, in this case a false negative could have massive impacts on a person's life! We would really like to know how confident our model is in its prediction. This is a budding field of research, for example see [this blog](https://www.cs.ox.ac.uk/people/yarin.gal/website/blog_3d801aa532c1ce.html) for a nice introduction.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"OJzCooQO66D3\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### Aside: CNN architectures\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"n9Sjwpsm5_TD\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Deciding on the architecture for a CNN, i.e. the combination of convolution, pooling, dense, and other layers, can be tricky and often can seem arbitrary. On top of that, one also has to make decisions such as what kind of pooling, which activation functions, and what size of convolution to use, among other things. For new and old practitioners of deep learning, these choices can be overwhelming. \\n\",\n        \"\\n\",\n        \"However, by examining existing successful CNN architectures we can learn a lot about what works and what doesn't. (We can even apply these existing architectures to our problems since many deep learning libraries, such as TensorFlow and Keras, have them [built in](https://keras.io/applications/#available-models) and it is even possible to fine-tune pre-trained models to our specific problem using [transfer learning](https://cs231n.github.io/transfer-learning/).)\\n\",\n        \"\\n\",\n        \"[This article](https://medium.com/@sidereal/cnns-architectures-lenet-alexnet-vgg-googlenet-resnet-and-more-666091488df5) describes many of the most successful CNN architectures in recent years, including [ResNet](https://arxiv.org/abs/1512.03385), [Inception](https://arxiv.org/pdf/1512.00567v3.pdf) and [VGG](https://arxiv.org/pdf/1409.1556.pdf). For a more detailed and technical description of these models and more see [these slides](http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture9.pdf). Reading through these resources should give you insights into why these architectures are successful as well as best practices and current trends for CNNs that will help you design your own architectures.\\n\",\n        \"\\n\",\n        \"For example, one of the practices you might pick up on is the use of 3x3 convolutions. You'll notices that older architectures such as [AlexNet](https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf) used a range of convolutions from 7x7 down to 3x3. However, newer architectures such as VGG and ResNet use 3x3 convolutions almost exclusively. In short, the reason is that stacking 3x3 convolutions gives you the same receptive field as a larger convolution but with more non-linearity. \\n\",\n        \"\\n\",\n        \"Here are some other questions you may want to think about while investigating these architectures:\\n\",\n        \"\\n\",\n        \"* Why do modern architectures use less max-pooling?\\n\",\n        \"* What does a 1x1 convolution do?\\n\",\n        \"* What is a residual connection?\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"-3bIU8BErhiJ\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## Your Tasks\\n\",\n        \"1. [**ALL**] Experiment with the network architecture, try changing the numbers, types and sizes of layers, the sizes of filters, using different padding etc. How do these decisions affect the performance of the model? In particular, try building a *fully convolutinoal* network, with no (max-)pooling layers. \\n\",\n        \"2. [**ALL**] Implement BATCH NORMALISATION ([Tensorflow documentation](https://www.tensorflow.org/api_docs/python/tf/keras/layers/BatchNormalization) and [research paper](http://proceedings.mlr.press/v37/ioffe15.pdf)) to improve the model's generalisation.\\n\",\n        \"3. [**ADVANCED**] Read about Residual networks ([original paper](https://arxiv.org/pdf/1512.03385.pdf), ) and add **shortcut connections** to the model architecture. Try to build a simple reusable \\\"residual block\\\" as a [Keras Model](https://www.tensorflow.org/api_docs/python/tf/keras/Model). \\n\",\n        \"4. [**OPTIONAL**]. Visualise the filters of the convolutional layers using Matplotlib. **HINT**: You can retrieve a reference to an indivual layer from the sequential Keras model by calling```model.get_layer(name)```, replacing \\\"name\\\" with the name of the layer. \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"0e-IdtqUknDK\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"##Additional Resources\\n\",\n        \"\\n\",\n        \"Here's some more information on ConvNets:\\n\",\n        \"\\n\",\n        \"* Chris Colah's blog post on [Understanding Convolutions](https://colah.github.io/posts/2014-07-Understanding-Convolutions/)\\n\",\n        \"* [How do convolutional neural networks work?](http://brohrer.github.io/how_convolutional_neural_networks_work.html)\\n\",\n        \"* The [CS231n course](https://cs231n.github.io/)\\n\",\n        \"* [Building blocks of interpretability](https://distill.pub/2018/building-blocks/)\\n\",\n        \"\\n\"\n      ]\n    }\n  ]\n}"
  },
  {
    "path": "Practical_3_Recurrent_Neural_Networks.ipynb",
    "content": "{\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0,\n  \"metadata\": {\n    \"colab\": {\n      \"name\": \"Practical 3: Recurrent Neural Networks\",\n      \"version\": \"0.3.2\",\n      \"provenance\": [],\n      \"collapsed_sections\": []\n    },\n    \"kernelspec\": {\n      \"name\": \"python2\",\n      \"display_name\": \"Python 2\"\n    }\n  },\n  \"cells\": [\n    {\n      \"metadata\": {\n        \"id\": \"9jDBz0IbW3Xy\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"# Practical 3: Recurrent Neural Networks (RNNs)\\n\",\n        \"\\n\",\n        \"\\n\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"-0F3Ao8BKa0g\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## Introduction\\n\",\n        \"\\n\",\n        \"Feedforward models (eg deep MLPs and ConvNets) map fixed-size input-data (vectors of a fixed dimensionality) to their output labels. They're very powerful and have been successfully used for many tasks. However, a lot of data is not in the form of fixed-size vectors, but exists in the form of **sequences**. Language is one good example, where sentences are sequences of words. In some way, almost any data types can be considered as a sequence (for instance an image consists of a sequence of pixels, speech a sequence of phonemes, and so forth). \\n\",\n        \"\\n\",\n        \"Recurrent neural networks (**RNNs**) were designed to be able to handle sequential data, and in this practical we will take a closer look at RNNs and then build a model that can generate English sentences in the style of Shakespeare!\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"otAAvBVFSZy8\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## Learning Objectives\\n\",\n        \"* Understand how RNNs model sequential data.\\n\",\n        \"* Understand how the vanilla RNN is a generalization of feedforward models to incorporate sequential dependencies.\\n\",\n        \"* Understand the issues involved when training RNNs.\\n\",\n        \"* Know how to implement an RNN for time-series estimation (**regression**) and an RNN language model (character-level **classification**) in Tensorflow using Keras.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"gfKcEFUxa--9\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"##Imports\\n\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"h8glXxcyew17\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"6dee02e2-e3b9-4ee2-f7a7-2006dd9979e0\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"#@title Imports (RUN ME!) { display-mode: \\\"form\\\" }\\n\",\n        \"\\n\",\n        \"#!pip -q install pydot_ng\\n\",\n        \"#!pip -q install graphviz\\n\",\n        \"#!apt install graphviz > /dev/null\\n\",\n        \"\\n\",\n        \"from __future__ import absolute_import, division, print_function\\n\",\n        \"\\n\",\n        \"import numpy as np\\n\",\n        \"import tensorflow as tf\\n\",\n        \"import math\\n\",\n        \"import random\\n\",\n        \"import ssl\\n\",\n        \"import sys\\n\",\n        \"import urllib2\\n\",\n        \"from IPython import display\\n\",\n        \"import matplotlib.pyplot as plt\\n\",\n        \"%matplotlib inline\\n\",\n        \"\\n\",\n        \"print('Running TensorFlow version %s' % (tf.__version__))\\n\",\n        \"try:\\n\",\n        \"  tf.enable_eager_execution()\\n\",\n        \"  print('Eager mode activated.')\\n\",\n        \"except ValueError:\\n\",\n        \"  print('Already running in Eager mode')\"\n      ],\n      \"execution_count\": 3,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Running TensorFlow version 1.10.1\\n\",\n            \"Eager mode activated.\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"yVL1OwL7aH8c\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"##From Feedforward to Recurrent Models\\n\",\n        \"\\n\",\n        \"### Intuition\\n\",\n        \"RNNs generalize feedforward networks (FFNs) to be able to work with sequential data. FFNs take an input (e.g. an image) and immediately produce an output (e.g. a digit class), something like this:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"NqZsIaRU6-WK\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"def ffn_forward(x, W_xh, W_ho, b_hid, b_out):\\n\",\n        \" \\n\",\n        \"    # Compute activations on the hidden layer.\\n\",\n        \"    hidden_layer = act_fn(np.dot(W_xh, x) + b_hid)\\n\",\n        \"    \\n\",\n        \"    # Compute the (linear) output layer activations.     \\n\",\n        \"    output = np.dot(W_ho, hidden_layer) + b_out\\n\",\n        \"    \\n\",\n        \"    return output\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"Kb3Tjms06_XL\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"**NOTE**: You don't have to run this cell, it's just shown to illustrate the point.\\n\",\n        \"\\n\",\n        \"RNNs, on the other hand, consider the data sequentially, and can remember what they have seen earlier in the sequence to help interpret or contextualize elements from later in the sequence when making predictions, something like this:\\n\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"ACx_wHGB7AWc\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"def rnn_forward(data_sequence, initial_state):\\n\",\n        \"\\n\",\n        \"    state = initial_state  # Reused at every time-step\\n\",\n        \"    all_states, all_ys = [state], []  # Used to save all states and predictions\\n\",\n        \"\\n\",\n        \"    for x, y in data_sequence:\\n\",\n        \"      \\n\",\n        \"      # recurrent_fn() takes the current input and the previous state and produces a new state\\n\",\n        \"      new_state, y_pred = recurrent_fn(x, state)\\n\",\n        \"      \\n\",\n        \"      all_states.append(new_state)\\n\",\n        \"      all_ys.append(y_pred)\\n\",\n        \"      \\n\",\n        \"      # Update state for the next time-step\\n\",\n        \"      state = new_state\\n\",\n        \"\\n\",\n        \"    return all_states, all_ys\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"-Crh_ViE7Ave\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"To understand the distinction between FFNs and RNNs, imagine we want to label words as the part-of-speech categories that they belong to: E.g. for the input sentence \\\"I want a duck\\\" and \\\"He had to duck\\\", we want our model to predict that duck is a `Noun` in the first sentence and a `Verb` in the second. To do this successfully, the model needs to be aware of the surrounding context. However, if we feed a FFN model only one word at a time, how could it know the difference? If we want to feed it all the words at once, how do we deal with the fact that sentences are of different lengths?\\n\",\n        \"\\n\",\n        \"RNNs solve this issue by processing the sentence word-by-word, and maintaining an internal **state** summarizing what it has seen so far. This applies not only to words, but also to phonemes in speech, or even, as we will see, elements of a time-series.\\n\",\n        \"\\n\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"zUqww79L6Ot-\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### Unrolling the network\\n\",\n        \"\\n\",\n        \"Imagine we are trying to classify a sequence $X = (x_1, x_2, \\\\ldots, x_N)$ into labels $y$ (for now, let's keep it abstract). After running the `rnn_forward()` function of our RNN defined above on $X$, we would have a list of internal states and outputs of the model at each sequence position. This process is called **unrolling or unfolding in time**, because you can think of it as unrolling the *computations* defined by the RNN loop over the inputs at each position of the sequence.  RNNs are often used to model **time series data** (which we will do in this practical), and therefore these positions are referred to as **time-steps**, and hence we call this process \\\"unrolling over time\\\". See the visualization below from this great [blog post](http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-1-introduction-to-rnns/) (it uses slightly different notation, but the idea should be clear):\\n\",\n        \"\\n\",\n        \"![Unrolled Network](http://d3kbpzbmcynnmx.cloudfront.net/wp-content/uploads/2015/09/rnn.jpg)\\n\",\n        \"\\n\",\n        \"> **We can therefore think of an RNN as a composition of identical feedforward neural networks (with replicated/tied weights), one for each moment or step in time. **\\n\",\n        \"\\n\",\n        \"These feedforward functions that make up the RNN(i.e. our `recurrent_fn` above) are typically referred to as **cells**, and the only restriction on its API is that the cell function needs to be a differentiable function that can map an input and a state vector to an output and a new state vector. What we have shown above is called the **vanilla RNN**, but there are many more possibilities. One of the most popular variants is called the **Long Short-Term Memory (LSTM)** cell, which we'll use later to create our Shakespeare language model.\\n\",\n        \"\\n\",\n        \"### Putting this together \\n\",\n        \"\\n\",\n        \"In the feedforward models we've seen before, the input $x$ is mapped to an intermediate hidden layer $h$ as follows:\\n\",\n        \"\\n\",\n        \"\\\\begin{equation}\\n\",\n        \"  h = \\\\sigma(\\\\underbrace{W_{xh}x}_\\\\text{current input (per-example)} + b)\\n\",\n        \"\\\\end{equation}\\n\",\n        \"\\n\",\n        \"where $\\\\sigma$ is some non-linear activation function like ReLU or tanh.  We can then make a prediction $\\\\hat{y} = \\\\sigma(W_{hy}h + b)$ based on $h$, or we can add another layer, etc.  **NOTE**: We use the weight subscript $W_{xz}$ to indicate a mapping from layer $x$ to layer $z$.\\n\",\n        \"\\n\",\n        \"RNNs generalize this idea to a sequence of inputs $X = {x_1, x_2, ...}$ by maintaining a sequence of state vectors $h_t$, one for every time-step $t$, as follows:\\n\",\n        \"\\n\",\n        \"\\\\begin{equation}\\n\",\n        \"  h_t = \\\\sigma(\\\\underbrace{W_{hh}h_{t-1}}_\\\\text{previous state} + \\\\underbrace{W_{xh}x_t}_\\\\text{current input (per time-step)} + b)\\n\",\n        \"\\\\end{equation}\\n\",\n        \"\\n\",\n        \"Feedforward models map one input to one output. On the other hand, RNNs can give **many-to-many** (many inputs, many labels), **many-to-one**, and **one-to-many** mappings. For example, we could use each $h_t$ to predict the part of speech for that time-step ($y_t= \\\\sigma(W_{hy}h_t+b)$) or we could use the last state $h_T$ to predict the topic of the whole document. Which task the RNN performs is based on the training data (of course)! We can visualize these as follows (fromt this [excellent blog post](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) by Andrej Karpathy):\\n\",\n        \"\\n\",\n        \"![](http://karpathy.github.io/assets/rnn/diags.jpeg)\\n\",\n        \"\\n\",\n        \"**QUESTIONS**\\n\",\n        \"* How are FFNs and RNNs **similar**?\\n\",\n        \"* How are they **different**?\\n\",\n        \"* Why do we call RNNs \\\"recurrent\\\"?\\n\",\n        \"* Can you think of a one-to-many task?\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"9wuobtH3aB59\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"##Modeling General Time-Series\\n\",\n        \"\\n\",\n        \"We will train an RNN to model a time-series as a first step. A **time-series** is a series of data-points ordered over discrete time-steps. Examples include the hourly temperature of Stellenbosch over a month or a year, the market price of some asset (like a company's stock) over time, and so forth. We will generate a **sinusoidal time-series** (with or without noise) as a toy example, and then train a tiny RNN model with only 5 parameters on this data.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"oAQIXUL-oje2\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"###Create some artificial data\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"412j4v-RIfYR\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 226\n        },\n        \"outputId\": \"94a3f6f0-aaaf-41c3-ed80-68372c62f279\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"#@title Create sinusoidal data {run: \\\"auto\\\"}\\n\",\n        \"steps_per_cycle = 20 #@param { type: \\\"slider\\\", min:1, max:100, step:1 }\\n\",\n        \"number_of_cycles = 176 #@param { type: \\\"slider\\\", min:1, max:1000, step:1 }\\n\",\n        \"noise_factor = 0.1 #@param { type: \\\"slider\\\", min:0, max:1, step:0.1 }\\n\",\n        \"plot_num_cycles = 23 #@param { type: \\\"slider\\\", min:1, max:50, step:1 }\\n\",\n        \"\\n\",\n        \"seq_len = steps_per_cycle * number_of_cycles\\n\",\n        \"t = np.arange(seq_len)\\n\",\n        \"sin_t_noisy = np.sin(2 * np.pi / steps_per_cycle * t + noise_factor * np.random.uniform(-1.0, +1.0, seq_len))\\n\",\n        \"sin_t_clean = np.sin(2 * np.pi / steps_per_cycle * t)\\n\",\n        \"\\n\",\n        \"upto = plot_num_cycles * steps_per_cycle\\n\",\n        \"fig = plt.figure(figsize=(15,3))\\n\",\n        \"plt.plot(t[:upto], sin_t_noisy[:upto])\\n\",\n        \"plt.title(\\\"Showing first {} cycles.\\\".format(plot_num_cycles))\\n\",\n        \"plt.show()\\n\",\n        \"\\n\",\n        \"#both = np.column_stack((t, sin_t_noisy))\\n\",\n        \"#print(\\\"both.shape = {}\\\".format(both.shape))\\n\",\n        \"\\n\",\n        \"#print(\\\"both[:steps_per_cycle, :steps_per_cycle]\\\")\\n\",\n        \"#print(both[:steps_per_cycle,:steps_per_cycle])\"\n      ],\n      \"execution_count\": 4,\n      \"outputs\": [\n        {\n          \"output_type\": \"display_data\",\n          \"data\": {\n            \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAA24AAADRCAYAAAC0JeFaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBo\\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzsvXmUJNd13vmL3Nfaq/fGDgTAfSdF\\nUSJlLUPLkjyktRzvlqnxyJJtjX1mdMZjj+TjXbJNja2xTHMkHYu2LNmUSVMSV4uLRBgkQYAgiDXQ\\nQKP37tqrct9j/njxIrOrszIjIt+Lqjbedw4P0V1VWa8z47137/2++13LdV0MDAwMDAwMDAwMDAwM\\nji4Sh70AAwMDAwMDAwMDAwMDg8kwiZuBgYGBgYGBgYGBgcERh0ncDAwMDAwMDAwMDAwMjjhM4mZg\\nYGBgYGBgYGBgYHDEYRI3AwMDAwMDAwMDAwODIw6TuBkYGBgYGBgYGBgYGBxxpA57AQYGBgYGRw+2\\nbb8Z+EXgNKLItwX8H47jPGzb9nuAX3Uc5z7Fv/N9wA86jvOXFb3eTwE/B/wyUAIuOo7zoRA//3ag\\n6TjOt8Z87duBDwJzQAP4m47j/JH3tb8K/DXEHfsy8L84jnN5xn/OQWt8Dxo+CwMDAwODoweTuBkY\\nGBgY3ATbti3g9xAJxye9v3s/8Anbts/q+r2O43wc+LjCl/xTwN9xHOfXIv78jwMPAzclbrZtZ4FP\\nAD/iOM4Xbdv+fuC3gNO2bb8T+N+BtziOs2Pb9i8B/wL40aj/CAMDAwMDAzCJm4GBgYHBrVgBTgJf\\nlX/hOM7HbNt+1HGchm3bANi2/XeAPwdkgJ/wkpgc8P8A3wUMgE8BPwv8O+APHcf5Vdu2jwM3gO9z\\nHOe/2bb9Ju/rHwT+nOM432Pb9r8DLgLvBB4AXgD+pPf7/yfgV4Ea8EvAPwde5zjOBble27Z/Efg2\\n4CEv2bwLeNFxnH9o2/YF4NeBPwt8L/B24OeBJNAF/gbwIPAXgB+ybfuY4zgfHHl/0sBfcRzni96f\\nHwZO2ba9AKwDf95xnB3va58H/tG4N9m27b8A/F3vj18DfsJ7rV9wHOd3vO/5AeAfOo7zhgO+f/T1\\nssA/A97rfSYfdhznH3tf+2vATwMWUAF+3HGcZ8aty8DAwMDgaML0uBkYGBgY7Mcm8HXgi7Ztf8C2\\n7bsBHMe5MvI9Z4CnHMd5CPg3DBOK/w04C7waeBPwHcCfBr6ISKQAvhORFH679+fvQCQ4+/EjwI8B\\n9wKrwPts204Cv4FInB4C7geK+3/QcZyfBR4FftZxnL835rXPOI5jO45zCfgV4E94r/dTwA95kkr5\\n86NJG47j1BzH+djIX/1x4AXHcXYdx3nRcZxHAGzbziOSw0/s/+W2bd+FSDjfA9jev+FvIJi7PzPy\\nre8DfnvC94/iZ4FXAa9FvP8/bNv2D9i2XQb+AfA2x3EeRCR3f2LMe2JgYGBgcIRhEjcDAwMDg5vg\\nOI6LYKI+DvwMcN627Wc8uaRExXGc3/X++wlEIgciIfiw4zg9x3GawG8C38fNidt3IJI9mbi9i/GJ\\n2ycdx9l2HKcHPAXcgWDfso7jfNr7nl8m2l32+yP/vQ78pG3bdzqO87DjOH8r6IvYtv06BOv3v+77\\n+18E1oB5RK/gfnwf8IjjONe89/vPeK/zn4D32rY97yWpPwj85wnfP4ofBH7FcZy24zh14CPA+4EW\\n4AIfsG37uOM4H3UcZ9yaDAwMDAyOMEziZmBgYGBwCxzH2XMc5+cdx3kdcAKRBPy2bdsPed9SGfn2\\nPkJmCIIZ2xn52g5wzHGcl4G8Jyd8J/AxhLwwCbwD+MMxy9gb8zsW973+tSj/PmB75L9/CPFvfNy2\\n7Sds2353kBfw+tk+hZCJfmn0ax7jtwR8CfiDMT++AuyOfH/LS3avIpi+9yMS2wuO45w/6Pv3veYC\\n8Eu2bT9v2/bziKS76DhOF/hu7/VesG37y7ZtvzbIv9HAwMDA4OjAJG4GBgYGBjfBtu0ztm2/S/7Z\\ncZw1x3F+AcF6vXrKj68ByyN/Xvb+DkQS817vNWve670fuOw4TjXg8ioIh0iJEwF/7kA4jvOS4zg/\\nDhwD/iXwH6f9jMe0fRT4047jfGrk799m2/Y7vNftIZjFt3sJ6yg2EcmY/Lk5r/cPhFzyR4AfRjBw\\n075f4hrw047jPOj9727HcX7MW8sTjuP8CCKx/iwQ2F3TwMDAwOBowCRuBgYGBgb7cRb4r95IAABs\\n234rQqr49Sk/+/sISV7Stu0i8OeBT3pf+yKiB+4r3p+/AvwtxsskD8I5IO3Z4AP8JEIGGAm2ba/a\\ntv3fbNuecxxngOi9k6/XRbBY+3/GQvTZ/ZTjOF/e9+UHgQ/btj3v/fkHgUuO4+zu+75PAd9u2/Zd\\n3ut9CPiA97WPIuSjP4yQSU77folPAD/hvfeWbdt/17bt99q2/Vrbtj9q23bGcZwO8BgzvGcGBgYG\\nBocDk7gZGBgYGNwEx3G+AvwV4N/Ytu3Ytv0iop/qxxzHuTjlx38ZuAw8g0gQfh+RiIBI3N4OPOL9\\n+RGETPILIdbWBv4q8O9s2/4mwm1yQMRExHGcDeAzwNdt234W+G2GCdHHgV+wbfuD+37sHcDrvK89\\nP/K/NwH/HpFAfc22bQchV7xlFIBn9PJXEP/2F7z1f9D72jbwR8DLcv7bpO8fwb9GOHE+AzwPPIRw\\nqXwaMU/uGdu2nwH+nrcubNv+J7Zt/2SY98zAwMDA4HBgua4puhkYGBgY3J7wWL0asOA4zt60779d\\nYNv2rwBPO47zK4e9FgMDAwODowHDuBkYGBgY3Fawbfvrtm3/mPfHHwOe+x8sabsf+H6EI6eBgYGB\\ngQFgEjcDAwMDg9sPfxP4v2zbfgExd+0vHvJ6lMG27b8PfA74a/8jJaMGBgYGBrPDSCUNDAwMDAwM\\nDAwMDAyOOAzjZmBgYGBgYGBgYGBgcMRhEjcDAwMDAwMDAwMDA4MjjtRhL0BiY6N6JDWbi4sFdnYa\\nh70MA4ObYJ5Lg6MI81waHDWYZ9LgKMI8lwaTsLpatg76mmHcpiCVSh72EgwMboF5Lg2OIsxzaXDU\\nYJ5Jg6MI81waRIVJ3AwMDAwMDAwMDAwMDI44TOJmYGBgYGBgYGBgYGBwxDFTj5tt268BPgH8kuM4\\n/+++r30P8I+BPvApx3H+wSy/y8DAwMDAwMDAwMDA4JWKyIybbdtF4JeBzx/wLf8K+FPAtwPfZ9v2\\nq6L+LgMDAwMDAwMDAwMDg1cyZpFKtoHvB67t/4Jt2/cA247jXHYcZwB8CvjuGX7XkcR2pcXH/ugl\\n2p3+oa2h0ujw//3es1xaqx7aGnr9AR/5rINzaefQ1gDwpW9e5emXtw51Dc9d3OFbLx3uGr727Br/\\n4XMOg8HhGbVuV1p8/vEr9PqDQ1vDYODy9PmtQ30f2t0+v/fIBdZ3m4e2hl5/wH/4nMMTL2wc2hoA\\nvvniJs9d2D7cNZzb5A8eu3yoa3ju4g4f+axDt3d498bVzTr/9nefYa/eObQ1dLp9PvfoJaqNw1sD\\nwAuXd6k1u4f2+13X5ZNfucBjz68f2hoAvvTEVT79tYuHuoYnXtjgtz9/joF7eGf2pbUq//6zzqHG\\ndfVWl88/foV66/Cey3qry6/+/rO8eHXv0NYg767D3htHDZGlko7j9ICebdvjvnwCGI0S1oF7J73e\\n4mLhyLrsrK6Wx/79R//wPJ/+ykVWl4q8/7vuj3lVAl/8gxf4yjM3cC7v8C9+5t2sLORjX8PXn73B\\nl564ysZei3e9+Y7Yfz/Aja06H/mMQzqV4J/+9Lt44I7F2NfQ7w/40L/6Mq1On4/8vfdSyqe1/r5x\\nz+WF6xV+/VPP0e0NeNNDJ3j3m85oXcNB+PVPP8/DT14jmU7yI9/9wKGs4ZMPn+dDH3+Kv/6jb+D7\\n3n5n7L/fdV1+8d8/xsNPXqPW6vE3fuyNsa8B4GNfPMcXvnGV5y7u8r3vvBvLOtBlWAnGPZdX1qv8\\n6489RTqV4MN/+3tYnMtpXcM4bFdafPj3nqHV6fPut9zBqdVS7GsA+IX/+ATOpR1edc8yf/yddx/K\\nGj70u8/y6LNrrCwW+Mn3v+5Q1vCRTz3LR7/wIq2+ywd+6DVaf9dBd/jF6xX+6W9+g+94w2l+9s+/\\nResaDsI3nHX+yx+eZ2kux3vfdY/2/TkO7W6f//TFF+l2+7z/u23td9c4XLxR4d/+7jN0egO+881n\\nef39q7Gvodvr83//2qNc3ajxmvtXtd8b457LdrfPP/vQIzx3YRvnyh4/94G3H8oz8R9+6xs88vQN\\n1vdafPBnvvNQ1vAbn3yWL3zjKk+c2+R733k3qaSx5YD45rhN/cSP6jyL1dUyGxu3slkD1+WRpwTZ\\n+HtfPs+3v+o4iUT8D/aXHhfV4+1Km5//8CP83F98a+zreOSbVwF49vwWL17YYr6YifX3A3zuq6JS\\n2O0N+Ie//jV+/sffylwh3nU8f3GHakNUyD798Eu85w2ntf2ucc9ltzfgF37j63R7AywLfvMzz/Hg\\n6bnYn4das8tXn74OwH/8rMNDZ+Y5vlSIdQ0A/+1R8Uw8/MQV3njPUuy//5NfucDDT4oz4rHn1lhf\\nr8R++W3uNvnNzzwPwPWtOo9+6xr3nJrT9vsOOi8//LFv0R+49Dt9fu0TT/EX3/ugtjUchF//5HO0\\nvCr6px4+z598V/xJ08Zu01cm/Oc/eIE33rtEMhFvMLK23eDrz94A4LNfvcgfe8MpFsvZWNewsdvk\\n4196CYBHnrzGD77jDm1746BnEuAL3hnxlaeuc/HyDoVcvKNtB67Lr33iKUAUFh5/+jp3nhifZOrE\\nE+c2fIbpkW9c5o0PxJs0dbp9/slvPEanJxQan/zyeU4txF/c+b1HLnB1owbA5x+9qPXeOOi5/NAn\\nnua5C9vkMkkee26N3/r0c3zvW89qW8c4fOulLb7gKRNevLzLw49f5sE74y2GP3thm//yhXMA7FTb\\nfO6Rl3nrg8diXcNh4qBiE+hzlbyGYN0kTjNGUnk74/y1Cnu1DpYFm3stvnU+fnncje0Gl9drvO7e\\nZd5w3wqX1mqHIsl6+mUhf3IRF8Bh4NHn10kmLL7nLWfYqbb5ytM3Yl/DE+c2/f9+5FB+/wZXNup8\\n5+tP8q7XnuT6VoNHn1+LfR1feeYGvb7Lg3cs0OsP+K3Pn4t9DZt7TV66WgHg2Ys7sUs2XdflM1+7\\nxFwhzavvWmSn2ubaVvzFqY9/+Tyd3oB3vPo4AF99Nv7n8oXLuzxxbpP7zsxzcrnAHz15jaub9VjX\\ncGmtyn9/6jqnVopkUgm++swN3EOQYz36nNiPS3NZNvdafP25+CVAf/DYFVzgNfcs0esP+MzXLsW+\\nht/50kv0+gPmSxnWd5tci/l5kJCy9l5/wONO/J/FY8+vc2mt5ifOT760OeUn9OAbIzLqZy/E3/Lw\\nxLlNrm7WefcbTrG6kOPxF9ZptnuxrqFS7/D7j1xgrpjhzGqJ5y7uUIlZSlxrdnn0uXXuOFbi73/g\\nbZQLaX7nD1+KXVb90S+9SDJh8RfeKxR1nz6EM+JTX72IC/zEDzwEwBe/cSX2NRxVaEncHMe5AMzZ\\ntn2Xbdsp4AeAz+n4XYcF2S8iq7ZfOISH6uue7vetDx7jjuNC9rNdacW6hs29Jje2G5w9Jn7/4078\\nidv6bpOLN6o8dOci3/VGwXJdWqvFugbXdXni3Aa5TJIHzi7w4pU91mJmkTe8pP1ND6zyA++8C4BH\\nnoo3UHddly8/eZ1kwuIn/+RrOLlc4IXLu7EHyXJvzBcztDt9zl2JV6e/U21Tb/V44OwCb3uVSJqe\\nOYTizvlrFYq5FH/5+x+ilE/z6HPrsff8ySLGD7/7Xt73HffguvDVZ+J9Lr95bhMX+J/fdTdvuH+F\\ntZ0mF27E3xf86HOiwPTX3/86EpbF52O+N9qdPg8/dZ3Fcpafft9rWSxn+fK3rsW6PzvdPo87G5xZ\\nLfKj33UfAN84F3/CUm10eOnqHscWRXvBV2J+JmF4Tv3U+15DwrJ48sX4z4j+YMCTL24xX8qQzSR5\\n9mL8faiykPPWB4/x7a89Sac74LGYE+kXr+7R7Q347jef4V2vO4nrEvsa5B3+wB0LrMzned29y3R7\\nA7ar7djW0O70ubZR577T87znDae5/8w8T53fYj3meObKeo2V+RzvfM1JHrpzkecv7R5ageeoYRZX\\nyTfbtv0l4C8BP2Pb9pds2/5btm2/z/uWvwr8FvBl4D85jvPCrIs9KnBdl2+8sEE2neS9b7tDVGcu\\n7MTeUPvY8+ukkhZvvH+FZa9nZCvmxO0Zj237jted5M4TZZ6/uBN7Q+1jIwns8cUCmVSCKxvxJm5X\\nN+ps7rV47T3LvPv1pwD46jPxsl1bFXG4L83lWF3IU8qnY38ebmw3uLIhWOC5YoYTSwVanX7szf+P\\nPisC5B/9YyIwfCrmpEk+f2eOlXjN3csAPB2zMUevP2Bjt8XJlSKpZIK32KtU6p3YTYTWthtYwN0n\\n57j/7AJA7BfwFe/33XNqjne8WohBvvZsvPvz+lady+s1XnvPMneeKHPniRIXrldjraZf3qjR7vZ5\\ni32MbDrJPafmaHX6sTILVzfrDFyXB84u8Pp7l0kmrEMxznn6/DYu4u564Mw8z1/ajb3wubXXIpVM\\ncM/JOR44O8/L1yuxG8acu7xHrdnlTfevYp9d4PpWI/b34caW2J8nl4u88zVif8ZdBL7oFXLuPlnm\\nrQ8ew0IUWuKETNyOeV4Fi2UR1+1U4kvcrm3VcYEzXg/wWzx54kvXKrGtodroUGl0Ob1SBODbvDP7\\nuYuHa4B3VBA5cXMc53HHcd7jOM5djuPc7/33Bx3H+bj39T9yHOfbvP/9c3VLPnzc2G6wttPkNfcs\\nkUknOb6Upz9wqcZ44LY6PS6v17jv9DyFXJqlebHBt2Pc4DBM3F5zzzJvvH+F/sDl+Zg31zdf3MSy\\n4I0PrJJIWJxeLXFtsx6rPE5KXN54/wpvuH8Fy4JnYg7U5WUrk/ilcpbtSjvWavqNbVGVu/f0PACr\\n3gW0sRtfIFBtdLi4VuXBOxZ48wOrpFMJno45cbu87iVuqyUWy1lOrxR54dJurEH6+k6Tgetywusv\\nfP19KwA8f2k3tjWAYMSX5nKkUwnmCmmKuVTsstFrm3Xy2SSL5SyvvmsRyxJGPnFCytHe8qDoH7rn\\n5Dz9gRurOkD275xZFQHR6ry3P/fi259yb5w9VqKQS/PA2QUu3KjGLkuTZ/br713h7V5g+FjMycJ2\\npcXyXBbLsnjdvWJ/xn1WyWD49fct8yqvjynuAPn6doNsJslCKcPKfJ5yIc3adrxnxEXPmfuO42UW\\ny1nuPTPPuSu7sbqeysRt1U/chIR2J0bG7Yq3P08fE2fEncdFr9XlGM8pWdg75Z1Tp73/vxHzM3FU\\nYSxaIkD2dL3uHlFJX/KqInHS2es7YoOfXBYP9GExbuevV5gvZTi+mOc+L1h/+Xp8EqRmu8f5qxXu\\nPjnnO2GdPVakP3C5EWNweMH7Nz9wdoF8NsVdJ8q8fK0Sq6XwVqVFPpsinxUN9ktzOdrdPo0YewVk\\n4UA+jyteQWFzL77eS3nx3HVyjkw6iX3HAlc26rFWka9uiItHBsgP3rlIpzeINUi/7j3/J5dF4iaT\\n6TjtndvdPjvVti9HsyyLkytFNnaasRVWev0Ba9sNTi0XsSyLdCrJsYU8VzfrsRY1vnluk8RIgC5N\\nYs7HWMm+ui8gWvUMIDZi7I2WAeAdXkAo34frW/GysOeu7DFfzHB6tcib7l/B4uZeL93odPtUGl2W\\nvLPy/jNif8rENi7Iz/7USpFX3S3MOOJkuwYDl7XtBieXCr5Bzcp8jq1KO1YV08W1KovlrG9q9ob7\\nVnBdYh3vI+O6WxK3WnyxpTwjJOMm22AurccX18k1SMZNFh9vxHxGHFWYxC0CJMv0au+QW5oTmyvO\\nwFBWHqRb31I5/jW0Oj22K20/ILrLc8N6OcZKtnNpl4Hr8qq7hu5PZ495FaIY5ZIX16qU8mn/oH3w\\njkX6A5dzV+NjN2T1VmLRfy7jO/S3vMr9spewDRm3GBO3jZsvntdKqeLL8TGgVzZqZNNJfzzHKe8C\\nirPv8ca2Jz9aEr+7lE9zaqXI+WsV+oN4kqYNLxA5vjgcU3JqucDAdWOrqK9tN+gPXP8zAPF51Fs9\\n3wVWN/Zqbc5fq3D/mXm/wHS3l7DEeV7KgsKpZZm4xb8/L61XsaxhUCaT+rWd+NawV++wU21z14ky\\nlmUxX/IYlsu7sTF/kkWRRS75fF6NWea/sdskmbBYKuc4s1rizhNlnnxpM7ZYYnOvSa/v+gUmgOX5\\nPL3+ILbPYq/WZq/W8dklGCoUnnwxvv5LuQ9lwXOx5CVuMd7hUuYv92c+m+LYQp5La7XYCl3DxK3k\\nr2GhlDGMmweTuIVEtzfg+Us7nFwu+JWyIdsV3+aSl9yJJXHpZdJJyoV0vGvYlqyfOHALuTQnlgpc\\nuFGJrVIm5YivvmtoVStZjrgql41Wl829FnceL/kVQ2md68QkS2u0ejTbff+ZhMNJ5rf2yTVXDkEq\\neXmfHOy194rELa4+t15/wPWtBqdXiyS85+GEF5ze2I4vOJWM84mRgOi+03O0u32urMdTuZTn1LHF\\n4RqkSuB6TIy4HwSMzG2TQXJcvXZPvrSFi5BSSxxfzFPMpWJl3K5t1lmey/msvEzcNmPanwPX5fJ6\\njRNLBTJpMbfVr6bHGJRdvCHe81Hr/Tc/sIqLkN7HgU3vrJSF33w2xdJcNnbH1Y3dJsvzOX9szHe9\\n8TSuC1/+1vVYfr/83E8sDwsrK3NSqRHPc3nRY4FHn4dTywVWF3I8/fJ2bOqAjd0Wi+Wsvzdk8TVO\\nxu3Kxs1nBMDZ4yVqzW5sks1rG3UsuCmZP7FUYKvSpt09vMHoRwUmcQuJF6/u0ekOfLYNRpmN+ILT\\ntX2MGwhp3HalFVtV5PpIQ7HE3SfnaLb7sVXTn72wTTad9GVgMKT2r8SUuF3aJ/0BuO/0PAnLiq3f\\nb39/GxyOhHer0iKZsJgvCbmJrBzGWdG/ulEjmbD8vXF8Mc/KfI5nL8RzAd/YEgyPTBxhuE/jdOa6\\nvt0gmbD8zwDgvtPCHCQuuaT8944ybvK8uBaT7EWyTKdHGbeY1/BNzzXxDSOJm2VZ3H1yjvXdZix9\\nNLVml716x+8XAXFnWMS3Pzf3WrQ6/ZvOyuNeUh9nT5N0FL3rxHCm4Zu82WVxyQS39249s0+tFNmt\\ndWjEZPDV6vSoNLp+Ag/wtoeOkc8m+aMnr8XCzPuS7qVRxi1eib3sbxtl3CzL4vX3rdDq9HEu6y/A\\n9voDtqstVkfO63I+TSppsVONJ7asNDpU6p2b7i6AO6RcMgapv+u6XN2ss7qY9xNYGCb2cfc+HkWY\\nxC0kfDOOkcTtMALktTFB2fJcjm5vQDUmB79r+3poQDgyQTzyn+1Ki+tbDew7Fkglh49yIZdmeS4b\\nG+N2aaSpWSKfTXH3yTIvX6/GMo9ma1/1dvS/4zr0QUglF8tZn2nKppPMlzKxBYaDgTj0T3lOiiAu\\n4Nfeu0yz3eelGBIW31FyhOFZKGfJpBKxsQquK3o8jy3mb9ob952Jt89tyLjdLJWE+Bg3v9F9n1Ry\\n9Gu6ce7KLscW8jcxjzDs74rjvLy6TwIFkE4lWJzLshFTgCz722RxDaBcSJPPpmKVSkoHwVGGZXUh\\nH+v4El+dMHKHy88mLtZNMq2jiVsuk+JtDx1np9rm5Wv6+5r29+LCsOC3FRPjdumGvMNLN/39671+\\n1GdjMBrb2mvhujd/FpZlsVDKxhZb+r3Zx25+H2RsE0efW6XRpdbs3nROwTCxN3JJk7iFxgtXdklY\\nFvbZoTRvvpghmbDYibnHbWUhTzIx/Aj9QD0mueSNcYybDERiOPClxMi+Y+GWr51eLbFX78RiQ3/R\\nZ9xuPuzuOzPvS4N0YxzjtjgXr9Notzdgr965qZgAwrluu9KOpXq7sduk0x3cUjGUfW5Pndd/AY+T\\n5iUsi2OLedZ2mrEEhZVGl0a758vQJI4vijERL16JR8K7viNGAYwmbkvzOTLpBNdjCk6vbtYpeD0S\\nEieWC1jEk7gNBi71Vo+FcvaWr8nEIY4zYvhc3rw3Vufz7FTasbDRl73A746RwNCyLE4s5VnfacQ2\\nY/DiWpW5YuamZwKEDXtchk77jZxgpM8tpr0xdDG8+cyWQXIcowlubNWxrJvl1HEnblc26xRzKb9H\\nXUKen3HEVPsdJSWWylkqtU4s+9Pvb9vPuMnELQbG7Zq3hlP7Ejcp+Y/TdO6owiRuIVGtdygX0mQz\\nQwo3kbBYLMdXFak1u9RbPb9vRkIyf3E5S45a+ErccaxEMmFxPoYK8q6n+16Zz9/yNWlzHYd89dJ6\\nlUw64Ut+JBa8xuI4ksfRGW4SsrE5LgnvdvXW5BFEUDBw3VgSyHFsFwyTe8mO6oS8gI/v25/Hlwq0\\nO/3YgiG4uagC+CZCW5V2LEzw2k6Txbks6dTIeWlZnFgqcGO7ob0XttsbsLYj+g1l/ykIJnh5PhfL\\nWAKZBBRzqVu+JgPFOJ6J/Q3/EisLOVziCZLX9rkhSxxfLNDru7GcVZVGh+3K0JhkFEsxFrvkPT2a\\nLMjP5tpGzInbvju06BnoxDGT9fp2g9WFPOnUMBwdSiX1Pw+u67JTabEyn7/leZCS/90Yesz8z2Lf\\nvbFQzuJCLEYtkoG9NZbJUMqnYzHOkaNJ9hcd5Z+vG8bNJG5hUW/1/ENtFEvlLLvVeKqW4/rbYHjY\\nxZG4jbPwBUinkpxaKXJ1U78DkQx25ouZW762FJOjYqfb5/pmg7PHSn5zt4R0j4sjcRvHuMm5WXEV\\nFGTgt7QvcZOJ9WYMcknJXJzel7jlsylymSS7Nf2X39ae6POTibuEvHji0OivjXFzlJCGMboDdX8U\\nwMKtazi1XKTTG2gP1LerQn50bMz7cGqlSCUGVl4Gv+PuDWk9HkdQdn1TNPyPmtVAvM6S8t85t+/M\\nlnfZjRh6QH2Z5Ii0XSJOefl2pcVcIX1TH8+pFfE+xMe43SqVBCFfBf13V7vbp9ro3tTXBUKuWcqn\\nY0nc6q0end7gpjYDiVQyQbkane9LAAAgAElEQVSQZieGe2P9QMbNG8Idwz0uP+/yvrPKsiyW5rKx\\n3J91bw2lfWtYnsuRSiYM44ZJ3EJh4LrUW92xldOlOVG1jKMy47sw7Uvc4hxLMM7CV2JlPkenq7/X\\nblLi5hvGaL6A5ZDjs/sSBYg3cduqtLAsWCjf/F4szuXYqcYzhHtczwaMBIYxXMLDGTTFW742X8yw\\nV9e/Pzf3WizP5W5J5OO0PZcB8jh5ngySdPc1yURgf18XDCvZuu34pcRpsZy75Wtx9bnVmwczbjKB\\niSNxqzS6FHIpsiOJAsS7P/fqHYq51E3sCgwLDGsxuK5K06o7xiRui+V4Cn6u67JVad9S5MplUqzM\\n5+JL3PbGSyVlkaGmeX8OE/lbz6nl+RxbMZitbY9hPkexUMrGEtfJJHV/ErsQ4xDuSUWm+WKWdrev\\nXalRO2ANiYSQVN/YbsQ6f/MowiRuIdBq93BdKOZufajjnJklZ0HdwrjFOJZg2FB8a4C8GlNF/6Dq\\nLcQnG5UH+rhDv1SI5/IDcfkslrM39TyCYILjMqzZP8NNIs4hv5t7LVLJxNjPY76UpdboamXFO10h\\nhdz/HkC8tucVz6VQMjqjiEuGNJxTNWZvxFTUkGtYGvM8HIvpnJIOgePujVQyQTGXimWeXK3RoTTm\\neZAyubgYt3Hn9fEY2Whpw78/WYFRozG9z0TVO4f2y8phyATHIVPc2G1SzKUo7Hs249qflQnF15V5\\nYbZW0V3cqR58h4MoMrU7+hOWar2DBZT37VF/rE8ciVuzSzJhkcskb/maLLbpLjJJxm1coev4YoF2\\nN552g6MMk7iFQK3lVU7ztz5Q8gDWfeDDUIe8X4I0F6NJykGsHwwDQ92BwF6tQyadGHvIxGXUIqUD\\n86VbD30pN6g29R4y/cGAnWrHDzpGISu6cTRX75/htn8NcTDBO5UWS+XsLb0KIHT6LnpZHvke7Ddo\\ngXhtz+W/UUqeRhHX7C5pcV8eE5TJJKauOTCU5/G4oExWsnVX0w+qIEvMFTPaAxHXFQYppTF3V1xK\\njV5/QK3ZHRuky70Rh1RSnoXjiitxSeyHLsC3rkFKrHUHyAPXZXOv5UunR1GOOXEbl8wv+7Pc9MYR\\nfnFnzGcBw89D9x6tNrsU8+lblBr+ORWTVLKYT4+9P+W+1X1e+gqFMeelVK2sx+hAexRhErcQGFYC\\nxvW4xRcg7x1w2CUsi4VSJhZaf89LWMYddrKCq7uSvVdvM1/MHBCkZ7Es/cGIlN7tdycDKOXF3+lm\\n3LYrbQauy8q4CnJMklG5DriVYVksZ7HQHwzJ6uy4XgUQUg/Qe/HIZ35c4iZtz+O4dPykaSLjpncd\\nlbp47sexfkPzA71V7EnVdGneo3u47SSpJIjPqN7sanVdbbb79AcupTF3l7xHdLN+8vXHBemFXIpy\\nIc1GDHtjq9Iim0lSyB5sFqNblibPgHHnxFxRfEa6E7e9Wodub3BLTxWInuCEZWlP3PYakxk30B9H\\nbE9g5WGYuOlOnGrN7i19XaPriuMOP2gNEF8C68s1x5yXqyZxA0ziFgqN1sGVgLgqdSBkUIXsrX0C\\nIPXYHe0a4KEU69b3wh+6rPHAHbgu1UbXD8b3I5VMxDL/RCaw49aRzyZJJvRffn4v0ZgLeDGmS0eu\\nY66YuclBEMRnMVfKaJetSkOBgyunIjjY09hgveknbrd+FpZlsTyXi8U8qFLvkj/gjCjn02TTSe1S\\nSck0j03cvEs5NqnkWGZDVpD1BiKTpJIgEhndTHDN+yxKY85rKdfUnShMYldAnF+bey3tIwG2J7Dy\\n6VSSciGtveAnTZT2z8sCKOfjSaSHhla33l2WZVHKp/QzbrXpjJv2e2NKj9tiDM6SA9cVSdOY/Tlf\\nypBKWtoVTIOBS6PVo3RAgUkm1zrvT4Bas0c+m7ql7QPguBfjrMc0F/aowiRuISArAeMe7MUYqyKV\\nemes/AiEZK8/cGOTOBxWRV9UqN0DgwAQlaqdaltrILArNfpjGDdx+aVjS9zGVU79w1ZzUNbt9dna\\na42VzoJgpHeqba3279v+SISDexUAdjUalGwe0OcnsTSXpdXp+0UgXag2OmOLKiCey5X5nP7ErX6w\\nXFNWdfVLJdukU4mx1dtyIUPCsvRLfyZI7AHmY3CWrHms30HV9HIh4xfjdEGqE8axKyCq6f2B3pEA\\nrU6Peqs3trdMYqmcY1uzoZNM3M6OS9w8xq2q+fMYstHj34tiDHeXZNzG9qnHNJphe2qPm1Rq6Ps8\\nGi3hn7DfzREgmRCjhq5v6TXlaLR7uBws6Y7j/gQONACEUcbtle0saRK3EJBBxv5GXhAXYippaa/e\\nDgYutUaX+QOCsriqyJVGh2w6edM8O4l81rPy1dhDM8lRUmJxLkd/4GpNWiq1NpY1nlUAYkrcxls6\\nQ3yudTe2m7jAqTEuoyASlv7ApapxHbJoMq7XD4YXsF7G7WAJFIwEIxoLPJKNHldUkViZz9Fs97Qa\\nIFQmyDX9HjfNBgw71baQ6o5hVxIJi/lSRjsbPUliD/FI42oHWGwP15Ch1tAr1zxI4i9xLIZq+vaY\\neZf7sTQnDJ10ntuX1qsszWXHfh5yv8RlynGQRLCcT1NvdbUWPiexsItz8chWd6ptyoX0LUoRCV8q\\nqbHAM21/nlwu0Or0tb4X/jl1UOImYwnNsWW91T1wDUvlXCzs41GHSdxCYJI5iWVZsdjGVptdXMY3\\n/EM8hwzgBYbjNxfot/INkrgtx9DftVvviMp94tbAEMRBXG/1tAZEExm3mHTp172BzyfGuIzCqHmP\\nvudyKuPmSz309riNm+EmsRSD3Xij1WPguhP353C2nr69UW10SSUt8tlbAyJ5hkomSAd6/QGVeufA\\nwBTwe4J1VrJ9xu2AKvJcDKy4L5U8KHErpHHR+3lMchCE4fmlN3E7WB4oobvPrVLvsFfrcMexW8cR\\nwLAIqJ1xm+CIDCKAd93hAHkdqNQ7WNZ4pqmcT5NKJrQysK7rsl1tHfgewGgxXGPi5iXp46SSMHTv\\nvq5xhtm05NHvEdd4TnV7fTrdwYFyzUTCYmU+b3rcDnsBtxOmVU4Xyln2ah2tFarqlKplHI20ruse\\naOsssSqtfDVtcl8bP0aiKBGHYcxercPChPdBHsR1jQHRxm6TVDIxVq5ZyKVIJiztjJu8UA5k3LyL\\nUWej+bDJ/PDcwTb3WizNZQ9M5OMwi5nWSwT4RjY65czVhihqjGO7sukkqaSllXGTZ+C4WXYSC6Us\\nvb6r1SSl3upiWZAbY4YBI6y4xkB9mlQyDmZ+WGwb/3lIxzidBiXbUxwER7+mq7gySSYJQ2nxYdvg\\nxzESoDKh8GlZlt/uoAuNdo9Od3DgnQFib1joVTHJfmDZ37gfJ73B7Ne29M33m5a4ZTNJcpmkVsVK\\nfYKPhMSxxTz1Vi+W+bhHFSZxC4FJwwlBGEEMXL3SPN+F6QAZlBzArLM61Gz3RH/ZRCmW3qGuQRg3\\n3TbXrU6Pdrc/dhSAxHAkgL5DZmO3yepCjsQ4OZhlxWI3Lhm3cXP9YFQiqJNxk+YkB1SQcymtcmY5\\nw22cMYmEPydKYzFhkqOkxEoMs9wmsfKWZVHMpbX2uE1jFCCeQle91aOYS4/dnzDi6ljXaU4yRSpZ\\n0J88BjEnAb2MmywcTUzcNPerX1qvAgcnbn7CFEOPm2Ud/HnEMYd0r96ZGEcszWWp1DvaZm/Kou7i\\nBAY2lUxQLma0KjV8xu2A/XnKu1dvxMC4HaQMAKHg2dPY41abQo7A8Jx4JcslTeIWApI1OYjGXYxh\\nLpBvCjJVKqnxAp4wI0pCt0HJsNH94AN3SfNAct9RcgLrN2Tc9Fx+jVaXeqs3ViYpMVfIUKnrdRq9\\nttkgk04ceAEuxjArarvSJpdJkj+A2bAsi/liRtvF48+xO6C/DUbnC+pNmGC846uEL5XUlLi1O33a\\n3f7EoEy3+cHOFAYW4pFB1VtdCpOCoUIcUsnpPW6gl3EbGlodvIZsOqmXcQshldTGuK0Jxu2O4+MT\\nN9/lUzvj1mKumCGVHB8G6mbcOt0+rU6f+eLB59RiOYuLPtnqtFEAEgvFjFa3bn9/HrA3ji8VsBgW\\nSHWgPuWMAFEor3nD43Wu4SAjJzCz3MAkbqEwTfISR/XWl0oexLjF0OMWRIq1KqVYmnpoAjFumiun\\n8j2etIaSZmtn35hkAsszX8rQ6Q1odfpa1jAYuKztNDi5VDyQVYijx22n2mJpLjdWmicxXxJyZh0X\\nsLx8JyUr0sFN5/tQmeDU5q9jTu9ZNWT9Dg4CSrmU34+nAzLwnsi4yX4mTeel67rUm72JFeRyLFLJ\\nyUGZZGd1mgft1Tueidf4sMOyLFYXcqzvNrUFyNtTnBRB/wDsy+s1spnk2MHXEuVCRmuPm+u67FQn\\n93/qTtyGccT04qu+xG3yKACJhXKWtpdo6oBU5Izr9QMhLV+ez3FNJ+PWmiynBlHo0jm6ZNgPPFkq\\nCa9sZ0mTuIXANMmLlCnqHOg6tM8d/2ALOVhCa+JWbUxOHmGkv0zTgbs3Yf6LRNnTpusKRmTyeJAR\\nBQwPYmkOoBpDY5LJGn3QF4hsVlp0ewNfh3/QGpIJSxvT1O70qbd6Uyun88WMtnEZ8lLPjXFalUin\\nEsxpnhM1aVSHhBw+rMt4wA9EpjBuLkJ6rQPTenhgZM6hLvlsb0CvP5hYQZbuvFpdJb0ze5pj3J5m\\nqeSk8xqEQUmr09cmLd+qtLxZkweHPpId1dF/6bqyyFU4MI4AwZbXGvocHWtNwZpMurt0J26Thm9L\\nDNlPTQXg2vQ7XHxdLzM/jXED0YZQqXe09QVPc5WEYSyh630IwvodWxRxxit5lptJ3EKg3jx4vgQM\\ngwCdzbTT2C7hbpmJRyo5QeIgN7+uQ6ZS71DMjR8wLJGwLPLZFHVNgeFw+Pbk4BT0XX6THCUldM9y\\nu77p9bcdMMMNxGexWM5qG6bqjwKYIIECvSMBgiRuIMZU6JwTFUQqmUomyKaT2ubJTZPFwbCqqmtv\\n+APZD7HHrRGgggxCLql7jls+mzyQ7dI9kqDbG1Bv9SaelaDXoMR1XbYr7YkySRgmbjr2Rrc3oNd3\\nJwbHIAoewuVT196YLiOOj3GbXgDWpVAIuj99RloT0yR73A5i3ECMBAB9zpLTWHnQb/AVhHGTZ4ju\\nAfVHGSZxCwjXdSfOl4CRHjedUsnGdDmWbnfLaXJNGDa46goM9wJUb0FcwrrWIAdRTupxk4GrPqnk\\n9MRNN+MmL5KDjEkkluZy7NX0NJr7owAmBCKA7wCqY4hoyysQ5DIHF3dAJBI650RNmp82ikIuRaOt\\nZw1BzqnhEG59yaPF5PdhQXNfcj1Awz+IPVptdLXJRsVQ2wlyTc2BaTWAfBf0GpRUvd6caWdEMpEg\\nl0lqcRqV7PJBfbgSZT841XNm+2z0hCS2pFktMpzrd/BzOewJ1rM/mx3vzB4zsmQUuhUKtWbXLzQf\\nBJm4rW3rTdyCJE26jFqGBoATFApeYVSXbPV2gEncAqLT9SplEx5qWY3QKpWsd0inEhOr+gueu6Wu\\nQ78SQCqZSYvqrg7GbeC61JvdidUpiWIurS959M1Jpl9+usxJgthb62bcpIxlUvII4hJ20RMky9ec\\nZP0OIw5+GgLUoIybbrvxqpewTKqcgghGdO0Nv8dtIhutT5IG0Gj3yWWTB45mgFGnUc2ByJSK/lwx\\nw8DVI+F1vYHsk56HXCZJJpXQdkYE6UkGvT1NNV++G/De0FDUkIF/YUqiIO82XQYlvuNqIKmkXlZ+\\nYi+u5j71oIl03iu8NHWdl80upUJ6Yn+2bvO7erNLNp2cqGKSRWpdIwGmjdwCod7JZpJ+ofSVCJO4\\nBUSQSkAmnaSYS+md99EQ9rmTNrjPKmhax1AqOfkSLuZTWqqWrXYfl+mHLQhWod3ta2F5/B63ieYk\\nescBVBsdUsnE2CHHEroTtyBmGAALRX0yiyDFBBg+Mzr6qloBq7e6Z7lVGiIImJSwgAhGGu2eFslm\\nJYA5iW6pZLPdm3pGCGl5VttZOW34toROVlwUHQcT+2csy9JqiBHErAb0vg9yzx9kLjaKYk7P3dUI\\nmCjM6WbcAhj3FHNpLPRLJSc5Q5fyadKphLYilwz+81NUEtoZt0ZnaiFat2N4vdWlNCG+hdHh8Jok\\nowH67ADymaRh3AymIwiNDKLir6vHbTj4evoaQF9lpuJX9Cdvcl1sl18lmxIMgd5+hb1am3w2RSZ9\\ncKCey4hBwzovv7ni5ErdMBjS9zzA9KCsoLFqWQswogJ0J26ScZsmldTMuDUmz0aSKGRTuK4eyUk4\\nqeThJW4gChu6nEaDNPzDsB9Rh5FSkN4VEOeErrEhgddQ0JewBGVXwCv4ddQX/AJLJTVL7IPMOEwk\\nLAq5lEZJ9/Re3OEQbj1Frka7TyqZmMgywUgcoeHe6A8GNFq9qXtDt2N4rdmbek4NC9GHW+jKZVK+\\nzPWVCJO4BUTQB2qxlKXZ7tHWEAw12z16/cmDr2HogKRLslltdCjm0yQT0w+7ekt934bcsEEu4KLG\\nA3e70p7qYmhZFqV8Wksg4roulUZ3ai/TvJ+4aXIHm2LzLaHz8qsGTNx0Vk6DSyX1MW69vjCBCCYH\\n01fUCMKAFn33PvW/33Vdmp3e1Eo6iGBk4Lpakvkgzfag19XRT5qmyTULaXp9l2Zb/d0l+xinm0Do\\nkwg2vf1ZCHRviHWoPifkezs9cYunx22atLys0TRnmtOpxGI5S6XRpdvTE1NNk63CSMFPw1lVb/Vw\\nmewoiff1ZEKPrLvbG9Du9qcmj7oLCvVml2zmYBMliXw2qeWcul1gEreACFo51TkXyK9QTesT8Cv6\\nmqRYAY1BSrm0qOgr3mDNgPIGgEJOj7tls92j0e5NbO6WmCtktAQirU6fbm8wtW8knxV9PLoGTwd9\\nHgoaA/VqQEMOKSnVcej7UslpiZsclaGBcav7fTxBGDc9wSmIiz2TSviN5OOg03G13e3jusGKOzJg\\n0rEOee5MGsANw89LR3EliNU4jDDzOpPHKfdnJp0kl0lqYR6HbNf0QN0/qxQ/E02/x22aJE1vj9tu\\nrU0hmyI7QS0CoshUa3bpdPWw8nJ80STIeXebe+rjmWanF0g6q7PgF8RREkRv15ynDlC+hoCKsnRK\\njC7RxcLWW11KAZRUuUyKXn+gbRD4Ucf0d+gA2Lb9S8A7ABf4Gcdxvj7ytQvAZUDu9j/rOM7V6Ms8\\nfMgLeFrV0h8JUGlxYoI9ehQEaeYFWJ4XgeGWhoNOVvTPHitN/d7ReTjTApcwCHUBZ/WwCtIUZHmC\\nKYjEXCnDpfUarU5vqowuDIL2jViWxXxRT+U01PMgEwUNZhTVZpdU0pqaNMlAXkdjc1Cp5EI5g2Xp\\nKaxUAwbpMJQa6/g8KvXO1OTRl0pq+P1DZmP6GVHOe+xGs8uxRbXrCCNTBD29XVHWoPruGvaIT38u\\nRaFL/fsg74BgSg15Vqk9J+TrTUvcdA9ED1psG7XjV/1MVJuTDXMkpOnVxm5rqnNxWDTbvakz3GBY\\nANaSuIU4sxdKWS6vV3Fdd2J7RFgEmZ8mUdakIAIxBPz4FJMzGBZHW50+pfwrj3+K9C+2bfvdwP2O\\n43wb8AHgX435tj/uOM57vP/d1kkbDPtR5iZYv8MwadJRHfID9QDSAsvSk7gNJWnTD31dl58MyoJJ\\nXvQ418lB0tOkkjA05VAdlMnqfJB+prlihj0N/StBiwmgV5pXbQi55rTLLH8EpJLJRIKFUlbLbKJ6\\nQFkc6Ksi9wcD9mqdqWy0PB90jANoBGQ2YMTdUkMVeeg8G1TOfDQSt8NaA4j5oNVGV/lZFZTtglHH\\nU9V3V7DksZRPk7AsLWNL+oMBtUY3WOImZd2Ki0wD16UWQOYPsLogYqoNxSMiev0Bne4g0PMg5ZRN\\nHUXHhtwb09+LhVKGXt9V/lzuBTQYA1EorjXV789ur0+70w9U3JHF0Veqs2TUVPW7gf8K4DjOc8Ci\\nbdtzylZ1BHHVGzJ8emVyxWfVS9w2dCRNASszqaQIDHUMO5YzRFYWpjNNMlCvaZApQjB3sIKm5FG+\\nt5Ns+CV8C13ViVtAeSDAYjlHr+8qX8NeAGcwCb1SyWBBQDaTxEKfq2QqmZgq/QG8hvu28v5PPwgI\\nUL3VZdyzV+swcN2pbHQmndBm3BPGiELnDLO9eodU0poujdMoUxyaBwVLHnX00ATtEQdRiOoPXA39\\nZWHMSfSoA4KuIZGwWJrLsrmr/g6vNUVPVZAgXe5h1bFEs91j4LohGTe1iVvQQhsIiWAqmdDEuAUr\\nyIM+g5Khw2eQxE0kj6pNrdZ2ps+klfBbHl6hzpJRdVsngMdH/rzh/V1l5O8+ZNv2XcDDwN92HGdi\\nhLK4WCCVmr6BDgOrq2WubzcoFzLcd9fyxKp+3zPsqLV6rK6W1S7Ee+3TJ+anvvaJ5SLOpR2Wlook\\nAwSSQfGV59cBePW9q1PXcHxVyOdSmZTS9yLhPScnjpWnvu6p4+IwsJJJpWto9cXjfPfZxQBrEF93\\nFa/B9Z6HMyfnpr7ufXcs8o0XNmh0Xe5XuIYLG6KgcfJYaeoaUl4w1Ael70O316fV6bM8nw/0uoVc\\nim7fVb4/u32XQi7Ys35itcRL1yqkc5lAyX9gvLgFwKnj05+Jk8fE1xMptc+lPAPPHJ++PxfnclSb\\nXeWfxSVvKPzKUjHA/vRqjsmE8nXUWl0W53IcOza5rum6LpmUCAyVP5fezXvXmYWJr31XteN/v+o1\\ntHsDMukkp08tTP3eY8tFOLdJKptWto7V1TID794+fXKe1SmSu5OrevaGXMOZU9PXcGq1xLde3GRu\\noTC1Fy0Mat09AI4vT98bd58V2uF2T+152dmoAbC6VJj6uhmPiaooPif6W+LuWgx4b5QKaTq9gdI1\\nrK6W/Xv8dIB7/LSmWKLPGgBnTk6PLVcWC8AWmXxm6jMcBi9cqwJw/53TY6rlRSHbzRUy6uPs2wCq\\nGm72ZzI/B3wG2EYwc38K+J1JL7Czo2ca/KxYXS1z5douNzbrPHB2gc3N2uQfGAxIWBZX1qpsbFSV\\nrmXN+939Tm/qa88X0gwGLude3vLlmyrw/HkRGM7nU1PXMPBcoK6vq30vNnfEgdttdae+btcborqx\\nVVe6his3RI0i6Q6mvm7SY1UuX9tj46S6QOTamlcn6fenrmGhILb6My9tcGpR3fNw+ZoIApK40z+L\\nnmgk3tlrKv0spIwnm04Eel1hftBWvj/rTWHIEeR1i16V99zLW9xzSp1Y4fq6+N1ub/oZ0fP2xrrC\\nvbG6Wub8pR0AcgHei/lihvNXK6ytVabOnQuDG977MOhN3xuDrqii39ioKX0mXNdlp9LijuPlQK9b\\nLmTYrrS03Ru99uTz0vXeh+vrat8HgN1Ki2Ju+p0BkPbqjBev7JJV8Eisror3f2dPFPGa9TYbg8mm\\nBr2u2Btrm2rfizBrmPdY8+df3ODUFKVPGFy8sguI93n63SXWePlGRen7cOnKnrcGa+rruq5LNpNU\\nHlNdXROvZbnT7y6AXFqY5qg8Kzc2qtzYCB7Xpbz9cPHKLmeXpjNTQXFNvhcBYgm5Py9c2SE55RkO\\ng+df3gSgnE0Gjy3XqqxOkaHfrpiUkEalYq4hGDaJU8B1+QfHcT7iOM664zg94FPAayP+niOB61t1\\nXODM6nQDhmQiwdJclo09tbQ+DN2HgsigljRJHC6v10glLU4EODSKupy5WsEsleFmgxSVkD2PQXrc\\nhgOwFcsbAszKkji9Ip7da57kV90agkss0qmEYBUUS/OqAV25JPLZlDZXyaDmM3J/qu4dGTqUBXH5\\n1CMjlv+mIMY9S+UsA1e9hDeMgVFJk7tlvSXGtwTZG6Bvjlq10SVhWVN7R6SkW0dfVb3Vm+pYJzF0\\n2NTzTASRxvn9l5p63IKsYeimqDaWqIToZ9J1Tsl+/SBSScuyOLaQZ2O3pXRvhJHOgoglGu2e8v0p\\nz53DlErK2CTIWeWfl4ql5Tc8lUQQAxq/x+0VOsstauL2OeCHAWzbfhNwzXGcqvfnedu2P2vbtnwC\\n3g08PfNKDxFX1r3+ttVgVa+V+Rx7tY5yC92g83hAj7PkYOBydbPOqZXi1BluoNGZyx8HENzWWUdw\\nWi6kSQeQ9857h61qG9+gvSsAJ5byWJb6xM03XwjQ4wbCyVD1Z+FffAEKGuAlbh21F7DrCs1/LkCi\\nAMOEX7VBieyXkOYKk+C7SrbVXsDD/s/pz8RiWc9Mu6DzskBf4rYXom9Efp+Yo6Z2fwiHT2F2MQm5\\nTIpsJklF8TnVHwxotnuUAjyTMCxEqe73a7b7Xl/l9LtLV8EvzBr8fnnFfW6+oVSQnuB0klI+rfyc\\nqoY8s1cX8rS7faV9qGGcZ8X3pej1XV85ogrhXCW9IrCmWCKYOYmenuDrWw3SqUSggt+oq+QrEZES\\nN8dxHgEet237EYSj5E/btv2XbNt+n+M4ewiW7au2bf93RP/bRJnkUcdVT2oShHGDYaVMNdtVa3ZJ\\nJqxAB418+DcVrmFtp0G3N+BswPdB3+XnJW4BGt2lKYDKNbiuy3a17VslT8OQcVN72AYdBwCiufrY\\nYoFrm3WlCUuY6i2IZF51g7dfvQ0QiIC4gF1X7aHf6Q1w3WCVdNDIuHkOjYEYN12jMiQbHYhx0zPT\\nLoqrpOoK8p5XFZ8PYDcOw32sw8QoSHEHxFm1q/j3+8YkARlxf4aZBsYtKLuizxE5+Bq0MW4hgnQQ\\nBZitilq2K8zdBXqcJZudkIybHMKt/P7qkkomAvUx6mPcOuSzKTIB1lDWUOgauC7Xt+scXywEkszr\\nHOtzOyByj5vjOP/nvr96cuRr/xL4l1Ff+6jhimfAEFRnPlopUzl3pNbsUgxgeQ56GDf5PpwJMLML\\nhhe1armJpMeDDOBOJcUQYJXJQq3ZpdsbBGIUQATzmVRCQ0AWbICpxOmVIt94ocFevRNodk2gNdTD\\nXcCFbIobWw2lc2iiSCiRL/cAACAASURBVCUhXBA1DUFnuEn4NtsaGLd0KkEmHYBV0Ja4tcimk4Ec\\nBBc1MY9hZFDJRIJiLqXc/TYs4zZqx6/q3uh0hXHPfDHY3lgoZji3s0d/MAikqgiCesDhvhLlop6K\\nfrPTCyTNg9GCn3q1SOBkRdNoobDFtuW5HJfWatRbwd+/aRiqJIKtYdRZ8t7T80rWEGY8BIyod9q9\\nwMWYIKg1BSMe5D4sFdIkE5aWxC3o8zBk3NTFMzuVNp3ugJPLwWYFygLpK9VV8pU3uS4Crm7UWJrL\\nBh4iratSVmt2Aweny15gqJL1u+w1/AdN3PzLT7EEqdHukU0nA5sZFLJq5XlhGAUQGn3Zv6ISQYeo\\nSsjCg0q55F69Eyp5LORSDFy1VsLVZrjk0U/cFK5BFhNyAd3f5ooZkgnLnweoCtVGN9A8OxCW4/ms\\n2qIGiDNnaS4baA2LmuZEhe1fKebTGhi3iImbwnX4I0OCrqGUxUVt0iTn9AUN+vVJJYMXasTeSCkd\\nB+C6bqg1zBUzZFIJ5SMBhvM/g30e/hBuhXt0OLssuFQSFDNufr9hOMZNh9Q/6PuQsCzmSxl2FUol\\ne30x1y/oOSUlnVWFcd31bc+dOmDi5jNupsfNYBxqzS67tY5v7hAEq/Ne4qbwwO0PBjRavcByk1wm\\nRTGXUnrYyl6/oFLJVDJBLpPUJDcJbo9czKWUVk63Q/TwSCyUslTqHWVzu/r9AfVmsNllEqdWxKF4\\nVWHiVql3QlUfdfQchhkKDyMzYBQmLK128JlAIC7gxbL6IdxhggBQX9RotXvUW73ARQ1fKnmIjBsI\\ntlb1UFm/4T/g/tAxhLsawsAIBOMGantoJLsSpO8SRDBvAVWF70O316fXd0Mx7KrvjU5vQH8QfA2W\\nZbE8n9MilcykE8HVAfPqi8Bh+5KHiZu6Ncget6CMm/zcVBa6ev0BzXY/1Jk9X8yyW2srO6uqjS4u\\nwQtM8jNTWei6vhncmARGGDcNJmO3A0ziNgUVj5JeCGE5KodTq3SWrLfE0MygjBsIueTWnjpt+sZe\\nk3w2GYrlUX35gdisYS7gQi4tBn4O1LwPMtgO2uMG4lDsD1xl7GOl3gk8RFVCtbNkrz+g3uoFrtwC\\nFLNe74jCy2+YuIWTQSlN3CTjFqKgsFQWF3BfkaVytzeg1QkXBOSzansOZUV8OWBRY14yj9oSt2Cf\\nRzGfpj9QywSHlkoW1PfC7oXsZ/KdJRVKsWR/cRBTLRBsV6mQVso8NqQRRcDCCnguggrvrrDSPBAJ\\nS73VU7qOSqMTOJGHYb/8tsI+1GqjE7ivS6xBnCc7Cp9Ln3ELeEbIoqPKeyNsAiu/V+VZFWb4NogE\\nNmFZvtJFBa5vy8QtqFTSMG4GEyAvnTCJwnwxQ1qxxMHvEwiTuM3l6PQGyhInIdUMNzOjkEsrNwZp\\ntnuhLj/Za9NUtMllJT1MMj9XUhuUycAqTNIkG7xVXcBhm9xhxMlQ4TNRbXSwrOA9NPLQV5u4hetx\\nAyG1dV3Yrap5JqIEAYVcSmlRQyZuQRm3RMJioZTR4iqZTScD92nJgphK+Y9krYLuj7mi+t6RaggH\\nQRi6w6pMHqPcXXOFjNL3ISwDC+I8aXf79PpqCitR1rDi97mpKQK7rku1EU5ir0sqGbSvC4S5Vipp\\nKT2zZTwQuMdNg1SyFlIyCqMyQTWJm19gChjPJCxRWFEpp5bPlmRWp8G4ShpMhLx0gva3gSdxmMsp\\nlRaEZRVgeBiouABdV7BFYS5fEElTq6Pu8ut6cpNcGMZNcaN5LWTPBow4SyqSIO35iVvwCziTTmIB\\nbUVjKvwm9xBrKGqSShZz6VA9j6CW9RsmbsEr+iXfvEfNBSjPqjDPpeqixqZM3EKw0YvlHLvVjrLk\\nEUSQHIb9lH0bKvtxZf9nOhXsmp3TIJUcGlEENCfx7cbVMRvS9CXMc1kupL05eIeXNA1dkdXsjTBO\\npxIr82olgo22mC0Y5sz294bKYluIfn0JMX9TYeLWCtnjllN/b1QjnNmqJZuyEB3mmSgr7glutHok\\nLCvw/ZnNiFjmleoqaRK3KZCHdlj3uVJBME2qeprCOnPJNYifnf3hFpVHN7SrlG+rrGiDSUOJsFJJ\\nUMfy1ELaz4P6IdwyuAsy+0UiYVlkMknaiqpUfjEhRPVWh1tbtdEJVdAYWglrMCcJkbjJxEJV1TBK\\nEKC6iryxE04qCcJZUvUQ7kZIVn5Y5FLJuLVD938mE5baxK0erv9zrqherinvnyAuoxLybFVlOR4l\\naSoqvjfCyndh2EetSro6VEmEY+VB3Znd7fVpd/qhzmwQLtIqk6Zmu4dFcKlkXgfjFtJdE4ZyX1VJ\\nbCUk4waisCKKAGoKKw3PtyAoA5uwLLKZpHGVNBiPhmTcwiZuubSYFaVoc0WRQakcLOsPiQzYYC4h\\nG9JVHXbDPoFw5iSgknGTSXQY+axaCVLUgkIunaSliHELO4sHRpJoRftiMHBptHqhqrcycNLDuAX/\\nPFTr9GtRqreKGVCfCQ4jxZpTO4Q7rHsfjLCfihKFridRD9o3AiIYKRfSSpMmybgFXYccE6LDnCRc\\nQUFtUaMZ4bxUfW+EGQovofq5jCJvV13c8R0lQyQrIN43lcW2ZqdPLpucOpheQkdvtF8EjiKVVMW4\\n+e63wYtMqp/LRqsbStUG3vNgetwMxiFKjxuMDHVVnSyE2OCyGVxF4uZXTUMybjJQV7XBw1r4ijWo\\nvXhqTVEdCmqBD+plULKgEPa5zGaStBUddmEd62D0s1D0PHSEaU+Y5zKv4QKOIpVUrdMfMsERGDfF\\nBaZCCGXAouIh3N2Q7n0AJa93V1WPW9iGf4m5YkapDX7YOYulQpqEZbGrSBkAwzs0zB5V3YcaqcdN\\ncXAatc8OUDZjsBLhzJYmIuruz3BzNyXy2STtbl+ZmVOz3QsZR2gw1pJFjQiKEVXrCDvXD4ZJt6rz\\nstnuU8iGex5ymaRxlTQYD5mwhGXciooTliiHnR7GLbwuHdRdwLNIXlR9FvVWOMt1GDKVqqQ/MhgK\\n+1zm0kllPW5R+i5V97g1IlTS9SRu4QsKqhO3qn9GhOk5VHxOeUFAGDZ6SfEQ7ihyatX7M6ybo8Rc\\nMUOnO1BWSa42OuSzKdKp4GMq5opp5YxbNhOu0KWaVYiSNKm8P2F4VoW6u/JyFqpaWVzY57KQSynr\\ncRsyblFjCUUsbEg5tU5zkiiKEWXmJLUOFuHucX8NCj6LXn9Au9sPzbjlMiljTmIwHo3IjJvagChK\\n/0pRoflB1MRNdUW/FeUCLqi7gIUrV5TETV2/IUQLAgAymSStTl/JiAh/uG8Yxk1xj1sUi+2jw7ip\\nDU6jOJTJy1pV5bTW7JJOJcgEtPkG9Wx0FDm131OliO2KIm0HmC+ofS8q9U4o51lQz/rVmz1KYWVQ\\nso9HlVSyI2d2RZDYHwHGTV3SFP7MBrWjEaKYWoHac1vIqfuhDIwy6QQJy6LRVtcHG0nenlGbQO7W\\nOxTz6XCFFcmIKygwRdkX4vuT9PoDZX12txNM4jYFvlQy5MUjLypVEod6BEr9aDBuahtpZQIYyjFO\\n4fvQ6YqDIqxkVM4+Uc24Relxc10hJ5sVtQiMm5SbKHseIjFuGgZwR0jc8qqlkq0IM4GkBb2iRKHW\\nCN+roNoGP0ogoDqBlcFd2MLKMImdfR2DgUu12Q3NrhRzaf+cU4FaBDdi6RqsinkczuyKwLgpdpUM\\n81zmMkmSCUs52xW2oFD0HB1VmK35PVUhzDBAbeLW6Q4YuOHk1JZleeNT1LE8s7hKqkpgd6otX/UQ\\nFCrVIlFUVGINasci3E4widsU+OMAIjNuiiQvzS6WdXhSjyizeECHvEFWTkMEZUcggbUsi2I+pU52\\n04xWpcrKA1eBXLLa6JBMWKE+i1xW2PiqCkR8diVEspBMiJ4NlRewZM1CSSWz6qqWMEykw87LApQx\\nLLVmJ5TzLYwkTYocHaMEyKVcGgt1Caw0wwjT6wcjiZuCz6PW6uK64dkVlaYc7W6fdrcfml3J+c55\\navZoJIm9YtXM0Bk6XLJQzKXUxRGRGbc0LmrUAdJZOYwZBqhNWOSZmw9xXoN4flTOIK01umTS4RQK\\neYX3RqPdo9MdBJ67ecsaVHwWEe5wUO+ueTvBJG5TMKzoB99YoFamCOLQL+XTgR2QxBrUST38hCVk\\nIHIUpJLFI5C4yZ9RybiFsTKWyHkXhIqRANVGl1KIIaogemhUym6iVuvy2eShM27KzUk8mWI2RBCg\\nMmkaeLMew17AhaywwVfGuLXCB2WJhDdUVrX9fET2UYVUMspcP1CbsERNFPKaGLfD7HHbrLSwLFgI\\nyW4U82n1/WVh3aEVJvN7EY17CgqLwPVWxGQhp3YkQa3ZiWTSAmoSFmkItRiacVMn84/a9mEYN4MD\\nUW91yaaTJBPh3iqVjo5ApL6qZCJBPquG5YkyRBX0mZOElZukkpaS4HSWxE1ewCrkJo1WN5SVsYRk\\n3JQkbs1OKCMMiVJBXQ9NFKmk/H7V4wAy6UTgIeCg/uKpt7qhqvkwOr9s9s+j1e4zcIWsKgwsy0ua\\nDpFxA8E+KnN9jRiMzCnscYt6Vg3nl82+P6JK8/weGoVGFHC4/WVbey2WyrlQvURyHfVmT0lfcrUp\\nzoiw8YzKsSFSKhlWwptTmrCI0SNhE5ZCNqVURlxtdn1H26BQOYdUjmAJ+z6oNEjx7/Cw5iQaWh5u\\nF5jEbQoanvV7WAwbm2d/qHr9AfVmN7TcBERlTUniFsH4AI6GO5hlWR7bdXjBEAxn+6k4aOqtcHOq\\nJFRJJbu9Ac12+CGqAAvFDNVGV8nlF1lm4fVsqAiGQDADYWSSMMK4KbPi74V+LlPJBMVcSknS1Ihg\\n+y5RzmeoKtifIAJkGM6HC7yGQpp6S81Q2agVfX8AtgqpZOTETV1/djWC1TiMBGUKZxxmUgnSqeAh\\nj2SvVdyf3d6A3WqblflwkjQQn8fAdZUEybVGJ/T8NLEGdUlspd6hmEuF+ixArXpHOtguh5QIqpzl\\n1u726XQHodlPleMA5PsQ9qzMKTQnid7jplaxcjvBJG5TUGt2Q/cpgFqp5F6tg0v4qghIed7sAWqt\\n2SWVTJBJh6zUKZZKNiIGRKV8hpqCJHpWqeToa8yCRrMbKXFTJZWMMnxbQkqFVLAKUdmV+WKG/sBV\\nav8etrCSVXjx9AcDmu1e6P4yEDI2FQxo1GRFrCFNs91XYpqzsdsE4NhCPuQaPGdJFfvTLyhE7HFT\\nyLiFZWFVSiWlyUpUxk3VwOXdaju0RBFE4VPF+7BdaeECKwsREjdFn8fAdak1e5HObJWzUPfqndCJ\\nPKiVzw6LOyF7u3Lq4hl/dEqEYls6lVDyPmz7UsmwPW7qelCjOEOPfr/KnsPbBSZxmwDXdWm0upEY\\nN5VuULs1sbkWSuEvnmI+Ta8/oNOdLSCqNbuUQ/YzgXoHv2pT9HaF7bUTgeHs1fSjkLi5rkujHZVx\\nUyPPizJ8W0L2NuwqmBUVtZdo1QvqN3Zbs6+h1aPV6YeuWiYsi2w6qVRuEuW5nCukqTW6DAazFXf8\\nQcsRkkeVzpLru02SCSt0UKZSptj05yyGuzvK+TSWparHLdozoXLWYjWi9XvOl2LNvoZub0Cl0WUx\\n4v2pouC3sSeKCavz4YoJMMp2zbaORku4QobtqRJrUJOw9PoDas1u6P42UMw0eVLJ5ZBntspZblHM\\npCSE1H/2e2OnGk2dMJT5K+xxC1uMV1hou91gErcJ6PQG9AfhLGMlpBuUikN/x6Ozo1UM1SQLon8m\\n/AGj2sGv2hAzR8L0EoG6quVsPW5qzGLa3T6DgRu6QgVDeUG7O9tzKWVtkRg3L4Daq80+cLkZscdN\\nSpY2vYBqFuxE7BMA8XmouPx8diWk7AYE0+QyuzQu6gUMQ+dXFZLN9Z0mKwv50GdEuahuJECj3SOd\\nSgQefC2RSFiU82k1iVtE6WpBpSwuojlJTqFjnN/PFDI4BZE0tbuzM8GbHsOzHEUqKYfDz/h5RDWK\\nAShk1TwT8rmej5BE5xU6jW75PW6HJ5WUn0eUuCqfUWOuJWPLsEUNHeMAwt7hqs2DbieYxG0CojaY\\nSxTzaSUyC8m4RZJKKjBJ6fVFP1NYLbaESge/WjO8SQuMBIazJrBHgHGTF1ckxk2ZVFJKoCIwbt78\\nnl2FUsmwe3TIuKlI3Lw+gciJmzqXtEj9ZYpmuQ0Zt2hSSZidcWu0etSa3dAySbEGdTPtGq1e5HtD\\n1QDsWXvcVDgIDpn58MZamXRCyQBuWZyJwriVFLU8bHrM/mqE59Jn3Ga8N6IaxYA6qWRUR0lQa3S2\\nXWkzX8yE7rNTadLiO3xGOC/z2ZSS3ujtSptSPh1qHAEImb+Fms8iapytKqa7HWEStwmIqr2VUOUi\\nuONLJaOYk8ghotEf7voMMixQ5+AnNPrdUEPIJfz3YcaKfrUZXd4wTNxmlbxEG74N6sxJZgkCFqQB\\ngwLGrdHukUklQju1qUzcZIN32OotCMmJEtOBiOM6YBhUz8p2DRm3GZLHGdcQtb8Nhu9DRQHrV2/1\\nIjGPIBI30e8323Mxq6vkYTJuIPrcVASnsp8pao84zF5sk8ljJHOSvJpEehbGTZV89igkbgPXZbva\\nCi2lBrUGKVF73EC8F53ebO6WYvh2O1LBMWFZ5LJqio5RDcZkHDhrTHc7wiRuExDFwXAU0kVw1stn\\nNyKdDWokgrPIA0Ecdioc/BqtnhgoGyVpKqi5gKU7WZhZWf4a/CBgtmr6kHGL0Hup3Jwk/AUsJb8q\\netya7V5oG2EYBlAqetx8uUkEKVYukxTS1xn3Rn2GgkJZ0RBun/WLJJVU0+O2ttMAYHVxBsZtxjW4\\nrkuzPVviBkNjj6iQz0TYdchEQQmrUBcDhrMh5htK5LIpJYzblmTcIgSoqiT2m3stkgkrUp966Ugw\\nbmqlklHMSXKKWJ5qvUOv74bubwO1Ji3y84gklfSNWqLvj2a7R7vbj7QvQBQdlTBu7Z43k9ZIJYPC\\nJG4TMGviNrRVnjFxq0XXhat4uGcJCkG8f/2BO3OfgPw3RLl4yoo2eb3Zjfw+FFUxbjMwwaqcDGcJ\\nAuaL6nrcokrSMukk86WMIqmk1+AdUSoJsyfS/h6N5CqpinGbfQ2zsl0+4xYhcVPl6Njpit5o2RcU\\neh2KEulaUxhrhWWjxdxSS42rZCO826pEXlH/55BxC8+wSBnbrGf25l6L5blc6L5LUOdQ7RfbItxf\\nyqSS3pk/H0E9ZFmWSOZnTBa2KtICPzrjpiJhkQXcKH3Jsmg7C/PnO0pGeB9Ancy/0eqRy6ZCz6RN\\nJRPks0ll8z9vJ5jEbQKiNk1KqKrW7VSFDjmsHhvUJG6zMm6qJA7DWXLRJaOz6qGrzW6ki290DbP3\\nuEV/LofmJIfHuOWzSTKpxMyMm89sRNyfq/N5titt+oPZCgpSKhmlmp5TUDmFYXEoSh/qnCKmqTYD\\n46bKVXJ9J7pUUlkCG1H6I+HPcpu55zDaeAjfWGvGIN11XaqNbqQzAsRZJZLgGY1BdhUwbjMkTe1u\\nn0q9E2kUAKibCVv1C5/hPw8hR7dmlgju+lLJaCxPQUG//NBRMvznodLZcibGTc5Rm2GPbs/Qmw1e\\nn52Cwkqz3Y18h6uaz3u7wSRuEzDrBayqUrZba0cKCuFoJW6zHnbSyTCSMYgCPXSvP6Dd6Udm3EqK\\nEvlZEjffnERBj1vCsiLtDcuymC9l2K3Pxrj5rq8R9+fqQk70O1RmW8dOtU0+m5opkZ41GJlNKqmG\\n7ZKMW6QeN0VJ08ZuEwvx2YZFIZsimbAUGKTIUQAREzdFYwmiGjmBeI5mnY/U6vTp9QehjUkkVMjB\\nQDBuCcuK1Fel4v6UjF+U/jZQF0fUZlBJWJZFIZeeuc+uUove4wZqbPClo2Qkxk3DqIyoPW4wmx3/\\n9gxuyCAY8V5/diVV1NFGMJzPO2sbzu0Gk7hNwOw9blJmEf3AbbbFjKiom0uFBX3Dr6RH73GD2W18\\nZ7l4VPSXzZrAppKi1+NIMG6zMjzNLsV8eHmDxHwpS6XemWl22KyuryveTKXNGeWSO5VoDd6gzlZZ\\nBnWRHFcVsV31Vo9MOhlJGaAqaVrbabJQzoa24QcRnJYLaWW9flELfrLINMuZLS3sI/cl51LUZwyI\\nZjEmgeGsqJmlcXtN5kuZSDJFFYnbdjV6ogDinLdQ0eMWfYQLiD06azK/V++QsKxIBmMwdFOc5bmU\\nidvyfIQeN0/+rEQq6Y8DiOYqCbMVw33vhBl63ACaMySPA9el1e5HPivLBTGneNZC9O0Gk7hNgIpx\\nAPD/s/fmsZZk93nYV9vd79u33qane2Z4ZzjDIUWJy4SUKYmyJcpMbCkyrFiwIsFyFvgP2UYAy//E\\nCJxEhhFYgBEDgcHAAqIltmzYBmxFCwklNLWQI0pcZsi5M5zumd5ev/Xut/aq/HHqVN3ufvfeqrO9\\nbk59gCBOL/edrlvnnN/y/b6Pj+LQ51CUBMQoGdJDqsYwYA5kZqrcQ8UciRMVP+B5DryzfgAZNOdN\\n3Hhm3KjsL2+iQMQX2J/DWquKOOZLFnhVX1NlyQG7QInjBZi6Afflx0s5SX3cGC7AVo2YPvPK4E8d\\n9g6PlgRzPB03P4jQH7lMNEmKlUaFv/PIydRIC10c7wTvWdWsWSSo4jgnRom4CvXHKwo6x+NwFPxI\\nR93hKHzyJ9FTTlVmymzgV5X0Ua0YTEUNgJwtRCCMPWkaTFysNC3mgl+9aiIG3/11yjHjVqsSgRQh\\nVMmJj1ql+AwqIGZv0GfI2pigcR3Pd+G4AWKw3+Gi1MKfNJSJ2wKIsAMA+CgOvFWRqmVA0/iCAFrN\\nqDGoGAISZtwYqnUVS4dl6lwdN3pYswTHFC0B3n48HTfTINL5vBWqqRugwfg+AJklAM+cG+8MKqXT\\n8QiU9LirloI6bnaQvOPFvxNd19CqW9zzn1MnYK6kA6S4MuLZn46PGFkHkWkNDQuuF8Lj2B82Z8Gv\\nJsBomMceAhBjCUCLMsziJAKokuOpjyCMmRSZATEdN95zCiCxBLcBN8d8NkAo0GEUw/PZqXHDic+k\\nKEkhIpY4HTowDZ3pWeiJQIoQqqTtMbOYRHTcaLGQtSBP5+x4VNOnvOyE96iXW5m4LYAIOwCAr+OW\\nebixXTyaphGvKK7KDN3gfBVkUTNuLAeupiXBKUdlhrcDCxDxCC+I+ALD9L1k7IBWDC6qpB9E8IOI\\n6zlQVbEBx5wbq/8LRUqV5Oi4nXImbiJmFQC+eSYg6TRxdNyiOCaJG8ca2g0r8S9jCwzTCjJjIAKI\\n8ZPLOm7nJ+aUddz4FJF57q4hJzUvTWA59gYtrKwx7s+GAJoibyIPkESah7pKhGI8ZtoqkJ2zrMl8\\nGBFKG2uyAgjaG46PdsOCxtj1I/ZG/InCeOox708R9wY9L1njOhFMKh72EJCdLe81SwDmk6TT6fwy\\ngI8DiAH8QrfbfXXm934YwP8KIATwW91u9x/yLvQ8kPllcdoBcLxUtCPBevEAVLZVxAbn67jx+tll\\nM27stFGe7gpN3FjFMIBZSwAfGwxecED2XrIedlWLT8aXt6ABZIUIro6bw7cOEYd+j4N2A4idcdvm\\noAg2aybuHU8QxTETjclOKC88gWEmUOIxPU+bs8AEPCjFv8koJsErTiIiOB1z0vPoOcUz00Qpp6wd\\nNxEzbj1O5TxdJzRFHoVNMR03E0EYwfMjJk88IhQTMyfRwIPCHBsrxf8+bxwBZMVKHn+/qRNwxVON\\nmpkaqrMiCCPYLnsSK6bjxhnXpTT/84slmiVVMj86nc6nADzX7XZfAfA3APzTh/7IPwXwXwL4BIC/\\n0Ol03s+1ynNCGMWomDozRVAoVZKx4wbw+22IStx4O25j24eha8zraNUtOB57RT+jSnLMuAmk3jBX\\nyhLTZ96fz9rpAmY6bhxebrzVuopFbAm4ErdEeIC1Iy4icQvCCI4XcnW76OwIayc2Nd/mWAPdV6zn\\nhMNhTE8xmzyygnd/iHgneIWU0o4bR8JCZyZZk/m6gBmalLHCEag3OentvOcUwE9d5fFwo+Blztic\\n9xYwI4PPuIYojhOaP8caqoTBFHHM+vGel3UBdGpaSGcpBACZlQ1PR5yXKtkuqZKF8GkA/w4Aut3u\\ntwGsdzqdFQDodDrXAZx2u93b3W43AvBbyZ9/4vBTn34W/+Bvfpx5kLZWSYxMORI3HrW4bB0m9wCp\\nhkzYoihEqUqObB8tDooDbxWZt5IOZEEMr9JovWoyqaQB5KA+744bb5AubB2cQRntKrDKW4sQJ5lw\\n+KdR0C4ya0BE9wbPjFuDcw0iOm4iCiu8qpKmoaNi6Vx7YyxAnATgKzpSqiTrTBNvkA7MvJc8glJ1\\nIijFSlPkpXTP/l3W2SoeD7dH1nCOhRXebrTrhYhjvju8QQVSBFCZW4zvhIiuvOOFqFYMdqEYWmDi\\niOsmnDRiEWrhTyJY3949AF+d+e+j5NeGyf8/mvm9QwDPLPvA9fUGTEa1I1nY3m5zf0a7UYHjhcyf\\nFYFsqsuX1pgvn3azgiCMsL7RZFIwCiLCZ97dYeBHAAg08jNjTeN6phMnwPZanfkzttYbAIBKvcL0\\nGbFO/h0X91aY13BhuwUA0EyD+TPcIEKzZjL/fd734c4poYlsbzSZ1+Al7zV0nf2dEPB9rLaqOOpN\\nmf++n9gZXL28ju314lTFkUe6v5rB/j7Y4RAAsMXxfWwk8361ZpXpM26dTAEQY13m/bnRBABUamz7\\ns3KrDwDY3mR/Dpf2yBkX6+zfR5jE91curmGVsRPbrFnwg4h5DXESjF2+sMr0GRf3yPcJnvcyebev\\nX91gOmf2ktlTg+Os1AwSU1zYYT8jNlbruHFviNZKnWluMX0fLq0xzz1uJ3vDqllM/46bRxMAwN52\\ni/k57GySu8uqsN09RwktfnO9wb4/d+n+ZLs3DnvkvV7niCM21uhZWcP2RoPpM+izYD2r2itkDUEU\\ns99dYcwVR+xuD+BU3QAAIABJREFUk3fKsNg/QzMPAQAXdtn2p51sriDmiy2fNLCXHR7EopQ9Vzrf\\nSzbU44bt7TaOjkbMf79eNTAYe8yfMUioWOPhFPaYrUFqJN/A7bt9puRvbHuoWAbzv8FOKq+9gc38\\nGUEYYWL7uLLdZP4MA2ST3743QN0oXmU6Tt5Rz2H/PhGRYObu/SHzZ0ymHjbX6sx/X0sCibv3+kyB\\nxP1D8nOjIGR/JxIK02mf/Z04od+Hzf591CwdEyfA/YMBDL34/jpJZiZd28VRULz6aU/I/u5xPIfb\\n9wYAyPvN/l6Sl+Le/hANhr1B17DaqjKvIQpI5Xb/YIijreIB0eHxGADgez7zGsKka3dwPGL+jH7i\\nEzUdO/AYK8EVi/g9sq7h6IQEVb7L9hl+Ir5weDJmXsNxf4pW3ULvdML0953k3jjuTdnPiD45Ixzb\\nZf4MK2E2vHunlwoaFUF/6EADMBramIwYhZBCcm/cuz/E7krxYsCdfbI/tThi3xs+2Rv3j9jeif0D\\n/ntDj8lzuMN4f945JGeEEYNjDeSsvHOvDz1k6zbd3SfFNi1iO7PjOIZp6DjliKkmtod6zWL++56T\\n7M/TCfNnHCRndsh4ZvtJR/2IYw2PKxYloqxUyXsgnTWKiwD25/zepeTX3pNo1ixMHJ+ZD217ISqW\\nzhRUUmQzE4wUBy/k46ULmHGjLfUWB9Ujpecx0k1EqINRqgqral0Ux1xDzQD/DI2IGbe6CH68SMom\\n4zsxnvqomDqqjDRiIVTJ1MONZ8aNrJ91j9L3mdVvcnYNrPSfTFWSgypJqcyc6rNVRn8mikbV4BMn\\n4bQDEOGPNJx4QqTfuYS16BnB8U5Q5T9Whc2U2s5ISQMyGjTr/uQV9gJmRx5Y96cAUatkVpHO/hcF\\npc7yCIyJUrYE2Ontmqah3eDzhCVxHTvLTYQBdzp+wmpbkuzNUpwkH34XwE8CQKfT+TCAe91udwQA\\n3W73HQArnU7n6U6nYwL4bPLn35No1S3EMTsP2HEDrqQJyDYYq/CA4wVcG9w0dFRMneugEzFc3eSU\\nMxaRKPAqGdpugCiOuQIiOozMKlDCq+YIAJapw9A1rndiOOGTGwdmgjLWxC2Zu2SFECEKGgQwSksD\\nWVDGGiTTeaZVHrW2Kt/co83pSwSIGXafuj5XcQcgZ7YfRAhCNiGlseND1zTmeSI6szlgtIgIwggT\\nJ8AKx94QIcBgC5ir4p17pIkbDxqcYjGjNHHjl+JnnnETUFih/p89RlErEV6svPOGwKxdB5+YE+s7\\nGUYRvCDisk6pCTABn3LOZxu6jmbNfM/ZATAlbt1u9w8BfLXT6fwhiILk3+p0Oj/b6XR+PPkj/z2A\\n3wDwnwD8y263+6aQ1T6BSC0BGJMFxwu5NhfAFxxGieEm7xrqVZOvgjzlHzJPVT4ZN/nE8VG1+Crp\\nWceNLSCiBxRX4mYJ6rhxBCPEX9DgOvT7YxfNmslkOk1Bu1SsBz+vf5pl6tA1jatqSTsBXAJGnEEZ\\nfZ9XmzyJG5+IkcNp3wLMdlfY3oc4jjGc8BkdA/xV/bEdoFk3mYWcahWiuMqauNGiCuuMHzCjWifE\\nZPj8BGumbsDFTgCyjgSrsJYQVUle8SCqKsmRRFcsA82ayWwjI8KLVYQv7ViAoFSrbsJ2Q6bijpsq\\nhfMrfPJ0xNOiI6dS93tNVZL5W+t2u7/40C99feb3vgjgFdbP/m7CA8kCg8+S7fF5jgB8iRuvSSNF\\nq2GlnlcsoAEET8KSJdGsynn8FzBdAytVUgTlhb4PrB1YEWqO9O/zJCz9sYcNhnmPWfAk834QwvX5\\nZPi1pCvCVb0VcPnxJgr0fV5tVZjneHjpmiI6boauo1E1mQMB2w3g+iGzITvFrF9Vm0H/YGL7XN0V\\nTdOw0mQ3ZU8VJTnOqYqpwzQ0rgB56gaoVw1mBV4gS9xYmBpRHMNxQ+6zkteeQYSqJO8ZIcIOACDW\\nKz1mquT5K3wCM2c2j9pp8l1ObL9wgeRx8tQzDQ0Vi68YftQfIggjrqL6k4T3xr/yHMFDzwujSEi3\\ni2eOhv4dVq8PirVWFdMkqGFBn/rxcFRweSWubQGVU9MgrX3WwFBIx40m8pxUSd5nwdOFdb0Qthtw\\nvQ8A3/4cC+h0AeSdZg2QgRlpaQEeTazfx3DiwTJ1rgCVNzBMgxHOILnVsJhnJmhAuc5oyE6RVrMZ\\nnkUUx5g4PldQCJAkfDjxmOazB2NaaONLHlt1i8tTjyRNfM+BpyvvJMb0vNTZLFlg7bj5MA12D1Rg\\nptPEmLCkVEmOjhtA5mhZYwkRbBEhM/sC5pJ5OsG2gMTNNMi4A5ctghOgUWO3eAKA3fU6ojjG8YBR\\n+OcJRJm4SUZarWMYbBbRzgZmAnWujhvfYUsNxPuM3PQ0IOI0UgXYuisijDspWo3KuVIlaVDIGgTY\\nAi4/sg6D2ci0P6GJPPtzAGaSeYb9mdGP+Naw2qpg4gTwGBNpXs8uYDZpYlvDaOphhcNjEeCnYmVC\\nFHxnFY9vV3pOcb6XPEms7QaIY3ZhEorVZhVhFDOdl0MBDAmAVNNZ2QkA6cLyFph4AmQRc9HAbNGR\\nncrcblS49ifvXHLK1BDQcQOAAUMskRUd2fcG7W71WBVCIWbmkOe9FEEhJmwRkzuB5aGLAsDeJqEk\\n7B+zqdc+iSgTN8lo8lRFBAxWA3xUSVrV4k3c1trkAmdVg6IJH1fixkE3cVxi3MlTIaOgalAsCUt6\\n4HMERNRv7LBnM/39aWLIztvZqCdGpiyUzb6ARB6YSeYZkthswJzvOdC5MNZ5IiEG3KkQRPG9Eccx\\nhlOfi4YFkNlLXWOnxjleCEPXuOkyrbqFMIqZzsuswMTZceNIpMcCOrAAn0DJUMDMI0D+DY4Xwg/Y\\nRFpsN+Snt3PMPdLvj1+sJtkbHFRJ3rlL3kDdFtQRT5UlGebcpi6/quT2KtnbrPcnQPZHq25xnVV8\\niZuYuK5ZZxdIieMYUyfgjqkubBKPw/3Tx9NSTAbKxE0yeOh5Iqois3+fiSopkJcOsKtB9UcuNI2P\\nelOxDFimznQBpwe+gI5bO1EaZbmE6XvEU8m+kJiG3jthO+hsN0CtanDJWwN8XYWeAOoswNcRFzE3\\nAswUNRj3xtj2UeOUn69zdLtoYM3bXaHzfjarXYdHZol4ugoAX0AkghkAZAIOLDOg9F3mLyiwJ26U\\nKrnK3XFj/y6oKmeDkyqZzbgV/y4y+Xm+AFnTNDRqJlMc4QchXC/k6u5QNGrsiZuojvgaB3uHV8UQ\\nIHHEeruKoz574jaaeFzCPUAmNMNG4RWTuPEUoR2PsG14CysXaMftpOy4lRAEnsAwq1CdX8dNOFVy\\nxNZV6I1drDQrXH52ADmwWS4/UXNdAJ+yJO248QTJ6+0qahWD+aCbOmIoo6lqHFPHjTy7851xE9PZ\\nWKMdN0altInDp2wJZPQllsQtpYwKCAx5Kvq8tiUUXImbAGYAwDdzKOq9XEnonkOG9zIVJxFAlQTY\\nzsrUN4zzzK5aBgxd42LN8CaPQJI0MSSPIwGCVhQ8c8m0I26ZfHd4WgRmYO+kVjachejttTpOhy5T\\nJziKYoxsn1t0jofNlTYFOO9xWoRmKYbzetlRbK/VYega9hkL0U8iysRNMngCQ1HdrschccvoDcUP\\n2ziO0Rt5afLHg2bdYrr8RFTqKGiAyzK7MRbQ5dE0DRc2Gzg4nSKMil88UwG+REBGAWYZbhYhVgPw\\nXX7CErc2Xzd6bPvcdBNd11C1DCZqnsjAsMERGNpuyH1WAnz7U1jHjSORFuERBXBSJQV4LAJ8vnq0\\nIMRbbKMiKWyJG51x4y8okKIje+LGe04BZH96Ppu/oJ0UVng74jwMBREqowCws1ZHDOB4ULzrNnZ8\\nxDGZbebB40CVzAor7MVw3rvLNHTsrNexfzJlmkt+ElEmbpLBVxWhhpWcHTcOc12RqpIA22E7cQIE\\nYcQdpAPkkJg6AaKo2AYXoUZFkQYjDFXkse1DQyYFzIq9jSaCsLgSE5G3FtNx4+nyZIkb33MgkuM6\\nW8dNUECUBsgMnQ0/COH5EVqctDiABJcs34UI6fdsDSah0BTcn3Eck46biACZQ8SoN3JRqxj8hssi\\nZtwEiJMAwGBS/MweTPhneIDZJJqh40bPbAFzya26xUixF7eGRs1CEEaFRYxEdsR5OsGOoIJfJnTG\\nMOMmiC2ywzEnPhLgcQgQ9VsATAq4jgDrFIBvf9L9JILFdGGzCdsNuNSZnySUiZtk1CqEZsESGIry\\ny3ocfNxWmhY0jY3eIEqIAiBVyxjFpXxTioVQqiRbl6dZt2BwVgwvblElpmL0AscNEUPMrF+dhyo5\\n9qCBn4qlaRqadZOJyiys49aiiVvxvTFO55nOj6YoQiFtdg1A8dkuz48Qx/wUKICvy9MbuULOKZ4Z\\nNxEqo8Dse8nWcePdm0B2VrIEp6LUb4GMqcFa8BPVcQOKz9qJpkoCrGqnoRAqM32vWITOSMeN/5xK\\nEzeGObdh8n1wz2fz2FQIiut4YplUVEvA3ZXNub036JJl4iYZmqYRigNDYCiqnV2z+BM33q6foetY\\naVaYOm6pEIWQxI1NLIYOmYuYVUirVCz0vKkn6KBLlJgKzrmlwZCABDY18GTsuLWbFSGGm62axTfj\\nxpmwrHJ1o8UE6UBGUyxKNxEl/Q7MBIYFg1MR5tsUrBQkPwgxtn0hiRuPjxt9J3gLCjQoK0qVDMII\\nEyfAioBEvpWyE3iokvzrYC340fdYRKGL/juK2rhkIkpi5uyA4s8hjmNClRTwHExDx0rDKnxeRlEs\\nxIsVIHNVAHDE0nGbium41avss5fiqJLssQx9h0SMn+xtvLcESsrETQFYJVNtQQOklqlD1zRGqqSY\\nygxAKA69kVc4MKRdOl5aHDAr7Vyw4ybwkGEduI/jGGM74JZ1BtgrVKJ8iQB2qmQcx+iPXSHvA0C+\\nU5Zq+sj2UTF1VC2+y69qEWpdn4HmIcLIlaJWNRFGceH5FZFUSdbAUJS5L8CeuGUebgISt8fADsAy\\ndTRrZuHEbSiICgbwBYaOwCIT6zshkmLP3nGjVMnzK6yI7IgDpFvVHxeLJWg8JeIO5+q4TcQIaxG2\\nCFts+XhRJfnvrotbpBDNqpT9pKFM3BSgmVT0i0qmUslW3sNO0zTUKgZjx01cJXutVU2rsUUgwsON\\ngr3jJiEIKFhFtt0AURwLGTLPlJjOr+NWY6Td2G4Az4+EBMgAKaywVNMnCW1VBNZaFSbqD6VKingn\\naFA2LZgsSKFKMrwTgJgCUyul5xULRtLEbUUAVZLDV2+SJm78z2K1VS1M4RWZyLcZvwtAnDgJwJ64\\niaRrpkUNZqqkyDOCrSMuorACEMVT1w9Tn9k8SO9wIUm0hWbNZLIEoFRJXnESgNC6z5UqWeenSvLO\\n4gLAxgrx1mMZN3gSUSZuCtCsmYjjLBHLC5FJU61qFP75ZA1iWupAlngVpTj0BVayWYUHhIqTMFap\\nRoKoeUCmxHSvoBLTVCD1J6NKFnsve8nMjQjqLDCTzBd8J0SY2lKstaqYOEFheWlRksoA0GCkrmYK\\ngmJUJQH2jpuIc4o+y/PsuOm6hmrFYJxxC1CxdFgm/7NYbVYKv5eTtJggYraMfAYTVVKgMAj3vSFg\\nf7IWHUV23Pj3p5iOWyuljeZfh8g5dYAUP4/6TuGCvCiqJMA+eymcKslQWEnHT0SMXXDoODyJKBM3\\nBcgMPAtW61L6j4DuRsUsVJ2ioBuBV1USyKiORTsLoiS2AXa6SdZx4w8CKpaBqmUUDkZEUaAoNldq\\nsN2gEDVOZAWZVYhClBUARVpNL7A//SCC64VCkmggq74WrRhOBL4TrBL0o6mPetXg9mcC2OceRVmn\\nAKSoUa+axRO3lBlQ414DwG6NMHH47SEoqOJpkcAs7X4KOCMMndA1mewABNK6eTpupqEJSaLTpKng\\n3TW2fWiaqLlkNgqvSFsEIEtii3wfIouvAKFLBmFUOJ5JqZIC4pl2whYpGls6XgBd4/fU4xJaEyhO\\nko0DlYlbCUFgtQTI6D8COm4Vg9kOQAO453iAGePMgsFpb+yiYupCLmDmyqlDZPhFyI0DJBAokigA\\nGbVSVJenxnAJy5hxKyrAIFIMA5ide8z/fYhOolO7jILzRKIUBAF2qe+x7Ql7DqyBocgZN4CNgkTV\\nF0VQoAByZrPOuIn6PlIFvwLKkiK7nwAJDlmokpRhIrTbVfjeECOBT9bA5glLJfB1Tv80YJauWTBR\\noPeGoI4bC21UZPEVmGUQFWTOTH0YuiakuMIaWzpeKMRTzzJ11CrFi9BA9g6JYIvQcSAWhsKTiDJx\\nUwDWA1dkt6tWMRCExYUHXC9EVcAGB2YOuoIVqv7Yw1q7KmQNrZRuUlycpC7o8gPYzFRFJwuUXlDk\\nsBNKb2Dsrog0QwfYKtmiTI4p1pqMHTdBCoIA+3zZ1AmEBUOs4iSZqqSgIDlJ3ArRiAUKGAFsKp9B\\nGMHxQmFnBKVCFbm70nkmUbS4hoWxHRSmpNF1iPFxS+izRdVOBXleArOqkmx3l5A1sHbcBCfzTQYW\\nU6YMLei9ZGRSDaceWg2L2wR8dg2FEzc3FFaEbjcsjGwWcRJC6RahDA2QeKLoOBBlzjxpKBM3Bci6\\nPMXpP7WKISRZqDJaAtDKjAjQ6u2wQHUmjmOMp76QwWqAPYmeOGJkhCkaNROuFxZKpIUnbtSYvcBh\\nl0pL1/m7CpZpwDS0wj5uIpNHgM1PTuRsGZDRZopWb1MfN4E0qCJJkx9E8IJI2HNgVa0T3nFrWAjC\\nuNB5KZIiSD+nqMqn6IICS1Ejpa0K7H5GcVw4YREppMQz4ya641bYg1SQBD7AXmwTvTdYRh5EzhuS\\nNTDORk99IfcnwC505niBsCIX6YgXK3IBYindACnaFWWV/fK/+hr+8W/8mbA1qEKZuCkAa2VGZNJU\\nY6SlidzgLFQs1w8RxbEQ/zQgq1qyXMAiEzd6YBW5hEX5hlGwKNeNBSqUkTUUn+NJjTsFHfosnaZs\\nXkJQZyP1qyqWuIm0A2ARi8mSaMGJwjmqSgJsQZloOlidIWmSVdwp8n1k3p/iAkOg+N5wBM6Is3Q2\\n/CCEL7CowUIPDCPSURDe9WO26xC8PwvEVKL3Rtb1K1bost0AK01Ra2Cb2RcZW7brFsIoLtyFnTqB\\nsL0BJAJ8XlgogbxzNGGaIz5vlImbArAM0gKE6iHqoKPVz/PsuLFcPPQwEFVJr1dJB7PIQSf68gPY\\n5qooj1z4PFGBKlWmUCZqDQYzVVJ4x61I4iZ4DawB0djxyfyKANpN1oEtQBkVTFtlpWuKn6sq7h9m\\neyFMQxci0gIALapuWYTCK5pGXCv+faS0OEHnZaZcV3xGXBQViyVxEz1TVaua0FCQtuqKTZhYbSpS\\ncRJhVEl6fxa5u8QWHdOuX6E7XJxVBpAVDouyJMIoFjqDCqAQXTKMSAIruuNWhKEQRTEmtjg2l0qU\\niZsCsJo+224orIJcY5BLDSNCgxLW9UsuniKHTEZvELO5NE1Do2YyXX6i1jD7WYXmqhyxNCiWd2I0\\n9VGtGEJU0gASUBSlSmY0xfPr8oies6szBMgACRrOs7siPIFlTdwEiuYAMyyJIombGwgrMAFZZ/08\\nRXNYun6OJzZIbzPO8dheKKzrZxo6qhWj0L0hOonWk7urkCCHYHqgaeioWkZh2qojOJlPGSsFvg+a\\nNAnruNGCfKE10ORRUOLGIBbjCJ4HZimsDMYeYoiz9AFmZvZzdv7Gjo8Y4r4LlSgTNwVoMbT1gzBC\\nEApMmihV0i9AUxTsvaJrGmrVYoc+nXURGRA161ahYGgieKYKYOPoZ7Q4sd2NIh0Wkd5lAKFTuV5Y\\nyIdGpJEqwEuVPD+BlDiOMbaDtDDEC5bnIDqJtkwdhl6sIw6I77jR4K5Qx03gPBOQ3RtFAiLRiRtL\\nIk1nZkXO0AAMVEk3EJYoAKQDWuTeEO0bBqB40VGg7ybrGoBZwRqx4iRFutHUFkFU4ZOlID+YiGWs\\nsBQdZai+AsX2p0jPS4o0xs3JIBLdgVWJMnFTABbJVtGc8LS7wiD9LmrIHKBKaefnvQIkF7CTX61N\\ndKIAsHH0Jw6p6Bu6mG2b+nbl7HjFcYzR1BNaoUqTxwJ0TfocRNADZ9dQRBBjIni2i2Xo30nEbVqC\\nBt2bDFRm0R03TdNIYaWweBD586I7bkWG/m1XXIcHyDpu4wIUJBoQiapks1B4RdrYABx2Ol4gLFGg\\n6xgXCNJFFzUA8n0wddwE3l2rzQoGE6/QLNEoSViEJU1MNEXCThCnDF38Du+NHABiPGmBGSoz0911\\nfh030ecUMEvjzdlxEzz2oRJl4qYAVBmyGD1PbIWqxiD9PpyQ9a4K8ssCgHrVYgoCxM6XkWHavBRB\\n0XST2c8qSpUUGQQUTRZIohALPehYBDFs1xf6PtSqBjQUnOMRnLAYOqFiFdkb/dTwWSztplgxQXxw\\n2irYEQeIUm2zZgqTlm43iiULURTD9UOxVEmGhOVkSALDzRUxJuD031OMKhmiaokrrGS01WJzyZ4f\\nie2A1i24PhEcyQMZ90azZsILovxrkFB03FipwQ+iQt3ow76NiqkLiyVYKJujqTi/SYDEVIQdUGR/\\nkjNb1P5ksU+hfpNrgrpdWeJWoMCU3l0CE7eCReC04yao8KkSZeKmAKSKbBa6eBzBNEU6DDssYPA7\\nmJDNtdoUt7kaNRO2m58aJ9LwmaKoJUA2zyTu0GfquNlih3kzA+x8SZNoYRIgq+gXCU4nAn3DgBkK\\nb4HkcSI4cQNIcFUkEOkLvoANnZjcF+kqiO64ASRAnjpBIfrscOIJM2QHind5UiqY0EShUmgNAHCa\\nJG4bggKiqkWKjsXESQKhLA3qoVZE/MB2xdLByDqKndkykqZGwdmutAAscH/SYLs3zOc5GccxDns2\\nttfrQrxYKZr1/JTNMIowdQKhbBFN04gfa4Hz8mSQFFZWBRVWKsULwJSuKSqJzqiS+c+pvgSqZOZL\\nmzOeEazSrRJl4qYIrYL0H1swTZEGd4MCPlGiNziQXWJ5qyIivXgomgWFQUQbdwIZPz7vGoIwguuH\\nwuaZgOzdytuFFT1YDQAbK+S9pAHnMoQRMRgWKSMMJCIpBWfcNAieHSm4BtpxE5W4AdQY/vwEGABy\\nVsbIHyCHUYSx7QtTagOKC2KItiMAZkyfC3XcXLQbFiqWmHuDijkVnaER+xyKd9xSKpbQvVHsnZDR\\njS46Gy3atgSYObNH+c7ske3D8ULsrNWFrQEg/6a8Z8TEDhIhCrFBelFa98nQgQZxnSZd11CvGoVm\\nggdjWpAXlLjVGaiSj0XHraRKlliCZs0ih0dOXrhoHvJai2zSfoGO2zBJ8lZaAhO3ghTBqaThaiA/\\nP34qoWpZ1E9OtHcZUFyMQsYwL6WMnORM3ERLbFMUTtwcInwgal4iW0N+HxopiVvBQES0jxtQPGFJ\\n38tz7LjRrrXQWVzaccsZEMVxjNOhgw1BNCyKetUoplrnip0tqyf7rEgCe9izAQDbApOFoibcMrrR\\nRe/PbNRA3Pex0Sbv12nOjhv9LnbWxSZurTo5L8NoOW00DdIFUiWB4nHd6dDBWrsqjNINFNcNSAvy\\nwqiSxe0AekMXGoBVgbFlUZXskipZYimaNRNRnN+kkL5UoqrI7UYFmpYFe3lAk7w1CR23vBVcWwZV\\nsqBxphxxkmKVU9GKkgDLQUcvP5Edt2JBgIxgCKC2BAUEa1xfeNevkZwRrp/v+8gGvMV9H62aCc+P\\n4Af51iCj49Ys2GGh9O9VgR0309BRrxq5q8gyhJyIEJGWW258ZPvwg0gYTZKiUbVy31uiLWSAbNSg\\nSOJ21BefuBWdORRtGUI+i5GuKbCwUrTjdtibAgB21hvC1gAUY86kHqiCpd9pXJfnDo2iGL2RK2y+\\njaJRK6YbQFlXojpu1YqBiqkX7ri1mxWhCezjMPqhCmXipgjNgvx4GoyImtvQdQ0rzUraJs+DtKUu\\nsKLPXjEUL7OdNyCScQHXqaddXqqHYA83gMw0VSw9f8fNPv+Om4xEASDvVxznT2KnTiD0naRroJ+d\\nB3TGTeScQPGihi+cMlo0QB7SC7gp9gIuQm+n9ByR7wRV2MzbcesJFj6gaNRMuH6Yy9hWtBoyRatu\\nFUvcBjRxE/csaCc4d7FNQje6MGPFpWqr4hLpojNusjpujQLFz7GEuwso1oXtj12EUZwmvqLQqBbT\\nDRhMPOiaJnS2q92wUpXGZYjjGP2RK/TeAmYL0ec3+qEKZeKmCEUHm0V33ABCqeqP88v4DiceDF0T\\nLsAA5O+4SREnqbNRJUULYjRqJiY5nwPtPoikSgKkSpV7mDetUIl7J1ebFRi6lnvGTQY1DyhGG6Vz\\ndjK6fkD+vdEfu9A1Tej30SxK4U28y0RSRlsFZ4lGifqtSHESgJzZo6mf67zMOm5i34l2gYSFFj/E\\nUyXz7w0Zs35ARuGNct5dRzKokgXfy8fBRoZ2SkWel2utKjQAp6OciVvS/RQ941akGC6TKknWsHxv\\npIqvgoRJKFJLgJwJy2DiYqUpzhYBIJ3MIuwEL4iEzrcBMzP7BVhttYoBy3zy0iCmE6XT6VgAfgXA\\nVQAhgJ/rdrs3HvozPoA/mPmlT3e73fyybd9loB2C/HMb4tu4a80K3r0/gu3mU+UbJEptQud4ClcM\\nA2iaWHWwIoctIOcCBhIj08KD7mLXUKuauQ24M7qJwARW17DeruafcXPldNyKBafigyHyecVmDvsj\\nF6utijDZdWCmqFFgb4hOYFk7biKLXGQdFQThCJ4fobrk/KH0HJGzXQAJTu8dTxBG0VL/RmmB4cze\\nWFYkSM23BXZ4AJLMxzFZQ57i1VHfRrthnWsneOqK9ZsEWGbExXfcTEPHaquSu9h22LNh6JrwTlPm\\n5ZafKim6u0LPyzzsnVRRUnRHfIapsWxvxHGMwdjDhc2m0DW0GxbeDSK4Xrj0rEzNtwUnbvWiBty2\\n90TSJAGjtgfyAAAgAElEQVT2jttfA9DvdrufBPC/APilM/7MoNvt/sDM/71nkzaAYW5DRuKWbJR+\\nDmXJOI7RH3upqIkosMy4NaqmYBnhokPmPgxdQ8USW5kpYqaazrgJrhjWKgbDMK/YNWyu1DAYe7mo\\nWDJk+IFifnITCSqjs5+X552QtT9ZlPNEd4GZaeXCE7dELS3H0L2MWVyA7DWisLn8nUitAERTsQp4\\nRaVUScEdtyJJUxTFOB44QrttRdcAkHtD9BlRdDbadomn3rKkvyjW2zX0Rm6uDuhhz8bWak34Gop0\\nH2XQ/B9YQ453QrTHIkWRYrjjhfCCSKgoCJDNvefxcpNhvg3MehUvv8PjOMZ46j+RNEmAPXH7NIB/\\nm/zvzwP4hJjlfPeiKMVhOPFRrxqwTHGVMjqMmkegxHYDBGEk1MMNmA1O89NNRAdDLJLKjZrY5BFI\\nhCCCfEIQY0mzXfWKAdfPx48fTT2Yhi60+wkQaleMfNSbadp5FNztKlBQkCmQAuTruE0csj9FKkoC\\nxQKRICQmx49Nx03CjFvedcjwcQOKFZlEm/tS1AsUFOhzEH1GtAoYop+OHIRRLDxxK1rwE+03CRT3\\ncZu6vvD9CZDiQBjFGC1RqZ46Aca2L1yYBMi+j3ziJGSdIg24yRryxxLp/pTUEc9zd8mweAJmTLhz\\n7I2eBA83oJgdgO0GCKNYeBFaFVh39B6AIwDodrtRp9OJO51Opdvtzu7iWqfT+XUQOuW/6Xa7/2TR\\nB66vN2AKTFJEYnu7zf0Zl/YIzzvW9VyfN3F8rLVrQn42xeULqwCAKMcabh+MAAC7W02haxjQjkbO\\n5+B4IS5sil3DRtLZ8cIo9xrajYrQNQDA+modQA+1Zm3pXArtRV2+uJauQ8R6VhNp5+ZKfemlNnUD\\nrLUq2NlZ4f65s7hyYQV/9Pp9RNrydyLWSK3p0t6K0O9je7MFAKhUraWfe5fOzwh+L/eSz9Itc+nn\\nTvaHyd9pCV3Dxd0x+R+GsfRze4mq3MZq/YE/y7seq0aCCj+K8+1Pn+yOa09tCA2Ud7cJncioLH8n\\nkHQTLgp+L3e38q9hNPVhGhqeuboplJ63k9CqrBx7o3KPvJei98buFtmfRo69sZ9Q0p6+uCr0rNyI\\nYmga4IXL38swJHOwou/welJIDeJ8/ybHi7DWrgq/uy7ttvHV7hFic/E58Z07fQDA1Yti9wUAXOqR\\n7zlPTOUG5Iy4fnVDaDH80i65C/LEMzSp6VzfSs8pEc9kJ9kbVnX53rifJI8XdtqC7y6yhjx3l5cE\\nM9eurAldQxzH0DUgjJY/13vH5J7b3hB7TqnC0sSt0+n8PICff+iXP/bQf591S/wPAH4VQAzgi51O\\n54vdbvdP5v2cXiIZ+7hhe7uNo6MR9+cEHtm0h8eTpZ8XxTGGEw+bKzUhP5vCTGgNt+8NcPTU2sI/\\n+87tHgCgomtC1+AmtKOT3nT5c4hi2G4AyxC7BoBQ4/pDN9fnjm0fa62q8DWYya65dbeP0F3MOT9O\\n9odnezg6Ggl7L2nL/c7d/tJKYH/sYm+jIfw51JIH8fatU+ytLq7CHfcmAMh7JHIdoU+qdPePR0s/\\n915S1IiDUOgasjNivPRzb946BQDUTF3wGshzODxZvob9E/JdGBrSPyvivaS+TKd9O9dnHfdtVEwd\\n46GNSU6J8jzQki703f0Brmws7t6cJgIMziTfmcKyhp0ltg/3TydYa1VxcjIW9vMBIEoYAfcPl++N\\ngyPyswMvEPwcyDtx9/4QT28vPivfeofsjUZFF3pWAqS70Rs6Sz+PdgZNHUKfQxTH0AD0Bsv3RhzH\\nmNg+dtfr4u/PRNDh7Xd7WFvQ0buRnFMNyxC+Bj9RzDw6WR5TnfQd1CoG+oLjzPTMznFe3j+eoFE1\\nMRk5mIwcYe9llNjH7B+McLS3+PNu3SWJtKWJfS/1JLa8sz/A1a3F3dW7B6S4o4WR+FiiYmKU4wx+\\n9+4AAGAJ3p8isSihXJq4dbvdzwH43OyvdTqdXwHpun09ESrRHuq2odvt/h8zf/4LAD4AYG7i9t2O\\nIlTJqZO0cQXzsSmvOc+MW2bSeH4zbpR2I4Pq0azlk/r2gxB+IJ4OBsxSPZavQ5YMfjrbtYRe4Poh\\nPD+SwgnfTL3clgfdMozIgWI0RVl0zSJr6KXm23LmuvLQwWTYZADEpqJeze/bNZx4iU+lWCpzuwhV\\nks64CX4WeSlIQRhhOPbwviuLC3IsKKJ26shSlSxA4T2SpGIIJBYROdYwkXRG6JqGejWfGrHrh4ji\\nWMrdRYUllnm5jdPZbBl3OKUpLv8+xpKEKIoIpJwMHWytin8ni8ygivZwo0jPqRzKkv2RnLsLIKJI\\neWb2U+rse0yc5HcB/JXkf//nAH5/9jc7BL/e6XS0TqdjgszAvc6+zCcfRS4eGbLrANJ5mMFk+SxR\\n6uEmeMYtE4HIkbg5cuZGgPyJmyxFSaCYD83U8WGZOiqWWDoxfbbLTCtlmlVmXm55ZtzkJPONQomb\\nnCC9yAUsw8MNyIoJ4xzvpCyhGIB4ZuVJmOI4xmjqCbcCIGsonrgJn+3KuYbhxEMM8YU2oNjeyHzc\\nRD+H/Op9Msy3s3UQe4ZlFhGyzin6mbnmDV05nnoAsJFQ7PtL5pJpQtMSnMAC2Vm1LFkgZ4SPVl38\\n3sgrpOQHIRwvxKrgOVygmKiVrII8jVXziJMMJh4sU5fyXtYqZq5zKhNae2+Jk/xLAEan0/kSgL8F\\n4O8DQKfT+cVOp/NKt9vtArgN4CsglgC/1e12vyJiwU8q6lUDuqblungy822xm3ylaUHD8sMWkLfB\\nDZ2IW+Q5ZGR4uFE06yY8f7kwSObhJid5BPIl8xM7EN7ZAGaVmBZ/H+kFLGGYl6rg5em4TZ0AVcuA\\naYhVKEu7Xc7yap0sS4IiF3BWtZQlsZ2nqCGnqwDQADlYGiATEaUYKxIKCq2cgSFAlMwqli5cOS9v\\n4pb6fkpIYItI0GfiJLIEa5av4XjgwNA14ap1AAnUwyheWtWXZd8C5E/cppLUb4H8neD0OUi4N2oV\\nAxVLT+OlebDdUAqDCSD3hobl52XKFJHwHIp13GhB/vw6boOJh9WmeIYEQMTWHC9cem/ILESrANOO\\nTqT9f+6MX/9HM//773Gs67sOmqahWTfP1XPE0HW0mxX0lxx0gDz1ISC5eAqYucq4eGa93NZa86vD\\nMrsKzQIBERGrER+I5KXn0cBRRuJWq5ho1sxcqpITR45KGu0QFFKVFPxeFqFKUmVY0YUV09BRrRi5\\nutFS90bdSlUrF/kCDSUmLPQzhzmqyI4rXv0WmFFTXBIQyTyvi7yX8jpu+bufvZGLtVZVqP8oxWyx\\nbdH3nXXcZNDzLLj+GEEYLSxgyey4tXO+lzITFk3TsNqsLN2f1M5DRpCuaxoaNXN5AmvLK3IVKaxk\\n54TYWCKvHUCc6Dc8vSdHEKRWMRBGMYIwWihCIyvGVoUnzzL8CUarbuVqJY8kGcoChFfcH7tLKxJS\\nE7dqzoqh1I5bvm6XTKpkXs+sKIqJuaaENWSmlXkryHIqVO1GZWnlFKAmoxKq2IWk+JNKtuBnYZk6\\nTEPLlTyObB+6pkkJiFq1fAUm2R03IB9FEJCTuLXqFnRNy/Ve2m4g3LuMrgHI03GTQ68HilX0bVkz\\nbjnP6ygiBsOizX0p0u9jSWFDNlVy9mfMXYNLzykZhS4TuqYt9Tik31dLwhoAsu+HE2+hn5zMMwIg\\nfmTLLJZkzvo1quSdzHN3DSYeahVjqUl2UdSrBgxdy9GBJfoNsr4LagmwzMstS9yezI5bmbgpxGqz\\nkvovLUJaRZbwUq21qvD8aGmgfjp00KyZwmeqABIk226w1LxT5uWX18stu/zEfxeZWMziQ3/qBogh\\niW6Sc+ZQZscNIO/6xPYX+smFUQTbDaQkCjTQzDXjJok+qyXCA3k5+q26Ka2rkKfjRos7Mi6/Vs6i\\nxnAiL2HRdQ3thpX+OxfB9kIpBaZ61YRpaEvPiKHEYh9NSPMa/ALiZ/2of+Sy92GQBPEy2AlAdmYP\\nlgh8yaRK5hXlkFl01DQNrYaVo+Mm7/4ESOcojOKFCT09I1YldVc2V2qw3XDh/qBxhoxZv1rVgIZ8\\nImeDsSulGK9p5Kxc1pjIRnDk7E967iyLb2V2YVWgTNwUglYZlvGAhxKrp2s5koU4jnEydIQbuVLU\\nqyZiLBfEUEKVXBIIUIEUGRcwHfDuLRvwltjZyJuwyE7c2s0KYiwO1Mc2SWClUF50DdWKkVucxNA1\\nVEzxx2febvR46kmjeTTrFhwvXFpgOk78srYEG8oCMxTBJcHISJL5NsVqs7I0cQvCCH4QCacHAoSK\\ntb1WTwU35mE0SSrIEp6Drmuo5dwbjhtAA4RX9IFMGGQR6L0mWrSHIs/9CcwUd6oyqHH5jKdtiYwV\\ngKiuLvs+xraPqmXAknBWAhkjaNEeHUjuuG3kUNhMqZIS7k+qNLqsIx5GEUZTX0riBpB4dWlsK2nG\\njiJlEC15FqMpEXurSmhMqECZuCkErYYuo96MaBVZwstNuc2LLAHGtg/Pj5b6erEio94sqRhKktgG\\nsuB/kLNCJOPArVYMNGvm8sTNpnMC8ma7llIlJa4BmNkbC76PlA4m6dBv5Lj86DpadUvKcHWe+c8g\\njDBxAmnVwrzd6JOBg0bVlFJNz2tLkAZlkpLYlWYFrhfCXbA/0gBZAlUSAHbXG5g4wcIgWWbHDSDv\\nZR71W9sLUa0YcjrBORIFepbKokpSMaDlZ7YKGfzF3we942UwdwByhy5jEE3sQNqdAWQJwKKYSjZV\\nciO1s5n/TsiysaHIc2+Mpn6iPCtnb7QbpODnB/PfB5kjOEDGIFoWz5DCp5w7XAXKxE0hUprFEjn+\\n4dSHhkwCWSTWUqrH/DWcJOp+sjputAq5bI5GZsctlaAfLFYypIfxlqRnsd6uLhXlkEk3yWbccnbc\\npM24LVelGkkO0vPQFIMwwsnAlSI1TtfgB9HCyy+dG5HYcZv9OWchjmMcDxwp3TYgv6KjTDVFYKai\\nv6CgILuzsbNO3rWDBebBQ9kJbKOS0hAXwfHkiLQA5J3wg2hhEi07caOfu8wLtS/JLwvI7oFlVEmq\\n0iurAJsWVxZSBH1pyQqQ7ftFHbeh5GQhVUVe0HGTOeMGkBhpWSIvy8ONIo8lgOzELS+te2T7T6wV\\nAFAmbkpBL9Vl1JvR1EOzbgmXlgayiuGii4cmM7IO/K018rnL6D8TiRx9+m87WSJBT3+fHs6isd6u\\nwXaDhQmDzAOXBlnLDn2Zss5AvkNf5uwnQKg/UzeA688PDE9HLqI4lpa45RFJkT1Y3cwRGI5tH64f\\nSjsjaBV72RkhPWFJCl3DBeclVe+rSaBKAlnidtib/yyGUw9VS7zowOwagjBaaCUTRhEGYzlGx0A+\\nSpqqjtsyquRgLM+rKjW/znl3rbclJW7JnhvPObODkMzSyxgzoEgLKwv2p3yqJO24LaBKOnJHDZp1\\nC64Xwltwd9GGgQyvRwDYTuK6e8eTBWtQ0/08Hsw/K10/hOdHT+x8G1AmbkqxkqOtH8dEFUtaBTnH\\nxZMmbpK6TBc2mwAWb3AgOwhlDJqvt6vQtOUdt5Ohg5VmZaG0LO86gMXUG/pdifbsAsgskaEvFz+Y\\n2D6MZNZFBvLsDZmznwBwZaeFOAbuHI3n/pmjHjX3lVvFzkUZlSgUAywOhrL5NjkJ7N5GAwBw/3R+\\nlwkgz0nT5AVEqzmKbfQck5XM766TZ3Gw4FmMpr7UQGSHrmFB8rh/PIUXRLi6K0fqmz7fRck8PUdl\\niZPUKgaqlrHUC7U/cbHWkuNVtZt2YBcXNU5HRIhC1nxZe4ni6VSiFQBFWlhZcm/IUuAFgI3VHFRJ\\niXYAQFZYXhRHZAVgOXvj+oVVAMCNe8Mca5Bzh+9uLN8b9P5slYlbiTzIqJKL58umboAdSUHAWo41\\nHEumWFzcIkHAvZPFidvJ0EW7YUkZIDUNHWut6sKOWxTHOB062JTUbQOyKvKiA7c3lldF1jUNq63K\\n0kBkbPtoSprrArJkYbiIKinZNPNq4i3z7v3R3D9zmASNtAsiGnnmJajksqwEdpt2eBYEyDKFSQCS\\niK00LNw/WZK4TTy06xZ0XdJ7mQaG87+Pm/skULl2YUXKGnaWfB/UG0lWsQ/IkoXDBXTNm/fJc3ha\\n0nPIErf5Z3YmTiLnWWiallrqzEMUke9D1izR1modGrIi0plriGOcDt30PJGB1hJ6u+wuEzArTrI4\\nYWk3LSlzl0AmhLO44yZPIRvI1/Xrp4qOcvbG9Ytk37+9IHGj56iss2pnjcSWi9gJKWOlpEqWyIM8\\n4iS0wry32ZCzhmYFGrAwUJdNldxYqaFqGbh3PD8IiNOkSd7Fs7laQ2/kzh2uHk08BGEsdQ3rOfjx\\n9Ltak3Tgrrer6I8Xz6+MbV/qBbyMdgMAw4nceSbaKViUuNFqP70gRGNzZfkFLJsqSbsri4J0SkWR\\nlbgBpOt2NLDhB/PpP8OpL02sBsjXcbt5fwhd0/DUTkvKGjZWqjB0bW4wYruJN5JEM9k8dE26b2SZ\\n6+btuLXqljSGBEDOy+HUn39vTD3EMbAm6b20TB0bK9WFhZVRsj6ZRUfacZvn3ZUKWkmcccslTjL1\\npHV4APJ9rDYrC4ttY9tHrWIsNEznQTZnN38NQ8ndrpVmBVurNdzcH871CR5MPNSrcmymAJIYtxvW\\nwnngJ93DDSgTN6XIQwdLE7cNOYGhaehoNay0+nIWToYOKqYujYqlaxr2Nhu4fzqd69s1nPrwg0hq\\n0rS1UkMcz09iT5KDWGbVMrUEWHDo98ceDF2Tljitt4gXzmjOOxHFsTTja4piHTc5F8+FrQYsU8e7\\nBwsSN8lUSXoBL+oEy6ZK7qzVoAE4OF3ecZNV3AGAvc0m4ng+7cUPQthuIDVhWUmq6fPO7DCKcOtg\\njEvbTWnBiKHr2Fqrz02ahgoCkTxUyXfuj2DoGi5vy0lgt5fMRsdxjN7IlTbfRrG25J1IhUkkddwA\\n8n30Ru7cmabTdDZbfsdtXrFNtiAHAFimgXrVnFtYcbwAnh9J7UYD5Nw+HTlzi58TR27hcz1Hxy2b\\ncZP3Xl6/uIKx7c8tKgwmcpNogBSZTgbOwsIKUCZuJXLCNHQ0a/MPGSALlnYlUbEAcvEsVJUcONhc\\nrUmVSr242UQQRjiaM0QqWxFr9rPnBcmy1TWBmUHzJTNua62qtO+DzoP05rwTU4f4p8m8eAgNc9ls\\nF5mzk0U3MXQdV3ZauHs0mavqeNi3UbUMaYFAro6bZKqkZRpLK/onkqmSAHAhYR3Mo0vKVpQElvtE\\n0Xfl2gU5XSaK3fU6xrZ/pmCMbLlzgBRWqhVjbhc2CCPcPiQJrKyZqlbdQq1izE3cbDeE64fKErd5\\n9PZsJll+B3Tes5A9pw5kVLNlVEmZHTdgsdeibPNtio12DUEYz38WdiD1OeSZcetPyDywrIIfAFy/\\nmMy53X2ULhmEEcYSfeQodtcbCKN4blyXddxKqmSJnFhpVhZ23A4kd9wAwnF2vPBMCXjbDTBxAqkH\\nPjAz5zZHoETFxbOZKhDNSdwUdBWWiZNEERGrkRmMLDMCl2keSqFrGjHwXEJ5aTXkzSoAZM4tjGLc\\nPX5UoCSOYxz1bWyvyStqrOUQzVFB9aAV/XkKm8cSPdwo6Bm4P0eUQ7aHG0A8swxdm3tmv0PpgZLm\\nuigWURVlK2sCZLZrN+n6nUWDundMElhZNEm6BmJG7py5hp5EEadZrLUXC3zR91LmOugM/Lwu7Klk\\nNWQgO3/miZPIFuSgWG1WMJ76CKNHi22yVQwpNhYU3PwgguuHUjuP6YzbEqrkSqMibR4YyObczhIo\\nyXzk5HfcgPl7Y2SXHbcSBbHarCw0rbzfm6JWkVfRB7IL5SzVuBMFnS6AdNwAYH9ONZ0mUzKpHo9D\\nx61eNVGvGujNmXEbTcnsmczq7VqbfPY8yuiYDplLvoDbDWuxj9vUkz5QTOfc3jljzm1k+3C8UJp6\\nIDArmrNgXmIqzxSegnb8zxJAIB5uttRuGzDbcTu7uEMpLytNec9B0zSsLKjop8Ike3ITt0XKkpkx\\nvdz9ubNehxdEZ1rJZPNtkhPYtTpcPzyTUk3Prw3pHbfkvJyjukoTOpkB6jLBGhU0/9aSGbdxIsgh\\nw492FivNCmKc3flT0Y0GZmbMzoglpgo6j42aiVrFWEKV9KQnTVd3WzB0De/cfzRxU/VdLFPhLTtu\\nJQpj0ZxbFMU4OLWxt9GQSlPMLp5Hg0MVnS4AuLi12BKAJk0yg8NlJtwq6JoAqZbN63apqCKnqlhL\\nO26SL+BGBVP37KIGmWcKpQbpQCascOvg0Y5bNt8mL3EDyHvZG7lz5z9Hto9G1ZQ26A7MzjSdkSjY\\nPjw/kr4vtlbrMA1triWAio4bkFGxzuryvLM/gmnouLTdlLqGVJjjjLMq8zeUHBBtzBetuX1I9stT\\nkqwAKBYJlFCBJ1lWABTLqJK0ILomSXYdmBUQWjJqIPEer1jEGmGe96ZKqiRwdiFatvk2RRpLnFFw\\nox1JmaMGAEnS5wmk2Ik/qSwrAArLNLDePlutOy1oKJhxA+bvjXEpTlKiKNLE7YzD7nRIBipl0iSB\\nzMfjrIqhCtEBgJhwm4aG/TnVdCUzbivLO24VS5cqygEQuuTECeB6j9LS+iMv/TMyfz75WXM6boou\\nnvYCeemRouCUHvpnGXgeSbYCoNhYqSKK47lULNmeXcCs/Pujz+FEsocbha5r2F1vYP9kembSlFZO\\nJQcCK80K/ICYCT+Mw/4Uu+t1qUk0kBWwTs54L+ldIn1vLKDn0aLPliTRHopFAiXHffnFPmA5VVJF\\nx40+h3kzhydDB6ahSz8nWnVrOVVS8r2R2Sw9+n08DlTJSepnJzeO2GhXMXWDM0dgVCWwdB2DifcI\\ndZUWOmTPoO4u6UaPbCL21qjK/T5kokzcFGORfO395BDelZy4ZVTJRw86FTN2ABGC2Nto4N7x2UHZ\\nycBB1TKkJk3VioFW3ZpLSzsZEDsCmd1PIDvIFlWppHbcloiTqJB1BrLA86wKrmzzbYpaxUS9ap5Z\\nTacBqyyPRYrNBV5uURxjPPWlP4edjfkdN9kebrPY22jA8cIzqYoqZruA+QIlthvAdsPU0kMm6LM+\\ny8NMFQVpET2vN0oSBclB+qKOW2bVIXd/ri9grJBfl6sCDJBzarVZmRucUv9R2XdXq2GlHYyHkSYs\\nkgufa6mP2qPfh6q9QffnWfPyqmb9Mrrm/ARWNlUSIIWNOH60A6pi9AQAGjULrbq1kCrZkuhJqwJl\\n4qYYKwva+qmi5Ibci2cRR1+2HcEsLmw24frhmQfNydDBhoKLZ3OlhpPBozK+jqdGpAXIEvWzDhoV\\nCmWWSRLYedQfZR23Bd1old4rG+3qmd1Hahgve29sLOgET50AURxLfw7UEuCs7ooKDzeK7QXqeUMF\\nM25AFuw8/E6cpjNV8p9DJVEyPYvWfTwgSZPs/bnIEuB06GKjLf+8XpS4HfRsGLomda4LIOdls3Z2\\ncQcgnZ+1VkX6s9hZr+P4DNlzPyAzgLKfA0DOYy+IzmSLjG0fFVOXZpNBsaigoKrj1m5YqFj6mUyN\\nsSLKaCZQcn40xdl1PLw/VI3hACSGPh44ZwrWqGCsyEaZuCnG6oLglMpeyw4MaYWqfwa1YP9kitVW\\nBXUFbWQ65/YwXTJVtlQQGO5u1BGE0SOVMppEy55nAjIRhntn0Ebp4adibmNu4uYopkpOzm/IHCDP\\n+izq6v7JFBVLx4bk93IRhVeVBw21BDgrSFdFpwYWB+ojRR03Sgl92LqECgrJFsPI1lHDydB5YPYx\\nimPsn0ywt9GQqhYHkOJRxdQfoecFYYThRK7yLcXmag2Grp0panXUt7G1Vpf+HAAk6pb2I4FhHBMV\\nYJleWRQXt4jP4cNz4odJV1aW1+QsMhPuR+OZie1Lp0kCWUHhLCGl4cSDrsntfgJExGhrtX5mYYUy\\nVmSvYT1Xx03+e7k2Ryn7eOhA0+THMgCws5ZYAjz0fQRhBNsNpH8XslEmbopBjRLPqmSnVMl1yTNu\\nrQpMQ3/kwCfdLwcXFHTbgPkCJZQnvqWgMnNlh5jF3j18UIzizhH578s7csxkZ0EVNu8dn9Vxky8t\\nDRCaheMRQ+OHoWpWgQbgZ9HiVHbczqKORlGM+6dTEiBLrqQvMuFWqYg1zxJA1YwbAGxTCtIZFMHB\\nxEetYkiv6M+b9+slAZIKqiRAErcwenD28XTowPOj1F5FJjRNw856HQcPWQL0xy5iqHkOpqHj0lYT\\ndw7HDyRNUyfA2Pal0yQpLm01EYTxI+/E2PYRRrGSzsZTyd10+6G7az+5Ty9syhXMAebTFKMoxnDq\\nSe8yAYnHoGWcWWQ67BP1W9lnNkD258QJMHUevENTkRbZM24L5uzoe6qi2zVv9OJ06GC9XZU+Dwxk\\nrLWH9+d3g6IkUCZuynFxq4FqxcB37g4e+b2DUzXdLtPQ8fSFNm4fjh8I1A9Op4gB7Ck48IHZTtOD\\nCcv9pNu1peASvrydXH5HD15+9DK8si0/cVsk1NIfu6hWDOnvxCKltElKlZS7Bhogn+WhpkqAAcg6\\nKLPP4njowA+iNMmWCdrJOj2jept23JRUss+2BDgeOGjWTGlG6LNY2HGbekreh3kUQZVUSSBLlGfZ\\nAbTzpCJIB8izcL0H5fhp0K7qOTy114YXRNifKXSpmm+juJTcCw8XHQeKCm0AcGWHKHg+nLjRNdHC\\nqExcnpM8vnswgudHuH5RrsooMOvv92BBYeoEGE196WJSFJvpnNujyTyggio5v+OWvRPyCzxnedMG\\nYYTeyFWSOALZ3fXomU3OThWzfjJRJm6KYeg6nrm4gv2T6QMiDH4Q4mTgYE9yt43iuUuriGPgxn7m\\nt6Fyvg0gnUVd0x6hCN7YJ0mtTDNXCpq43Tl6cA204yZb5hsg78TuRgP7p48KtfRGbirXLxOLjMAH\\nE7DiS1cAABf6SURBVB9Vy4Blyu1sXNhsoloxzjTvpF0GFR23jOoxEyDTKraCYKhRNdGommcaT9P3\\nVLaAETDjhzNz+VEPNxU0SYAEQxoelcGPohijqa+GOkspgg99HylVUmHHDXgwMMy6K2rO7ExqO3sW\\nqtTiKOi98O5B5rVIRXS2FQXpNCm6+9C9Qem0Kt4Jejc9kridqHsnaNfv1sGDvpfdW30AQOepdelr\\nAMh7+bC/32FfDYOJIlN+ffCsunUwhqFr0pOW7bU6DF3D3TMslu4ejbG1WkOtIr/YRuOV2Zng/shF\\nHKvp+AGzd9eDZzbdr5cVFORlokzczgHPXV4DgAe6boc9GzHUBGQA8OzlVQDA23eyNdxPq7dq1mCZ\\nOnbW69g/njyQsNy8N4QG4NoFuWauALlg61UTdx/quN05JAedilk/IBFq8cIHEqfh1CP0HwXBCKWM\\nvn7z9IFfD8II908nSt4JXddwba+N+yfTB+gmcRyje6uPZs1UQs87q+NGOxsXFTwHTdNw7eIKDnv2\\nI1LbmdGx/KLGWUH6aEo83FR8DwBhB6yvVB/puO2fThHFsZK9kVIEH6ro046biu4KkEntz9JG76Xv\\npaqO26MUpJ4i42uKq8m7/879LFlQ3nGjidtDQfKdQ1rwkx8Y1qsmdtbquH04fuC9vHc8RdUylIiT\\n7G02YBo6bj2UPL5xqwcAeF5h4gY8eFbROfUdyWJvFGd1xG03wLv3R7h2YQXVitzCp2nouLzdwu3D\\n8QOCNcOph+HUT99Z2VhtVaDhwfvzRJEnLsU8ejstcpSJW4nCeC5Jmt6aTZoUd7uevZSs4e75rQEg\\nSeLECdJKWRTFuHl/hAtbTSVJk6ZpuLzdxP3TKbxklmcwIQfdFQXzbRQXzxAouX1ATW3lr+MD1zfR\\nrJn4w9fvPzA7cu94giCMpRvrUly7uIIYwLv3s67b3aMJeiMXL13fVCI8sJ6qc2UXT1bFVnP5PXOR\\nFC1u3HuQUv3O/SHW21UlQ+a7Z9BNVFoBUGyv1tEfufCD7L2kz+X6RfnFHYBUcF0vfMDGpTd0Ua+a\\nyoo7Z1MlJ9A0dQW/s7qwdKZGRaIAEPq6rmlpEQOYsepQ1HHbWKmiVjEeoUqmRuSK7o4rOy2MbT8N\\nkuks7oVN+bO4AGGLXNpu4u7RJE0WwijCm7f72F2vK+vCnuUxeKBIM4DiLEuAN2/3EcUxnr+6pmQN\\nV/daCMLoAfGee0mXSUUxASAJ5EqzcnbipuiMSC0BHkrc7hyOoQHKklhZKBO3c8D1iyvQNQ1v3emn\\nv6Y6aWo3KtjbaODtu4NUpWz/ZArL1JVtLuBRgZJ7xxO4XojrCrptFJd3WojjrKty5xyqMjQhmJ3b\\noPSTp3bkJ02WqeNj79/FcOI90HVLAxEFySOA9HufpfB+88YJAODl65tK1nCWIfn+yQSGrikLDK9f\\nTDrid7Pn0B+76I89XFWURG+vPVrFpjQ9VZVTgHSaYjwo1nIzodOqStzOmpk4HbnKaJJAFvQ8QJU8\\nmWJ7rQ7LVHOV7z4GVMmKZeDiVgO3Dkfp3XXUt6FBjZIiQAp+F7dIwW+2u3H7cIxmzVT2LK48NGN2\\nNLARhJGyAhNAklTCzCDvxK2DMRwvxPNX1XTbgLNtQ2gSJ9teieKsGbdvv0s6jy8o6jzSu2G2qEG7\\nwiqTlbV2Fb2xm3aCTxQqEVPsrtdxPKP8Gscx7hyNsbNel979lI0ycTsH1Comntpt4Z39UdrlUeXh\\nNotnL63C8ULcOSJUi/unU+yuq5FTpsgUFcnhQgN2VQEZMCNQklx+aTtdYceNUhFnBUpuKU6aPvGB\\nCwCAL33zfrYG2vVTkDwCWcIyO+f2jbdPoAF48fqGkjU0ayYsU087bnEc497xFDvrdSWKWED2/s92\\n3N5RSJMESID8sCXAyXl03JIE8ngmKLtxb5hSg1Rg9yFDcmK+HSgL0AFSXFlrVdKKPqVSq6JJAiQg\\nMw39gc7G6ciFaWhoKfRGurrbhudH6RzoYd/GWrsqfQ53Fhe3mgijON0frhfisGfj8nZLmbnvw4mb\\nShEKCsrGoAwRSpPsPKWmywQAu3M6boauKTur2nWibjk74/bGrR5MQ8MzCcNJNp46Y/4zTdwUzOtT\\nbLSr8IMoNWE/oQJGCpsCO+uJJUDys/tjDxMnUBrXyUKZuJ0Tnru8hjCK8XZCVbzfm0JP1JHUrYEc\\nJt3bfRz0bLh+qESJahZXkqSEBuqqKVBAphxJBUlSKwCFB93eRgOa9qBK2a2DEepVQ4m6JkASgotb\\nTXztrSM4XpCuQQNweUfNs1hvV7HWquBmksBPnQBv3Rng6QsrShQEAVJNX29nvnb9sQfbDZRWsVt1\\nC3sbDdzYH6bm8Ol82wU1iRtAKEizlgDHCq0AKLZXH6ymu36IO0cTXN1rKUukH6Zi9RQrSlJsrdZx\\nOnQJHUqxMAkA6GdYApyOiMy3CmoeBZ1zu3FvANcP0Ru6yubbKC4/xBa5czxGDCil2NP7k54N+4pn\\nHoHs33vrkKzhW++onW8DSEJg6NoDJtwHp3bi+6fmjCBebrX0jBzbPm4fjPHMxVXpliUUKY14NnE7\\nGkPT1J4TD3u5nSi0eKJI2QFJcUelUrhslInbOeGlpHvwzRuElnZwOk1k4dV9JS9eI2t4/eZpSo9T\\nSW8ASPt+pVnB6++cIo5j3Lg3RMXSlVaHLm03Yegavv1uD3Ec483bfdQqhjJuPEC6G5e3W7ixP4Tj\\nEfPn+ydTXNlpKwuINE3Dh9+3hSCM8e13yLO4dTjGzkZDiRoVxbULK+iPPRz1bbx28wRRHOMDirpt\\nFBvtKoYTD0EY4VvvkL3xjMJiAv15thumwRgNzq7uqVsH7TTRpCk131Z4AaeWAMnPfvf+CFEc4/oF\\nNVVsYLbj9nDipq7jBhAWQBSTgh8Vt1I9aL+zVoftEt+0IIwwHHvpXKgqvJDcU6/fPCXnNtQW+wDg\\nYnJH0X2ZBoYKE7fNlRq2Vmv41rs9BGGk1AqAIk3cDsbw/BBv3u7j8nZLmWgPQISttlZrROQtjjF1\\nfIxtX+kdDhAq4NQNMHV8fOudU8TI3lUVqFgGLmw1cPtgjCiKE7bIBDvrDaXd6PWH7IVOBg5adUsp\\nRZGK0tAzW6U3r2yUids5oXNlDZap45s3TjBxfIymvlJREIBUqS5sNvDGrR6+9tYRAOCla2oDZE3T\\n8OLTGxhOPLz6xiHuHE3w3OU1ZVUygKhzvXRtA7cPx/iDb97H8cDB9zy3rZQyCgAffJYkTa/dOCX0\\nVagbcqd4+ZktAMDX3z7B8cCB7Qa4qoiqSfHBZ8kavvLtA3zl24cAgO97fkfpGmjFsD928bXvHAMA\\nPvTcltI1XE/oNW/eIkn0zf1EmESBBD5FOtt1SmYFbh+OlHm4UdC5Jeond0PxfBtAlNIqpp7OdlFB\\nDlXm2xQfTt7Br755hFffOISha/jAM2pmPynoPXVzf4jB2EMM9Qnsxa0mNldqeO3GKf70TXJ30XND\\nFZ69tIqKpeNP3jhEHMfnQrHXNA0vP7MJ2w3w1u0+3rjVQ7VipAqkKlCvmri83cKbt/v4k+4h/CBK\\nC9MqcXWvjbHt48b+MA3WdxXNJFPQhPnb7/bwanJ3ffh920rXcHW3DdcPcdCb4qhvY+IEysU4KIX8\\ndOTA8QIcDxylxT4gE6WhwmJ3zmF/ygJzdNzpdD7V6XQOO53OZ+f8/k93Op1XO53Olzudzt9gX+J3\\nJyqWgeefWsfd4wn+8DUyU6Q6cQOAl65twvMjvP5OD3sbDaUUKIoXr5GK1K/+7psAgD/3wYvK1/DR\\nF3YBAL/+ebKGj7+4q3wN35MEZX/21nEmTKJIiILi+oUVtOoWvvH2cVpJVllBBoDv62zDNDR86Rv7\\n+MbbJ7i01VTeVaAXz/7JFK/dPMXOel35/nz5+iYMXcMX/vQu/vTNIwwmntLqLZBdfof9Kf7szWP0\\nx166V1RhpVnBaquC126eYjjx8I23SSJ9TWHipmsaruwQqe17x5M0GFBNlXz+6jrqVRN/9Np93DoY\\n4/1Pb6ClwIx9Fh95gRRRfu9P7uAbiXCQSoo/kCUsUzfAH712H626lSolq0KtYuJ737eNw76Nt+8O\\niWKdpl6xjhbbfuML38Hp0MUrL+4pLXwCwKc+dBFhFOM3Pv8WAPUFYAD45MtkRvuLX7uHg4Qep0pt\\nleITL+0BAH7n1dv4xo0TXNhsKGUPAUjn6b70zX383qt3AGSxhSrQmOEr3zrAf/r6PoIwUr6GS1tN\\ntOoWvvz6AXojF99+t0dGTxTOZ8sC0+7udDrPAPi7AP5gzu83AfyPAH4YwA8A+DudTkf9Tn7MQelf\\n//fn34Kha/hkIg6hEi/OHLDnUSUDgPc/TX7u2PbRbljKNzhAuimWqcPxQrQblvIAGSAzZuvtKr7x\\n9nEqEHJVkRAFha5r+MD1DfTHHn7t90gSS30HVaFRs/DyM1s46BGFtI++oLbbBgDvS/7Nn/sP34Lr\\nhfjQs1vKBAcoNldr+Nj7d3HveIJ/8VtvQAPwF1+5qnQNdC7ij18/wG9/5RYA4Ie/77LSNWiahs++\\n8jRcP8Q/+Vdfwxu3+njx2obymaYfe+Uq4hj4F//Pt/GFr97FSrOinJ5nGjo+9OxmOvR/Hnvj2oUV\\ndK6s4fWbp/jN3/8OahUDP/jhS8rX8XLSaQyjGC8/o8Yq5GG8kgTqv/Z7b+I7dwa4stNSNs9E8cLV\\nNVQsPaWC/eD3qP8uXnlxD1XLwMQJUDF15XcGQOKIrdUavvztA/z7L90EoMYLdhaXtlt49vIqvnNn\\nAD+I8NEXdpXfG594aQ8bK1X83qt38MVv3MPmCrlHVOKp3TZefmYTb9zq49996QYsU8cPKD4jKpaB\\nH/noFUzdAP/o176KwcTDp7/3itJZXFlgLcvsA/gJAIM5v/8xAK92u91Bt9u1QRK8TzD+rO9aUIpL\\nDODHPn71XFq4nafW0rm6l66ppdxQrLWqaUflkx+4oHTOj6JeNdNA4CPP75zLGjRNw4ee3cLECXBz\\nf4iPvrCjVCCFglZwBxMPn/n4U3jfFfWX8MdnLhrVHR6A0K7+s5f2MEr8Bc+jmAAAn/k4SdSmboCP\\nvX9XqUAKQGwq/twHL+L24Rg37g3x0vUN5WsASEV/a7WGWwdjVEwdf/1HOsrX8KFnt/Ds5VW8fXeI\\nIIzwMz/SUebhNosPv48ka6ah4XueU0vDovjRjz0FAHC8EP/FJ64pnWeieP7qemqD8CHFNEmK91/d\\nwGqrgncPRrAsHT/7meeVr8EyDbz/Kil+Pnd5VTlDAgAaNTNlqXSeWldmTzELXdPw/R+8CM+PcNCz\\n8ZmPPaW8sAIAn5phDH1EMcUfIAnLT37qGQRhBD+I8KMfe+pc4pm//P3XAAC2G+ITL+0pExebxQ99\\n+DIaVRNHfQebK1XlhU9ZYLp1ut3uFAA6nbmX5x6Ao5n/PgSwsJ20vt6AqXB4sgi2t+V0Pba323ju\\nyhrCMMbP/aWXlA6PzuIj79/Fa2+f4BMfvqxUhGIWP/SRK/jNL7yJH/+h92H7nMwR/8oPd3DvZIqf\\n+PT7pH3ny/DnP/40fv/P7uJjL+7hF//rjyw8cGWt8Qc/WsO//dJNfN/zO/jvfuJl5RVDAPj0WgO/\\n/vm3cGGriZc66hM3APiF/+rDeOeX/z84XohXPnQZxjlcftvbbXzi5Yv48uv7+JnPvngu7+Xf/env\\nhR/F+PJr+/ipP//80jXIWuPPfvZF/G+/9lX89I++gBefUx8QAcDf/MsfwN//Z1/C93/oMn7kE9fP\\nZQ0/sFrHb3zhTXzwuW1cvaKeGQAAP7TZwn/88i2EYYSf+tEXziVQB4CPvbiHr791hE995Ck0avMp\\nozL3zWdeuYbf/MKb+Hs/8xF85P170n7OInz6o0/ha985xk+e4931V//C8/j6d07wY5+8dm5r+Es/\\n8Cx++8vv4oVrm/hvf/JDMM6hC/uZ72/g33zxBrbX6vjgC4vfB1nP6bOfauEPv3WAw9MpfvzT70NV\\ncRcYIP+2T37wHv74tfv4qz+y/N6QhZ/4wWfxq7/9Bv6bH38Zly+qL0LLgEYlfeeh0+n8PICff+iX\\n/0G32/2dTqfzKwD+dbfb/Q8P/Z2/BuAj3W737yT//T8DuNXtdv/5vJ9zdDRavJBzwvZ2G0dHo+V/\\nkBFhFCGOcS4VEQrHC+D5EVYUih48jDiO4QeRcprJ44g7R2Nc2GwsnFOQ/V7GcXwuCdss+mMXlqmj\\nuSAgk42p48MPY6WCIA/D9UMMJ57yOaJZRHGM/shd6sMj+7087hOJ7/N8Nw97U2ysqFUAfhieH8Iw\\nNOWzTLOgxtPn+RxcP4Tnh2gvqObLfiejKMbUDZTPGs4ijmOcDJ1zmVF/3DC2fdSrxrnujf7YhWno\\nC98J2e9lEEYIo/hckjYKPwgxmHjn+l5GcYzjgaOcWs+L7e323EtuaXul2+1+DsDnCv7MeyBdN4pL\\nAP644Ge8J3CehwtFrWKidn5xKQBCEyyTNgLVQhxn4byTNgDnQr96GIuq+KpQtYxzTdoAQkNSaZ46\\nD6o8DRdhR7HE+Fl4HM7K80zYKKqWca6BKUDmgs8zaQOoh9j5743HAef9XQCPx91lGjrOm8Rmmca5\\nv5e6pj1xSdsyyOLFfRnA5zqdzhqAAGS+7W9L+lklSpQoUaJEiRIlSpQo8V0NVlXJv9jpdP5fAD8K\\n4Jc6nc7vJr/+i51O55VEkOQXAfwOgM8D+J+63e48IZMSJUqUKFGiRIkSJUqUKLEAS2fcVOG9OuNW\\nogQLyveyxOOI8r0s8bihfCdLPI4o38sSi7Boxu38SeolSpQoUaJEiRIlSpQoUWIhysStRIkSJUqU\\nKFGiRIkSJR5zPDZUyRIlSpQoUaJEiRIlSpQocTbKjluJEiVKlChRokSJEiVKPOYoE7cSJUqUKFGi\\nRIkSJUqUeMxRJm4lSpQoUaJEiRIlSpQo8ZijTNxKlChRokSJEiVKlChR4jFHmbiVKFGiRIkSJUqU\\nKFGixGOOMnErUaJEiRIlSpQoUaJEiccc5nkv4HFGp9P5ZQAfBxAD+IVut/vqOS+pxHsInU7nJQD/\\nHsAvd7vd/73T6VwB8H8BMADsA/jr3W7X7XQ6Pw3gbwOIAPzzbrf7f57bokt816PT6fxjAN8Pcn/8\\nEoBXUb6XJc4JnU6nAeBXAOwCqAH4hwC+jvKdLPEYoNPp1AG8BvJefgHle1mCE2XHbQ46nf+/vbsJ\\ntaoKwzj+vzPlilaTvgicxBvRSJG+sHvFwLSPO9BqEBilOKlJhaM+UEdiFKI004lY0CyKoqJRUSk5\\nqJE8EZSQd6AQiYWI1W2w94WjcUA63rs3nv9vtNY6e/AOHtY5L3vvdWoKuDPJ/cA24EDHJWmMVNUk\\ncJBmo5+3B3gnyVrgJ+D59ro3gIeBaeClqrppkcvVmKiqdcA97b74CLAfc6luPQ6cSDIFPAW8jZlU\\nf7wG/NaOzaVGZuM23HrgA4AkJ4Ebq2p5tyVpjFwENgGzA2vTwIft+COajf5e4Lsk55JcAL4GHlzE\\nOjVevgSebMe/A5OYS3UoyftJ9rXTO4BfMZPqgaq6C7gb+LhdmsZcakQ2bsPdApwdmJ9t16QFl+Sv\\ndhMfNJnkYjs+A9zKf3M6vy5dc0n+TvJnO90GfIK5VA9U1TfAezSPnJlJ9cFbwMsDc3Opkdm4Xb2J\\nrguQBgzLoznVgquqGZrG7cUrPjKX6kSSB4AngKNcnjczqUVXVVuBb5P8POQSc6n/xcZtuFkuv8N2\\nG83LpFJX/mhfdAa4nSajV+Z0fl1aEFW1AXgV2JjkHOZSHaqq1e3BTST5nubQnPNmUh17FJipqmPA\\nduB13Ct1Ddi4Dfc5sAWgqlYBs0nOd1uSxtwXwOZ2vBn4FDgOrKmqG6pqGc2z8V91VJ+uc1W1AngT\\neCzJ/Av35lJdegh4BaCqbgaWYSbVsSRPJ1mT5D7gEM2pkuZSI5uYm5vruobeqqq9NF8K/wAvJPmh\\n45I0JqpqNc3z8SuBS8Bp4BmaY6+XAKeA55JcqqotwE6av604mOTdLmrW9a+qdgC7gB8Hlp+l+WFi\\nLrXo2jsYh2kOJlkK7AZOAEcwk+qBqtoF/AJ8hrnUiGzcJEmSJKnnfFRSkiRJknrOxk2SJEmSes7G\\nTZIkSZJ6zsZNkiRJknrOxk2SJEmSes7GTZIkSZJ6zsZNkiRJknrOxk2SJEmSeu5fAsmbLKb3MXMA\\nAAAASUVORK5CYII=\\n\",\n            \"text/plain\": [\n              \"<matplotlib.figure.Figure at 0x7fdec9add850>\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          }\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"Eaypg9gKos21\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"**TASK**: Adjust the parameters above to generate data with different properties.\\n\",\n        \"\\n\",\n        \"Now we pack the data into train and test batches. Note that while RNNs can in theory learn the dependencies across all inputs received so far (using an algorithm called **backpropagation through time**, or BPTT; see the Aside box below), in practice they are trained using an algorithm called **truncated BPTT** where we truncate the inputs to only the last $T$ symbols (this is the `truncated_seq_len` variable below).\\n\",\n        \"\\n\",\n        \"**QUESTIONs**: \\n\",\n        \"* What issues can you think may arise by truncating the training data in this way? \\n\",\n        \"* Despite these issues, why do you think it might be necessary to do this?\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"RtwMLLCNorw4\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 71\n        },\n        \"cellView\": \"both\",\n        \"outputId\": \"b21cacaf-acbb-4d67-dc56-a4ac6c2d1339\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"#@title Pack truncated sequence data {run: \\\"auto\\\"}\\n\",\n        \"\\n\",\n        \"def pack_truncated_data(data, num_prev = 100):  \\n\",\n        \"    X, Y = [], []\\n\",\n        \"    for i in range(len(data) - num_prev):\\n\",\n        \"      X.append(data[i : i + num_prev])\\n\",\n        \"      Y.append(data[i + num_prev])\\n\",\n        \"    # NOTE: Keras expects input data in the shape (batch_size, truncated_seq_len, input_dim)\\n\",\n        \"    # We have only one real-valued number per time-step, so we therefore expand \\n\",\n        \"    # the last dimension from (batch_size, truncated_seq_len) to \\n\",\n        \"    # (batch_size, truncated_seq_len, 1).\\n\",\n        \"    X, Y = np.array(X)[:,:,np.newaxis], np.array(Y)[:,np.newaxis]\\n\",\n        \"    return X, Y\\n\",\n        \"\\n\",\n        \"# We only consider this many previous data points\\n\",\n        \"truncated_seq_len = 2 #@param { type: \\\"slider\\\", min:1, max:10, step:1 }\\n\",\n        \"test_split = 0.25  # Fraction of total data to keep out as test data\\n\",\n        \"\\n\",\n        \"# We use only the sin(t) values, and discard the time values\\n\",\n        \"data = sin_t_noisy\\n\",\n        \"data_len = data.shape[0]\\n\",\n        \"num_train = int(data_len * (1 - test_split))\\n\",\n        \"\\n\",\n        \"train_data = data[:num_train]\\n\",\n        \"test_data = data[num_train:]\\n\",\n        \"\\n\",\n        \"X_train, y_train = pack_truncated_data(train_data, num_prev=truncated_seq_len)\\n\",\n        \"X_test, y_test = pack_truncated_data(test_data, num_prev=truncated_seq_len)  \\n\",\n        \"\\n\",\n        \"print(\\\"Generated training/test data with shapes\\\\nX_train: {}, y_train: {}\\\\nX_test: {}, y_test: {}. \\\".format(\\n\",\n        \"    X_train.shape, y_train.shape, X_test.shape, y_test.shape))\\n\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Generated training/test data with shapes\\n\",\n            \"X_train: (2638, 2, 1), y_train: (2638, 1)\\n\",\n            \"X_test: (878, 2, 1), y_test: (878, 1). \\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"vgVxLBp8CaN6\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"**NOTE**: We reshape the training data into (batch_size, truncated_seq_len, 1) and (batch_size, 1) arrays.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"xiUrsPAI36M-\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### Intermediate Aside: (Truncated) Backpropagation-through-Time and Vanishing and Exploding Gradients\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"SCJlN3O11pr1\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"RNNs model sequential data, and are designed to capture how ***outputs*** at the current time step are influenced by the ***inputs*** that came before them. This is referred to as **long-range dependencies**. At a high level, this allows the model to remember what it has seen so far in order to better contextualize what it is seeing at the moment (think about how knowing the context of the sentence or conversation can sometimes help one to better figure out the intended meaning of a misheard word or ambiguous statement). It is what makes these models so powerful, but it is also what makes them so hard to train!\\n\",\n        \"\\n\",\n        \"The most well-known algorithm for training RNNs is called **back-propagation through time (BPTT**; there are other algorithms). BPTT conceptually amounts to unrolling the computations of the RNN over time, computing the errors, and backpropagating the gradients through the unrolled graph structure.  Ideally we want to unroll the graph up to the maximum sequence length, however in practice, since sequence lengths vary and memory is limited, we only end up unrolling sequences up to some length $T$. This is called **truncated BPTT**, and is the most used variant of BPTT.\\n\",\n        \"\\n\",\n        \"At a high level, there are two main issues when using (truncated) BPTT to train RNNs:\\n\",\n        \"\\n\",\n        \"* Having shared (\\\"tied\\\") recurrent weights ($W_{hh}$) mean that **the gradient on these weights at some time step $t$ depends on all time steps up to time-step $T$**, the length of the full (truncated) sequence. This also leads to the **vanishing/exploding gradients** problem, which we'll explain below.\\n\",\n        \"\\n\",\n        \"* **Memory usage grows linearly with the total number of steps $T$ that we unroll for**, because we need to save/cache the activations at each time-step (look at the Python code above to convince yourself of this).  This matters computationally, since memory is a limited resource. It also matters statistically, because it puts a limit on the types of dependency that the model can successfully learn, by preventing it from correcting errors that stem from an input more than $T$ steps ago.\\n\",\n        \"\\n\",\n        \"**NOTE**: Think about that last statement and make sure you understand those 2 points.\\n\",\n        \"\\n\",\n        \"BPTT is very similar to the standard back-propagation algorithm. Key to understanding the BPTT algorithm is to realize that gradients on the non-recurrent weights (weights of a per time-step classifier that tries to predict the part-of-speech tag for each word for example) and recurrent weights (that transform $h_{t-1}$ into $h_t$) are computed differently:\\n\",\n        \"\\n\",\n        \"* The gradients of **non-recurrent weights** ($W_{hy}$) depend only on the error at that time-step, $E_t$.\\n\",\n        \"* The gradients of **recurrent weights** ($W_{hh}$) depend on all previous time-steps up to maximum length $T$.\\n\",\n        \"\\n\",\n        \"The first point is fairly intuitive: predictions at time-step $t$ is related to the loss of that particular prediction. \\n\",\n        \"\\n\",\n        \"The second point will be explained in more detail in the lectures (see also [this great blog post](http://www.wildml.com/2015/10/recurrent-neural-networks-tutorial-part-3-backpropagation-through-time-and-vanishing-gradients/)), but briefly, this can be summarized in these equations:\\n\",\n        \"\\n\",\n        \"1. The **current** state is a function of the **previous** state and the current input: $h_t = \\\\sigma(W_{hh}h_{t-1} + W_{xh}x_t)$\\n\",\n        \"2. The gradient of the loss $E_t$ at time $t$ on $W_{hh}$ is a function of the current hidden state and model predictions $\\\\hat{y}_t$ at time t: \\n\",\n        \"$\\\\frac{\\\\partial E_t}{\\\\partial W_{hh}} = \\\\frac{\\\\partial E_t}{\\\\partial \\\\hat{y}_t}\\\\frac{\\\\partial\\\\hat{y}_t}{\\\\partial h_t}\\\\frac{\\\\partial h_t}{\\\\partial W_{hh}}$\\n\",\n        \"3. Substituting (1) into (2) results in a **sum over all previous time-steps**:\\n\",\n        \"$\\\\frac{\\\\partial E_t}{\\\\partial W_{hh}} = \\\\sum\\\\limits_{k=0}^{t} \\\\underbrace{\\\\frac{\\\\partial E_t}{\\\\partial \\\\hat{y}_t}\\\\frac{\\\\partial\\\\hat{y}_t}{\\\\partial h_t}\\\\frac{\\\\partial h_t}{\\\\partial h_k}\\\\frac{\\\\partial h_k}{\\\\partial W_{hh}}}_\\\\text{product of gradient terms}$\\n\",\n        \"\\n\",\n        \"The problem is that $\\\\frac{\\\\partial h_t}{\\\\partial h_k} = \\\\Pi_j \\\\frac{\\\\partial h_j}{\\\\partial h_{j-1}}$ for j from $k + 1$ to $t$.  Because of this **repeated multiplicative interaction**, as the sequence length $t$ gets longer, the gradients themselves can get diminishingly small (**vanish**) or grow too large and result in numeric overflow (**explode**). This has been shown to be related to the norms of the recurrent weight matrices being less than or equal to 1. Intuitively, it works very similar to how multiplying a small number $v<1.0$ with itself repeatedly can quickly go to zero, or conversely, a large number $v>1.0$ could quickly go to infinity; only this is for matrices.\\n\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"-o3qjqeZpLjN\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"###Build a tiny RNN in Keras\\n\",\n        \"\\n\",\n        \"Building an RNN in Keras is quite simple. We simply chain the layers together as follows:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"mEobTD6spOWx\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"def define_model(truncated_seq_len):  \\n\",\n        \"    \\n\",\n        \"    input_dimension = 1\\n\",\n        \"    hidden_dimension = 1\\n\",\n        \"    output_dimension = 1\\n\",\n        \"    \\n\",\n        \"    model = tf.keras.models.Sequential()\\n\",\n        \"    model.add(tf.keras.layers.SimpleRNN(\\n\",\n        \"        # We need to specify the input_shape *without* leading batch_size (it is inferred)\\n\",\n        \"        input_shape=(truncated_seq_len, input_dimension),\\n\",\n        \"        units=hidden_dimension, \\n\",\n        \"        return_sequences=False,\\n\",\n        \"        name='hidden_layer'))\\n\",\n        \"    model.add(tf.keras.layers.Dense(\\n\",\n        \"        output_dimension, \\n\",\n        \"        name='output_layer'))\\n\",\n        \"\\n\",\n        \"    model.compile(loss=\\\"mean_squared_error\\\", \\n\",\n        \"                  optimizer=tf.train.AdamOptimizer(learning_rate=1e-3))\\n\",\n        \"    \\n\",\n        \"    return model\\n\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"JHRscZaQze26\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"**NOTE**: We're building an RNN for **regression**. We therefore use a linear layer (which outputs real-valued numbers) at the output with the \\\"*mean_squared_error*\\\" loss function.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"ONvBy4AopTrF\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 215\n        },\n        \"outputId\": \"4cff0a47-5688-457a-c071-a5458decf8f6\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"model = define_model(truncated_seq_len = X_train.shape[1])\\n\",\n        \"model.summary()\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"_________________________________________________________________\\n\",\n            \"Layer (type)                 Output Shape              Param #   \\n\",\n            \"=================================================================\\n\",\n            \"hidden_layer (SimpleRNN)     (None, 1)                 3         \\n\",\n            \"_________________________________________________________________\\n\",\n            \"output_layer (Dense)         (None, 1)                 2         \\n\",\n            \"=================================================================\\n\",\n            \"Total params: 5\\n\",\n            \"Trainable params: 5\\n\",\n            \"Non-trainable params: 0\\n\",\n            \"_________________________________________________________________\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"ddb6_04dfZvn\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"**NOTE**: You need to re-run the above cell every time after training to reset the model weights!\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"hD94X5iQc8Jg\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"###Train the tiny RNN\\n\",\n        \"Now let's train the model. This may take a few minutes (it takes much longer if you increase `truncated_seq_len`). Set `verbose=1` **before** you run the cell to see the intermediate output as the model is training. Set it to 0 if you don't want any output.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"xvahCyhk7Wvr\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"''' SOLUTION TO ONE OF TASKS [DELETE]\\n\",\n        \"patience = 5\\n\",\n        \"train_history = model.fit(X_train, y_train, batch_size=600, epochs=1000, \\n\",\n        \"                          verbose=1, validation_split=0.05,\\n\",\n        \"                          callbacks=[tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=patience, verbose=1)])\\n\",\n        \"'''\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"xumvRz2lrPus\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 36035\n        },\n        \"outputId\": \"39973883-59f5-4233-8f02-83f902e0dc35\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"train_history = model.fit(X_train, y_train, batch_size=600, epochs=1000, \\n\",\n        \"                          verbose=1, validation_split=0.05)\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Train on 2506 samples, validate on 132 samples\\n\",\n            \"Epoch 1/1000\\n\",\n            \"2506/2506 [==============================] - 0s 26us/step - loss: 0.4968 - val_loss: 0.4914\\n\",\n            \"Epoch 2/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.4965 - val_loss: 0.4911\\n\",\n            \"Epoch 3/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.4961 - val_loss: 0.4908\\n\",\n            \"Epoch 4/1000\\n\",\n            \"2506/2506 [==============================] - 0s 14us/step - loss: 0.4958 - val_loss: 0.4904\\n\",\n            \"Epoch 5/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.4953 - val_loss: 0.4898\\n\",\n            \"Epoch 6/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.4949 - val_loss: 0.4893\\n\",\n            \"Epoch 7/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.4944 - val_loss: 0.4887\\n\",\n            \"Epoch 8/1000\\n\",\n            \"2506/2506 [==============================] - 0s 14us/step - loss: 0.4939 - val_loss: 0.4883\\n\",\n            \"Epoch 9/1000\\n\",\n            \"2506/2506 [==============================] - 0s 13us/step - loss: 0.4933 - val_loss: 0.4877\\n\",\n            \"Epoch 10/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.4927 - val_loss: 0.4872\\n\",\n            \"Epoch 11/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.4920 - val_loss: 0.4865\\n\",\n            \"Epoch 12/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.4913 - val_loss: 0.4856\\n\",\n            \"Epoch 13/1000\\n\",\n            \"2506/2506 [==============================] - 0s 14us/step - loss: 0.4905 - val_loss: 0.4847\\n\",\n            \"Epoch 14/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.4896 - val_loss: 0.4838\\n\",\n            \"Epoch 15/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.4887 - val_loss: 0.4828\\n\",\n            \"Epoch 16/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.4876 - val_loss: 0.4819\\n\",\n            \"Epoch 17/1000\\n\",\n            \"2506/2506 [==============================] - 0s 14us/step - loss: 0.4865 - val_loss: 0.4808\\n\",\n            \"Epoch 18/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.4853 - val_loss: 0.4797\\n\",\n            \"Epoch 19/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.4840 - val_loss: 0.4784\\n\",\n            \"Epoch 20/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.4826 - val_loss: 0.4771\\n\",\n            \"Epoch 21/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.4811 - val_loss: 0.4756\\n\",\n            \"Epoch 22/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.4794 - val_loss: 0.4741\\n\",\n            \"Epoch 23/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.4777 - val_loss: 0.4725\\n\",\n            \"Epoch 24/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.4758 - val_loss: 0.4707\\n\",\n            \"Epoch 25/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.4738 - val_loss: 0.4689\\n\",\n            \"Epoch 26/1000\\n\",\n            \"2506/2506 [==============================] - 0s 14us/step - loss: 0.4717 - val_loss: 0.4669\\n\",\n            \"Epoch 27/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.4695 - val_loss: 0.4646\\n\",\n            \"Epoch 28/1000\\n\",\n            \"2506/2506 [==============================] - 0s 14us/step - loss: 0.4671 - val_loss: 0.4622\\n\",\n            \"Epoch 29/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.4646 - val_loss: 0.4596\\n\",\n            \"Epoch 30/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.4619 - val_loss: 0.4568\\n\",\n            \"Epoch 31/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.4590 - val_loss: 0.4540\\n\",\n            \"Epoch 32/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.4560 - val_loss: 0.4510\\n\",\n            \"Epoch 33/1000\\n\",\n            \"2506/2506 [==============================] - 0s 13us/step - loss: 0.4529 - val_loss: 0.4479\\n\",\n            \"Epoch 34/1000\\n\",\n            \"2506/2506 [==============================] - 0s 14us/step - loss: 0.4496 - val_loss: 0.4446\\n\",\n            \"Epoch 35/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.4461 - val_loss: 0.4412\\n\",\n            \"Epoch 36/1000\\n\",\n            \"2506/2506 [==============================] - 0s 14us/step - loss: 0.4425 - val_loss: 0.4376\\n\",\n            \"Epoch 37/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.4388 - val_loss: 0.4337\\n\",\n            \"Epoch 38/1000\\n\",\n            \"2506/2506 [==============================] - 0s 13us/step - loss: 0.4349 - val_loss: 0.4297\\n\",\n            \"Epoch 39/1000\\n\",\n            \"2506/2506 [==============================] - 0s 14us/step - loss: 0.4308 - val_loss: 0.4256\\n\",\n            \"Epoch 40/1000\\n\",\n            \"2506/2506 [==============================] - 0s 14us/step - loss: 0.4266 - val_loss: 0.4214\\n\",\n            \"Epoch 41/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.4223 - val_loss: 0.4170\\n\",\n            \"Epoch 42/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.4178 - val_loss: 0.4127\\n\",\n            \"Epoch 43/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.4133 - val_loss: 0.4082\\n\",\n            \"Epoch 44/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.4086 - val_loss: 0.4036\\n\",\n            \"Epoch 45/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.4038 - val_loss: 0.3988\\n\",\n            \"Epoch 46/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.3988 - val_loss: 0.3939\\n\",\n            \"Epoch 47/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.3938 - val_loss: 0.3889\\n\",\n            \"Epoch 48/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.3888 - val_loss: 0.3839\\n\",\n            \"Epoch 49/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.3836 - val_loss: 0.3789\\n\",\n            \"Epoch 50/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.3785 - val_loss: 0.3738\\n\",\n            \"Epoch 51/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.3732 - val_loss: 0.3686\\n\",\n            \"Epoch 52/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.3679 - val_loss: 0.3634\\n\",\n            \"Epoch 53/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.3625 - val_loss: 0.3581\\n\",\n            \"Epoch 54/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.3571 - val_loss: 0.3526\\n\",\n            \"Epoch 55/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.3516 - val_loss: 0.3472\\n\",\n            \"Epoch 56/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.3461 - val_loss: 0.3417\\n\",\n            \"Epoch 57/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.3406 - val_loss: 0.3362\\n\",\n            \"Epoch 58/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.3350 - val_loss: 0.3306\\n\",\n            \"Epoch 59/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.3295 - val_loss: 0.3249\\n\",\n            \"Epoch 60/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.3238 - val_loss: 0.3192\\n\",\n            \"Epoch 61/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.3182 - val_loss: 0.3136\\n\",\n            \"Epoch 62/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.3126 - val_loss: 0.3079\\n\",\n            \"Epoch 63/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.3069 - val_loss: 0.3022\\n\",\n            \"Epoch 64/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.3013 - val_loss: 0.2964\\n\",\n            \"Epoch 65/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.2956 - val_loss: 0.2908\\n\",\n            \"Epoch 66/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.2900 - val_loss: 0.2851\\n\",\n            \"Epoch 67/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.2844 - val_loss: 0.2794\\n\",\n            \"Epoch 68/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.2787 - val_loss: 0.2737\\n\",\n            \"Epoch 69/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.2729 - val_loss: 0.2679\\n\",\n            \"Epoch 70/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.2673 - val_loss: 0.2621\\n\",\n            \"Epoch 71/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.2615 - val_loss: 0.2563\\n\",\n            \"Epoch 72/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.2557 - val_loss: 0.2505\\n\",\n            \"Epoch 73/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.2500 - val_loss: 0.2446\\n\",\n            \"Epoch 74/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.2442 - val_loss: 0.2388\\n\",\n            \"Epoch 75/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.2385 - val_loss: 0.2329\\n\",\n            \"Epoch 76/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.2328 - val_loss: 0.2271\\n\",\n            \"Epoch 77/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.2270 - val_loss: 0.2213\\n\",\n            \"Epoch 78/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.2212 - val_loss: 0.2155\\n\",\n            \"Epoch 79/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.2155 - val_loss: 0.2098\\n\",\n            \"Epoch 80/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.2099 - val_loss: 0.2041\\n\",\n            \"Epoch 81/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.2042 - val_loss: 0.1984\\n\",\n            \"Epoch 82/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.1986 - val_loss: 0.1929\\n\",\n            \"Epoch 83/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.1931 - val_loss: 0.1873\\n\",\n            \"Epoch 84/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.1876 - val_loss: 0.1819\\n\",\n            \"Epoch 85/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.1822 - val_loss: 0.1764\\n\",\n            \"Epoch 86/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.1768 - val_loss: 0.1710\\n\",\n            \"Epoch 87/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.1714 - val_loss: 0.1656\\n\",\n            \"Epoch 88/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.1661 - val_loss: 0.1605\\n\",\n            \"Epoch 89/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.1610 - val_loss: 0.1554\\n\",\n            \"Epoch 90/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.1559 - val_loss: 0.1505\\n\",\n            \"Epoch 91/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.1509 - val_loss: 0.1456\\n\",\n            \"Epoch 92/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.1461 - val_loss: 0.1409\\n\",\n            \"Epoch 93/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.1414 - val_loss: 0.1363\\n\",\n            \"Epoch 94/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.1368 - val_loss: 0.1317\\n\",\n            \"Epoch 95/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.1323 - val_loss: 0.1273\\n\",\n            \"Epoch 96/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.1279 - val_loss: 0.1231\\n\",\n            \"Epoch 97/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.1237 - val_loss: 0.1190\\n\",\n            \"Epoch 98/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.1196 - val_loss: 0.1150\\n\",\n            \"Epoch 99/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.1156 - val_loss: 0.1111\\n\",\n            \"Epoch 100/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.1117 - val_loss: 0.1074\\n\",\n            \"Epoch 101/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.1080 - val_loss: 0.1039\\n\",\n            \"Epoch 102/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.1045 - val_loss: 0.1006\\n\",\n            \"Epoch 103/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.1011 - val_loss: 0.0973\\n\",\n            \"Epoch 104/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0978 - val_loss: 0.0941\\n\",\n            \"Epoch 105/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0946 - val_loss: 0.0911\\n\",\n            \"Epoch 106/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0916 - val_loss: 0.0882\\n\",\n            \"Epoch 107/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0887 - val_loss: 0.0854\\n\",\n            \"Epoch 108/1000\\n\",\n            \"2506/2506 [==============================] - 0s 14us/step - loss: 0.0859 - val_loss: 0.0828\\n\",\n            \"Epoch 109/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0833 - val_loss: 0.0803\\n\",\n            \"Epoch 110/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0808 - val_loss: 0.0779\\n\",\n            \"Epoch 111/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0783 - val_loss: 0.0757\\n\",\n            \"Epoch 112/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0761 - val_loss: 0.0736\\n\",\n            \"Epoch 113/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0739 - val_loss: 0.0716\\n\",\n            \"Epoch 114/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0719 - val_loss: 0.0697\\n\",\n            \"Epoch 115/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0699 - val_loss: 0.0679\\n\",\n            \"Epoch 116/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0681 - val_loss: 0.0663\\n\",\n            \"Epoch 117/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0663 - val_loss: 0.0646\\n\",\n            \"Epoch 118/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0647 - val_loss: 0.0631\\n\",\n            \"Epoch 119/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0631 - val_loss: 0.0616\\n\",\n            \"Epoch 120/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0617 - val_loss: 0.0603\\n\",\n            \"Epoch 121/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0603 - val_loss: 0.0591\\n\",\n            \"Epoch 122/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0590 - val_loss: 0.0579\\n\",\n            \"Epoch 123/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0578 - val_loss: 0.0567\\n\",\n            \"Epoch 124/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0566 - val_loss: 0.0557\\n\",\n            \"Epoch 125/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0556 - val_loss: 0.0547\\n\",\n            \"Epoch 126/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0545 - val_loss: 0.0538\\n\",\n            \"Epoch 127/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0536 - val_loss: 0.0530\\n\",\n            \"Epoch 128/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0527 - val_loss: 0.0522\\n\",\n            \"Epoch 129/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0519 - val_loss: 0.0515\\n\",\n            \"Epoch 130/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0511 - val_loss: 0.0507\\n\",\n            \"Epoch 131/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0504 - val_loss: 0.0500\\n\",\n            \"Epoch 132/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0497 - val_loss: 0.0494\\n\",\n            \"Epoch 133/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0490 - val_loss: 0.0488\\n\",\n            \"Epoch 134/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0484 - val_loss: 0.0482\\n\",\n            \"Epoch 135/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0478 - val_loss: 0.0477\\n\",\n            \"Epoch 136/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0472 - val_loss: 0.0472\\n\",\n            \"Epoch 137/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0467 - val_loss: 0.0467\\n\",\n            \"Epoch 138/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0462 - val_loss: 0.0463\\n\",\n            \"Epoch 139/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0457 - val_loss: 0.0459\\n\",\n            \"Epoch 140/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0453 - val_loss: 0.0455\\n\",\n            \"Epoch 141/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0448 - val_loss: 0.0451\\n\",\n            \"Epoch 142/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0444 - val_loss: 0.0448\\n\",\n            \"Epoch 143/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0440 - val_loss: 0.0444\\n\",\n            \"Epoch 144/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0437 - val_loss: 0.0441\\n\",\n            \"Epoch 145/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0433 - val_loss: 0.0438\\n\",\n            \"Epoch 146/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0430 - val_loss: 0.0435\\n\",\n            \"Epoch 147/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0427 - val_loss: 0.0431\\n\",\n            \"Epoch 148/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0424 - val_loss: 0.0428\\n\",\n            \"Epoch 149/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0421 - val_loss: 0.0426\\n\",\n            \"Epoch 150/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0418 - val_loss: 0.0423\\n\",\n            \"Epoch 151/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0415 - val_loss: 0.0421\\n\",\n            \"Epoch 152/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0412 - val_loss: 0.0419\\n\",\n            \"Epoch 153/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0410 - val_loss: 0.0416\\n\",\n            \"Epoch 154/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0407 - val_loss: 0.0414\\n\",\n            \"Epoch 155/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0405 - val_loss: 0.0411\\n\",\n            \"Epoch 156/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0402 - val_loss: 0.0409\\n\",\n            \"Epoch 157/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0400 - val_loss: 0.0407\\n\",\n            \"Epoch 158/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0398 - val_loss: 0.0405\\n\",\n            \"Epoch 159/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0395 - val_loss: 0.0403\\n\",\n            \"Epoch 160/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0393 - val_loss: 0.0401\\n\",\n            \"Epoch 161/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0391 - val_loss: 0.0399\\n\",\n            \"Epoch 162/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0389 - val_loss: 0.0397\\n\",\n            \"Epoch 163/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0387 - val_loss: 0.0395\\n\",\n            \"Epoch 164/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0385 - val_loss: 0.0393\\n\",\n            \"Epoch 165/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0382 - val_loss: 0.0391\\n\",\n            \"Epoch 166/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0380 - val_loss: 0.0389\\n\",\n            \"Epoch 167/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0378 - val_loss: 0.0387\\n\",\n            \"Epoch 168/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0376 - val_loss: 0.0385\\n\",\n            \"Epoch 169/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0374 - val_loss: 0.0383\\n\",\n            \"Epoch 170/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0372 - val_loss: 0.0381\\n\",\n            \"Epoch 171/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0370 - val_loss: 0.0379\\n\",\n            \"Epoch 172/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0368 - val_loss: 0.0377\\n\",\n            \"Epoch 173/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0366 - val_loss: 0.0375\\n\",\n            \"Epoch 174/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0364 - val_loss: 0.0373\\n\",\n            \"Epoch 175/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0362 - val_loss: 0.0372\\n\",\n            \"Epoch 176/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0360 - val_loss: 0.0370\\n\",\n            \"Epoch 177/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0358 - val_loss: 0.0368\\n\",\n            \"Epoch 178/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0356 - val_loss: 0.0366\\n\",\n            \"Epoch 179/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0354 - val_loss: 0.0364\\n\",\n            \"Epoch 180/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0352 - val_loss: 0.0362\\n\",\n            \"Epoch 181/1000\\n\",\n            \"2506/2506 [==============================] - 0s 20us/step - loss: 0.0351 - val_loss: 0.0360\\n\",\n            \"Epoch 182/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0349 - val_loss: 0.0359\\n\",\n            \"Epoch 183/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0347 - val_loss: 0.0357\\n\",\n            \"Epoch 184/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0345 - val_loss: 0.0355\\n\",\n            \"Epoch 185/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0343 - val_loss: 0.0353\\n\",\n            \"Epoch 186/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0341 - val_loss: 0.0351\\n\",\n            \"Epoch 187/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0339 - val_loss: 0.0349\\n\",\n            \"Epoch 188/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0337 - val_loss: 0.0347\\n\",\n            \"Epoch 189/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0335 - val_loss: 0.0345\\n\",\n            \"Epoch 190/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0333 - val_loss: 0.0343\\n\",\n            \"Epoch 191/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0331 - val_loss: 0.0342\\n\",\n            \"Epoch 192/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0329 - val_loss: 0.0340\\n\",\n            \"Epoch 193/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0327 - val_loss: 0.0338\\n\",\n            \"Epoch 194/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0325 - val_loss: 0.0336\\n\",\n            \"Epoch 195/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0323 - val_loss: 0.0334\\n\",\n            \"Epoch 196/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0321 - val_loss: 0.0332\\n\",\n            \"Epoch 197/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0320 - val_loss: 0.0330\\n\",\n            \"Epoch 198/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0318 - val_loss: 0.0328\\n\",\n            \"Epoch 199/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0316 - val_loss: 0.0326\\n\",\n            \"Epoch 200/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0314 - val_loss: 0.0324\\n\",\n            \"Epoch 201/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0312 - val_loss: 0.0322\\n\",\n            \"Epoch 202/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0310 - val_loss: 0.0321\\n\",\n            \"Epoch 203/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0308 - val_loss: 0.0319\\n\",\n            \"Epoch 204/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0306 - val_loss: 0.0317\\n\",\n            \"Epoch 205/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0304 - val_loss: 0.0315\\n\",\n            \"Epoch 206/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0302 - val_loss: 0.0314\\n\",\n            \"Epoch 207/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0301 - val_loss: 0.0312\\n\",\n            \"Epoch 208/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0299 - val_loss: 0.0310\\n\",\n            \"Epoch 209/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0297 - val_loss: 0.0308\\n\",\n            \"Epoch 210/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0295 - val_loss: 0.0306\\n\",\n            \"Epoch 211/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0293 - val_loss: 0.0304\\n\",\n            \"Epoch 212/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0291 - val_loss: 0.0302\\n\",\n            \"Epoch 213/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0289 - val_loss: 0.0300\\n\",\n            \"Epoch 214/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0287 - val_loss: 0.0298\\n\",\n            \"Epoch 215/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0286 - val_loss: 0.0296\\n\",\n            \"Epoch 216/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0284 - val_loss: 0.0295\\n\",\n            \"Epoch 217/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0282 - val_loss: 0.0293\\n\",\n            \"Epoch 218/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0280 - val_loss: 0.0291\\n\",\n            \"Epoch 219/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0278 - val_loss: 0.0289\\n\",\n            \"Epoch 220/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0276 - val_loss: 0.0288\\n\",\n            \"Epoch 221/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0275 - val_loss: 0.0286\\n\",\n            \"Epoch 222/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0273 - val_loss: 0.0285\\n\",\n            \"Epoch 223/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0271 - val_loss: 0.0283\\n\",\n            \"Epoch 224/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0269 - val_loss: 0.0281\\n\",\n            \"Epoch 225/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0268 - val_loss: 0.0279\\n\",\n            \"Epoch 226/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0266 - val_loss: 0.0277\\n\",\n            \"Epoch 227/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0264 - val_loss: 0.0275\\n\",\n            \"Epoch 228/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0262 - val_loss: 0.0274\\n\",\n            \"Epoch 229/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0260 - val_loss: 0.0272\\n\",\n            \"Epoch 230/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0259 - val_loss: 0.0270\\n\",\n            \"Epoch 231/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0257 - val_loss: 0.0268\\n\",\n            \"Epoch 232/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0255 - val_loss: 0.0267\\n\",\n            \"Epoch 233/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0253 - val_loss: 0.0265\\n\",\n            \"Epoch 234/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0252 - val_loss: 0.0263\\n\",\n            \"Epoch 235/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0250 - val_loss: 0.0262\\n\",\n            \"Epoch 236/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0248 - val_loss: 0.0260\\n\",\n            \"Epoch 237/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0247 - val_loss: 0.0258\\n\",\n            \"Epoch 238/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0245 - val_loss: 0.0257\\n\",\n            \"Epoch 239/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0243 - val_loss: 0.0255\\n\",\n            \"Epoch 240/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0242 - val_loss: 0.0253\\n\",\n            \"Epoch 241/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0240 - val_loss: 0.0252\\n\",\n            \"Epoch 242/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0238 - val_loss: 0.0250\\n\",\n            \"Epoch 243/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0237 - val_loss: 0.0249\\n\",\n            \"Epoch 244/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0235 - val_loss: 0.0247\\n\",\n            \"Epoch 245/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0233 - val_loss: 0.0246\\n\",\n            \"Epoch 246/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0232 - val_loss: 0.0244\\n\",\n            \"Epoch 247/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0230 - val_loss: 0.0242\\n\",\n            \"Epoch 248/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0229 - val_loss: 0.0241\\n\",\n            \"Epoch 249/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0227 - val_loss: 0.0239\\n\",\n            \"Epoch 250/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0226 - val_loss: 0.0238\\n\",\n            \"Epoch 251/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0224 - val_loss: 0.0236\\n\",\n            \"Epoch 252/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0222 - val_loss: 0.0235\\n\",\n            \"Epoch 253/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0221 - val_loss: 0.0233\\n\",\n            \"Epoch 254/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0219 - val_loss: 0.0232\\n\",\n            \"Epoch 255/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0218 - val_loss: 0.0230\\n\",\n            \"Epoch 256/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0216 - val_loss: 0.0229\\n\",\n            \"Epoch 257/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0215 - val_loss: 0.0227\\n\",\n            \"Epoch 258/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0213 - val_loss: 0.0226\\n\",\n            \"Epoch 259/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0212 - val_loss: 0.0224\\n\",\n            \"Epoch 260/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0210 - val_loss: 0.0223\\n\",\n            \"Epoch 261/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0209 - val_loss: 0.0222\\n\",\n            \"Epoch 262/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0208 - val_loss: 0.0220\\n\",\n            \"Epoch 263/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0206 - val_loss: 0.0219\\n\",\n            \"Epoch 264/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0205 - val_loss: 0.0217\\n\",\n            \"Epoch 265/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0203 - val_loss: 0.0216\\n\",\n            \"Epoch 266/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0202 - val_loss: 0.0215\\n\",\n            \"Epoch 267/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0201 - val_loss: 0.0213\\n\",\n            \"Epoch 268/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0199 - val_loss: 0.0212\\n\",\n            \"Epoch 269/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0198 - val_loss: 0.0211\\n\",\n            \"Epoch 270/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0197 - val_loss: 0.0210\\n\",\n            \"Epoch 271/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0195 - val_loss: 0.0208\\n\",\n            \"Epoch 272/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0194 - val_loss: 0.0207\\n\",\n            \"Epoch 273/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0193 - val_loss: 0.0206\\n\",\n            \"Epoch 274/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0191 - val_loss: 0.0205\\n\",\n            \"Epoch 275/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0190 - val_loss: 0.0203\\n\",\n            \"Epoch 276/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0189 - val_loss: 0.0202\\n\",\n            \"Epoch 277/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0188 - val_loss: 0.0201\\n\",\n            \"Epoch 278/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0186 - val_loss: 0.0200\\n\",\n            \"Epoch 279/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0185 - val_loss: 0.0198\\n\",\n            \"Epoch 280/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0184 - val_loss: 0.0197\\n\",\n            \"Epoch 281/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0183 - val_loss: 0.0196\\n\",\n            \"Epoch 282/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0182 - val_loss: 0.0195\\n\",\n            \"Epoch 283/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0180 - val_loss: 0.0194\\n\",\n            \"Epoch 284/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0179 - val_loss: 0.0193\\n\",\n            \"Epoch 285/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0178 - val_loss: 0.0192\\n\",\n            \"Epoch 286/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0177 - val_loss: 0.0191\\n\",\n            \"Epoch 287/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0176 - val_loss: 0.0190\\n\",\n            \"Epoch 288/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0175 - val_loss: 0.0188\\n\",\n            \"Epoch 289/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0174 - val_loss: 0.0187\\n\",\n            \"Epoch 290/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0173 - val_loss: 0.0186\\n\",\n            \"Epoch 291/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0172 - val_loss: 0.0185\\n\",\n            \"Epoch 292/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0171 - val_loss: 0.0185\\n\",\n            \"Epoch 293/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0170 - val_loss: 0.0184\\n\",\n            \"Epoch 294/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0169 - val_loss: 0.0183\\n\",\n            \"Epoch 295/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0168 - val_loss: 0.0182\\n\",\n            \"Epoch 296/1000\\n\",\n            \"2506/2506 [==============================] - 0s 20us/step - loss: 0.0167 - val_loss: 0.0181\\n\",\n            \"Epoch 297/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0166 - val_loss: 0.0180\\n\",\n            \"Epoch 298/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0165 - val_loss: 0.0179\\n\",\n            \"Epoch 299/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0164 - val_loss: 0.0178\\n\",\n            \"Epoch 300/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0163 - val_loss: 0.0177\\n\",\n            \"Epoch 301/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0162 - val_loss: 0.0176\\n\",\n            \"Epoch 302/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0161 - val_loss: 0.0175\\n\",\n            \"Epoch 303/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0160 - val_loss: 0.0174\\n\",\n            \"Epoch 304/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0159 - val_loss: 0.0173\\n\",\n            \"Epoch 305/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0158 - val_loss: 0.0173\\n\",\n            \"Epoch 306/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0157 - val_loss: 0.0172\\n\",\n            \"Epoch 307/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0156 - val_loss: 0.0171\\n\",\n            \"Epoch 308/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0156 - val_loss: 0.0170\\n\",\n            \"Epoch 309/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0155 - val_loss: 0.0169\\n\",\n            \"Epoch 310/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0154 - val_loss: 0.0169\\n\",\n            \"Epoch 311/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0153 - val_loss: 0.0168\\n\",\n            \"Epoch 312/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0152 - val_loss: 0.0167\\n\",\n            \"Epoch 313/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0152 - val_loss: 0.0166\\n\",\n            \"Epoch 314/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0151 - val_loss: 0.0166\\n\",\n            \"Epoch 315/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0150 - val_loss: 0.0165\\n\",\n            \"Epoch 316/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0149 - val_loss: 0.0164\\n\",\n            \"Epoch 317/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0149 - val_loss: 0.0164\\n\",\n            \"Epoch 318/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0148 - val_loss: 0.0163\\n\",\n            \"Epoch 319/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0147 - val_loss: 0.0162\\n\",\n            \"Epoch 320/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0146 - val_loss: 0.0161\\n\",\n            \"Epoch 321/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0146 - val_loss: 0.0161\\n\",\n            \"Epoch 322/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0145 - val_loss: 0.0160\\n\",\n            \"Epoch 323/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0144 - val_loss: 0.0159\\n\",\n            \"Epoch 324/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0144 - val_loss: 0.0159\\n\",\n            \"Epoch 325/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0143 - val_loss: 0.0158\\n\",\n            \"Epoch 326/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0143 - val_loss: 0.0158\\n\",\n            \"Epoch 327/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0142 - val_loss: 0.0157\\n\",\n            \"Epoch 328/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0141 - val_loss: 0.0157\\n\",\n            \"Epoch 329/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0141 - val_loss: 0.0156\\n\",\n            \"Epoch 330/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0140 - val_loss: 0.0156\\n\",\n            \"Epoch 331/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0140 - val_loss: 0.0155\\n\",\n            \"Epoch 332/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0139 - val_loss: 0.0154\\n\",\n            \"Epoch 333/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0138 - val_loss: 0.0154\\n\",\n            \"Epoch 334/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0138 - val_loss: 0.0153\\n\",\n            \"Epoch 335/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0137 - val_loss: 0.0153\\n\",\n            \"Epoch 336/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0137 - val_loss: 0.0152\\n\",\n            \"Epoch 337/1000\\n\",\n            \"2506/2506 [==============================] - 0s 20us/step - loss: 0.0136 - val_loss: 0.0152\\n\",\n            \"Epoch 338/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0136 - val_loss: 0.0151\\n\",\n            \"Epoch 339/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0135 - val_loss: 0.0151\\n\",\n            \"Epoch 340/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0135 - val_loss: 0.0150\\n\",\n            \"Epoch 341/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0134 - val_loss: 0.0150\\n\",\n            \"Epoch 342/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0134 - val_loss: 0.0149\\n\",\n            \"Epoch 343/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0133 - val_loss: 0.0149\\n\",\n            \"Epoch 344/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0133 - val_loss: 0.0149\\n\",\n            \"Epoch 345/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0132 - val_loss: 0.0148\\n\",\n            \"Epoch 346/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0132 - val_loss: 0.0148\\n\",\n            \"Epoch 347/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0132 - val_loss: 0.0147\\n\",\n            \"Epoch 348/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0131 - val_loss: 0.0147\\n\",\n            \"Epoch 349/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0131 - val_loss: 0.0147\\n\",\n            \"Epoch 350/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0130 - val_loss: 0.0146\\n\",\n            \"Epoch 351/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0130 - val_loss: 0.0146\\n\",\n            \"Epoch 352/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0130 - val_loss: 0.0146\\n\",\n            \"Epoch 353/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0129 - val_loss: 0.0145\\n\",\n            \"Epoch 354/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0129 - val_loss: 0.0145\\n\",\n            \"Epoch 355/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0129 - val_loss: 0.0144\\n\",\n            \"Epoch 356/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0128 - val_loss: 0.0144\\n\",\n            \"Epoch 357/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0128 - val_loss: 0.0144\\n\",\n            \"Epoch 358/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0127 - val_loss: 0.0143\\n\",\n            \"Epoch 359/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0127 - val_loss: 0.0143\\n\",\n            \"Epoch 360/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0127 - val_loss: 0.0143\\n\",\n            \"Epoch 361/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0126 - val_loss: 0.0143\\n\",\n            \"Epoch 362/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0126 - val_loss: 0.0142\\n\",\n            \"Epoch 363/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0126 - val_loss: 0.0142\\n\",\n            \"Epoch 364/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0126 - val_loss: 0.0142\\n\",\n            \"Epoch 365/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0125 - val_loss: 0.0142\\n\",\n            \"Epoch 366/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0125 - val_loss: 0.0141\\n\",\n            \"Epoch 367/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0125 - val_loss: 0.0141\\n\",\n            \"Epoch 368/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0125 - val_loss: 0.0141\\n\",\n            \"Epoch 369/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0124 - val_loss: 0.0141\\n\",\n            \"Epoch 370/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0124 - val_loss: 0.0140\\n\",\n            \"Epoch 371/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0124 - val_loss: 0.0140\\n\",\n            \"Epoch 372/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0124 - val_loss: 0.0140\\n\",\n            \"Epoch 373/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0123 - val_loss: 0.0140\\n\",\n            \"Epoch 374/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0123 - val_loss: 0.0140\\n\",\n            \"Epoch 375/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0123 - val_loss: 0.0139\\n\",\n            \"Epoch 376/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0123 - val_loss: 0.0139\\n\",\n            \"Epoch 377/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0122 - val_loss: 0.0139\\n\",\n            \"Epoch 378/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0122 - val_loss: 0.0139\\n\",\n            \"Epoch 379/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0122 - val_loss: 0.0138\\n\",\n            \"Epoch 380/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0122 - val_loss: 0.0138\\n\",\n            \"Epoch 381/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0122 - val_loss: 0.0138\\n\",\n            \"Epoch 382/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0121 - val_loss: 0.0138\\n\",\n            \"Epoch 383/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0121 - val_loss: 0.0138\\n\",\n            \"Epoch 384/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0121 - val_loss: 0.0138\\n\",\n            \"Epoch 385/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0121 - val_loss: 0.0137\\n\",\n            \"Epoch 386/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0121 - val_loss: 0.0137\\n\",\n            \"Epoch 387/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0121 - val_loss: 0.0137\\n\",\n            \"Epoch 388/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0120 - val_loss: 0.0137\\n\",\n            \"Epoch 389/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0120 - val_loss: 0.0137\\n\",\n            \"Epoch 390/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0120 - val_loss: 0.0137\\n\",\n            \"Epoch 391/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0120 - val_loss: 0.0137\\n\",\n            \"Epoch 392/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0120 - val_loss: 0.0137\\n\",\n            \"Epoch 393/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0120 - val_loss: 0.0136\\n\",\n            \"Epoch 394/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0120 - val_loss: 0.0136\\n\",\n            \"Epoch 395/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0119 - val_loss: 0.0136\\n\",\n            \"Epoch 396/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0119 - val_loss: 0.0136\\n\",\n            \"Epoch 397/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0119 - val_loss: 0.0136\\n\",\n            \"Epoch 398/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0119 - val_loss: 0.0136\\n\",\n            \"Epoch 399/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0119 - val_loss: 0.0136\\n\",\n            \"Epoch 400/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0119 - val_loss: 0.0136\\n\",\n            \"Epoch 401/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0119 - val_loss: 0.0136\\n\",\n            \"Epoch 402/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0119 - val_loss: 0.0135\\n\",\n            \"Epoch 403/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0118 - val_loss: 0.0135\\n\",\n            \"Epoch 404/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0118 - val_loss: 0.0135\\n\",\n            \"Epoch 405/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0118 - val_loss: 0.0135\\n\",\n            \"Epoch 406/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0118 - val_loss: 0.0135\\n\",\n            \"Epoch 407/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0118 - val_loss: 0.0135\\n\",\n            \"Epoch 408/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0118 - val_loss: 0.0135\\n\",\n            \"Epoch 409/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0118 - val_loss: 0.0135\\n\",\n            \"Epoch 410/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0118 - val_loss: 0.0135\\n\",\n            \"Epoch 411/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0118 - val_loss: 0.0135\\n\",\n            \"Epoch 412/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0118 - val_loss: 0.0135\\n\",\n            \"Epoch 413/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0118 - val_loss: 0.0134\\n\",\n            \"Epoch 414/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0117 - val_loss: 0.0134\\n\",\n            \"Epoch 415/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0117 - val_loss: 0.0134\\n\",\n            \"Epoch 416/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0117 - val_loss: 0.0134\\n\",\n            \"Epoch 417/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0117 - val_loss: 0.0134\\n\",\n            \"Epoch 418/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0117 - val_loss: 0.0134\\n\",\n            \"Epoch 419/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0117 - val_loss: 0.0134\\n\",\n            \"Epoch 420/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0117 - val_loss: 0.0134\\n\",\n            \"Epoch 421/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0117 - val_loss: 0.0134\\n\",\n            \"Epoch 422/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0117 - val_loss: 0.0134\\n\",\n            \"Epoch 423/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0117 - val_loss: 0.0134\\n\",\n            \"Epoch 424/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0117 - val_loss: 0.0134\\n\",\n            \"Epoch 425/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0117 - val_loss: 0.0134\\n\",\n            \"Epoch 426/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0117 - val_loss: 0.0134\\n\",\n            \"Epoch 427/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0117 - val_loss: 0.0134\\n\",\n            \"Epoch 428/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0116 - val_loss: 0.0134\\n\",\n            \"Epoch 429/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0116 - val_loss: 0.0134\\n\",\n            \"Epoch 430/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0116 - val_loss: 0.0134\\n\",\n            \"Epoch 431/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0116 - val_loss: 0.0134\\n\",\n            \"Epoch 432/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0116 - val_loss: 0.0134\\n\",\n            \"Epoch 433/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0116 - val_loss: 0.0133\\n\",\n            \"Epoch 434/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0116 - val_loss: 0.0133\\n\",\n            \"Epoch 435/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0116 - val_loss: 0.0133\\n\",\n            \"Epoch 436/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0116 - val_loss: 0.0133\\n\",\n            \"Epoch 437/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0116 - val_loss: 0.0133\\n\",\n            \"Epoch 438/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0116 - val_loss: 0.0133\\n\",\n            \"Epoch 439/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0116 - val_loss: 0.0133\\n\",\n            \"Epoch 440/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0116 - val_loss: 0.0133\\n\",\n            \"Epoch 441/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0116 - val_loss: 0.0133\\n\",\n            \"Epoch 442/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0116 - val_loss: 0.0133\\n\",\n            \"Epoch 443/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0116 - val_loss: 0.0133\\n\",\n            \"Epoch 444/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0116 - val_loss: 0.0133\\n\",\n            \"Epoch 445/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0116 - val_loss: 0.0133\\n\",\n            \"Epoch 446/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0116 - val_loss: 0.0133\\n\",\n            \"Epoch 447/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0116 - val_loss: 0.0133\\n\",\n            \"Epoch 448/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0116 - val_loss: 0.0133\\n\",\n            \"Epoch 449/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0116 - val_loss: 0.0133\\n\",\n            \"Epoch 450/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0116 - val_loss: 0.0133\\n\",\n            \"Epoch 451/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0116 - val_loss: 0.0133\\n\",\n            \"Epoch 452/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0116 - val_loss: 0.0133\\n\",\n            \"Epoch 453/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0116 - val_loss: 0.0133\\n\",\n            \"Epoch 454/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0133\\n\",\n            \"Epoch 455/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0133\\n\",\n            \"Epoch 456/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0115 - val_loss: 0.0133\\n\",\n            \"Epoch 457/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0115 - val_loss: 0.0133\\n\",\n            \"Epoch 458/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0133\\n\",\n            \"Epoch 459/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0133\\n\",\n            \"Epoch 460/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0133\\n\",\n            \"Epoch 461/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0133\\n\",\n            \"Epoch 462/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0115 - val_loss: 0.0133\\n\",\n            \"Epoch 463/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0133\\n\",\n            \"Epoch 464/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0133\\n\",\n            \"Epoch 465/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0115 - val_loss: 0.0133\\n\",\n            \"Epoch 466/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0115 - val_loss: 0.0133\\n\",\n            \"Epoch 467/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0133\\n\",\n            \"Epoch 468/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0133\\n\",\n            \"Epoch 469/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 470/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 471/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 472/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 473/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 474/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 475/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 476/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 477/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 478/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 479/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 480/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 481/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 482/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 483/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 484/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 485/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 486/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 487/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 488/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 489/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 490/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 491/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 492/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 493/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 494/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 495/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 496/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 497/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 498/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 499/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 500/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 501/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 502/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 503/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 504/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 505/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 506/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0115 - val_loss: 0.0132\\n\",\n            \"Epoch 507/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 508/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 509/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 510/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 511/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 512/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 513/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 514/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 515/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 516/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 517/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 518/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 519/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 520/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 521/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 522/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 523/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 524/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 525/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 526/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 527/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 528/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 529/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 530/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 531/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 532/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 533/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 534/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 535/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 536/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 537/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 538/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 539/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 540/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 541/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 542/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 543/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0114 - val_loss: 0.0132\\n\",\n            \"Epoch 544/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 545/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 546/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 547/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 548/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 549/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 550/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 551/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 552/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 553/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 554/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 555/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 556/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 557/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 558/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 559/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 560/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 561/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 562/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 563/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 564/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 565/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 566/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 567/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 568/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 569/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 570/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 571/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 572/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 573/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 574/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 575/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 576/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 577/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 578/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0114 - val_loss: 0.0131\\n\",\n            \"Epoch 579/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 580/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 581/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 582/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 583/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 584/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 585/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 586/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 587/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 588/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 589/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 590/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 591/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 592/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 593/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 594/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 595/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 596/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 597/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 598/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 599/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 600/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 601/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 602/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 603/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 604/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 605/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 606/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 607/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 608/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 609/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 610/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 611/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 612/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 613/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 614/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0113 - val_loss: 0.0131\\n\",\n            \"Epoch 615/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 616/1000\\n\",\n            \"2506/2506 [==============================] - 0s 21us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 617/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 618/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 619/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 620/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 621/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 622/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 623/1000\\n\",\n            \"2506/2506 [==============================] - 0s 20us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 624/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 625/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 626/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 627/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 628/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 629/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 630/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 631/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 632/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 633/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 634/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 635/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 636/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 637/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 638/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 639/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 640/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 641/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 642/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 643/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 644/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 645/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 646/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 647/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0113 - val_loss: 0.0130\\n\",\n            \"Epoch 648/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 649/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 650/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 651/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 652/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 653/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 654/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 655/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 656/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 657/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 658/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 659/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 660/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 661/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 662/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 663/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 664/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 665/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 666/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 667/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 668/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 669/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 670/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 671/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 672/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 673/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 674/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 675/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0112 - val_loss: 0.0130\\n\",\n            \"Epoch 676/1000\\n\",\n            \"2506/2506 [==============================] - 0s 20us/step - loss: 0.0112 - val_loss: 0.0129\\n\",\n            \"Epoch 677/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0129\\n\",\n            \"Epoch 678/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0112 - val_loss: 0.0129\\n\",\n            \"Epoch 679/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0129\\n\",\n            \"Epoch 680/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0129\\n\",\n            \"Epoch 681/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0112 - val_loss: 0.0129\\n\",\n            \"Epoch 682/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0112 - val_loss: 0.0129\\n\",\n            \"Epoch 683/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0129\\n\",\n            \"Epoch 684/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0129\\n\",\n            \"Epoch 685/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0129\\n\",\n            \"Epoch 686/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0129\\n\",\n            \"Epoch 687/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0112 - val_loss: 0.0129\\n\",\n            \"Epoch 688/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0112 - val_loss: 0.0129\\n\",\n            \"Epoch 689/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0129\\n\",\n            \"Epoch 690/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0129\\n\",\n            \"Epoch 691/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0129\\n\",\n            \"Epoch 692/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0112 - val_loss: 0.0129\\n\",\n            \"Epoch 693/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0129\\n\",\n            \"Epoch 694/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0112 - val_loss: 0.0129\\n\",\n            \"Epoch 695/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0129\\n\",\n            \"Epoch 696/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0129\\n\",\n            \"Epoch 697/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0129\\n\",\n            \"Epoch 698/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0112 - val_loss: 0.0129\\n\",\n            \"Epoch 699/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0112 - val_loss: 0.0129\\n\",\n            \"Epoch 700/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0129\\n\",\n            \"Epoch 701/1000\\n\",\n            \"2506/2506 [==============================] - 0s 20us/step - loss: 0.0112 - val_loss: 0.0129\\n\",\n            \"Epoch 702/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0112 - val_loss: 0.0129\\n\",\n            \"Epoch 703/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0112 - val_loss: 0.0129\\n\",\n            \"Epoch 704/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0129\\n\",\n            \"Epoch 705/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0112 - val_loss: 0.0129\\n\",\n            \"Epoch 706/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0129\\n\",\n            \"Epoch 707/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0129\\n\",\n            \"Epoch 708/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0111 - val_loss: 0.0129\\n\",\n            \"Epoch 709/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0129\\n\",\n            \"Epoch 710/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0111 - val_loss: 0.0129\\n\",\n            \"Epoch 711/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0129\\n\",\n            \"Epoch 712/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0129\\n\",\n            \"Epoch 713/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0129\\n\",\n            \"Epoch 714/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0111 - val_loss: 0.0129\\n\",\n            \"Epoch 715/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0111 - val_loss: 0.0129\\n\",\n            \"Epoch 716/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0129\\n\",\n            \"Epoch 717/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0129\\n\",\n            \"Epoch 718/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0111 - val_loss: 0.0129\\n\",\n            \"Epoch 719/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0111 - val_loss: 0.0129\\n\",\n            \"Epoch 720/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0129\\n\",\n            \"Epoch 721/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0129\\n\",\n            \"Epoch 722/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0129\\n\",\n            \"Epoch 723/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0129\\n\",\n            \"Epoch 724/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0129\\n\",\n            \"Epoch 725/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0111 - val_loss: 0.0129\\n\",\n            \"Epoch 726/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0111 - val_loss: 0.0129\\n\",\n            \"Epoch 727/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0129\\n\",\n            \"Epoch 728/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0111 - val_loss: 0.0129\\n\",\n            \"Epoch 729/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0111 - val_loss: 0.0129\\n\",\n            \"Epoch 730/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0111 - val_loss: 0.0129\\n\",\n            \"Epoch 731/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0111 - val_loss: 0.0129\\n\",\n            \"Epoch 732/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0111 - val_loss: 0.0129\\n\",\n            \"Epoch 733/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0111 - val_loss: 0.0129\\n\",\n            \"Epoch 734/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0128\\n\",\n            \"Epoch 735/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0128\\n\",\n            \"Epoch 736/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0111 - val_loss: 0.0128\\n\",\n            \"Epoch 737/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0111 - val_loss: 0.0128\\n\",\n            \"Epoch 738/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0111 - val_loss: 0.0128\\n\",\n            \"Epoch 739/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0128\\n\",\n            \"Epoch 740/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0128\\n\",\n            \"Epoch 741/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0128\\n\",\n            \"Epoch 742/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0128\\n\",\n            \"Epoch 743/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0111 - val_loss: 0.0128\\n\",\n            \"Epoch 744/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0128\\n\",\n            \"Epoch 745/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0128\\n\",\n            \"Epoch 746/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0128\\n\",\n            \"Epoch 747/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0111 - val_loss: 0.0128\\n\",\n            \"Epoch 748/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0111 - val_loss: 0.0128\\n\",\n            \"Epoch 749/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0128\\n\",\n            \"Epoch 750/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0128\\n\",\n            \"Epoch 751/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0111 - val_loss: 0.0128\\n\",\n            \"Epoch 752/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0111 - val_loss: 0.0128\\n\",\n            \"Epoch 753/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0111 - val_loss: 0.0128\\n\",\n            \"Epoch 754/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0128\\n\",\n            \"Epoch 755/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0128\\n\",\n            \"Epoch 756/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0111 - val_loss: 0.0128\\n\",\n            \"Epoch 757/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0128\\n\",\n            \"Epoch 758/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0111 - val_loss: 0.0128\\n\",\n            \"Epoch 759/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0111 - val_loss: 0.0128\\n\",\n            \"Epoch 760/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0110 - val_loss: 0.0128\\n\",\n            \"Epoch 761/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0128\\n\",\n            \"Epoch 762/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0128\\n\",\n            \"Epoch 763/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0128\\n\",\n            \"Epoch 764/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0128\\n\",\n            \"Epoch 765/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0110 - val_loss: 0.0128\\n\",\n            \"Epoch 766/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0128\\n\",\n            \"Epoch 767/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0128\\n\",\n            \"Epoch 768/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0128\\n\",\n            \"Epoch 769/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0128\\n\",\n            \"Epoch 770/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0110 - val_loss: 0.0128\\n\",\n            \"Epoch 771/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0110 - val_loss: 0.0128\\n\",\n            \"Epoch 772/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0128\\n\",\n            \"Epoch 773/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0128\\n\",\n            \"Epoch 774/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0128\\n\",\n            \"Epoch 775/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0110 - val_loss: 0.0128\\n\",\n            \"Epoch 776/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0128\\n\",\n            \"Epoch 777/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0128\\n\",\n            \"Epoch 778/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0128\\n\",\n            \"Epoch 779/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0110 - val_loss: 0.0128\\n\",\n            \"Epoch 780/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0110 - val_loss: 0.0128\\n\",\n            \"Epoch 781/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0110 - val_loss: 0.0128\\n\",\n            \"Epoch 782/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0127\\n\",\n            \"Epoch 783/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0127\\n\",\n            \"Epoch 784/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0110 - val_loss: 0.0127\\n\",\n            \"Epoch 785/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0127\\n\",\n            \"Epoch 786/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0127\\n\",\n            \"Epoch 787/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0110 - val_loss: 0.0128\\n\",\n            \"Epoch 788/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0110 - val_loss: 0.0127\\n\",\n            \"Epoch 789/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0127\\n\",\n            \"Epoch 790/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0127\\n\",\n            \"Epoch 791/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0127\\n\",\n            \"Epoch 792/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0110 - val_loss: 0.0127\\n\",\n            \"Epoch 793/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0127\\n\",\n            \"Epoch 794/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0127\\n\",\n            \"Epoch 795/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0127\\n\",\n            \"Epoch 796/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0127\\n\",\n            \"Epoch 797/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0110 - val_loss: 0.0127\\n\",\n            \"Epoch 798/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0127\\n\",\n            \"Epoch 799/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0110 - val_loss: 0.0127\\n\",\n            \"Epoch 800/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0127\\n\",\n            \"Epoch 801/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0127\\n\",\n            \"Epoch 802/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0127\\n\",\n            \"Epoch 803/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0110 - val_loss: 0.0127\\n\",\n            \"Epoch 804/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0127\\n\",\n            \"Epoch 805/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0127\\n\",\n            \"Epoch 806/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0127\\n\",\n            \"Epoch 807/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0110 - val_loss: 0.0127\\n\",\n            \"Epoch 808/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0127\\n\",\n            \"Epoch 809/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0110 - val_loss: 0.0127\\n\",\n            \"Epoch 810/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0127\\n\",\n            \"Epoch 811/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0110 - val_loss: 0.0127\\n\",\n            \"Epoch 812/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0109 - val_loss: 0.0127\\n\",\n            \"Epoch 813/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0109 - val_loss: 0.0127\\n\",\n            \"Epoch 814/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0109 - val_loss: 0.0127\\n\",\n            \"Epoch 815/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0109 - val_loss: 0.0127\\n\",\n            \"Epoch 816/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0109 - val_loss: 0.0127\\n\",\n            \"Epoch 817/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0109 - val_loss: 0.0127\\n\",\n            \"Epoch 818/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0109 - val_loss: 0.0127\\n\",\n            \"Epoch 819/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0109 - val_loss: 0.0127\\n\",\n            \"Epoch 820/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0109 - val_loss: 0.0127\\n\",\n            \"Epoch 821/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0109 - val_loss: 0.0127\\n\",\n            \"Epoch 822/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0109 - val_loss: 0.0127\\n\",\n            \"Epoch 823/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0109 - val_loss: 0.0127\\n\",\n            \"Epoch 824/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0109 - val_loss: 0.0127\\n\",\n            \"Epoch 825/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0109 - val_loss: 0.0127\\n\",\n            \"Epoch 826/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0109 - val_loss: 0.0127\\n\",\n            \"Epoch 827/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0109 - val_loss: 0.0127\\n\",\n            \"Epoch 828/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0109 - val_loss: 0.0127\\n\",\n            \"Epoch 829/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0109 - val_loss: 0.0127\\n\",\n            \"Epoch 830/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0109 - val_loss: 0.0127\\n\",\n            \"Epoch 831/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0109 - val_loss: 0.0127\\n\",\n            \"Epoch 832/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0109 - val_loss: 0.0127\\n\",\n            \"Epoch 833/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0109 - val_loss: 0.0127\\n\",\n            \"Epoch 834/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0109 - val_loss: 0.0126\\n\",\n            \"Epoch 835/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0109 - val_loss: 0.0127\\n\",\n            \"Epoch 836/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0109 - val_loss: 0.0126\\n\",\n            \"Epoch 837/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0109 - val_loss: 0.0126\\n\",\n            \"Epoch 838/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0109 - val_loss: 0.0126\\n\",\n            \"Epoch 839/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0109 - val_loss: 0.0126\\n\",\n            \"Epoch 840/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0109 - val_loss: 0.0126\\n\",\n            \"Epoch 841/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0109 - val_loss: 0.0126\\n\",\n            \"Epoch 842/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0109 - val_loss: 0.0126\\n\",\n            \"Epoch 843/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0109 - val_loss: 0.0126\\n\",\n            \"Epoch 844/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0109 - val_loss: 0.0126\\n\",\n            \"Epoch 845/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0109 - val_loss: 0.0126\\n\",\n            \"Epoch 846/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0109 - val_loss: 0.0126\\n\",\n            \"Epoch 847/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0109 - val_loss: 0.0126\\n\",\n            \"Epoch 848/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0109 - val_loss: 0.0126\\n\",\n            \"Epoch 849/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0109 - val_loss: 0.0126\\n\",\n            \"Epoch 850/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0109 - val_loss: 0.0126\\n\",\n            \"Epoch 851/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0109 - val_loss: 0.0126\\n\",\n            \"Epoch 852/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0109 - val_loss: 0.0126\\n\",\n            \"Epoch 853/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0109 - val_loss: 0.0126\\n\",\n            \"Epoch 854/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0109 - val_loss: 0.0126\\n\",\n            \"Epoch 855/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0109 - val_loss: 0.0126\\n\",\n            \"Epoch 856/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0109 - val_loss: 0.0126\\n\",\n            \"Epoch 857/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0109 - val_loss: 0.0126\\n\",\n            \"Epoch 858/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0109 - val_loss: 0.0126\\n\",\n            \"Epoch 859/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0109 - val_loss: 0.0126\\n\",\n            \"Epoch 860/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0109 - val_loss: 0.0126\\n\",\n            \"Epoch 861/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0109 - val_loss: 0.0126\\n\",\n            \"Epoch 862/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0109 - val_loss: 0.0126\\n\",\n            \"Epoch 863/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0108 - val_loss: 0.0126\\n\",\n            \"Epoch 864/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0108 - val_loss: 0.0126\\n\",\n            \"Epoch 865/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0108 - val_loss: 0.0126\\n\",\n            \"Epoch 866/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0108 - val_loss: 0.0126\\n\",\n            \"Epoch 867/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0108 - val_loss: 0.0126\\n\",\n            \"Epoch 868/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0108 - val_loss: 0.0126\\n\",\n            \"Epoch 869/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0108 - val_loss: 0.0126\\n\",\n            \"Epoch 870/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0108 - val_loss: 0.0126\\n\",\n            \"Epoch 871/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0108 - val_loss: 0.0126\\n\",\n            \"Epoch 872/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0108 - val_loss: 0.0126\\n\",\n            \"Epoch 873/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0108 - val_loss: 0.0126\\n\",\n            \"Epoch 874/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0108 - val_loss: 0.0126\\n\",\n            \"Epoch 875/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0108 - val_loss: 0.0126\\n\",\n            \"Epoch 876/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0108 - val_loss: 0.0126\\n\",\n            \"Epoch 877/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0108 - val_loss: 0.0126\\n\",\n            \"Epoch 878/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0108 - val_loss: 0.0126\\n\",\n            \"Epoch 879/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0108 - val_loss: 0.0126\\n\",\n            \"Epoch 880/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0108 - val_loss: 0.0126\\n\",\n            \"Epoch 881/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0108 - val_loss: 0.0126\\n\",\n            \"Epoch 882/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 883/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 884/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 885/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 886/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 887/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 888/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 889/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 890/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 891/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 892/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 893/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 894/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 895/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 896/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 897/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 898/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 899/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 900/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 901/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 902/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 903/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 904/1000\\n\",\n            \"2506/2506 [==============================] - 0s 20us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 905/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 906/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 907/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 908/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 909/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 910/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 911/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 912/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 913/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 914/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0108 - val_loss: 0.0125\\n\",\n            \"Epoch 915/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0125\\n\",\n            \"Epoch 916/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0107 - val_loss: 0.0125\\n\",\n            \"Epoch 917/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0125\\n\",\n            \"Epoch 918/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0125\\n\",\n            \"Epoch 919/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0125\\n\",\n            \"Epoch 920/1000\\n\",\n            \"2506/2506 [==============================] - 0s 20us/step - loss: 0.0107 - val_loss: 0.0125\\n\",\n            \"Epoch 921/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0125\\n\",\n            \"Epoch 922/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0125\\n\",\n            \"Epoch 923/1000\\n\",\n            \"2506/2506 [==============================] - 0s 23us/step - loss: 0.0107 - val_loss: 0.0125\\n\",\n            \"Epoch 924/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0107 - val_loss: 0.0125\\n\",\n            \"Epoch 925/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0107 - val_loss: 0.0125\\n\",\n            \"Epoch 926/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0107 - val_loss: 0.0125\\n\",\n            \"Epoch 927/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0125\\n\",\n            \"Epoch 928/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0125\\n\",\n            \"Epoch 929/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0125\\n\",\n            \"Epoch 930/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0107 - val_loss: 0.0125\\n\",\n            \"Epoch 931/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0107 - val_loss: 0.0125\\n\",\n            \"Epoch 932/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0125\\n\",\n            \"Epoch 933/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0124\\n\",\n            \"Epoch 934/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0124\\n\",\n            \"Epoch 935/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0107 - val_loss: 0.0124\\n\",\n            \"Epoch 936/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0124\\n\",\n            \"Epoch 937/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0124\\n\",\n            \"Epoch 938/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0124\\n\",\n            \"Epoch 939/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0107 - val_loss: 0.0124\\n\",\n            \"Epoch 940/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0124\\n\",\n            \"Epoch 941/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0107 - val_loss: 0.0124\\n\",\n            \"Epoch 942/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0124\\n\",\n            \"Epoch 943/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0124\\n\",\n            \"Epoch 944/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0124\\n\",\n            \"Epoch 945/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0124\\n\",\n            \"Epoch 946/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0107 - val_loss: 0.0124\\n\",\n            \"Epoch 947/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0107 - val_loss: 0.0124\\n\",\n            \"Epoch 948/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0124\\n\",\n            \"Epoch 949/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0124\\n\",\n            \"Epoch 950/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0107 - val_loss: 0.0124\\n\",\n            \"Epoch 951/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0124\\n\",\n            \"Epoch 952/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0124\\n\",\n            \"Epoch 953/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0107 - val_loss: 0.0124\\n\",\n            \"Epoch 954/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0124\\n\",\n            \"Epoch 955/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0124\\n\",\n            \"Epoch 956/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0124\\n\",\n            \"Epoch 957/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0124\\n\",\n            \"Epoch 958/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0124\\n\",\n            \"Epoch 959/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0107 - val_loss: 0.0124\\n\",\n            \"Epoch 960/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0107 - val_loss: 0.0124\\n\",\n            \"Epoch 961/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0106 - val_loss: 0.0124\\n\",\n            \"Epoch 962/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0106 - val_loss: 0.0124\\n\",\n            \"Epoch 963/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0106 - val_loss: 0.0124\\n\",\n            \"Epoch 964/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0106 - val_loss: 0.0124\\n\",\n            \"Epoch 965/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0106 - val_loss: 0.0124\\n\",\n            \"Epoch 966/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0106 - val_loss: 0.0124\\n\",\n            \"Epoch 967/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0106 - val_loss: 0.0124\\n\",\n            \"Epoch 968/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0106 - val_loss: 0.0124\\n\",\n            \"Epoch 969/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0106 - val_loss: 0.0124\\n\",\n            \"Epoch 970/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0106 - val_loss: 0.0124\\n\",\n            \"Epoch 971/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0106 - val_loss: 0.0124\\n\",\n            \"Epoch 972/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0106 - val_loss: 0.0124\\n\",\n            \"Epoch 973/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0106 - val_loss: 0.0124\\n\",\n            \"Epoch 974/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0106 - val_loss: 0.0124\\n\",\n            \"Epoch 975/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0106 - val_loss: 0.0124\\n\",\n            \"Epoch 976/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0106 - val_loss: 0.0124\\n\",\n            \"Epoch 977/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0106 - val_loss: 0.0123\\n\",\n            \"Epoch 978/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0106 - val_loss: 0.0123\\n\",\n            \"Epoch 979/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0106 - val_loss: 0.0123\\n\",\n            \"Epoch 980/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0106 - val_loss: 0.0123\\n\",\n            \"Epoch 981/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0106 - val_loss: 0.0124\\n\",\n            \"Epoch 982/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0106 - val_loss: 0.0124\\n\",\n            \"Epoch 983/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0106 - val_loss: 0.0123\\n\",\n            \"Epoch 984/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0106 - val_loss: 0.0123\\n\",\n            \"Epoch 985/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0106 - val_loss: 0.0123\\n\",\n            \"Epoch 986/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0106 - val_loss: 0.0123\\n\",\n            \"Epoch 987/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0106 - val_loss: 0.0123\\n\",\n            \"Epoch 988/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0106 - val_loss: 0.0123\\n\",\n            \"Epoch 989/1000\\n\",\n            \"2506/2506 [==============================] - 0s 17us/step - loss: 0.0106 - val_loss: 0.0123\\n\",\n            \"Epoch 990/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0106 - val_loss: 0.0123\\n\",\n            \"Epoch 991/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0106 - val_loss: 0.0123\\n\",\n            \"Epoch 992/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0106 - val_loss: 0.0123\\n\",\n            \"Epoch 993/1000\\n\",\n            \"2506/2506 [==============================] - 0s 18us/step - loss: 0.0106 - val_loss: 0.0123\\n\",\n            \"Epoch 994/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0106 - val_loss: 0.0123\\n\",\n            \"Epoch 995/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0106 - val_loss: 0.0123\\n\",\n            \"Epoch 996/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0106 - val_loss: 0.0123\\n\",\n            \"Epoch 997/1000\\n\",\n            \"2506/2506 [==============================] - 0s 15us/step - loss: 0.0106 - val_loss: 0.0123\\n\",\n            \"Epoch 998/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0106 - val_loss: 0.0123\\n\",\n            \"Epoch 999/1000\\n\",\n            \"2506/2506 [==============================] - 0s 19us/step - loss: 0.0106 - val_loss: 0.0123\\n\",\n            \"Epoch 1000/1000\\n\",\n            \"2506/2506 [==============================] - 0s 16us/step - loss: 0.0106 - val_loss: 0.0123\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"CebcKzSW_g6P\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Let's visualize the training and validation losses.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"U9G1OHXoroBs\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 369\n        },\n        \"outputId\": \"d0ba7ee2-92b9-4eda-87c0-11b40ce83449\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"plt.figure(figsize=(15,5))\\n\",\n        \"\\n\",\n        \"for label in [\\\"loss\\\",\\\"val_loss\\\"]:\\n\",\n        \"    plt.plot(train_history.history[label], label=label)\\n\",\n        \"\\n\",\n        \"plt.ylabel(\\\"loss\\\")\\n\",\n        \"plt.xlabel(\\\"epoch\\\")\\n\",\n        \"plt.title(\\\"The final validation loss: {}\\\".format(train_history.history[\\\"val_loss\\\"][-1]))\\n\",\n        \"plt.legend()\\n\",\n        \"plt.show()\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"display_data\",\n          \"data\": {\n            \"image/png\": \"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\\nSUVORK5CYII=\\n\",\n            \"text/plain\": [\n              \"<matplotlib.figure.Figure at 0x7f9c93e9b410>\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          }\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"Rs_-XnYhKl_N\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Finally, let's look at the parameters for the trained model.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"q4gtwBT7Kgh0\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 73\n        },\n        \"outputId\": \"c212be9b-bd62-41cf-9163-33f69e306d95\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"for layer in model.layers:\\n\",\n        \"  print(\\\"{}, {}\\\".format(layer.name, layer.get_weights()))\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"hidden_layer, [array([[0.7633411]], dtype=float32), array([[-0.56165993]], dtype=float32), array([0.04831408], dtype=float32)]\\n\",\n            \"output_layer, [array([[2.4384913]], dtype=float32), array([-0.06346191], dtype=float32)]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"bqFBu_dCsUqi\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"**QUESTION**: \\n\",\n        \"* Relate the above weights to the terms in the equation for the vanilla RNN we saw earlier, namely:\\n\",\n        \"  * input-to-hidden $W_{xh}$,\\n\",\n        \"  * hidden-to-hidden $W_{hh}$,\\n\",\n        \"  * hidden-to-output weights $W_{hy}$\\n\",\n        \"  * recurrent and out biases.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"0FHaN-VXfxEl\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"###Make predictions using the trained model\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"IQl_msx-4o3E\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 231\n        },\n        \"outputId\": \"7c2ac8d5-231f-47af-d227-092510c058ff\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"y_pred = model.predict(X_test[:100])\\n\",\n        \"plt.figure(figsize=(19,3))\\n\",\n        \"\\n\",\n        \"plt.plot(y_test[:100], label=\\\"true\\\")\\n\",\n        \"plt.plot(y_pred, label=\\\"predicted\\\")\\n\",\n        \"plt.legend()\\n\",\n        \"plt.show()\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"display_data\",\n          \"data\": {\n            \"image/png\": \"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\\nIYQQYhD/HyUXQgA7s75JAAAAAElFTkSuQmCC\\n\",\n            \"text/plain\": [\n              \"<matplotlib.figure.Figure at 0x7f9c91608110>\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          }\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"MQj5P-FKOgqG\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"**YOUR TASKS**: \\n\",\n        \"* [**ALL**] Change the learning rate up to 5 orders of magnitude larger and smaller and retrain. What happens when it is too large? What happens when it is too small?\\n\",\n        \"* [**ALL**] Change the `SimpleRNN` to `GRU`.\\n\",\n        \"  * You can read more about LSTMs in [this blog post](https://colah.github.io/posts/2015-08-Understanding-LSTMs/) by Chris Olah. \\n\",\n        \"  * What is the effect on the number of parameters? Can you explain why? Now do the same for `LSTM`.\\n\",\n        \"* [**INTERMEDIATE**] Note that the loss does not decrease much after around epoch 400. Add \\\"Early Stopping with patience\\\" to the `model.fit()` function to stop it from training beyond this point. **Hint**: Look at tf.keras.callbacks.\\n\",\n        \"  * *Early stopping* is a technique where we stop training the model once it's performance on validation data stops improving, and is a very common approach to prevent overfitting. Early stopping *with patience* means as soon as the model starts doing worse on validation we wait for at least `patience` more evaluations before stopping training, and if it improves within that time, we reset the counter. The patience parameter is a way to ensure we don't stop by accident, as the validation loss can fluctuate randomly from epoch to epoch.\\n\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"_totIpxmZ8_v\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"##Generating Shakespeare\\n\",\n        \"\\n\",\n        \"Now let's build an RNN language model to generate Shakespearian English! A language model is trained to assign high probabilities to sequences of words or sentences that are well formed, and low probabilities to sequences which are not realistic. When the model is trained, one can use it to *generate* data that is similar to the training data.\\n\",\n        \"\\n\",\n        \"Our data is now sequences of discrete symbols (characters). But neural networks operate in continuous spaces, and so we need to take the discrete language data, and **embed** it in a continuous space. To do this, we'll simply break up the data into sequences of characters, and represent each character using a learned vector. This is a standard trick for processing text using neural networks. \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"9dFQtnDLZa3c\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### Download and Preprocess the Data\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"Tmmjc-EigwCw\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"We first download the data and examine what it looks like:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"hybIopOLPD4f\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 791\n        },\n        \"outputId\": \"eded9c5c-2ece-4774-b207-8990b931f782\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"context = ssl._create_unverified_context()\\n\",\n        \"shakespeare_url = 'https://cs.stanford.edu/people/karpathy/char-rnn/shakespeare_input.txt'\\n\",\n        \"\\n\",\n        \"data = urllib2.urlopen(shakespeare_url, context=context)\\n\",\n        \"all_text = data.read().lower()\\n\",\n        \"\\n\",\n        \"print(\\\"Downloaded Shakespeare data with {} characters.\\\".format(len(all_text)))\\n\",\n        \"print(\\\"FIRST 1000 CHARACTERS: \\\")\\n\",\n        \"print(all_text[:1000])\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Downloaded Shakespeare data with 4573338 characters.\\n\",\n            \"FIRST 1000 CHARACTERS: \\n\",\n            \"first citizen:\\n\",\n            \"before we proceed any further, hear me speak.\\n\",\n            \"\\n\",\n            \"all:\\n\",\n            \"speak, speak.\\n\",\n            \"\\n\",\n            \"first citizen:\\n\",\n            \"you are all resolved rather to die than to famish?\\n\",\n            \"\\n\",\n            \"all:\\n\",\n            \"resolved. resolved.\\n\",\n            \"\\n\",\n            \"first citizen:\\n\",\n            \"first, you know caius marcius is chief enemy to the people.\\n\",\n            \"\\n\",\n            \"all:\\n\",\n            \"we know't, we know't.\\n\",\n            \"\\n\",\n            \"first citizen:\\n\",\n            \"let us kill him, and we'll have corn at our own price.\\n\",\n            \"is't a verdict?\\n\",\n            \"\\n\",\n            \"all:\\n\",\n            \"no more talking on't; let it be done: away, away!\\n\",\n            \"\\n\",\n            \"second citizen:\\n\",\n            \"one word, good citizens.\\n\",\n            \"\\n\",\n            \"first citizen:\\n\",\n            \"we are accounted poor citizens, the patricians good.\\n\",\n            \"what authority surfeits on would relieve us: if they\\n\",\n            \"would yield us but the superfluity, while it were\\n\",\n            \"wholesome, we might guess they relieved us humanely;\\n\",\n            \"but they think we are too dear: the leanness that\\n\",\n            \"afflicts us, the object of our misery, is as an\\n\",\n            \"inventory to particularise their abundance; our\\n\",\n            \"sufferance is a gain to them let us revenge this with\\n\",\n            \"our pikes, ere we become rakes: for the gods know i\\n\",\n            \"speak this in hunger for bread, not in thirst for revenge.\\n\",\n            \"\\n\",\n            \"\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"jIuagNcdQLqM\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"training_text = all_text[:1000000] # Keep only the first 1 million characters\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"UK1x69AngvLJ\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"We now preprocess the text data as follows:\\n\",\n        \"\\n\",\n        \"1. Extract the vocabulary of all `vocab_size` unique characters appearing in the data.\\n\",\n        \"\\n\",\n        \"2. Assign each character a unique integer id in `0 <= id < vocab_size`. This is so we can map the characters to unique embedding vectors. This is a common way to map discrete inputs to continuous vectors that neural networks can work with. See e.g. this [blog post](https://www.tensorflow.org/tutorials/representation/word2vec), or [this one](http://ruder.io/word-embeddings-1/) for more information.\\n\",\n        \"\\n\",\n        \"3. Split the data into sequences (\\\"windows\\\") of `max_len` characters (the input to the model) followed by the next character as target. E.g. using `max_len=5` the sentence \\\"I saw a cat\\\" (11 characters) will get split into \\\"I saw\\\" and /space/, \\\"/space/saw/space/\\\" and \\\"a\\\", \\\"saw a\\\" and /space/, etc. To add some variation, we skip `step` characters between each sequence (i.e. we use a \\\"sliding window of `max_len` with stride `step`\\\").\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"zPvsNXKZPJKz\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 73\n        },\n        \"outputId\": \"1dcaaa7f-b946-4f8d-cb1b-32674b125465\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"max_len = 30  # We only consider this many previous data points (characters)\\n\",\n        \"step = 3 # We start a new training sequence every `step` characters\\n\",\n        \"sentences = [] # This holds our extracted sequences\\n\",\n        \"next_chars = [] # This holds the targets (the follow-up characters)\\n\",\n        \"\\n\",\n        \"chars = sorted(list(set(training_text)))  # List of unique characters in the corpus\\n\",\n        \"vocab_size = len(chars)\\n\",\n        \"print('Number of unique characters: ', vocab_size)\\n\",\n        \"print(chars)\\n\",\n        \"\\n\",\n        \"# Construct dictionaries mapping unique characters to their index in `chars` and reverse\\n\",\n        \"char2index = dict((c, chars.index(c)) for c in chars)\\n\",\n        \"index2char = dict((chars.index(c), c) for c in chars)\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Number of unique characters:  39\\n\",\n            \"['\\\\n', ' ', '!', '$', '&', \\\"'\\\", ',', '-', '.', '3', ':', ';', '?', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"O2PhcQwrc2JX\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Now we encode the training data by mapping each character to its unique integer id.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"xY0qXZmVq8kW\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 35\n        },\n        \"outputId\": \"89446005-6eba-42da-fce5-8bcfb723a567\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"for i in range(0, len(training_text) - max_len, step):\\n\",\n        \"    sentences.append([char2index[s] for s in training_text[i: i + max_len]])\\n\",\n        \"    next_chars.append([char2index[s] for s in training_text[i + max_len]])\\n\",\n        \"\\n\",\n        \"print('Number of extracted sequences:', len(sentences))\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Number of extracted sequences: 333324\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"PsZy6Kshc-Sp\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"This yields the following numpy arrays:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"vhgSaP5ntDtq\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 35\n        },\n        \"outputId\": \"2af89a0d-e7e3-4744-8d8d-aa9ec1ab9293\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"X, Y = np.array(sentences, dtype=np.int64), np.array(next_chars, dtype=np.int64)\\n\",\n        \"X.shape, Y.shape\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"execute_result\",\n          \"data\": {\n            \"text/plain\": [\n              \"((333324, 30), (333324, 1))\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"execution_count\": 22\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"sBR2LsXjmqTU\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Let's take a look at the first example.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"2H1jobcrmwK7\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 89\n        },\n        \"outputId\": \"3826ee10-ca7f-466f-c0f4-5ab37ef7aab7\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"print(\\\"X[0].shape = {}, Y[0].shape = {}\\\".format(X[0].shape, Y[0].shape))\\n\",\n        \"print(\\\"X[0]: \\\", X[0])\\n\",\n        \"print(\\\"Y[0]: \\\", Y[0])\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"X[0].shape = (30,), Y[0].shape = (1,)\\n\",\n            \"X[0]:  [18 21 30 31 32  1 15 21 32 21 38 17 26 10  0 14 17 18 27 30 17  1 35 17\\n\",\n            \"  1 28 30 27 15 17]\\n\",\n            \"Y[0]:  [17]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"tEQWEZlSZgpF\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"###Build an RNN language model\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"rCysOLWadPHF\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"A **language model** estimates a probability distribution over sequences $\\\\mathbb{x}_{1:N} = (x_1, x_2, ..., x_N)$ by breaking up the full joint probability into a sequence of conditional probabilities using the **[chain-rule of probability](https://en.wikipedia.org/wiki/Chain_rule_(probability))**:\\n\",\n        \"\\n\",\n        \"\\\\begin{align}\\n\",\n        \" p(\\\\mathbb{x}_{1:N}) &= p(x_1) \\\\cdot p(x_2 | x_1) \\\\cdot p(x_3 | x_2, x_1) \\\\ldots \\\\\\\\\\n\",\n        \" &= \\\\Pi_1^N p(x_i | \\\\mathbb{x}_{1:i-1})\\n\",\n        \"\\\\end{align}\\n\",\n        \"\\n\",\n        \"In other words, to model the probability of the phrase \\\"*i saw a cat*\\\" at the character level, the model learns to estimate the probabilities for p(i), p(/space/| i), p(c | i, /space/), and so forth, and multiplies them together. \\n\",\n        \"\\n\",\n        \"There are many different ways in which to estimate these individual probabilities. But one particularly effective way is to use an RNN! To do this, we'll therefore be modeling the  $p(x_i | \\\\mathbb{x}_{1:i-1})$ terms using an RNN conditioned on $\\\\mathbb{x}_{1:i-1}$.\\n\",\n        \"\\n\",\n        \"* We model these probabilities at the character-level, so we'll use an `Embedding` layer as the first layer of our model to map the discrete character id's to real-valued embedding vectors. \\n\",\n        \"* Next, the RNN-core will map these sequences of character embeddings to a probability distribution over all characters $p(x_i | \\\\mathbb{x}_{1:i-1}) \\\\in \\\\mathbb{R}^\\\\textrm{vocab_size}$ at every step of the sequence. To do this, the RNN will map the embeddings to a sequence of *hidden states*. We will then use a `Dense` layer to map from the RNN hidden state to an output distribution over the total number of characters using a [`softmax`](https://en.wikipedia.org/wiki/Softmax_function) activation.\\n\",\n        \"\\n\",\n        \"We can do this with a few lines of code:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"k8AxhQuePOCN\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 251\n        },\n        \"outputId\": \"35b12bba-5085-487e-8f08-83d149261ca1\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"embedding_dim = 32   # Map each character to a unique vector of this dimension\\n\",\n        \"vocab_size = len(chars)\\n\",\n        \"\\n\",\n        \"model = tf.keras.models.Sequential()\\n\",\n        \"model.add(tf.keras.layers.Embedding(\\n\",\n        \"  vocab_size, embedding_dim, \\n\",\n        \"  input_length=max_len, \\n\",\n        \"  embeddings_initializer=tf.keras.initializers.TruncatedNormal))\\n\",\n        \"model.add(tf.keras.layers.LSTM(\\n\",\n        \"  128, \\n\",\n        \"  input_shape=(max_len, embedding_dim),  # NB: Ensure this matches the embedding_dim!\\n\",\n        \"  dropout=0.1,  # input-to-hidden drop-probability\\n\",\n        \"  recurrent_dropout=0.2))  # hidden-to-hidden drop-probability\\n\",\n        \"model.add(tf.keras.layers.Dense(vocab_size, activation='softmax'))\\n\",\n        \"\\n\",\n        \"model.summary()\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"_________________________________________________________________\\n\",\n            \"Layer (type)                 Output Shape              Param #   \\n\",\n            \"=================================================================\\n\",\n            \"embedding_2 (Embedding)      (None, 30, 32)            1248      \\n\",\n            \"_________________________________________________________________\\n\",\n            \"lstm_2 (LSTM)                (None, 128)               82432     \\n\",\n            \"_________________________________________________________________\\n\",\n            \"dense_2 (Dense)              (None, 39)                5031      \\n\",\n            \"=================================================================\\n\",\n            \"Total params: 88,711\\n\",\n            \"Trainable params: 88,711\\n\",\n            \"Non-trainable params: 0\\n\",\n            \"_________________________________________________________________\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"m4fFjFtZokf2\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"###Select the optimizer and loss\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"RHOWm55whZUt\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Once we have a model that can map sequence of characters to a probability distribution over the next character in the sequence, we can train it using **maximum likelihood** on the training set to find the model parameters which maximizes the probability of the training data. Again, this is very simple to do by choosing an optimizer and selecting the `sparse_categorical_crossentropy` loss function:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"hKJNZXs7PSW-\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"optimizer = tf.train.AdamOptimizer(learning_rate=0.001)\\n\",\n        \"loss='sparse_categorical_crossentropy'\\n\",\n        \"\\n\",\n        \"model.compile(loss=loss, optimizer=optimizer)\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"dEr9hEqFiGx6\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"###Helper functions\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"3zXa95pBPUw3\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"def sample_with_temp(preds, temperature=1.0):\\n\",\n        \"  preds = np.asarray(preds).astype('float64')\\n\",\n        \"  preds = np.log(preds) / temperature\\n\",\n        \"  exp_preds = np.exp(preds)\\n\",\n        \"  preds = exp_preds / np.sum(exp_preds)\\n\",\n        \"  probas = np.random.multinomial(1, preds, 1)\\n\",\n        \"  return np.argmax(probas)\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"AyH6U3er5fis\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 53\n        },\n        \"outputId\": \"c7d6e470-604f-4b85-e6bd-433f88e0069e\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"def shift_and_append(test_arr, next_item):\\n\",\n        \"  '''Returns a copy of test_arr with items shifted one position to the left and \\n\",\n        \"     next_item appended.\\n\",\n        \"  '''\\n\",\n        \"  tmp = np.empty_like(test_arr)\\n\",\n        \"  tmp[:,:-1] = test_arr[:,1:]\\n\",\n        \"  tmp[:,-1] = next_item\\n\",\n        \"  return tmp\\n\",\n        \"\\n\",\n        \"## TEST the above function:\\n\",\n        \"test_arr = np.array([[1,2,3,4]])\\n\",\n        \"\\n\",\n        \"print(\\\"test_arr = {}\\\".format(test_arr))\\n\",\n        \"test_arr = shift_and_append(test_arr, 5)\\n\",\n        \"print(\\\"roll_arr(test_arr, 5) = {}\\\".format(test_arr))\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"test_arr = [[1 2 3 4]]\\n\",\n            \"roll_arr(test_arr, 5) = [[2 3 4 5]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"q9le2p0YxeYD\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"def sample_from_model(model, \\n\",\n        \"                      num_generate=400, \\n\",\n        \"                      prev_text=None,  # the text used to condition the model\\n\",\n        \"                      temperatures=[0.2, 0.5, 1.0, 1.2]):\\n\",\n        \"    \\n\",\n        \"    if not prev_text:\\n\",\n        \"      # Select a text seed at random\\n\",\n        \"      start_index = random.randint(0, len(training_text) - max_len - 1)\\n\",\n        \"      while ((start_index < (len(training_text) - max_len - 1)) and (\\n\",\n        \"        training_text[start_index - 1] is not ' ')):\\n\",\n        \"        start_index += 1  # Advance to beginning of new word\\n\",\n        \"      prev_text = training_text[start_index: start_index + max_len]\\n\",\n        \"    \\n\",\n        \"    if len(prev_text) != max_len:\\n\",\n        \"      print(\\\"`prev_text` must be of length `max_len`.\\\")\\n\",\n        \"      return\\n\",\n        \"\\n\",\n        \"    print('GENERATING TEXT WITH SEED: \\\\n\\\"' + prev_text + '\\\"')\\n\",\n        \"    prev_text_arr = np.array(\\n\",\n        \"      [[char2index[c] for c in prev_text]], dtype=np.int64) \\n\",\n        \"    \\n\",\n        \"    for temp in temperatures:\\n\",\n        \"        print('==TEMPERATURE:', temp)\\n\",\n        \"        sys.stdout.write(prev_text)\\n\",\n        \"\\n\",\n        \"        # Start with the same sampled text for all temperatures\\n\",\n        \"        generated_text = prev_text \\n\",\n        \"        generated_text_arr = prev_text_arr\\n\",\n        \"\\n\",\n        \"        # Now generate this many characters\\n\",\n        \"        for i in range(num_generate):         \\n\",\n        \"            \\n\",\n        \"            # Get the output softmax given the conditioning text\\n\",\n        \"            #prev_text = generated_text_enc[np.newaxis,:]\\n\",\n        \"            preds = model.predict(generated_text_arr, verbose=0)[0]\\n\",\n        \"            \\n\",\n        \"            next_index = sample_with_temp(preds, temp)\\n\",\n        \"            next_char = index2char[next_index]\\n\",\n        \"            generated_text += next_char\\n\",\n        \"            generated_text = generated_text[1:]\\n\",\n        \"\\n\",\n        \"            # Left-shift and add into encoded array\\n\",\n        \"            generated_text_arr = shift_and_append(generated_text_arr, next_index)\\n\",\n        \"\\n\",\n        \"            sys.stdout.write(next_char)\\n\",\n        \"            sys.stdout.flush()\\n\",\n        \"        print()\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"a78CrsaMiKrA\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"###Train the model\\n\",\n        \"\\n\",\n        \"Let's train the model! The code below will train the model on a subset of the available data, and then generate from the model every `sample_every` number of batches.\\n\",\n        \"\\n\",\n        \"To generate from the model, we use `model.predict()` on a sequence of `max_len` conditioning characters to produce an output distribution over `vocab_size` characters. We then sample one character from this distribution and shift everything up by one and append the new characters. By repeating this, we can generate text from the (partially-trained) model.\\n\",\n        \"\\n\",\n        \"**NOTE**: \\n\",\n        \"* It takes a while to train a model that starts generating anything resembling the Shapespeare text! In general it should start getting the rough structure in place around the 100K training example mark (examples, not batches). But to generate any meaningful words will need several hundred thousand examples.\\n\",\n        \"* We sample with *temperature*. This is a way to sharpen or flatten the probabilities produced by the model. By lowering the temperature, we emphasize the modes of the predicted distribution, and by increasing the temperature, we flatten the modes (tends towards uniform). Higher temperatures therefore encourage the model to be more 'creative', instead of always choosing the most likely next character.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"0RcFKgkdPXuI\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 8976\n        },\n        \"outputId\": \"bb20fa69-1ab1-48d0-843f-b8cc9ed2c77c\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"batch_size = 128\\n\",\n        \"total_num_batches = X.shape[0] // batch_size\\n\",\n        \"sample_every = 256  # Train on this many batches, then generate something\\n\",\n        \"\\n\",\n        \"print(\\\"Training on {} batches in total.\\\".format(total_num_batches))\\n\",\n        \"\\n\",\n        \"for cur_batch in range(0, total_num_batches, sample_every):\\n\",\n        \"    print('TRAINING ON BATCH {} to {} (example {} to {})'.format(\\n\",\n        \"      cur_batch, cur_batch + sample_every,\\n\",\n        \"      cur_batch * batch_size, (cur_batch + sample_every) * batch_size)\\n\",\n        \"    )\\n\",\n        \"    \\n\",\n        \"    X_batch = X[batch_size * cur_batch : batch_size * (cur_batch + sample_every), :]\\n\",\n        \"    Y_batch = Y[batch_size * cur_batch : batch_size * (cur_batch + sample_every), :]\\n\",\n        \"    \\n\",\n        \"    '''\\n\",\n        \"    # Show the first 5 examples to make sure we're not training on garbage\\n\",\n        \"    print(\\\"X_batch.shape = {}\\\".format(X_batch.shape))\\n\",\n        \"    print(\\\"Y_batch.shape = {}\\\".format(Y_batch.shape))\\n\",\n        \"    print(\\\"FIRST 5 EXAMPLES:\\\")\\n\",\n        \"    for num in range(5):\\n\",\n        \"      in_seq = [index2char[int(indx)] for indx in np.nditer(X_batch[num, :])]\\n\",\n        \"      next_char = index2char[Y_batch[num, 0]]\\n\",\n        \"      print(str(num) + '. ' + ''.join(in_seq) + '-->' + next_char)\\n\",\n        \"    '''\\n\",\n        \"       \\n\",\n        \"    model.fit(X_batch, Y_batch,\\n\",\n        \"              batch_size=batch_size,\\n\",\n        \"              epochs=1,\\n\",\n        \"              verbose=1)\\n\",\n        \"\\n\",\n        \"    print(\\\"GENERATING SOME RANDOM TEXT FROM THE MODEL\\\")\\n\",\n        \"    sample_from_model(model)\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Training on 2604 batches in total.\\n\",\n            \"TRAINING ON BATCH 0 to 256 (example 0 to 32768)\\n\",\n            \"Epoch 1/1\\n\",\n            \"32768/32768 [==============================] - 124s 4ms/step - loss: 2.7223\\n\",\n            \"GENERATING SOME RANDOM TEXT FROM THE MODEL\\n\",\n            \"=====GENERATING TEXT WITH SEED: \\n\",\n            \"\\\"else thou art suborn'd against\\\"\\n\",\n            \"==========TEMPERATURE: 0.2\\n\",\n            \"else thou art suborn'd against sous the the the and the and wou the we hand the hand the and the our the han the ane the the ar the an the the and hand the hat he hand the the and and the the ser mous and the and the wous wou sert and the sou the wour yous wou whe wou the the the and the sou are he than the the mat ane the the wous an the the hand wou the hand the hat ane in the and the wind the the we the hare he and the and \\n\",\n            \"==========TEMPERATURE: 0.5\\n\",\n            \"else thou art suborn'd against then wous tha collld me wall oucon isen sous, the ve i ande thene ase ak on? he the dens harendene and ous has the pour me mand an thean you ha co hat the and hene the se the or oure hare ias and the uin wo the anan han sor hane wol leond couto angus the ar hor hand fous the mone an donene sous you vore the bed at fof se that ani wee thes hous gome arius fowe boue thi that oous mat ind and har bo\\n\",\n            \"==========TEMPERATURE: 1.0\\n\",\n            \"else thou art suborn'd againste bounds\\n\",\n            \"rhmes;\\n\",\n            \"ourhe wcuthys !o wgarhin'vghanl inhabgle thestons t bograg gavcan ' swtm thenucesu\\n\",\n            \"golde sy',\\n\",\n            \"\\n\",\n            \"eat ak spwou, dcint tod fo ujan fou, puaf rou harr utharng:\\n\",\n            \"eanhs; pow ir aomem ce; enrhes pavir ws.\\n\",\n            \"yoteusgoxua! ay pom rofori .,r, hor londemen\\n\",\n            \"thoag yor d hcas aats h, nehhas ial y hayan nt on di\\n\",\n            \"mll tous.\\n\",\n            \"; avtoly recetinlas walom\\n\",\n            \"menstcom\\n\",\n            \"thet,\\n\",\n            \"mnc eapa? darm aay\\n\",\n            \"tond monarpd hes for\\n\",\n            \"==========TEMPERATURE: 1.2\\n\",\n            \"else thou art suborn'd againsth ac\\n\",\n            \"nfed\\n\",\n            \"nysefhekcf,\\n\",\n            \"bbmwat$\\n\",\n            \"eat helstrcrec nor. oour .\\n\",\n            \"witin wysinew:\\n\",\n            \"yary bom.\\n\",\n            \"w yitg\\n\",\n            \"ec,?\\n\",\n            \"whuade, war:,, lke, ty re foen tlaniulh,a\\n\",\n            \"yk thee puyby houcf'gmmend\\n\",\n            \"y'g wri;te se'de wine beant cm moudut bo kreliwe bswtot wwwapkntth\\n\",\n            \"win yole l het ofin- dbelim,l ctais, sfwin hyf\\n\",\n            \"d'!sesilevani? tharm yor bkafo btgn whe anuya\\n\",\n            \"urest hapadru.\\n\",\n            \"sfat houkt\\n\",\n            \"knd\\n\",\n            \"n:\\n\",\n            \"recict gordisio'\\n\",\n            \"lacoauf,s\\n\",\n            \"bte ro sivorsr fo\\n\",\n            \"TRAINING ON BATCH 256 to 512 (example 32768 to 65536)\\n\",\n            \"Epoch 1/1\\n\",\n            \"32768/32768 [==============================] - 124s 4ms/step - loss: 2.3506\\n\",\n            \"GENERATING SOME RANDOM TEXT FROM THE MODEL\\n\",\n            \"=====GENERATING TEXT WITH SEED: \\n\",\n            \"\\\"would he for the momentary tri\\\"\\n\",\n            \"==========TEMPERATURE: 0.2\\n\",\n            \"would he for the momentary trit the the mes the hat the the and in the the dour hare sour and and the the the the the the the the the be the mere hare he the hare hare he the sengere the the the the the the wour the the seare thare hare the the sour and sour the the the the and and meand the the the sour har the the me the he the the the the the me deat mour hare the the the the the the be the bere and the the the the sere the\\n\",\n            \"==========TEMPERATURE: 0.5\\n\",\n            \"would he for the momentary tringe meand mane erde thane sinke and the sour athe come bils got fast wour wour wis the forere be the moces a and to and mope hat blevere cous me nod ar the bout rengane dot the the the dos, hins me hare to the the sthe et ford.\\n\",\n            \"\\n\",\n            \"me butest thou the bere buther ante he pat hace the the wis mee de of mer and the sof and the the douer war the corte boured and beer me the meres sthe the wou hare be to \\n\",\n            \"==========TEMPERATURE: 1.0\\n\",\n            \"would he for the momentary tripthep kase norel,\\n\",\n            \" shis sace hame wad wath , misus fue, pirce yofarw bely wusidlas,:\\n\",\n            \"\\n\",\n            \"yout, hamu mem; try frothot hanoe, foule the snatobe.\\n\",\n            \"\\n\",\n            \"biyidour ymh fath mond hawh lfy aid hare at in it cotus of an roue h; hame osagterhh\\n\",\n            \"voium angert.\\n\",\n            \"\\n\",\n            \"benvin oupe arincorend amerer fisnd frecome gadram!\\n\",\n            \"froce; thurediug\\n\",\n            \"cire:\\n\",\n            \"whapltj 'le ai inds ot the ad dowh math srand auty ay, id athet coure grato conoth e\\n\",\n            \"==========TEMPERATURE: 1.2\\n\",\n            \"would he for the momentary trin ennh\\n\",\n            \"ih thartor tfsas camrncas thin w-d'yhe har, cionll.\\n\",\n            \"\\n\",\n            \"youtgsre on lvoiet pfea\\n\",\n            \"ancumy gooe hasy butan hysec fore huthe dore y!\\n\",\n            \"aknompt thexlos enly.\\n\",\n            \"svo utsply,\\n\",\n            \"ais stour, harky\\n\",\n            \"whe gy'ens nrod buthovirs gardst\\n\",\n            \"sorhbt tlule ifade.\\n\",\n            \"\\n\",\n            \"raver, com mes lovt, the nomvor erill, mim. go thetes oponve ut the buke bu .ome ay ntith\\n\",\n            \"at slef, havi,\\n\",\n            \", thoux.\\n\",\n            \"\\n\",\n            \"ucinds husf'l as! slres hrkh$ inu?\\n\",\n            \"cbent? hec, g\\n\",\n            \"TRAINING ON BATCH 512 to 768 (example 65536 to 98304)\\n\",\n            \"Epoch 1/1\\n\",\n            \"32768/32768 [==============================] - 125s 4ms/step - loss: 2.1718\\n\",\n            \"GENERATING SOME RANDOM TEXT FROM THE MODEL\\n\",\n            \"=====GENERATING TEXT WITH SEED: \\n\",\n            \"\\\"myself and thought\\n\",\n            \"this was so\\\"\\n\",\n            \"==========TEMPERATURE: 0.2\\n\",\n            \"myself and thought\\n\",\n            \"this was son the the the the the the the the his the the the the the the the the the the the your the hing the the the bere in the the the sond the the the the the the the the the the the the the souster the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the sond the the the the the me the the the the the the the the the the the the\\n\",\n            \"==========TEMPERATURE: 0.5\\n\",\n            \"myself and thought\\n\",\n            \"this was soour my frath the diplour to mo the to the the the hast that wist i sing the to enged whe the mid the seling of the beren the tin the the soncest the thor souve wher thart my my to the my maing thes to ing and my wing of the beat i coun momend caren thes i so derenghas that in this of bore distus beme deat the hang the and to and sod realll as thith the the sout that the cain the deare wain the him\\n\",\n            \"==========TEMPERATURE: 1.0\\n\",\n            \"myself and thought\\n\",\n            \"this was songhy m melo this, thoa, wriinghat teaitor radll.\\n\",\n            \"\\n\",\n            \"pktilg:\\n\",\n            \"haat, theyr arnd 'rcad kim morty dourves.\\n\",\n            \"\\n\",\n            \"meisg ongter:\\n\",\n            \"am; wife berad hat, til the youce?\\n\",\n            \"akkikus,,\\n\",\n            \"and daindke:\\n\",\n            \"wthist dellad nle iit, thy poutid.\\n\",\n            \"\\n\",\n            \"bllorthi he remenk, porling hikench, whoth bild thors dye mysy take houth\\n\",\n            \"thils livery, the, rimlust;\\n\",\n            \"and thy i diznhi'.\\n\",\n            \"\\n\",\n            \"loucen:gus mens:\\n\",\n            \"any -thule ho knod any, to gravcut thouls enctou epi\\n\",\n            \"==========TEMPERATURE: 1.2\\n\",\n            \"myself and thought\\n\",\n            \"this was so mysolethon in miib.\\n\",\n            \"thing him has and ay yoy grea; ha ltorker sifrresy nlorert, hus, as kins,, tie havy, asus\\n\",\n            \"wut kha tye cinglm stalt, erives fod deady if, my nothind wiord osead me\\n\",\n            \"gpoupnten'et figenot ent.\\n\",\n            \"of.\\n\",\n            \"\\n\",\n            \"uckind prepiize:t'\\n\",\n            \"nova gith?\\n\",\n            \", scave, mmy lovel.\\n\",\n            \"\\n\",\n            \"m'te racquu, steate tourels:\\n\",\n            \"mukths ryof i ghedse we ands neith\\n\",\n            \"yoused\\n\",\n            \"\\n\",\n            \"qucinys:\\n\",\n            \"ateruvand he yod bict?\\n\",\n            \"\\n\",\n            \"bicchelies:\\n\",\n            \"a\\n\",\n            \"lack, bupeald o\\n\",\n            \"TRAINING ON BATCH 768 to 1024 (example 98304 to 131072)\\n\",\n            \"Epoch 1/1\\n\",\n            \"32768/32768 [==============================] - 127s 4ms/step - loss: 2.1314\\n\",\n            \"GENERATING SOME RANDOM TEXT FROM THE MODEL\\n\",\n            \"=====GENERATING TEXT WITH SEED: \\n\",\n            \"\\\"my head and all this famous la\\\"\\n\",\n            \"==========TEMPERATURE: 0.2\\n\",\n            \"my head and all this famous land the rall the the with the sours and the ford the reand the the hast lord the the the be the the sour the the the the the hard the gare and my the that the the the the sord sour the hard the reand the the the the the sour the the with sour to bere the the the the come the frous the the the the the the the i with my the the the the the the the the hard the the the the the the my the with the sill\\n\",\n            \"==========TEMPERATURE: 0.5\\n\",\n            \"my head and all this famous land and to gare that the mard thour for hast the come your comes the is ar wich come he dare the flour to this of to the that but the in the row shar the sear, the with make the all the breces the cours sord a the langon then and my grouchard the leard four the for both the brome the hand, i the proke of wath rister his and and thou his the and the soun hard the grold wat ronder the serd is my my t\\n\",\n            \"==========TEMPERATURE: 1.0\\n\",\n            \"my head and all this famous lane.\\n\",\n            \"\\n\",\n            \"lorth, i ig hars y ag.r rish?yirusbal fite angy ther ioy proly to graves your kevi. focme\\n\",\n            \"hill htmy \\n\",\n            \"ratcrele.\\n\",\n            \"sing's at osssand, ands,\\n\",\n            \"bgerosem;\\n\",\n            \"gomus maims allpward ind grorbours.\\n\",\n            \"bule:\\n\",\n            \"aded dark warveans:\\n\",\n            \"to ficlir\\n\",\n            \"what to buth rok withrt ar watin:\\n\",\n            \"a thigh to fanorvet of buce.\\n\",\n            \"\\n\",\n            \"and hin yougegevh, goagells your boll that aus blerf;\\n\",\n            \"not moe lor to broke:\\n\",\n            \"bregerky hat arst?\\n\",\n            \"\\n\",\n            \"kins to kingass:\\n\",\n            \"\\n\",\n            \"==========TEMPERATURE: 1.2\\n\",\n            \"my head and all this famous lan.\\n\",\n            \"\\n\",\n            \"king thy murom:\\n\",\n            \"sor hige chrmut to mosd's i\\n\",\n            \"tou?\\n\",\n            \"\\n\",\n            \"lking-alle:\\n\",\n            \"whake jore, el witu tof of af r.iig?\\n\",\n            \"\\n\",\n            \"ing your in mond, on:\\n\",\n            \"thy' rakr'ce my and, and foty to spl-evce.\\n\",\n            \"manes:\\n\",\n            \"liz.\\n\",\n            \"\\n\",\n            \"qbukin:\\n\",\n            \"fov takn he is lewe i t och land in.\\n\",\n            \"\\n\",\n            \"engfr, nomek;\\n\",\n            \"than the tragrw\\n\",\n            \"ing aldcage the-artingnmand,\\n\",\n            \"werrstingresg farc! cos ar i an gheralm ther to green sfok.\\n\",\n            \"\\n\",\n            \"revesar'far: rawe good foun siff?\\n\",\n            \"\\n\",\n            \"meard:\\n\",\n            \"rol-sen;\\n\",\n            \"k\\n\",\n            \"TRAINING ON BATCH 1024 to 1280 (example 131072 to 163840)\\n\",\n            \"Epoch 1/1\\n\",\n            \"32768/32768 [==============================] - 125s 4ms/step - loss: 2.0923\\n\",\n            \"GENERATING SOME RANDOM TEXT FROM THE MODEL\\n\",\n            \"=====GENERATING TEXT WITH SEED: \\n\",\n            \"\\\"bed-chamber.\\n\",\n            \"\\n\",\n            \"lady anne:\\n\",\n            \"i'll \\\"\\n\",\n            \"==========TEMPERATURE: 0.2\\n\",\n            \"bed-chamber.\\n\",\n            \"\\n\",\n            \"lady anne:\\n\",\n            \"i'll of come the so so and so the the so son the love the that the the sare the so the will the love the so the the sear the so the so the sear the well the the sond and and with the gold and with the the come the the sear the so the the the sond the the the the so me the seard the the mare the son the love the ford the love i will the son the so the the will the hear the so the the the love the seard \\n\",\n            \"==========TEMPERATURE: 0.5\\n\",\n            \"bed-chamber.\\n\",\n            \"\\n\",\n            \"lady anne:\\n\",\n            \"i'll thou shat is the men that not the the mand swout thee thou the lond cime thou the leave the he some you the will not the the so com, lome a king lot sith sout, to hard leat of with that i with here of some of cother of the mane sher lewst a shall the and, with thou the and the he so the shall my so thou well soul the end waill with light be lace stour deas that so mang dom you lieg the for hat she\\n\",\n            \"==========TEMPERATURE: 1.0\\n\",\n            \"bed-chamber.\\n\",\n            \"\\n\",\n            \"lady anne:\\n\",\n            \"i'll thematomenclhe he theer dogbongart i's.\\n\",\n            \"\\n\",\n            \"uken,\\n\",\n            \"yol slich hell vear of con unoy ther tele-tace as suplown sprepe,\\n\",\n            \"a porse; i la wl bet i, ov fove to so winr cive oupke:\\n\",\n            \"that enw-n do sthat limesop the.\\n\",\n            \"conk,\\n\",\n            \"thye ion, dererule, swere.\\n\",\n            \"\\n\",\n            \"herioo:\\n\",\n            \"\\n\",\n            \"ithel:\\n\",\n            \"the me.\\n\",\n            \"\\n\",\n            \"qukeare yor ceichins graivet:\\n\",\n            \"you the qutgul -yald me?\\n\",\n            \"\\n\",\n            \"rreow\\n\",\n            \"macicheliotine:\\n\",\n            \"o xome at is mar.\\n\",\n            \"\\n\",\n            \"bint loire::\\n\",\n            \"you whe to you pare\\n\",\n            \"ast speak \\n\",\n            \"==========TEMPERATURE: 1.2\\n\",\n            \"bed-chamber.\\n\",\n            \"\\n\",\n            \"lady anne:\\n\",\n            \"i'll gugathit oi an w'reme thasy a paed-ait he owh: vary herver that you lovim,\\n\",\n            \"and wilrl'y sot mere the kulls?\\n\",\n            \"that, of is sfack yo ay if cufes, thes lack!\\n\",\n            \"a japcmel a not my my wagu.\\n\",\n            \"\\n\",\n            \"hidf riad.\\n\",\n            \"\\n\",\n            \"jolin:\\n\",\n            \"dhat whind liacem,\\n\",\n            \"i widse!\\n\",\n            \"\\n\",\n            \"rosk:\\n\",\n            \"mi eposrughe ho dont 'lutkid' of proof, 't\\n\",\n            \"honer''dughy thit.\\n\",\n            \"\\n\",\n            \"butpade iosiny.\\n\",\n            \"\\n\",\n            \"ouvook:\\n\",\n            \"my non.\\n\",\n            \"\\n\",\n            \"grinct, his: ovh hera teles have thattratcum.\\n\",\n            \"hacd, that thak maye'r\\n\",\n            \"TRAINING ON BATCH 1280 to 1536 (example 163840 to 196608)\\n\",\n            \"Epoch 1/1\\n\",\n            \"32768/32768 [==============================] - 122s 4ms/step - loss: 2.0355\\n\",\n            \"GENERATING SOME RANDOM TEXT FROM THE MODEL\\n\",\n            \"=====GENERATING TEXT WITH SEED: \\n\",\n            \"\\\"watchman:\\n\",\n            \"stay, or thou diest!\\\"\\n\",\n            \"==========TEMPERATURE: 0.2\\n\",\n            \"watchman:\\n\",\n            \"stay, or thou diest!\\n\",\n            \"\\n\",\n            \"rome:\\n\",\n            \"and i will the will the will the will the will the for the love with the will the case and the dear the the some my so with the will the frome the will the sone the bear the come the sill the will the cand the will the shall the will the will the and the will the with so the frome and with the will the will the will the will the will with the will the word and and the will the the so the w\\n\",\n            \"==========TEMPERATURE: 0.5\\n\",\n            \"watchman:\\n\",\n            \"stay, or thou diest!\\n\",\n            \"\\n\",\n            \"frist:\\n\",\n            \"and whou thou so the the the sone the pring her and deast son at of on the pear hat the sill the mare lay with so supe so me reeth\\n\",\n            \"and and thou cose the with and lead the bedsean the marsen and wull cith the raunded will the a thou so the with the thou prad to shat in frome the were well thou shall well whis and she hare ence courter, your his a sone, and the were the prease and the frien\\n\",\n            \"==========TEMPERATURE: 1.0\\n\",\n            \"watchman:\\n\",\n            \"stay, or thou diest! lad fencrem's and loven, stall for o: goped your daingoord dave,\\n\",\n            \"hen thoullly your for wist han sunbe and's gae the part.\\n\",\n            \"\\n\",\n            \"lant:\\n\",\n            \"and sing;\\n\",\n            \"i wam.\\n\",\n            \"\\n\",\n            \"seluve:\\n\",\n            \"nom ford hengorkaty thy nove:\\n\",\n            \"for a sorf came,\\n\",\n            \"buts say the wall aling withond, to uar oup.\\n\",\n            \"\\n\",\n            \"irrrom:\\n\",\n            \"isw whe forrursafs o'dt-meing and thou alling\\n\",\n            \"and gear the badtlofofo, yok dewer so'e.\\n\",\n            \"\\n\",\n            \"roaghour?\\n\",\n            \"wore is 'trid bewiss;\\n\",\n            \"a mecuribinsseang ny mr\\n\",\n            \"==========TEMPERATURE: 1.2\\n\",\n            \"watchman:\\n\",\n            \"stay, or thou diest!\\n\",\n            \"\\n\",\n            \"juvecifoo, gorse:\\n\",\n            \"werl iste comughtie thram of yoar tayrajen's fyom..o-\\n\",\n            \"myuld:\\n\",\n            \"love:\\n\",\n            \"on fithawinguss-either\\n\",\n            \"of culeonoig;\\n\",\n            \"anw\\n\",\n            \"an ve sheen-adnet'ce.\\n\",\n            \"\\n\",\n            \"jupmry:\\n\",\n            \"jeadqher:\\n\",\n            \"anv so grome, is darnes! and is aidt,\\n\",\n            \"and by crourspder', me oi ky,\\n\",\n            \"joon,\\n\",\n            \"thir therse,\\n\",\n            \"avend--anens ulfsocch flawdlace to thase apleing?\\n\",\n            \"\\n\",\n            \"nrocbaver:\\n\",\n            \"sels-m\\n\",\n            \"an? yon!\\n\",\n            \"\\n\",\n            \"kprowe:\\n\",\n            \"ir you lesty on ast,s purplay.\\n\",\n            \"erd:\\n\",\n            \"and king and, brave t\\n\",\n            \"TRAINING ON BATCH 1536 to 1792 (example 196608 to 229376)\\n\",\n            \"Epoch 1/1\\n\",\n            \"24320/32768 [=====================>........] - ETA: 31s - loss: 1.9848\"\n          ],\n          \"name\": \"stdout\"\n        },\n        {\n          \"output_type\": \"error\",\n          \"ename\": \"KeyboardInterrupt\",\n          \"evalue\": \"ignored\",\n          \"traceback\": [\n            \"\\u001b[0;31m\\u001b[0m\",\n            \"\\u001b[0;31mKeyboardInterrupt\\u001b[0mTraceback (most recent call last)\",\n            \"\\u001b[0;32m<ipython-input-72-ff3e59dfe5f3>\\u001b[0m in \\u001b[0;36m<module>\\u001b[0;34m()\\u001b[0m\\n\\u001b[1;32m     28\\u001b[0m               \\u001b[0mbatch_size\\u001b[0m\\u001b[0;34m=\\u001b[0m\\u001b[0mbatch_size\\u001b[0m\\u001b[0;34m,\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m     29\\u001b[0m               \\u001b[0mepochs\\u001b[0m\\u001b[0;34m=\\u001b[0m\\u001b[0;36m1\\u001b[0m\\u001b[0;34m,\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[0;32m---> 30\\u001b[0;31m               verbose=1)\\n\\u001b[0m\\u001b[1;32m     31\\u001b[0m \\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m     32\\u001b[0m     \\u001b[0;32mprint\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0;34m\\\"GENERATING SOME RANDOM TEXT FROM THE MODEL\\\"\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\",\n            \"\\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/keras/engine/training.pyc\\u001b[0m in \\u001b[0;36mfit\\u001b[0;34m(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, **kwargs)\\u001b[0m\\n\\u001b[1;32m   1346\\u001b[0m           \\u001b[0minitial_epoch\\u001b[0m\\u001b[0;34m=\\u001b[0m\\u001b[0minitial_epoch\\u001b[0m\\u001b[0;34m,\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m   1347\\u001b[0m           \\u001b[0msteps_per_epoch\\u001b[0m\\u001b[0;34m=\\u001b[0m\\u001b[0msteps_per_epoch\\u001b[0m\\u001b[0;34m,\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[0;32m-> 1348\\u001b[0;31m           validation_steps=validation_steps)\\n\\u001b[0m\\u001b[1;32m   1349\\u001b[0m     \\u001b[0;32melse\\u001b[0m\\u001b[0;34m:\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m   1350\\u001b[0m       return training_arrays.fit_loop(\\n\",\n            \"\\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/keras/engine/training_eager.pyc\\u001b[0m in \\u001b[0;36mfit_loop\\u001b[0;34m(model, inputs, targets, sample_weights, class_weight, val_inputs, val_targets, val_sample_weights, batch_size, epochs, verbose, callbacks, shuffle, callback_metrics, initial_epoch, steps_per_epoch, validation_steps)\\u001b[0m\\n\\u001b[1;32m   1056\\u001b[0m             \\u001b[0mshuffle\\u001b[0m\\u001b[0;34m=\\u001b[0m\\u001b[0mshuffle\\u001b[0m\\u001b[0;34m,\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m   1057\\u001b[0m             \\u001b[0mnum_train_samples\\u001b[0m\\u001b[0;34m=\\u001b[0m\\u001b[0mnum_train_samples\\u001b[0m\\u001b[0;34m,\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[0;32m-> 1058\\u001b[0;31m             do_validation=do_validation)\\n\\u001b[0m\\u001b[1;32m   1059\\u001b[0m       \\u001b[0mcallbacks\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0mon_epoch_end\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0mepoch\\u001b[0m\\u001b[0;34m,\\u001b[0m \\u001b[0mepoch_logs\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m   1060\\u001b[0m       \\u001b[0;32mif\\u001b[0m \\u001b[0mcallback_model\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0mstop_training\\u001b[0m\\u001b[0;34m:\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\",\n            \"\\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/keras/engine/training_eager.pyc\\u001b[0m in \\u001b[0;36mbatch_fit_loop\\u001b[0;34m(model, inputs, targets, epoch_logs, index_array, out_labels, callback_model, batch_size, sample_weights, val_inputs, val_targets, val_sample_weights, callbacks, shuffle, num_train_samples, do_validation)\\u001b[0m\\n\\u001b[1;32m    397\\u001b[0m         \\u001b[0mtargets_batch\\u001b[0m\\u001b[0;34m,\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m    398\\u001b[0m         \\u001b[0msample_weights\\u001b[0m\\u001b[0;34m=\\u001b[0m\\u001b[0msample_weights_batch\\u001b[0m\\u001b[0;34m,\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[0;32m--> 399\\u001b[0;31m         training=True)\\n\\u001b[0m\\u001b[1;32m    400\\u001b[0m \\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m    401\\u001b[0m     \\u001b[0;32mif\\u001b[0m \\u001b[0;32mnot\\u001b[0m \\u001b[0misinstance\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0mouts\\u001b[0m\\u001b[0;34m,\\u001b[0m \\u001b[0mlist\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m:\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\",\n            \"\\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/keras/engine/training_eager.pyc\\u001b[0m in \\u001b[0;36m_process_single_batch\\u001b[0;34m(model, inputs, targets, sample_weights, training)\\u001b[0m\\n\\u001b[1;32m    792\\u001b[0m       outs, loss, loss_metrics = _model_loss(model, inputs, targets,\\n\\u001b[1;32m    793\\u001b[0m                                              \\u001b[0msample_weights\\u001b[0m\\u001b[0;34m=\\u001b[0m\\u001b[0msample_weights\\u001b[0m\\u001b[0;34m,\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[0;32m--> 794\\u001b[0;31m                                              training=training)\\n\\u001b[0m\\u001b[1;32m    795\\u001b[0m       \\u001b[0;32mif\\u001b[0m \\u001b[0mloss\\u001b[0m \\u001b[0;32mis\\u001b[0m \\u001b[0mNone\\u001b[0m\\u001b[0;34m:\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m    796\\u001b[0m         raise ValueError('The model cannot be run '\\n\",\n            \"\\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/keras/engine/training_eager.pyc\\u001b[0m in \\u001b[0;36m_model_loss\\u001b[0;34m(model, inputs, targets, sample_weights, training)\\u001b[0m\\n\\u001b[1;32m    126\\u001b[0m       \\u001b[0mouts\\u001b[0m \\u001b[0;34m=\\u001b[0m \\u001b[0mmodel\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0mcall\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0minputs\\u001b[0m\\u001b[0;34m[\\u001b[0m\\u001b[0;36m0\\u001b[0m\\u001b[0;34m]\\u001b[0m\\u001b[0;34m,\\u001b[0m \\u001b[0mtraining\\u001b[0m\\u001b[0;34m=\\u001b[0m\\u001b[0mtraining\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m    127\\u001b[0m     \\u001b[0;32melse\\u001b[0m\\u001b[0;34m:\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[0;32m--> 128\\u001b[0;31m       \\u001b[0mouts\\u001b[0m \\u001b[0;34m=\\u001b[0m \\u001b[0mmodel\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0mcall\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0minputs\\u001b[0m\\u001b[0;34m[\\u001b[0m\\u001b[0;36m0\\u001b[0m\\u001b[0;34m]\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[0m\\u001b[1;32m    129\\u001b[0m   \\u001b[0;32melse\\u001b[0m\\u001b[0;34m:\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m    130\\u001b[0m     \\u001b[0;32mif\\u001b[0m \\u001b[0mmodel\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0m_expects_training_arg\\u001b[0m\\u001b[0;34m:\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\",\n            \"\\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/keras/engine/network.pyc\\u001b[0m in \\u001b[0;36mcall\\u001b[0;34m(self, inputs, training, mask)\\u001b[0m\\n\\u001b[1;32m    775\\u001b[0m     outputs, _ = self._run_internal_graph(inputs,\\n\\u001b[1;32m    776\\u001b[0m                                           \\u001b[0mtraining\\u001b[0m\\u001b[0;34m=\\u001b[0m\\u001b[0mtraining\\u001b[0m\\u001b[0;34m,\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[0;32m--> 777\\u001b[0;31m                                           mask=masks)\\n\\u001b[0m\\u001b[1;32m    778\\u001b[0m     \\u001b[0;32mreturn\\u001b[0m \\u001b[0moutputs\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m    779\\u001b[0m \\u001b[0;34m\\u001b[0m\\u001b[0m\\n\",\n            \"\\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/keras/engine/network.pyc\\u001b[0m in \\u001b[0;36m_run_internal_graph\\u001b[0;34m(self, inputs, training, mask)\\u001b[0m\\n\\u001b[1;32m    946\\u001b[0m \\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m    947\\u001b[0m               output_tensors = nest.flatten(\\n\\u001b[0;32m--> 948\\u001b[0;31m                   layer.call(computed_tensor, **kwargs))\\n\\u001b[0m\\u001b[1;32m    949\\u001b[0m               \\u001b[0;32mif\\u001b[0m \\u001b[0mhasattr\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0mlayer\\u001b[0m\\u001b[0;34m,\\u001b[0m \\u001b[0;34m'compute_mask'\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m:\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m    950\\u001b[0m                 output_masks = layer.compute_mask(computed_tensor,\\n\",\n            \"\\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/keras/layers/recurrent.pyc\\u001b[0m in \\u001b[0;36mcall\\u001b[0;34m(self, inputs, mask, training, initial_state)\\u001b[0m\\n\\u001b[1;32m   2097\\u001b[0m     \\u001b[0mself\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0mcell\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0m_recurrent_dropout_mask\\u001b[0m \\u001b[0;34m=\\u001b[0m \\u001b[0mNone\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m   2098\\u001b[0m     return super(LSTM, self).call(\\n\\u001b[0;32m-> 2099\\u001b[0;31m         inputs, mask=mask, training=training, initial_state=initial_state)\\n\\u001b[0m\\u001b[1;32m   2100\\u001b[0m \\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m   2101\\u001b[0m   \\u001b[0;34m@\\u001b[0m\\u001b[0mproperty\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\",\n            \"\\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/keras/layers/recurrent.pyc\\u001b[0m in \\u001b[0;36mcall\\u001b[0;34m(self, inputs, mask, training, initial_state, constants)\\u001b[0m\\n\\u001b[1;32m    637\\u001b[0m         \\u001b[0mmask\\u001b[0m\\u001b[0;34m=\\u001b[0m\\u001b[0mmask\\u001b[0m\\u001b[0;34m,\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m    638\\u001b[0m         \\u001b[0munroll\\u001b[0m\\u001b[0;34m=\\u001b[0m\\u001b[0mself\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0munroll\\u001b[0m\\u001b[0;34m,\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[0;32m--> 639\\u001b[0;31m         input_length=timesteps)\\n\\u001b[0m\\u001b[1;32m    640\\u001b[0m     \\u001b[0;32mif\\u001b[0m \\u001b[0mself\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0mstateful\\u001b[0m\\u001b[0;34m:\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m    641\\u001b[0m       \\u001b[0mupdates\\u001b[0m \\u001b[0;34m=\\u001b[0m \\u001b[0;34m[\\u001b[0m\\u001b[0;34m]\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\",\n            \"\\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/keras/backend.pyc\\u001b[0m in \\u001b[0;36mrnn\\u001b[0;34m(step_function, inputs, initial_states, go_backwards, mask, constants, unroll, input_length)\\u001b[0m\\n\\u001b[1;32m   3218\\u001b[0m         \\u001b[0mmaximum_iterations\\u001b[0m\\u001b[0;34m=\\u001b[0m\\u001b[0minput_length\\u001b[0m\\u001b[0;34m,\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m   3219\\u001b[0m         \\u001b[0mparallel_iterations\\u001b[0m\\u001b[0;34m=\\u001b[0m\\u001b[0;36m32\\u001b[0m\\u001b[0;34m,\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[0;32m-> 3220\\u001b[0;31m         swap_memory=True)\\n\\u001b[0m\\u001b[1;32m   3221\\u001b[0m     \\u001b[0mlast_time\\u001b[0m \\u001b[0;34m=\\u001b[0m \\u001b[0mfinal_outputs\\u001b[0m\\u001b[0;34m[\\u001b[0m\\u001b[0;36m0\\u001b[0m\\u001b[0;34m]\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m   3222\\u001b[0m     \\u001b[0moutput_ta\\u001b[0m \\u001b[0;34m=\\u001b[0m \\u001b[0mfinal_outputs\\u001b[0m\\u001b[0;34m[\\u001b[0m\\u001b[0;36m1\\u001b[0m\\u001b[0;34m]\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\",\n            \"\\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/control_flow_ops.pyc\\u001b[0m in \\u001b[0;36mwhile_loop\\u001b[0;34m(cond, body, loop_vars, shape_invariants, parallel_iterations, back_prop, swap_memory, name, maximum_iterations, return_same_structure)\\u001b[0m\\n\\u001b[1;32m   3206\\u001b[0m \\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m   3207\\u001b[0m       \\u001b[0;32mwhile\\u001b[0m \\u001b[0mcond\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0;34m*\\u001b[0m\\u001b[0mloop_vars\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m:\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[0;32m-> 3208\\u001b[0;31m         \\u001b[0mloop_vars\\u001b[0m \\u001b[0;34m=\\u001b[0m \\u001b[0mbody\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0;34m*\\u001b[0m\\u001b[0mloop_vars\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[0m\\u001b[1;32m   3209\\u001b[0m         \\u001b[0;32mif\\u001b[0m \\u001b[0mtry_to_pack\\u001b[0m \\u001b[0;32mand\\u001b[0m \\u001b[0;32mnot\\u001b[0m \\u001b[0misinstance\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0mloop_vars\\u001b[0m\\u001b[0;34m,\\u001b[0m \\u001b[0;34m(\\u001b[0m\\u001b[0mlist\\u001b[0m\\u001b[0;34m,\\u001b[0m \\u001b[0m_basetuple\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m:\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m   3210\\u001b[0m           \\u001b[0mpacked\\u001b[0m \\u001b[0;34m=\\u001b[0m \\u001b[0mTrue\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\",\n            \"\\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/control_flow_ops.pyc\\u001b[0m in \\u001b[0;36m<lambda>\\u001b[0;34m(i, lv)\\u001b[0m\\n\\u001b[1;32m   3199\\u001b[0m         cond = lambda i, lv: (  # pylint: disable=g-long-lambda\\n\\u001b[1;32m   3200\\u001b[0m             math_ops.logical_and(i < maximum_iterations, orig_cond(*lv)))\\n\\u001b[0;32m-> 3201\\u001b[0;31m         \\u001b[0mbody\\u001b[0m \\u001b[0;34m=\\u001b[0m \\u001b[0;32mlambda\\u001b[0m \\u001b[0mi\\u001b[0m\\u001b[0;34m,\\u001b[0m \\u001b[0mlv\\u001b[0m\\u001b[0;34m:\\u001b[0m \\u001b[0;34m(\\u001b[0m\\u001b[0mi\\u001b[0m \\u001b[0;34m+\\u001b[0m \\u001b[0;36m1\\u001b[0m\\u001b[0;34m,\\u001b[0m \\u001b[0morig_body\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0;34m*\\u001b[0m\\u001b[0mlv\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[0m\\u001b[1;32m   3202\\u001b[0m \\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m   3203\\u001b[0m     \\u001b[0;32mif\\u001b[0m \\u001b[0mcontext\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0mexecuting_eagerly\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m:\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\",\n            \"\\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/keras/backend.pyc\\u001b[0m in \\u001b[0;36m_step\\u001b[0;34m(time, output_ta_t, *states)\\u001b[0m\\n\\u001b[1;32m   3203\\u001b[0m         \\u001b[0mcurrent_input\\u001b[0m \\u001b[0;34m=\\u001b[0m \\u001b[0minput_ta\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0mread\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0mtime\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m   3204\\u001b[0m         output, new_states = step_function(current_input,\\n\\u001b[0;32m-> 3205\\u001b[0;31m                                            tuple(states) + tuple(constants))\\n\\u001b[0m\\u001b[1;32m   3206\\u001b[0m         \\u001b[0;32mif\\u001b[0m \\u001b[0mgetattr\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0moutput\\u001b[0m\\u001b[0;34m,\\u001b[0m \\u001b[0;34m'_uses_learning_phase'\\u001b[0m\\u001b[0;34m,\\u001b[0m \\u001b[0mFalse\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m:\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m   3207\\u001b[0m           \\u001b[0;32mglobal\\u001b[0m \\u001b[0muses_learning_phase\\u001b[0m  \\u001b[0;31m# pylint: disable=global-variable-undefined\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\",\n            \"\\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/keras/layers/recurrent.pyc\\u001b[0m in \\u001b[0;36mstep\\u001b[0;34m(inputs, states)\\u001b[0m\\n\\u001b[1;32m    627\\u001b[0m \\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m    628\\u001b[0m       \\u001b[0;32mdef\\u001b[0m \\u001b[0mstep\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0minputs\\u001b[0m\\u001b[0;34m,\\u001b[0m \\u001b[0mstates\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m:\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[0;32m--> 629\\u001b[0;31m         \\u001b[0;32mreturn\\u001b[0m \\u001b[0mself\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0mcell\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0mcall\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0minputs\\u001b[0m\\u001b[0;34m,\\u001b[0m \\u001b[0mstates\\u001b[0m\\u001b[0;34m,\\u001b[0m \\u001b[0;34m**\\u001b[0m\\u001b[0mkwargs\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[0m\\u001b[1;32m    630\\u001b[0m \\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m    631\\u001b[0m     last_output, outputs, states = K.rnn(\\n\",\n            \"\\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/keras/layers/recurrent.pyc\\u001b[0m in \\u001b[0;36mcall\\u001b[0;34m(self, inputs, states, training)\\u001b[0m\\n\\u001b[1;32m   1870\\u001b[0m       \\u001b[0mx_f\\u001b[0m \\u001b[0;34m=\\u001b[0m \\u001b[0mK\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0mdot\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0minputs_f\\u001b[0m\\u001b[0;34m,\\u001b[0m \\u001b[0mself\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0mkernel\\u001b[0m\\u001b[0;34m[\\u001b[0m\\u001b[0;34m:\\u001b[0m\\u001b[0;34m,\\u001b[0m \\u001b[0mself\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0munits\\u001b[0m\\u001b[0;34m:\\u001b[0m\\u001b[0mself\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0munits\\u001b[0m \\u001b[0;34m*\\u001b[0m \\u001b[0;36m2\\u001b[0m\\u001b[0;34m]\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m   1871\\u001b[0m       \\u001b[0mx_c\\u001b[0m \\u001b[0;34m=\\u001b[0m \\u001b[0mK\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0mdot\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0minputs_c\\u001b[0m\\u001b[0;34m,\\u001b[0m \\u001b[0mself\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0mkernel\\u001b[0m\\u001b[0;34m[\\u001b[0m\\u001b[0;34m:\\u001b[0m\\u001b[0;34m,\\u001b[0m \\u001b[0mself\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0munits\\u001b[0m \\u001b[0;34m*\\u001b[0m \\u001b[0;36m2\\u001b[0m\\u001b[0;34m:\\u001b[0m\\u001b[0mself\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0munits\\u001b[0m \\u001b[0;34m*\\u001b[0m \\u001b[0;36m3\\u001b[0m\\u001b[0;34m]\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[0;32m-> 1872\\u001b[0;31m       \\u001b[0mx_o\\u001b[0m \\u001b[0;34m=\\u001b[0m \\u001b[0mK\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0mdot\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0minputs_o\\u001b[0m\\u001b[0;34m,\\u001b[0m \\u001b[0mself\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0mkernel\\u001b[0m\\u001b[0;34m[\\u001b[0m\\u001b[0;34m:\\u001b[0m\\u001b[0;34m,\\u001b[0m \\u001b[0mself\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0munits\\u001b[0m \\u001b[0;34m*\\u001b[0m \\u001b[0;36m3\\u001b[0m\\u001b[0;34m:\\u001b[0m\\u001b[0;34m]\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[0m\\u001b[1;32m   1873\\u001b[0m       \\u001b[0;32mif\\u001b[0m \\u001b[0mself\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0muse_bias\\u001b[0m\\u001b[0;34m:\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m   1874\\u001b[0m         \\u001b[0mx_i\\u001b[0m \\u001b[0;34m=\\u001b[0m \\u001b[0mK\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0mbias_add\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0mx_i\\u001b[0m\\u001b[0;34m,\\u001b[0m \\u001b[0mself\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0mbias\\u001b[0m\\u001b[0;34m[\\u001b[0m\\u001b[0;34m:\\u001b[0m\\u001b[0mself\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0munits\\u001b[0m\\u001b[0;34m]\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\",\n            \"\\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/keras/backend.pyc\\u001b[0m in \\u001b[0;36mdot\\u001b[0;34m(x, y)\\u001b[0m\\n\\u001b[1;32m   1336\\u001b[0m   \\u001b[0;34m`\\u001b[0m\\u001b[0;34m`\\u001b[0m\\u001b[0;34m`\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m   1337\\u001b[0m   \\\"\\\"\\\"\\n\\u001b[0;32m-> 1338\\u001b[0;31m   \\u001b[0;32mif\\u001b[0m \\u001b[0mndim\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0mx\\u001b[0m\\u001b[0;34m)\\u001b[0m \\u001b[0;32mis\\u001b[0m \\u001b[0;32mnot\\u001b[0m \\u001b[0mNone\\u001b[0m \\u001b[0;32mand\\u001b[0m \\u001b[0;34m(\\u001b[0m\\u001b[0mndim\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0mx\\u001b[0m\\u001b[0;34m)\\u001b[0m \\u001b[0;34m>\\u001b[0m \\u001b[0;36m2\\u001b[0m \\u001b[0;32mor\\u001b[0m \\u001b[0mndim\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0my\\u001b[0m\\u001b[0;34m)\\u001b[0m \\u001b[0;34m>\\u001b[0m \\u001b[0;36m2\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m:\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[0m\\u001b[1;32m   1339\\u001b[0m     \\u001b[0mx_shape\\u001b[0m \\u001b[0;34m=\\u001b[0m \\u001b[0;34m[\\u001b[0m\\u001b[0;34m]\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m   1340\\u001b[0m     \\u001b[0;32mfor\\u001b[0m \\u001b[0mi\\u001b[0m\\u001b[0;34m,\\u001b[0m \\u001b[0ms\\u001b[0m \\u001b[0;32min\\u001b[0m \\u001b[0mzip\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0mint_shape\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0mx\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m,\\u001b[0m \\u001b[0marray_ops\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0munstack\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0marray_ops\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0mshape\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0mx\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m:\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\",\n            \"\\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/keras/backend.pyc\\u001b[0m in \\u001b[0;36mndim\\u001b[0;34m(x)\\u001b[0m\\n\\u001b[1;32m    881\\u001b[0m   \\u001b[0;34m`\\u001b[0m\\u001b[0;34m`\\u001b[0m\\u001b[0;34m`\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m    882\\u001b[0m   \\\"\\\"\\\"\\n\\u001b[0;32m--> 883\\u001b[0;31m   \\u001b[0mdims\\u001b[0m \\u001b[0;34m=\\u001b[0m \\u001b[0mx\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0mget_shape\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0m_dims\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[0m\\u001b[1;32m    884\\u001b[0m   \\u001b[0;32mif\\u001b[0m \\u001b[0mdims\\u001b[0m \\u001b[0;32mis\\u001b[0m \\u001b[0;32mnot\\u001b[0m \\u001b[0mNone\\u001b[0m\\u001b[0;34m:\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m    885\\u001b[0m     \\u001b[0;32mreturn\\u001b[0m \\u001b[0mlen\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0mdims\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\",\n            \"\\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.pyc\\u001b[0m in \\u001b[0;36mget_shape\\u001b[0;34m(self)\\u001b[0m\\n\\u001b[1;32m    819\\u001b[0m   \\u001b[0;32mdef\\u001b[0m \\u001b[0mget_shape\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0mself\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m:\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m    820\\u001b[0m     \\u001b[0;34m\\\"\\\"\\\"Alias of Tensor.shape.\\\"\\\"\\\"\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[0;32m--> 821\\u001b[0;31m     \\u001b[0;32mreturn\\u001b[0m \\u001b[0mself\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0mshape\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[0m\\u001b[1;32m    822\\u001b[0m \\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m    823\\u001b[0m   \\u001b[0;32mdef\\u001b[0m \\u001b[0m_shape_as_list\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0mself\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m:\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\",\n            \"\\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.pyc\\u001b[0m in \\u001b[0;36mshape\\u001b[0;34m(self)\\u001b[0m\\n\\u001b[1;32m    814\\u001b[0m       \\u001b[0;31m# `_tensor_shape` is declared and defined in the definition of\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m    815\\u001b[0m       \\u001b[0;31m# `EagerTensor`, in C.\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[0;32m--> 816\\u001b[0;31m       \\u001b[0mself\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0m_tensor_shape\\u001b[0m \\u001b[0;34m=\\u001b[0m \\u001b[0mtensor_shape\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0mTensorShape\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0mself\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0m_shape_tuple\\u001b[0m\\u001b[0;34m(\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m)\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[0m\\u001b[1;32m    817\\u001b[0m     \\u001b[0;32mreturn\\u001b[0m \\u001b[0mself\\u001b[0m\\u001b[0;34m.\\u001b[0m\\u001b[0m_tensor_shape\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[1;32m    818\\u001b[0m \\u001b[0;34m\\u001b[0m\\u001b[0m\\n\",\n            \"\\u001b[0;31mKeyboardInterrupt\\u001b[0m: \"\n          ]\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"w3C-AIU18HFe\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"**NOTE**: Even after training has stopped you can still generate from the (partially trained) model as follows:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"7HR4JXD3ZnX0\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 35\n        },\n        \"outputId\": \"82fbdad8-0586-4096-f5a1-7c1cc9bfcee4\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"my_text = \\\"       the meaning of life is:\\\"  # Needs to be max_len characters\\n\",\n        \"print(len(my_text))\\n\",\n        \"sample_from_model(model, prev_text=my_text)\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"30\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"UbdLbn_xRe21\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"###IMPORTANT NOTES\\n\",\n        \"* Even if you stop training the model weights are persistant. If you resume training it will start where you left off. \\n\",\n        \"* To reset the weights, you need to recompile the model.\\n\",\n        \"* Sampling is **stochastic** (random), so you'll get new outputs every time you rerun the sampling code.\\n\",\n        \"\\n\",\n        \"### YOUR TASKS: \\n\",\n        \"* [**ALL**] Read the generations from your model in a funny voice to your neighbour.\\n\",\n        \"* [**ALL**] Increase `max_len` and regenerate the data and retrain the model.\\n\",\n        \" * What's the effect on training speed as you double `max_len`. Can you explain why?\\n\",\n        \" * Do you notice any effect on the quality of the model? Can you explain why?\\n\",\n        \"* [**ALL**] Set the max_len to be roughly the length of half a word; one word; two words... What kind of samples do these models generate? Explain how they go wrong.\\n\",\n        \"* [**ALL**] Change `embedding_dim` and the hidden size of the LSTM and observe the effect on training speed and quality.\\n\",\n        \"* [**INTERMEDIATE**] Change the dropout rates & retrain the model. \\n\",\n        \"  * What types of dropout do we get for recurrent models? \\n\",\n        \"  * What's the effect on the text quality?\\n\",\n        \"* [**ADVANCED**] Implement the \\\"teacher forcing\\\" training methodology, where the net must predict the entire output sequence shifted forward by one character, instead of just the next character. Compare the output of a model trained with teacher forcing versus the per-character model, given a similar training time. Is it fair to say that teacher forcing is a more efficient training methodology?\\n\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"REZzoUwjHkZW\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"##Further reading\\n\",\n        \"\\n\",\n        \"* https://distill.pub/2016/augmented-rnns/\\n\",\n        \"* https://distill.pub/2017/ctc/\\n\",\n        \"* https://algotravelling.com/en/machine-learning-fun-part-5/\"\n      ]\n    }\n  ]\n}"
  },
  {
    "path": "Practical_4_Reinforcement_Learning.ipynb",
    "content": "{\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0,\n  \"metadata\": {\n    \"colab\": {\n      \"name\": \"Practical 4: Reinforcement Learning\",\n      \"version\": \"0.3.2\",\n      \"provenance\": [],\n      \"collapsed_sections\": []\n    },\n    \"kernelspec\": {\n      \"name\": \"python2\",\n      \"display_name\": \"Python 2\"\n    },\n    \"accelerator\": \"GPU\"\n  },\n  \"cells\": [\n    {\n      \"metadata\": {\n        \"id\": \"Eou_PrPyXAgT\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"# Practical 4: Reinforcement Learning\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"QTOkLq7QSxaw\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## Introduction\\n\",\n        \"In this practical we introduce the idea of reinforcement learning, discuss how it differs from supervised and unsupervised learning and then build an agent that learns to play a simple game called \\\"Catcher\\\".\\n\",\n        \"\\n\",\n        \"## Learning Objectives\\n\",\n        \"* Understand the relationship between the **environment** and the  **agent**  \\n\",\n        \"* Understand how a **policy** is used by an agent to select an action\\n\",\n        \"* Describe how to implement a **run-loop** that controls the interaction between environement and agent.\\n\",\n        \"* Understand how the **state**, **action** and **reward** are communicated between the agent and the environment.  \\n\",\n        \"* Be able to implement the a simple **policy-gradient** RL algorithm call **REINFORCE**\\n\",\n        \"* Discover at least one potential issue with the REINFORCE algorithm.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"V3Yu5en6YvbB\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"#@title [RUN ME!] Install pre-requisites. { display-mode: \\\"form\\\" }\\n\",\n        \"import os\\n\",\n        \"import sys\\n\",\n        \"import math\\t\\n\",\n        \"\\n\",\n        \"!git clone https://github.com/ntasfi/PyGame-Learning-Environment.git\\n\",\n        \"os.chdir('PyGame-Learning-Environment')\\n\",\n        \"!pip -q install -e .\\n\",\n        \"!pip -q install pygame\\n\",\n        \"os.chdir('/content')\\n\",\n        \"\\n\",\n        \"sys.path.append('/content/PyGame-Learning-Environment')\\n\",\n        \"os.environ[\\\"SDL_VIDEODRIVER\\\"] = \\\"dummy\\\"  # prevent trying to open a window\\n\",\n        \"\\n\",\n        \"!pip -q install moviepy\\n\",\n        \"\\n\",\n        \"print('Installed pre-requisites...')\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"LejsQxNCB2fM\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"#@title [RUN ME!] Imports { display-mode: \\\"form\\\" }\\n\",\n        \"\\n\",\n        \"from __future__ import absolute_import\\n\",\n        \"from __future__ import division\\n\",\n        \"from __future__ import print_function\\n\",\n        \"from __future__ import unicode_literals\\n\",\n        \"\\n\",\n        \"import os\\n\",\n        \"import moviepy.editor as mpy\\n\",\n        \"from ple import PLE\\n\",\n        \"from ple.games import pong\\n\",\n        \"from ple.games import pixelcopter\\n\",\n        \"from ple.games import flappybird\\n\",\n        \"from ple.games import catcher\\n\",\n        \"from IPython import display\\n\",\n        \"import numpy as np\\n\",\n        \"import matplotlib.pyplot as plt\\n\",\n        \"from collections import deque\\n\",\n        \"import seaborn as sns\\n\",\n        \"\\n\",\n        \"import tensorflow as tf\\n\",\n        \"try:\\n\",\n        \"  tf.enable_eager_execution()\\n\",\n        \"  print('Running Eagerly')\\n\",\n        \"except ValueError:\\n\",\n        \"  print('Already running Eagerly')\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"o8kIIBytaQqH\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"#@title [RUN ME!] Helper Functions { display-mode: \\\"form\\\" }\\n\",\n        \"\\n\",\n        \"def make_animation(images, fps=60, true_image=False):\\n\",\n        \"  duration = len(images) / fps\\n\",\n        \"\\n\",\n        \"  def make_frame(t):\\n\",\n        \"    try:\\n\",\n        \"      x = images[int(len(images) / duration * t)]\\n\",\n        \"    except:\\n\",\n        \"      x = images[-1]\\n\",\n        \"\\n\",\n        \"    if true_image:\\n\",\n        \"      return x.astype(np.uint8)\\n\",\n        \"    else:\\n\",\n        \"      return ((x + 1) / 2 * 255).astype(np.uint8)\\n\",\n        \"\\n\",\n        \"  clip = mpy.VideoClip(make_frame, duration=duration)\\n\",\n        \"  clip.fps = fps\\n\",\n        \"  return clip\\n\",\n        \"\\n\",\n        \"def progress(value, max=100, message=''):\\n\",\n        \"  return display.HTML(\\\"\\\"\\\"\\n\",\n        \"      <progress\\n\",\n        \"          value='{value}'\\n\",\n        \"          max='{max}',\\n\",\n        \"          style='width: 100%'\\n\",\n        \"      >\\n\",\n        \"          {value}\\n\",\n        \"      </progress>\\n\",\n        \"      <p>{message}</p>\\n\",\n        \"  \\\"\\\"\\\".format(value=value, max=max, message=message))\\n\",\n        \"\\n\",\n        \"def plot_rolling_returns(rolling_returns):  \\n\",\n        \"  sns.tsplot(rolling_returns)\\n\",\n        \"  plt.title('Rolling Returns')\\n\",\n        \"  plt.xlabel('# Epsiodes')\\n\",\n        \"  plt.ylabel('Rolling Return')\\n\",\n        \"  \\n\",\n        \"def state_to_buckets(state, bucket_width=0.25):\\n\",\n        \"  return tuple(math.ceil(s / bucket_width)-1 for s in state)\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"2wZMmj4Toy8e\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## Reinforcement Learning\\n\",\n        \"So far we have encountered **supervised learning**, where we have an input and a target value or class that we want to predict. We have also encountered **unsupervised learning** where we are only given an input and look for patterns in that input. In this practical, we look into **reinforcement learning** which can loosely be defined as training an **agent** to maximise a numerical **reward** it obtains through interaction with an **environment**. \\n\",\n        \"\\n\",\n        \"The environment defines a set of **actions** that an agent can take. The agent observes the current **state** of the environment, tries actions and *learns* a **policy** which is a distribution over the possible actions given a state of the environment. \\n\",\n        \"\\n\",\n        \"The following diagram illustrates the interaction between the agent and environment. We will explore each of the terms in more detail throughout this practical. \\n\",\n        \"\\n\",\n        \"\\n\",\n        \"![Interaction of Agent and Environment](https://github.com/deep-learning-indaba/indaba-2018/blob/master/images/rl_diagram1.png?raw=true)\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"## Outline\\n\",\n        \"We will train an agent to play a very simple game called \\\"Catcher\\\" which is often used as a test bed for RL algorithms. In the process we will set up all the necessary framework to explore variations of the algorithm or switch to more advanced games! In particular, the steps we will follow in this practical are as follows:\\n\",\n        \"\\n\",\n        \"1. Introduce the game environment, explore the states and actions available. \\n\",\n        \"2. Create a simple agent that takes random actions\\n\",\n        \"3. Write a run-loop which controls the interaction and manages the communication between the agent and environment\\n\",\n        \"4. Implement a policy as a feed-forward neural network\\n\",\n        \"5. Explain and implement the REINFORCE algorithm to learn how to play the game\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"RnNYUFu7V1I2\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## The Environment\\n\",\n        \"The environment we consider is the game Catcher from the PyGame Learning Environment (PLE) library. The player (agent) controls a paddle that it must use to catch a falling fruit. Each time the game runs, the fruit falls from from the top to the bottom of the screen, starting at a different X coordinate (which doesn't change during the episode) and the paddle starts in a random location along the bottom of the screen. The player wins if they manage to catch the fruit and loses if it falls to the ground. \\n\",\n        \"\\n\",\n        \"![Catcher game illustration](https://pygame-learning-environment.readthedocs.io/en/latest/_images/catcher.gif)\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"9vTOQs5eQZoE\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### Create the environment using PLE\\n\",\n        \"For this game, we'll set things up so that the reward will be non-zero only at the end of each episode, and will be +1 for catching the fruit and -1 for missing it. For all other frames the reward will be zero.\\n\",\n        \"\\n\",\n        \"**Note**: PLE has a number of games, which it wraps in a generic \\\"environment\\\". \\n\",\n        \"So, in this case, both ```evironment``` and ```game``` constitute our environment. ```environment``` allows us to perform actions \\n\",\n        \"and returns states and rewards, while ```game``` handles the specifics of Catcher (or whichever other game we decide to use)\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"L_awOQZJC-d_\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Create an instance of the catcher game\\n\",\n        \"game = catcher.Catcher(init_lives=1)\\n\",\n        \"game_height = game.height\\n\",\n        \"game_width = game.width\\n\",\n        \"\\n\",\n        \"frame_skip = 3  # Skip 3 frames at each step to speed up the game\\n\",\n        \"\\n\",\n        \"# Wrap the game in a PLE environment and configure the rewards\\n\",\n        \"environment = PLE(game, display_screen=False, force_fps=True, \\n\",\n        \"                  reward_values={'win': 1.0, 'loss': -1.0, 'negative': 0.0}, \\n\",\n        \"                  frame_skip=frame_skip)  \\n\",\n        \"\\n\",\n        \"# The reward_values dictionary above allows us to override the default reward structure provided by PLE. \\n\",\n        \"# win and loss specify the rewards for winning or losing an episode, while positive and negative \\n\",\n        \"# specify the rewards received for positive or negative events that can occur during the game.\\n\",\n        \"# If you change the game, start by *removing* the overrides and see what the default is before deciding if\\n\",\n        \"# you want to modify it. \\n\",\n        \"\\n\",\n        \"# Initialise the environment\\n\",\n        \"environment.init()\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"36vk0-0qST83\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### What does the state look like?\\n\",\n        \"The environment provides a rendering of the virtual 'screen' of the game to an RGB image, by using the method ```getScreenRGB```. For this practical, in the interests of simplicity and quick trianing time, we use the *game state* directly, which provides a summary (in a dictionary) of important peices of information making up the current state of the game. \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"kcGwYfj6SWl2\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 34\n        },\n        \"outputId\": \"95dc4e2c-25ee-485d-a4d5-9b8e0fd2372f\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"print('Current game state:', game.getGameState())\"\n      ],\n      \"execution_count\": 6,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Current game state: {'fruit_x': 8, 'player_vel': 0.0, 'player_x': 26, 'fruit_y': -8}\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"CTH3IMzp_IUl\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### What actions are available?\\n\",\n        \"The following cell prints the actions that are available in the current game, which are represented with numerical codes. The PLE environment wrapper also adds an additional ```None``` action which means \\\"do nothing\\\". \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"WawJ92pOCD4D\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"7d286730-bcc5-418a-c603-cf45e4c89690\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"print('Game actions:', game.actions)\\n\",\n        \"print('Environment actions:', environment.getActionSet())\"\n      ],\n      \"execution_count\": 7,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Game actions: {'right': 100, 'left': 97}\\n\",\n            \"Environment actions: [100, 97, None]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"RElMlRA-O-WC\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"#@title [RUN ME!] Setup for the next section { display-mode: \\\"form\\\" }\\n\",\n        \"# Maintain some variables for the next task\\n\",\n        \"environment.reset_game()\\n\",\n        \"observed_states = []\\n\",\n        \"observed_actions = []\\n\",\n        \"observed_rewards = []\\n\",\n        \"observed_states.append(game.getGameState())\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"pwl9qQmlURgR\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### Exploratory Task\\n\",\n        \"Run the cell below which defines a function that takes a given action in the environment, using the environment's ```act``` method and then renders both the previous and current game screen. Change the action in the drop-down to the right of the 2nd code cell, which calls this function with the chosen action. Observe what happens to the environment(game) state and reward. By running the cell multiple times (and changing the action) until the game comes to an end (when you either win or lose), you will manually create an **episode**, which is a sequence of states, actions and rewards until a termination condition is reached. If an episode $i$ consists of $T_i$ steps and we denote the state, action and reward at step $t$ in episode $i$ respectively as $s_{i, t}$, $a_{i,t}$ and $r_{i,t}$, then in this task, we create a *trajectory* $\\\\tau_i = (s_{i, 1}, a_{i, 1}, r_{i, 1}, ..., a_{i, T_i-1}, r_{i, T_i-1}, s_{i, T_i})$\\n\",\n        \"\\n\",\n        \"#### Question\\n\",\n        \"Notice how the paddle sometimes moves even if you take the \\\"None\\\" action? Can you think of why this happens? \\n\",\n        \"\\n\",\n        \"#### Notes\\n\",\n        \"* If you want to run another episode, re-run the code cell above titled \\\"Setup for the next section\\\" to reset the environment\\n\",\n        \"* This particular game returns a reward of $0$ at each step and a final reward of $-1$ or $1$ at the end of the episode depending on whether you lose or win. Other games may have different reward structures! \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"cmbraWuttEI0\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"previous_frame = environment.getScreenRGB().transpose([1, 0, 2])\\n\",\n        \"\\n\",\n        \"def take_action(action):\\n\",\n        \"  global previous_frame\\n\",\n        \"  \\n\",\n        \"  # Look up the action code from the description\\n\",\n        \"  action_code = None if action == 'None' else game.actions[action]\\n\",\n        \"\\n\",\n        \"  # Take the selected action in the environment\\n\",\n        \"  print('Taking action: {} ({})'.format(action, action_code))\\n\",\n        \"  reward = environment.act(action_code)\\n\",\n        \"\\n\",\n        \"  observed_actions.append(action)\\n\",\n        \"  observed_rewards.append(reward)\\n\",\n        \"\\n\",\n        \"  # Print and display the current state and reward\\n\",\n        \"  state = game.getGameState()\\n\",\n        \"  print('Game state:', state)\\n\",\n        \"  print('Reward received: ', reward)\\n\",\n        \"\\n\",\n        \"  observed_states.append(state)\\n\",\n        \"\\n\",\n        \"  if reward > 0 or environment.game_over():\\n\",\n        \"    print('Game over, you', 'WON' if reward > 0 else 'LOST')\\n\",\n        \"    print('The episode trajectory was:')\\n\",\n        \"    for s, a, r in zip(observed_states, observed_actions, observed_rewards):\\n\",\n        \"      print('State:', s, 'Action:', a, 'Reward:', r)\\n\",\n        \"    print('Terminal state:', observed_states[-1])\\n\",\n        \"  \\n\",\n        \"  current_frame = environment.getScreenRGB().transpose([1, 0, 2])\\n\",\n        \"  \\n\",\n        \"  fig = plt.figure(figsize=(10, 20))\\n\",\n        \"    \\n\",\n        \"  ax = plt.subplot(1, 2, 1)\\n\",\n        \"  plt.imshow(previous_frame)\\n\",\n        \"  ax.grid(False)\\n\",\n        \"  ax.set_title('PREVIOUS FRAME')\\n\",\n        \"  \\n\",\n        \"  ax = plt.subplot(1, 2, 2)\\n\",\n        \"  plt.imshow(current_frame)\\n\",\n        \"  ax.grid(False)\\n\",\n        \"  ax.set_title('CURRENT FRAME')\\n\",\n        \"  \\n\",\n        \"  previous_frame = current_frame\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"vdo_a8VBU9Sm\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"action = \\\"None\\\"  #@param ['right', 'left', 'None']\\n\",\n        \"take_action(action)\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"ebckEImi-_k0\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## The Agent\\n\",\n        \"We now turn to the agent. An agent receives the current state and (previous) reward from the environment, then uses an internal policy to determine an action to take. We implement an agent as a Python [**class**](https://en.wikibooks.org/wiki/A_Beginner%27s_Python_Tutorial/Classes), which is just a logical wrapper of variables and methods (functions) that operate on those variables. The methods our agent will have are the following:\\n\",\n        \"\\n\",\n        \"* **Initialisation** (```__init__```):  Initialises the agent the first time it's created. \\n\",\n        \"* **policy**: The policy is a function that returns a *distribution* over the possible actions, given the current state.\\n\",\n        \"* **step**: This takes as input, the current state and previous reward from the environment, then uses the internal policy to determine which action to take. Specifically, it does some pre-processing of the state, then samples a single action from the distribution over possible actions obtained from the policy. \\n\",\n        \"* **reset**: This is called to reset the agent's variables before running it on a new episode\\n\",\n        \"* **end_episode**: This method signals to the agent that the current episode has come to an end. The agent may do some learning, or clean-up at the end of an episode. \\n\",\n        \"\\n\",\n        \"### The Random Agent\\n\",\n        \"\\n\",\n        \"To get a feel for an agent and the methods it has, we implement an agent that just takes a *random* action at every step. For demonstration purposes, we also calculate the **episode return** at the end of an episode. The episode return is the sum of the (discounted) rewards obtained during the episode. If the returns for episode $i$, with trajectory $\\\\tau_{i}$ are denoted $r_{i, t}$, and the **discount factor** is $\\\\gamma$, then the episode return is calcuated as: $r(\\\\tau_i) = \\\\sum_{t=1}^{T_i} \\\\gamma^t r_{i,t}$. The discount factor allows us to increase the importance of rewards received quickly and decrease the importance of rewards that take long to receive. It is especially important in environments that could have episodes that are infinitely long. In our particular environment where every episode is of the same length and the only non-zero reward is received at the end of the game, the discount factor doesn't make much difference and so we will ignore it (effectively set it to $1$) for the remainder of this practical. \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"IRPa2lmldQoW\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"class RandomAgent(object):\\n\",\n        \"  \\n\",\n        \"  def __init__(self, actions, state_size, seed):\\n\",\n        \"    # When initializing, we let the agent know what actions are available in the \\n\",\n        \"    # environment, how large the state is (not used in the RandomAgent) and the \\n\",\n        \"    # current seed to use (also not used in the RandomAgent)\\n\",\n        \"    self._actions = actions\\n\",\n        \"    self._rewards = []\\n\",\n        \"    self._taken_actions = []\\n\",\n        \"    self._observed_states = []\\n\",\n        \" \\n\",\n        \"  def policy(self, state):  \\n\",\n        \"    # The policy is an internal function that takes a state and returns a distribution over the possible actions. \\n\",\n        \"    # The random agent just returns a uniform distribution over the actions. \\n\",\n        \"    n = len(self._actions)  # The number of actions\\n\",\n        \"    return tf.fill([n], 1./n)  # This returns a vector of length n, with each entry being 1/n\\n\",\n        \"    \\n\",\n        \"  def step(self, state_dict, reward):\\n\",\n        \"    \\n\",\n        \"    # Pre-process the state to extract the numerical values we're interested in from the state dictionary\\n\",\n        \"    state = np.array([\\n\",\n        \"        state_dict['fruit_x'] / game_width,  # Divide by width(or height) to normalise the value to lie between 0 and 1.\\n\",\n        \"        state_dict['player_x'] / game_width,\\n\",\n        \"        state_dict['fruit_y'] / (game_height+1),\\n\",\n        \"        state_dict['player_vel'] / game_width\\n\",\n        \"    ], dtype=np.float32)\\n\",\n        \"    \\n\",\n        \"    self._observed_states.append(state)  # Record that the state was observed during the episode\\n\",\n        \"    self._rewards.append(reward)  # Keep track of the rewards we've received along the way\\n\",\n        \"    action_distribution = self.policy(state)  # Use the policy to get the distribution over actions\\n\",\n        \"    \\n\",\n        \"    # Sample a single action according to the distribution over actions\\n\",\n        \"    action = np.random.choice(self._actions, p=action_distribution.numpy())  \\n\",\n        \"    \\n\",\n        \"    self._taken_actions.append(action)  # Record that the action was taken during the episode\\n\",\n        \"    \\n\",\n        \"    return action\\n\",\n        \"  \\n\",\n        \"  def reset(self):\\n\",\n        \"    # This method is called when a new episode starts, we need to clear the \\n\",\n        \"    # states, actions and rewards that we tracked during the last episode.\\n\",\n        \"    self._rewards = [] \\n\",\n        \"    self._taken_actions = []  \\n\",\n        \"    self._observed_states = []  \\n\",\n        \"    \\n\",\n        \"  def end_episode(self, final_reward):\\n\",\n        \"    # We just calculate the episode return\\n\",\n        \"    episode_return = sum(self._rewards) + final_reward\\n\",\n        \"    return episode_return\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"-vF0d4FORBYK\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## The Run-Loop\\n\",\n        \"Now that we have an environment and a simple agent, we need a way of controlling the interaction between the agent and environment over multiple episodes. We do so in a **run-loop**. In this simple run-loop, the agent and environment run in lock-step. For each game frame, we get the state from the environment and pass it, along with the previous reward, to the agent. The agent selects an action that it wants to take given the game state. The action is taken in the environment and any reward received is recorded. We run the loop for multiple episodes, each time being careful to reset the game and agent (because they're starting a new game from scratch).\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"ZmzYRPUi9ZGi\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"def run_loop(agent_class,                    # Which agent to use\\n\",\n        \"             num_episodes=1,                 # How many episodes to run for\\n\",\n        \"             record_every=1,                 # How many episodes to record\\n\",\n        \"             seed=1234,                      # The random seed used\\n\",\n        \"             rolling_return_frequency=100,   # The window size used to track the rolling episode return\\n\",\n        \"             state_size=4):                  # The size of the state\\n\",\n        \"  \\n\",\n        \"  # Set the random seeds\\n\",\n        \"  tf.set_random_seed(seed)\\n\",\n        \"  np.random.seed(seed)\\n\",\n        \"  \\n\",\n        \"  # Initialise the environment\\n\",\n        \"  environment.init()\\n\",\n        \"  \\n\",\n        \"  # Create an agent (this runs the agent's __init__ method)\\n\",\n        \"  agent = agent_class(environment.getActionSet(), state_size, seed)\\n\",\n        \"  \\n\",\n        \"  progress_out = display.display(progress(0, num_episodes), display_id=True)  # Create a progress-bar\\n\",\n        \"  \\n\",\n        \"  # Create data structures to store metrics\\n\",\n        \"  windowed_return = deque()\\n\",\n        \"  rolling_returns = []\\n\",\n        \"  frames = []\\n\",\n        \"  \\n\",\n        \"  for episode in range(num_episodes):\\n\",\n        \"    environment.reset_game() # reset the environment\\n\",\n        \"    agent.reset()  # reset the agent\\n\",\n        \"    reward = 0\\n\",\n        \"\\n\",\n        \"    while reward == 0 and not environment.game_over():   # Loop until the episode terminates      \\n\",\n        \"      state = game.getGameState()  # Get the current game state\\n\",\n        \"      action = agent.step(state, reward)  # Pass the current game state and previous reward to the agent, get the action it wants to take\\n\",\n        \"      reward = environment.act(action)  # Pass the action to the environment and get the reward.\\n\",\n        \"\\n\",\n        \"      if episode % record_every == 0:\\n\",\n        \"        # Store the frames for display later, every `record_every` episodes\\n\",\n        \"        frames.append(environment.getScreenRGB())\\n\",\n        \"    \\n\",\n        \"    info = agent.end_episode(reward)  # Signal to the agent that the episode has come to and end\\n\",\n        \"    \\n\",\n        \"    # Store the episode return in the window (in this case, with no discounting, the episode return is the same as the environment's score)\\n\",\n        \"    windowed_return.append(environment.score())\\n\",\n        \"    if len(windowed_return) > rolling_return_frequency:\\n\",\n        \"      windowed_return.popleft()\\n\",\n        \"    \\n\",\n        \"    rolling_return = sum(windowed_return) / len(windowed_return)\\n\",\n        \"    rolling_returns.append(rolling_return)\\n\",\n        \"    \\n\",\n        \"    # Update the progress-bar\\n\",\n        \"    message = 'Episode {}/{} ended with score {}, Rolling Return: {}, {}'.format(\\n\",\n        \"        episode+1, num_episodes, environment.score(), \\n\",\n        \"        rolling_return,\\n\",\n        \"        info if info is not None else '')\\n\",\n        \"    progress_out.update(progress(episode+1, num_episodes, message))\\n\",\n        \"  \\n\",\n        \"  message = 'Finished training, rendering video...'\\n\",\n        \"  progress_out.update(progress(episode+1, num_episodes, message))\\n\",\n        \"  \\n\",\n        \"  # Render a video\\n\",\n        \"  clip = make_animation(frames, fps=30, true_image=True).rotate(-90)\\n\",\n        \"  display.display(clip.ipython_display(fps=30, center=False, autoplay=False, loop=False, height=320, width=240, max_duration=1000))\\n\",\n        \"  \\n\",\n        \"  message = 'Done...'\\n\",\n        \"  progress_out.update(progress(episode+1, num_episodes, message))\\n\",\n        \"  \\n\",\n        \"  return rolling_returns\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"wkiokNVeg167\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"We now run our RandomAgent with the run-loop for 100 episodes to check that everything is working so far. (Note: the blue progress bar shows how many of the ```num_episodes``` episodes we've completed. The small black progress bar is for the video rendering, ignore that one!)\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"6-TgMf2bcVJ0\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"rolling_returns = run_loop(RandomAgent, num_episodes=100, record_every=5, rolling_return_frequency=5)\\n\",\n        \"plot_rolling_returns(rolling_returns)\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"s_2-dlEqvNLe\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## A Policy Network\\n\",\n        \"Remember, the policy is a distribution over the possible actions the agent can take in the environment given the current state of the environment,  denoted $\\\\pi(a|s)$. In a Deep RL agent, the policy is represented by a neural network with parameters $\\\\theta$, so we have $\\\\pi_\\\\theta(a|s) = NN(s; \\\\theta)$, where $NN(s; \\\\theta)$ is some potentially complex function represented by a neural network with parameters $\\\\theta$. In other words, our neural network takes in the state as input and outputs the appropriate distribution over actions. Let us implement an agent who's policy is defined by a simple feed-forward neural network. We will name the class 'FixedAgent' because this agent will do no learning. As a result the policy network's weights will be fixed and the agent will take random actions as before.\\n\",\n        \"\\n\",\n        \"The ```reset```, ```step``` and ```end_episode``` methods of our fixed agent will be identical to the RandomAgent we built earlier. We'll only change the ```__init__``` and ```policy``` methods. To avoid having to rewrite all that code, we will use Python's **inheritance** to reuse all the methods in RandomAgent except for policy which we *override* here.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"x5LkKobJhkV3\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Lets build a fixed agent\\n\",\n        \"class FixedAgent(RandomAgent):  # Inherit all the methods of RandomAgent\\n\",\n        \"  \\n\",\n        \"  def __init__(self, actions, state_size, seed):\\n\",\n        \"    super(FixedAgent, self).__init__(actions, state_size, seed)\\n\",\n        \"    \\n\",\n        \"    # Define the policy network in the initialize method (constructor) because it should persist\\n\",\n        \"    # through multiple usages over multiple episodes of the agent.\\n\",\n        \"    # (We change the default weight initialiser to truncated random normal which \\n\",\n        \"    # works better for the RL algorithm we'll use in this practical.)\\n\",\n        \"    self._policy_network = tf.keras.Sequential([\\n\",\n        \"        # Add a hidden layer with 64 neurons\\n\",\n        \"        tf.keras.layers.Dense(64, input_shape=[state_size], activation=tf.nn.relu, \\n\",\n        \"                              kernel_initializer=tf.truncated_normal_initializer(seed=seed)),\\n\",\n        \"        # Add a hidden layer with 32 neurons\\n\",\n        \"        tf.keras.layers.Dense(32, activation=tf.nn.relu, \\n\",\n        \"                              kernel_initializer=tf.truncated_normal_initializer(seed=seed)),\\n\",\n        \"        # Add an output layer with action-many neurons and a softmax activation function\\n\",\n        \"        tf.keras.layers.Dense(len(actions), activation='softmax'),\\n\",\n        \"    ])\\n\",\n        \"  \\n\",\n        \"  # Override the policy\\n\",\n        \"  def policy(self, state):\\n\",\n        \"    layer_input = tf.expand_dims(state, axis=0)  # Add a dummy batch dimension\\n\",\n        \"    action_distribution = self._policy_network(layer_input)   # Get the distribution over actions from the policy network\\n\",\n        \"    action_distribution = tf.squeeze(action_distribution, axis=0)  # Remove the dummy batch dimension\\n\",\n        \"    \\n\",\n        \"    return action_distribution\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"_9LtvT6d3xsZ\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Let's test our FixedAgent, this is just to see that it runs, as we don't expect it to perform any better than the RandomAgent because it isn't learning anything yet! \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"6kAPun6f6nzS\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Our fixed-weight agent\\n\",\n        \"rolling_returns = run_loop(FixedAgent, num_episodes=100, record_every=5, rolling_return_frequency=5)\\n\",\n        \"plot_rolling_returns(rolling_returns)\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"PPesBe8q3621\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## Learning with Policy Gradients\\n\",\n        \"Finally, let's give our agent some intelligence by making it learn from its experience in interacting with the environment. In order to learn, we need a loss function or *objective*. In RL, the objective is to maximise the expected episode return (rewards) by taking actions in the environment. The actions our agent takes are determined by the policy $\\\\pi_\\\\theta(a|s)$, which are in turn determined by the neural network parameters $\\\\theta$. So, we want to find the neural network parameters $\\\\theta$ that maximise \\n\",\n        \"\\n\",\n        \"$J(\\\\theta) = \\\\mathbb{E}_{\\\\tau}[r(\\\\tau)]$\\n\",\n        \"\\n\",\n        \"**Note:** If the maths in the next section looks intimidating, feel free to skip over it, read the intuition and code and come back to it later! \\n\",\n        \"\\n\",\n        \"\\n\",\n        \"### The derivative of the objective\\n\",\n        \"We now turn to our usual tool of stochastic gradient descent to optimise the objective, but there are two complications. Firstly, the term $\\\\pi_\\\\theta(a|s)$ represented by our neural network doesn't appear in the equation (or does it?). Secondly, how do we deal with the expectation?\\n\",\n        \"\\n\",\n        \"The first thing is to realise that our trajectories $\\\\tau$ depend on the policy $\\\\pi_\\\\theta(a|s)$ (**Question:** Why?) So we can (informally) write:\\n\",\n        \"\\n\",\n        \"\\\\begin{align}\\n\",\n        \"J(\\\\theta) &= \\\\mathbb{E}_{\\\\tau \\\\sim \\\\pi_\\\\theta(\\\\tau)}  [r(\\\\tau)] & \\\\\\\\\\n\",\n        \"&= \\\\int \\\\pi_\\\\theta (\\\\tau) r(\\\\tau)d\\\\tau  & (\\\\text{Definition of expectation}) \\\\\\\\\\n\",\n        \"\\\\end{align}\\n\",\n        \"\\n\",\n        \"Then the gradient is:\\n\",\n        \"\\n\",\n        \"\\\\begin{align}\\n\",\n        \"\\\\nabla_\\\\theta J(\\\\theta) &= \\\\nabla_\\\\theta \\\\int \\\\pi_\\\\theta (\\\\tau) r(\\\\tau)d\\\\tau & \\\\\\\\\\n\",\n        \"&= \\\\int \\\\pi_\\\\theta (\\\\tau) \\\\nabla_\\\\theta log \\\\pi_\\\\theta (\\\\tau) r(\\\\tau)d\\\\tau & (\\\\text{\\\"Log derivative trick\\\"}) \\\\\\\\\\n\",\n        \"&= \\\\mathbb{E}_{\\\\tau \\\\sim \\\\pi_\\\\theta(\\\\tau)}[\\\\nabla_\\\\theta log \\\\pi_\\\\theta (\\\\tau) r(\\\\tau)]\\n\",\n        \"\\\\end{align}\\n\",\n        \"\\n\",\n        \"Finally, since we don't know the true distribution of $\\\\tau$, we can approximate the expectation using a *monte-carlo* approximation, where the sample trajectories come from $N$ episodes of interaction with the environment. \\n\",\n        \"\\n\",\n        \"\\\\begin{align}\\n\",\n        \"\\\\nabla_\\\\theta J(\\\\theta) &= \\\\frac{1}{N} \\\\sum_{i=1}^N \\\\nabla_\\\\theta log \\\\pi_\\\\theta (\\\\tau_i) r(\\\\tau_i)\\n\",\n        \"\\\\end{align}\\n\",\n        \"\\n\",\n        \"Expanding this out (and considering that episode $i$ has $T_i$ steps) gives:\\n\",\n        \"\\n\",\n        \"\\\\begin{align}\\n\",\n        \"\\\\nabla_\\\\theta J(\\\\theta) &= \\\\frac{1}{N} \\\\sum_{i=1}^N (\\\\sum_{t=1}^{T_i} \\\\nabla_\\\\theta log(\\\\pi_\\\\theta(a_{i,t} | s_{i, t})) \\\\sum_{t=1}^{T_i} \\\\gamma^t r_{i,t} )\\n\",\n        \"\\\\end{align}\\n\",\n        \"\\n\",\n        \"We skipped a few steps in the maths here for brevity (see chapter 13 of [Sutton and Barto](https://drive.google.com/file/d/1xeUDVGWGUUv1-ccUMAZHJLej2C7aAFWY/view) for all the details if you're interested!). If the maths looks intimidating, don't worry! The important things to realise are the following:\\n\",\n        \"* We define an objective $J(\\\\theta)$ that is exactly what we want to do with RL, maximise the expected return.\\n\",\n        \"* We can run our agent in the environment to generate *trajectories* for multiple episodes\\n\",\n        \"* When an episode comes to an end and we know the return and trajectory, we can compute a term in (the Monte-carlo approximation to) the objective function. \\n\",\n        \"* We can use Tensorflow to compute the gradient of an individual term in the monte-carlo approximation and apply it to the parameters of our neural network. To do this, we define the *loss* to minimise as follows (where the sums can be represented by loops and we set $\\\\gamma = 1$ for simplicity):\\n\",\n        \"\\n\",\n        \"\\\\begin{align}\\n\",\n        \"L(\\\\theta) &= -\\\\sum_{t=1}^{T_i} log(\\\\pi_\\\\theta(a_{i,t} | s_{i, t})) \\\\sum_{t=1}^{T_i} r_{i,t} \\n\",\n        \"\\\\end{align}\\n\",\n        \"\\n\",\n        \"The name \\\"policy gradient\\\" comes from the fact that we're directly taking the gradient of the policy, rather than the alternative, value-based RL, which uses iterative update rules to calculate the expected return assocated with a state. The particular flavour of policy gradient which uses the loss function above, along with the Monte-carlo approximation of the objective is known as the **REINFORCE** algorithm. \\n\",\n        \"\\n\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"42i6ZNe1T6ME\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Finally, we implement the REINFORCE algorithm to optimize the parameters of the neural network. The only things we're changing, compared to our FixedAgent are the ```__init__``` and ```end_episode``` methods, so we use *inheritance* again to automatically \\\"copy\\\" all the methods from ```FixedAgent``` and ```RandomAgent```. \\n\",\n        \"\\n\",\n        \"**Note:** ```ReinforceAgent``` indirectly inherits the methods from ```RandomAgent``` through ```FixedAgent``` (which directly inherits from ```RandomAgent```).  Both ```RandomAgent``` and ```FixedAgent``` have a ```policy``` method, but the one that gets \\\"copied\\\" to ```ReinforceAgent``` is the one from ```FixedAgent``` because it appeared later in the chain.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"hQldYOWuu9RO\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"class ReinforceAgent(FixedAgent):\\n\",\n        \"  \\n\",\n        \"  # Override the initialization method because this agent also needs an optimizer\\n\",\n        \"  # and a variable to track the step\\n\",\n        \"  def __init__(self, actions, state_size, seed):\\n\",\n        \"    super(ReinforceAgent, self).__init__(actions, state_size, seed)\\n\",\n        \"    self._optimizer = tf.train.RMSPropOptimizer(learning_rate=0.001)  \\n\",\n        \"    self._step_counter = tf.train.get_or_create_global_step()\\n\",\n        \"  \\n\",\n        \"  def end_episode(self, final_reward): \\n\",\n        \"    \\\"\\\"\\\"At the end of an episode, we compute the loss for the episode and take a \\n\",\n        \"    step in parameter speace in the direction of the gradients.\\\"\\\"\\\"\\n\",\n        \"    \\n\",\n        \"    # Compute the return (cumulative discounted reward) for the episode\\n\",\n        \"    episode_return = sum(self._rewards) + final_reward  # Assuming \\\\gamma = 1\\n\",\n        \"\\n\",\n        \"    with tf.GradientTape() as tape:\\n\",\n        \"      # Loop over the states and actions making up the episode trajectory\\n\",\n        \"      loss = 0\\n\",\n        \"      for state, action in zip(self._observed_states, self._taken_actions):  \\n\",\n        \"        # Get the probabilities assigned to the actions given the state by the policy\\n\",\n        \"        action_distribution = self.policy(state)  \\n\",\n        \"        action_index = self._actions.index(action)\\n\",\n        \"        # Get the log probability of the chosen action under the policy\\n\",\n        \"        log_action = tf.log(action_distribution[action_index])\\n\",\n        \"        # Add to the running total for the episode\\n\",\n        \"        loss -= log_action * episode_return          # Add your baseline value for TASK 4 here. \\n\",\n        \"\\n\",\n        \"    # Compute the gradient of the loss with respect to the variables in the model\\n\",\n        \"    grads = tape.gradient(loss, self._policy_network.variables) \\n\",\n        \"    \\n\",\n        \"    # Use the optimizer to apply the gradient\\n\",\n        \"    self._optimizer.apply_gradients(\\n\",\n        \"        zip(grads, self._policy_network.variables), global_step=self._step_counter)\\n\",\n        \"    \\n\",\n        \"    return 'Loss: {}'.format(loss)\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"BchVaPCm36TY\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Notice that during the episode we run only the forward-pass of the policy network (inference). At the end of the episode, we replay the states that occured during the episode and run both the forward and backward pass of the policy network (notice the gradient tape!) because we can only compute the loss once we have the episode return at the end of the episode. If the policy network is very complex, this could be inefficient. In that case you could run both the forward an backward pass during the episode and store intermediate gradients/partial derivatives to use in the update at the end of the episode.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"0jS05xq2PuZp\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"And finally we train our **REINFORCE** agent and plot the resulting rolling episode returns (over a window of 100 episodes).\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"EG4H4PsjPyVD\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"rolling_returns = run_loop(ReinforceAgent, num_episodes=2400, record_every=30)\\n\",\n        \"plot_rolling_returns(rolling_returns)\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"3yvh_FF0djwu\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## Your Tasks\\n\",\n        \"### Task 1: Learning Objectives [ALL]\\n\",\n        \"Review the learning objectives and ensure that you understand how the code in this practical relates to them. Ask your tutors if you don't understand anything!\\n\",\n        \"\\n\",\n        \"### Task 2: Network Architecture [ALL]\\n\",\n        \"Experiment with different network architectures and parameters and see how this affects the performance of the agent. What do you notice? Do you think the algorithm is sensitive to the network parameters?  \\n\",\n        \"\\n\",\n        \"**HINT**: Modify the code for the policy network in the ```__init__``` method of the ```FixedAgent``` class. \\n\",\n        \"\\n\",\n        \"### Task 3: Seed Variance **[ALL]** \\n\",\n        \"Reveal and run the code in the cells below. This code will run the entire training procedure of the REINFORCE agent 10 times (using only 1000 episodes per run to save some time). It will then plot a chart that shows the mean of the rolling returns over the multiple runs along with an estimated *confidence interval* for the mean. You should notice that the confidence interval is fairly wide given that only the random seed is changing. This illustrates a problem with the REINFORCE algorithm: it has **high variance**. (It is however an **unbiased estimator** of the policy gradient!)\\n\",\n        \"\\n\",\n        \"### Task 4: Variance Reduction with a Basline **[INTERMEDIATE]** \\n\",\n        \"Read about value functions and how to approximate them using *Monte-Carlo* methods in [Slides 5 to 7 Here](http://www0.cs.ucl.ac.uk/staff/d.silver/web/Teaching_files/MC-TD.pdf). Then read slides [80, 84 and 85 here](http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture14.pdf). The goal of this task is to use a simple value function $V(s)$ to implement **REINFORCE with a Baseline**, where the loss function per episode changes to: \\n\",\n        \"\\n\",\n        \"\\\\begin{align}\\n\",\n        \"L(\\\\theta) &= -\\\\sum_{t=1}^{T_i} log(\\\\pi_\\\\theta(a_{i,t} | s_{i, t})) \\\\sum_{t=1}^{T_i} [r_{i,t} - V(s_{i, t})]\\n\",\n        \"\\\\end{align}\\n\",\n        \"\\n\",\n        \"To do this, add code to the ```end_episode``` method of the ```ReinforceAgent``` class to estimate the value function. Subtract the value estimate for the state from the episode return at each step in the loop that computes the log_action_sum. \\n\",\n        \"\\n\",\n        \"Re-run Task 3's code to plot the confidence interval around the mean episode returns to check what effect it has on the variance. \\n\",\n        \"\\n\",\n        \"**HINT**: You will need to *discretise* the state-space. We've provided a very crude function called ```state_to_buckets``` that you can use to do this, or implement your own! \\n\",\n        \"\\n\",\n        \"**Further Reading (Optional)**: See the section on how to introduce a baseline [here](https://danieltakeshi.github.io/2017/03/28/going-deeper-into-reinforcement-learning-fundamentals-of-policy-gradients/) for more details about how and why this works!\\n\",\n        \"\\n\",\n        \"**Further Reading (Optional)**: This [blog post](https://flyyufelix.github.io/2017/10/12/dqn-vs-pg.html) contrasts policy gradient methods with an alternative value-based approach to RL called Deep Q-Networks. It also discusses some approaches to reducing the variance of the policy gradient estimator. \\n\",\n        \"\\n\",\n        \"### Task 5: Learning from pixels **[OPTIONAL]**\\n\",\n        \"The agent we implemented in this practical uses a simple numerical representation of the state of the environment. In many cases such a representation would not be available. Change the run-loop to instead pass the array of pixel values to the agent. (which you can get by calling ```environment.getScreenRGB()```). Change the agent's policy network to cater for this image-representation of the state. \\n\",\n        \"\\n\",\n        \"\\n\",\n        \"\\n\",\n        \"### Task 6: Other games **[OPTIONAL]**\\n\",\n        \"The PyGame Learning Environment (PLE) has [a number of games built-in](https://pygame-learning-environment.readthedocs.io/en/latest/user/games.html). Change the code in this practical to run on a different game and learn either from pixels or from the state representation provided by PLE. One interesting game you could try is FlappyBird! Remember to remove the reward overrides we set when trying a new game! \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"loTWt0eMoVEA\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"## Additional Code for Task 3\\n\",\n        \"This might take some time to run, continue reading for Task 4 and ask any questions you have while waiting!\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"TFh26u1eoUad\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"all_rolling_returns = []\\n\",\n        \"\\n\",\n        \"for i in range(10):\\n\",\n        \"  rolling_returns = run_loop(ReinforceAgent, num_episodes=1000, record_every=25, seed=np.random.randint(100000))\\n\",\n        \"  all_rolling_returns.append(rolling_returns)\\n\",\n        \"\\n\",\n        \"plot_rolling_returns(np.array(all_rolling_returns))\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    }\n  ]\n}"
  },
  {
    "path": "README.md",
    "content": "# Deep Learning Indaba 2018\n  \nThis repository contains the practical notebooks for the Deep Learning Indaba\n2018, held in Stellenbosch South Africa. \n\nSee [www.deeplearningindaba.com](www.deeplearningindaba.com) for more details.\n\nThis is not an official Google product.\n"
  },
  {
    "path": "practical0.ipynb",
    "content": "{\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0,\n  \"metadata\": {\n    \"colab\": {\n      \"name\": \"practical0.ipynb\",\n      \"version\": \"0.3.2\",\n      \"provenance\": []\n    }\n  },\n  \"cells\": [\n    {\n      \"metadata\": {\n        \"id\": \"6-VA1v4W5q1H\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"# DL Indaba Pre-Work\\n\",\n        \"# Python & Numpy Tutorial\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"8kXrQkBl5q1J\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"**Introduction**\\n\",\n        \"\\n\",\n        \"This tutorial provides a gentle, hands-on introduction to the Python programming language, and the Numpy library for scientific computing.\\n\",\n        \"\\n\",\n        \"**What is expected of you:**\\n\",\n        \"\\n\",\n        \"* Work through this at your own leisure before the Indaba.\\n\",\n        \"* Fill out the form at the end to let us know you were able to complete this before the Indaba.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"ay9mgFSO5q1M\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"##Introduction\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"fcfkw97U5q1N\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Python is a great general-purpose programming language on its own, but with the help of a few popular libraries (numpy, scipy, matplotlib) it becomes a powerful environment for scientific computing.\\n\",\n        \"\\n\",\n        \"We expect that many of you will have some experience with Python and numpy; for the rest of you, this section will serve as a quick crash course both on the Python programming language and on the use of Python for scientific computing.\\n\",\n        \"\\n\",\n        \"Some of you may have previous knowledge in Matlab, in which case we also recommend the numpy for Matlab users page (https://docs.scipy.org/doc/numpy-dev/user/numpy-for-matlab-users.html).\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"qo36kJw25q1P\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"In this tutorial, we will cover:\\n\",\n        \"\\n\",\n        \"* Basic Python: Basic data types (Containers, Lists, Dictionaries, Sets, Tuples), Functions, Classes\\n\",\n        \"* Numpy: Arrays, Array indexing, Datatypes, Array math, Broadcasting\\n\",\n        \"* Matplotlib: Plotting, Subplots, Images\\n\",\n        \"* IPython: Creating notebooks, Typical workflows\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"CV6OV42I5q1R\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"##Basics of Python\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"B9MacMaY5q1T\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Python is a high-level, dynamically typed multiparadigm programming language. Python code is often said to be almost like pseudocode, since it allows you to express very powerful ideas in very few lines of code while being very readable. As an example, here is an implementation of the classic quicksort algorithm in Python:\\n\",\n        \"\\n\",\n        \"**NOTE**: In Colab, you can execute the code in a cell by clicking inside the cell and pressing both **Shift+Enter** at the same time.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"wpYJZksQ5q1W\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 34\n        },\n        \"outputId\": \"fa32f5c3-3840-4e4b-b2f8-1e93fc0f1ea0\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"def quicksort(arr):\\n\",\n        \"    if len(arr) <= 1:\\n\",\n        \"        return arr\\n\",\n        \"    pivot = arr[len(arr) / 2]\\n\",\n        \"    left = [x for x in arr if x < pivot]\\n\",\n        \"    middle = [x for x in arr if x == pivot]\\n\",\n        \"    right = [x for x in arr if x > pivot]\\n\",\n        \"    return quicksort(left) + middle + quicksort(right)\\n\",\n        \"\\n\",\n        \"print quicksort([3,6,8,10,1,2,1])\"\n      ],\n      \"execution_count\": 1,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[1, 1, 2, 3, 6, 8, 10]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"LfhFbB8Z5q1i\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"###Python versions\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"cJCjzx7Y5q1k\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"There are currently two different supported versions of Python, 2.7 and 3.4. Somewhat confusingly, Python 3.0 introduced many backwards-incompatible changes to the language, so code written for 2.7 may not work under 3.4 and vice versa. For this class all code will use Python 2.7.\\n\",\n        \"\\n\",\n        \"You can check your Python version at the command line by running `python --version`.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"sotHVM0t5q1l\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"###Basic data types\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"THkpPxwN5q1n\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"####Numbers\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"f3xyLvxW5q1o\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Integers and floats work as you would expect from other languages:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"bVYQAovh5q1q\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 34\n        },\n        \"outputId\": \"6fdb6f0f-f0df-4e42-bd12-6193f1765057\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"x = 3\\n\",\n        \"print x, type(x)\"\n      ],\n      \"execution_count\": 2,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"3 <type 'int'>\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"dztfWsYU5q1y\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 85\n        },\n        \"outputId\": \"92f12fc1-0a68-491f-b4fc-d8ec394adb06\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"print x + 1   # Addition;\\n\",\n        \"print x - 1   # Subtraction;\\n\",\n        \"print x * 2   # Multiplication;\\n\",\n        \"print x ** 2  # Exponentiation;\"\n      ],\n      \"execution_count\": 3,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"4\\n\",\n            \"2\\n\",\n            \"6\\n\",\n            \"9\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"gOmd8lBF5q16\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"0b87d3d1-4adc-4d17-821f-06b369da7d39\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"x += 1\\n\",\n        \"print x  # Prints \\\"4\\\"\\n\",\n        \"x *= 2\\n\",\n        \"print x  # Prints \\\"8\\\"\"\n      ],\n      \"execution_count\": 4,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"4\\n\",\n            \"8\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"g4NuhVfj5q2E\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"74db7261-d2b5-4da0-8008-8ed3dc00a6ee\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"y = 2.5\\n\",\n        \"print type(y) # Prints \\\"<type 'float'>\\\"\\n\",\n        \"print y, y + 1, y * 2, y ** 2 # Prints \\\"2.5 3.5 5.0 6.25\\\"\"\n      ],\n      \"execution_count\": 5,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"<type 'float'>\\n\",\n            \"2.5 3.5 5.0 6.25\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"we75WUci5q2O\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Note that unlike many languages, Python does not have unary increment (x++) or decrement (x--) operators.\\n\",\n        \"\\n\",\n        \"Python also has built-in types for long integers and complex numbers; you can find all of the details in the [documentation](https://docs.python.org/2/library/stdtypes.html#numeric-types-int-float-long-complex).\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"uUl_bk835q2P\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"####Booleans\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"rgeh2qDx5q2Q\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Python implements all of the usual operators for Boolean logic, but uses English words rather than symbols (`&&`, `||`, etc.):\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"yo6wobrY5q2R\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 34\n        },\n        \"outputId\": \"92facf17-bcee-4877-ce54-002ea4269af9\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"t, f = True, False\\n\",\n        \"print type(t) # Prints \\\"<type 'bool'>\\\"\"\n      ],\n      \"execution_count\": 6,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"<type 'bool'>\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"zsBdYsbJ5q2Z\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Now we let's look at the operations:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"BNVhsasL5q2c\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 85\n        },\n        \"outputId\": \"16f0fe51-6185-4bd9-b3e6-2e1cf33f8fcb\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"print t and f # Logical AND;\\n\",\n        \"print t or f  # Logical OR;\\n\",\n        \"print not t   # Logical NOT;\\n\",\n        \"print t != f  # Logical XOR;\"\n      ],\n      \"execution_count\": 7,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"False\\n\",\n            \"True\\n\",\n            \"False\\n\",\n            \"True\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"jWt1jbF75q2j\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"####Strings\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"uyldbWX75q2k\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 34\n        },\n        \"outputId\": \"b4f63e26-6d9c-4fc2-c190-ec3448e7b4d2\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"hello = 'hello'   # String literals can use single quotes\\n\",\n        \"world = \\\"world\\\"   # or double quotes; it does not matter.\\n\",\n        \"print hello, len(hello)\"\n      ],\n      \"execution_count\": 8,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"hello 5\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"69vTXT6m5q2p\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 34\n        },\n        \"outputId\": \"0bea5ac2-54e8-4100-d19c-166f77b984cf\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"hw = hello + ' ' + world  # String concatenation\\n\",\n        \"print hw  # prints \\\"hello world\\\"\"\n      ],\n      \"execution_count\": 9,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"hello world\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"KPvy1sbJ5q2u\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 34\n        },\n        \"outputId\": \"12bbfd10-884c-4454-d353-072edd165be1\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"hw12 = '%s %s %d' % (hello, world, 12)  # sprintf style string formatting\\n\",\n        \"print hw12  # prints \\\"hello world 12\\\"\"\n      ],\n      \"execution_count\": 10,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"hello world 12\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"Q-xLTBCM5q2y\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"String objects have a bunch of useful methods; for example:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"5tMbkHM65q20\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 119\n        },\n        \"outputId\": \"963a4d80-eacf-4ada-b343-ba68d9f6e9b4\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"s = \\\"hello\\\"\\n\",\n        \"print s.capitalize()  # Capitalize a string; prints \\\"Hello\\\"\\n\",\n        \"print s.upper()       # Convert a string to uppercase; prints \\\"HELLO\\\"\\n\",\n        \"print s.rjust(7)      # Right-justify a string, padding with spaces; prints \\\"  hello\\\"\\n\",\n        \"print s.center(7)     # Center a string, padding with spaces; prints \\\" hello \\\"\\n\",\n        \"print s.replace('l', '(ell)')  # Replace all instances of one substring with another;\\n\",\n        \"                               # prints \\\"he(ell)(ell)o\\\"\\n\",\n        \"print '  world '.strip()  # Strip leading and trailing whitespace; prints \\\"world\\\"\"\n      ],\n      \"execution_count\": 11,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Hello\\n\",\n            \"HELLO\\n\",\n            \"  hello\\n\",\n            \" hello \\n\",\n            \"he(ell)(ell)o\\n\",\n            \"world\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"7iVAp_Hm5q24\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"You can find a list of all string methods in the [documentation](https://docs.python.org/2/library/stdtypes.html#string-methods).\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"jHCAFmb95q25\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"###Containers\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"-PerHSky5q25\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Python includes several built-in container types: lists, dictionaries, sets, and tuples.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"f9BNPsMT5q27\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"####Lists\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"ipDjlY6S5q28\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"A list is the Python equivalent of an array, but is resizeable and can contain elements of different types:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"4_TQGb2i5q29\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"c53fbbd5-a1ce-46c7-9ce5-56f00faed920\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"xs = [3, 1, 2]   # Create a list\\n\",\n        \"print xs, xs[2]\\n\",\n        \"print xs[-1]     # Negative indices count from the end of the list; prints \\\"2\\\"\"\n      ],\n      \"execution_count\": 12,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[3, 1, 2] 2\\n\",\n            \"2\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"aqoDqKcQ5q3A\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 34\n        },\n        \"outputId\": \"a5e768e8-6d02-4659-b5ff-a3cb0b89752d\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"xs[2] = 'foo'    # Lists can contain elements of different types\\n\",\n        \"print xs\"\n      ],\n      \"execution_count\": 13,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[3, 1, 'foo']\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"WrloXM9J5q3G\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 34\n        },\n        \"outputId\": \"9245917f-44a1-4625-d4e3-e49006756d9e\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"xs.append('bar') # Add a new element to the end of the list\\n\",\n        \"print xs  \"\n      ],\n      \"execution_count\": 14,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[3, 1, 'foo', 'bar']\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"EkQ9BNzz5q3J\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 34\n        },\n        \"outputId\": \"4b193566-2ccd-4cbc-f57e-d17dd8904a4f\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"x = xs.pop()     # Remove and return the last element of the list\\n\",\n        \"print x, xs \"\n      ],\n      \"execution_count\": 15,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"bar [3, 1, 'foo']\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"wTDsbYOh5q3N\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"As usual, you can find all the gory details about lists in the [documentation](https://docs.python.org/2/tutorial/datastructures.html#more-on-lists).\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"OwN1QfB25q3P\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"####Slicing\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"jcMqNrgu5q3Q\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"In addition to accessing list elements one at a time, Python provides concise syntax to access sublists; this is known as slicing:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"wwZ6SA-L5q3Q\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 136\n        },\n        \"outputId\": \"6f120b7d-c278-4b40-913a-823214b66c51\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"nums = range(5)    # range is a built-in function that creates a list of integers\\n\",\n        \"print nums         # Prints \\\"[0, 1, 2, 3, 4]\\\"\\n\",\n        \"print nums[2:4]    # Get a slice from index 2 to 4 (exclusive); prints \\\"[2, 3]\\\"\\n\",\n        \"print nums[2:]     # Get a slice from index 2 to the end; prints \\\"[2, 3, 4]\\\"\\n\",\n        \"print nums[:2]     # Get a slice from the start to index 2 (exclusive); prints \\\"[0, 1]\\\"\\n\",\n        \"print nums[:]      # Get a slice of the whole list; prints \\\"[0, 1, 2, 3, 4]\\\"\\n\",\n        \"print nums[:-1]    # Slice indices can be negative; prints \\\"[0, 1, 2, 3]\\\"\\n\",\n        \"nums[2:4] = [8, 9] # Assign a new sublist to a slice\\n\",\n        \"print nums         # Prints \\\"[0, 1, 8, 8, 4]\\\"\"\n      ],\n      \"execution_count\": 16,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[0, 1, 2, 3, 4]\\n\",\n            \"[2, 3]\\n\",\n            \"[2, 3, 4]\\n\",\n            \"[0, 1]\\n\",\n            \"[0, 1, 2, 3, 4]\\n\",\n            \"[0, 1, 2, 3]\\n\",\n            \"[0, 1, 8, 9, 4]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"5xiRdmop5q3V\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"####Loops\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"W4aIykm35q3W\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"You can loop over the elements of a list like this:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"DzPkWoQU5q3X\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 68\n        },\n        \"outputId\": \"3d025f02-666a-43eb-b200-3f9cc7341f04\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"animals = ['cat', 'dog', 'monkey']\\n\",\n        \"for animal in animals:\\n\",\n        \"    print animal\"\n      ],\n      \"execution_count\": 17,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"cat\\n\",\n            \"dog\\n\",\n            \"monkey\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"SfjRY7oh5q3c\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"If you want access to the index of each element within the body of a loop, use the built-in `enumerate` function:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"KHfWh7cm5q3d\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 68\n        },\n        \"outputId\": \"3f9cc83c-0b42-484e-f50c-6f0602c49e38\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"animals = ['cat', 'dog', 'monkey']\\n\",\n        \"for idx, animal in enumerate(animals):\\n\",\n        \"    print '#%d: %s' % (idx + 1, animal)\"\n      ],\n      \"execution_count\": 18,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"#1: cat\\n\",\n            \"#2: dog\\n\",\n            \"#3: monkey\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"GbMrJih65q3f\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"####List comprehensions:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"uEw19H_q5q3g\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"When programming, frequently we want to transform one type of data into another. As a simple example, consider the following code that computes square numbers:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"q3nPnpPE5q3h\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 34\n        },\n        \"outputId\": \"9d2360c9-58da-45d2-964a-4bacfb0064c9\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"nums = [0, 1, 2, 3, 4]\\n\",\n        \"squares = []\\n\",\n        \"for x in nums:\\n\",\n        \"    squares.append(x ** 2)\\n\",\n        \"print squares\"\n      ],\n      \"execution_count\": 19,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[0, 1, 4, 9, 16]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"uSsysiX95q3k\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"You can make this code simpler using a list comprehension:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"k4ezY_Vn5q3l\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 34\n        },\n        \"outputId\": \"bc656919-18cd-42a0-c361-cc07143fe9c2\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"nums = [0, 1, 2, 3, 4]\\n\",\n        \"squares = [x ** 2 for x in nums]\\n\",\n        \"print squares\"\n      ],\n      \"execution_count\": 20,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[0, 1, 4, 9, 16]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"2r-xDQrV5q3p\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"List comprehensions can also contain conditions:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"FuceJKWp5q3q\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 34\n        },\n        \"outputId\": \"d641234e-3fc2-4fb4-83f4-21a39407cd86\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"nums = [0, 1, 2, 3, 4]\\n\",\n        \"even_squares = [x ** 2 for x in nums if x % 2 == 0]\\n\",\n        \"print even_squares\"\n      ],\n      \"execution_count\": 21,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[0, 4, 16]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"Zn9lPGuA5q3t\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"####Dictionaries\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"qR4dwMJ15q3t\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"A dictionary stores (key, value) pairs, similar to a `Map` in Java or an object in Javascript. You can use it like this:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"XSqsRxER5q3u\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"3d392d1b-a540-491c-eaa1-a5d6905b85f7\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"d = {'cat': 'cute', 'dog': 'furry'}  # Create a new dictionary with some data\\n\",\n        \"print d['cat']       # Get an entry from a dictionary; prints \\\"cute\\\"\\n\",\n        \"print 'cat' in d     # Check if a dictionary has a given key; prints \\\"True\\\"\"\n      ],\n      \"execution_count\": 22,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"cute\\n\",\n            \"True\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"6-fyFvpe5q3w\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 34\n        },\n        \"outputId\": \"88cf8551-7801-4616-a6b0-3295d2cf1888\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"d['fish'] = 'wet'    # Set an entry in a dictionary\\n\",\n        \"print d['fish']      # Prints \\\"wet\\\"\"\n      ],\n      \"execution_count\": 23,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"wet\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"cqFipdSW5q3z\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 164\n        },\n        \"outputId\": \"73e2c5c8-0c59-4926-e20d-06e4a0363117\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"print d['monkey']  # KeyError: 'monkey' not a key of d\"\n      ],\n      \"execution_count\": 24,\n      \"outputs\": [\n        {\n          \"output_type\": \"error\",\n          \"ename\": \"KeyError\",\n          \"evalue\": \"ignored\",\n          \"traceback\": [\n            \"\\u001b[0;31m\\u001b[0m\",\n            \"\\u001b[0;31mKeyError\\u001b[0mTraceback (most recent call last)\",\n            \"\\u001b[0;32m<ipython-input-24-2b04a5bbc99e>\\u001b[0m in \\u001b[0;36m<module>\\u001b[0;34m()\\u001b[0m\\n\\u001b[0;32m----> 1\\u001b[0;31m \\u001b[0;32mprint\\u001b[0m \\u001b[0md\\u001b[0m\\u001b[0;34m[\\u001b[0m\\u001b[0;34m'monkey'\\u001b[0m\\u001b[0;34m]\\u001b[0m  \\u001b[0;31m# KeyError: 'monkey' not a key of d\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[0m\",\n            \"\\u001b[0;31mKeyError\\u001b[0m: 'monkey'\"\n          ]\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"mqwjq1JB5q32\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"866fcb9d-7829-4194-fea7-bf3c17ad98b4\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"print d.get('monkey', 'N/A')  # Get an element with a default; prints \\\"N/A\\\"\\n\",\n        \"print d.get('fish', 'N/A')    # Get an element with a default; prints \\\"wet\\\"\"\n      ],\n      \"execution_count\": 25,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"N/A\\n\",\n            \"wet\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"JSBfW9cM5q35\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 34\n        },\n        \"outputId\": \"69fb8cf6-03b1-40c0-95d9-d9d123ef1d70\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"del d['fish']        # Remove an element from a dictionary\\n\",\n        \"print d.get('fish', 'N/A') # \\\"fish\\\" is no longer a key; prints \\\"N/A\\\"\"\n      ],\n      \"execution_count\": 26,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"N/A\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"pJKwvNbN5q3-\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"You can find all you need to know about dictionaries in the [documentation](https://docs.python.org/2/library/stdtypes.html#dict).\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"39GhDg_S5q3_\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"It is easy to iterate over the keys in a dictionary:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"AGUsSd285q4A\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 68\n        },\n        \"outputId\": \"c73e605a-2197-4bbb-f9c9-0c568ee19edf\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"d = {'person': 2, 'cat': 4, 'spider': 8}\\n\",\n        \"for animal in d:\\n\",\n        \"    legs = d[animal]\\n\",\n        \"    print 'A %s has %d legs' % (animal, legs)\"\n      ],\n      \"execution_count\": 27,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"A person has 2 legs\\n\",\n            \"A spider has 8 legs\\n\",\n            \"A cat has 4 legs\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"USWlJ1Uh5q4D\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"If you want access to keys and their corresponding values, use the iteritems method:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"ksXilYJx5q4E\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 68\n        },\n        \"outputId\": \"a838bdb6-1593-4b43-8153-354847de1e6f\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"d = {'person': 2, 'cat': 4, 'spider': 8}\\n\",\n        \"for animal, legs in d.iteritems():\\n\",\n        \"    print 'A %s has %d legs' % (animal, legs)\"\n      ],\n      \"execution_count\": 28,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"A person has 2 legs\\n\",\n            \"A spider has 8 legs\\n\",\n            \"A cat has 4 legs\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"41-CY-Pz5q4G\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Dictionary comprehensions: These are similar to list comprehensions, but allow you to easily construct dictionaries. For example:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"BrEgZHHq5q4I\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 34\n        },\n        \"outputId\": \"0a87243e-e521-451e-ae09-749a4f94b332\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"nums = [0, 1, 2, 3, 4]\\n\",\n        \"even_num_to_square = {x: x ** 2 for x in nums if x % 2 == 0}\\n\",\n        \"print even_num_to_square\"\n      ],\n      \"execution_count\": 29,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"{0: 0, 2: 4, 4: 16}\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"tDD47vMB5q4L\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"####Sets\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"GA8eU1aU5q4M\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"A set is an unordered collection of distinct elements. As a simple example, consider the following:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"bqrfOvL85q4O\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"ac4e295c-c72c-44cf-b5d5-647b78a928b7\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"animals = {'cat', 'dog'}\\n\",\n        \"print 'cat' in animals   # Check if an element is in a set; prints \\\"True\\\"\\n\",\n        \"print 'fish' in animals  # prints \\\"False\\\"\\n\"\n      ],\n      \"execution_count\": 30,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"True\\n\",\n            \"False\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"iBoumJBc5q4S\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"02765ca4-6677-450d-8415-02a88c3452f1\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"animals.add('fish')      # Add an element to a set\\n\",\n        \"print 'fish' in animals\\n\",\n        \"print len(animals)       # Number of elements in a set;\"\n      ],\n      \"execution_count\": 31,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"True\\n\",\n            \"3\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"4WOQYagQ5q4W\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"5c47fbdd-3254-48ab-8068-45e0c3bda13c\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"animals.add('cat')       # Adding an element that is already in the set does nothing\\n\",\n        \"print len(animals)       \\n\",\n        \"animals.remove('cat')    # Remove an element from a set\\n\",\n        \"print len(animals)       \"\n      ],\n      \"execution_count\": 32,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"3\\n\",\n            \"2\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"hq0u2OQT5q4b\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"_Loops_: Iterating over a set has the same syntax as iterating over a list; however since sets are unordered, you cannot make assumptions about the order in which you visit the elements of the set:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"0UFyLDm55q4c\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 68\n        },\n        \"outputId\": \"4b9e30fd-406f-4b3d-c23c-ac7f882853da\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"animals = {'cat', 'dog', 'fish'}\\n\",\n        \"for idx, animal in enumerate(animals):\\n\",\n        \"    print '#%d: %s' % (idx + 1, animal)\\n\",\n        \"# Prints \\\"#1: fish\\\", \\\"#2: dog\\\", \\\"#3: cat\\\"\"\n      ],\n      \"execution_count\": 33,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"#1: fish\\n\",\n            \"#2: dog\\n\",\n            \"#3: cat\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"27txGVy95q4g\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Set comprehensions: Like lists and dictionaries, we can easily construct sets using set comprehensions:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"Z8HkXcfM5q4h\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 34\n        },\n        \"outputId\": \"1fcaedce-acce-4d12-e896-a939a841668c\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"from math import sqrt\\n\",\n        \"print {int(sqrt(x)) for x in range(30)}\"\n      ],\n      \"execution_count\": 34,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"set([0, 1, 2, 3, 4, 5])\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"fL0UctlO5q4j\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"####Tuples\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"iezj80Mu5q4j\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"A tuple is an (immutable) ordered list of values. A tuple is in many ways similar to a list; one of the most important differences is that tuples can be used as keys in dictionaries and as elements of sets, while lists cannot. Here is a trivial example:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"mdEyq1hC5q4k\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 68\n        },\n        \"outputId\": \"7e949622-325c-43b1-94b5-7b438d3dfe7c\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"d = {(x, x + 1): x for x in range(10)}  # Create a dictionary with tuple keys\\n\",\n        \"t = (5, 6)       # Create a tuple\\n\",\n        \"print type(t)\\n\",\n        \"print d[t]       \\n\",\n        \"print d[(1, 2)]\"\n      ],\n      \"execution_count\": 35,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"<type 'tuple'>\\n\",\n            \"5\\n\",\n            \"1\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"QTbRg_s75q4n\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 164\n        },\n        \"outputId\": \"30407497-adc5-4b78-8014-f66693979d86\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"t[0] = 1\"\n      ],\n      \"execution_count\": 36,\n      \"outputs\": [\n        {\n          \"output_type\": \"error\",\n          \"ename\": \"TypeError\",\n          \"evalue\": \"ignored\",\n          \"traceback\": [\n            \"\\u001b[0;31m\\u001b[0m\",\n            \"\\u001b[0;31mTypeError\\u001b[0mTraceback (most recent call last)\",\n            \"\\u001b[0;32m<ipython-input-36-c8aeb8cd20ae>\\u001b[0m in \\u001b[0;36m<module>\\u001b[0;34m()\\u001b[0m\\n\\u001b[0;32m----> 1\\u001b[0;31m \\u001b[0mt\\u001b[0m\\u001b[0;34m[\\u001b[0m\\u001b[0;36m0\\u001b[0m\\u001b[0;34m]\\u001b[0m \\u001b[0;34m=\\u001b[0m \\u001b[0;36m1\\u001b[0m\\u001b[0;34m\\u001b[0m\\u001b[0m\\n\\u001b[0m\",\n            \"\\u001b[0;31mTypeError\\u001b[0m: 'tuple' object does not support item assignment\"\n          ]\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"w1VXSG2s5q4q\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"###Functions\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"-4lAKLDY5q4r\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Python functions are defined using the `def` keyword. For example:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"oysjtHVh5q4s\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 68\n        },\n        \"outputId\": \"a3472401-4195-4442-d9ee-33969b8ca186\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"def sign(x):\\n\",\n        \"    if x > 0:\\n\",\n        \"        return 'positive'\\n\",\n        \"    elif x < 0:\\n\",\n        \"        return 'negative'\\n\",\n        \"    else:\\n\",\n        \"        return 'zero'\\n\",\n        \"\\n\",\n        \"for x in [-1, 0, 1]:\\n\",\n        \"    print sign(x)\"\n      ],\n      \"execution_count\": 37,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"negative\\n\",\n            \"zero\\n\",\n            \"positive\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"YhQkNfyd5q4x\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"We will often define functions to take optional keyword arguments, like this:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"TH04kWxK5q4y\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"7c0cbe7f-a75c-4bae-c4cd-0e7916792f4e\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"def hello(name, loud=False):\\n\",\n        \"    if loud:\\n\",\n        \"        print 'HELLO, %s' % name.upper()\\n\",\n        \"    else:\\n\",\n        \"        print 'Hello, %s!' % name\\n\",\n        \"\\n\",\n        \"hello('Bob')\\n\",\n        \"hello('Fred', loud=True)\"\n      ],\n      \"execution_count\": 38,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Hello, Bob!\\n\",\n            \"HELLO, FRED\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"qvrL6-14JgG1\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"Xvw1X4q25q42\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"###Classes\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"5ungbMSi5q42\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"The syntax for defining classes in Python is straightforward:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"P6H_HlXX5q42\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"22afe966-e943-40d1-b830-b0c2402dcff6\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"class Greeter:\\n\",\n        \"\\n\",\n        \"    # Constructor\\n\",\n        \"    def __init__(self, name):\\n\",\n        \"        self.name = name  # Create an instance variable\\n\",\n        \"\\n\",\n        \"    # Instance method\\n\",\n        \"    def greet(self, loud=False):\\n\",\n        \"        if loud:\\n\",\n        \"            print 'HELLO, %s!' % self.name.upper()\\n\",\n        \"        else:\\n\",\n        \"            print 'Hello, %s' % self.name\\n\",\n        \"\\n\",\n        \"g = Greeter('Fred')  # Construct an instance of the Greeter class\\n\",\n        \"g.greet()            # Call an instance method; prints \\\"Hello, Fred\\\"\\n\",\n        \"g.greet(loud=True)   # Call an instance method; prints \\\"HELLO, FRED!\\\"\"\n      ],\n      \"execution_count\": 39,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"Hello, Fred\\n\",\n            \"HELLO, FRED!\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"HC8PPoa55q44\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"##Numpy\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"icQHJIvK5q45\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Numpy is the core library for scientific computing in Python (see the full documentation which is [available online](https://docs.scipy.org/doc/numpy-1.13.0/reference/)). It provides a high-performance multidimensional array object, and tools for working with these arrays. If you are already familiar with MATLAB, you might find this [tutorial](http://wiki.scipy.org/NumPy_for_Matlab_Users) useful to get started with Numpy.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"PNXqmeC45q46\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"To use Numpy, we first need to import the `numpy` package:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"nwFkFb_d5q47\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"import numpy as np\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"oEMc8JJP5q4-\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"###Arrays\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"qY5T4B_55q4_\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"A numpy array is a grid of values, all of the same type, and is indexed by a tuple of nonnegative integers. The number of dimensions is the rank of the array; the shape of an array is a tuple of integers giving the size of the array along each dimension.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"ujIKsN7n5q4_\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"We can initialize numpy arrays from nested Python lists, and access elements using square brackets:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"2T4S0Y8_5q5A\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"17aded13-9214-41b0-c3e3-96405f83cd64\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"a = np.array([1, 2, 3])  # Create a rank 1 array\\n\",\n        \"print type(a), a.shape, a[0], a[1], a[2]\\n\",\n        \"a[0] = 5                 # Change an element of the array\\n\",\n        \"print a                  \"\n      ],\n      \"execution_count\": 41,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"<type 'numpy.ndarray'> (3,) 1 2 3\\n\",\n            \"[5 2 3]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"Cxp0IQI_5q5D\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"1842cf26-cb87-4f55-aba9-e27cfd9f51c2\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"b = np.array([[1,2,3],[4,5,6]])   # Create a rank 2 array\\n\",\n        \"print b\"\n      ],\n      \"execution_count\": 42,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[[1 2 3]\\n\",\n            \" [4 5 6]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"NC7ntYGk5q5E\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"9b3eb76e-e554-4541-e8c8-cb674e1f4545\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"print b.shape                   \\n\",\n        \"print b[0, 0], b[0, 1], b[1, 0]\"\n      ],\n      \"execution_count\": 43,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"(2, 3)\\n\",\n            \"1 2 4\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"XVEgPUy45q5H\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Numpy also provides many functions to create arrays:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"J6asuT0G5q5H\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"1c62f9db-d7f1-4af3-ea2a-e6c49b83652d\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"a = np.zeros((2,2))  # Create an array of all zeros\\n\",\n        \"print a\"\n      ],\n      \"execution_count\": 44,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[[0. 0.]\\n\",\n            \" [0. 0.]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"No4YcRSX5q5J\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 34\n        },\n        \"outputId\": \"f5a8be88-66b5-4678-9f83-0f8da613598e\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"b = np.ones((1,2))   # Create an array of all ones\\n\",\n        \"print b\"\n      ],\n      \"execution_count\": 45,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[[1. 1.]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"arHMvOhi5q5L\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"950af5fb-8014-44c3-9fe1-e82c69b7bfde\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"c = np.full((2,2), 7) # Create a constant array\\n\",\n        \"print c \"\n      ],\n      \"execution_count\": 46,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[[7 7]\\n\",\n            \" [7 7]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"BVuZ89NW5q5M\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"d4a364c6-e2ad-40c1-f1f9-58426b313937\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"d = np.eye(2)        # Create a 2x2 identity matrix\\n\",\n        \"print d\"\n      ],\n      \"execution_count\": 47,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[[1. 0.]\\n\",\n            \" [0. 1.]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"tY58UMFk5q5P\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"5890cf2b-3cd3-4a0d-a6ea-6fa6cf4777a7\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"e = np.random.random((2,2)) # Create an array filled with random values\\n\",\n        \"print e\"\n      ],\n      \"execution_count\": 48,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[[0.66164961 0.53382851]\\n\",\n            \" [0.7673618  0.12216509]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"Cm1XbIVO5q5Q\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"###Array indexing\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"pPuZbM_Z5q5R\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Numpy offers several ways to index into arrays.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"NHei_ely5q5R\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Slicing: Similar to Python lists, numpy arrays can be sliced. Since arrays may be multidimensional, you must specify a slice for each dimension of the array:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"CFp3nn085q5R\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"82bdcb59-bdde-45b4-e4db-72281e0469b2\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"import numpy as np\\n\",\n        \"\\n\",\n        \"# Create the following rank 2 array with shape (3, 4)\\n\",\n        \"# [[ 1  2  3  4]\\n\",\n        \"#  [ 5  6  7  8]\\n\",\n        \"#  [ 9 10 11 12]]\\n\",\n        \"a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])\\n\",\n        \"\\n\",\n        \"# Use slicing to pull out the subarray consisting of the first 2 rows\\n\",\n        \"# and columns 1 and 2; b is the following array of shape (2, 2):\\n\",\n        \"# [[2 3]\\n\",\n        \"#  [6 7]]\\n\",\n        \"b = a[:2, 1:3]\\n\",\n        \"print b\"\n      ],\n      \"execution_count\": 49,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[[2 3]\\n\",\n            \" [6 7]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"21E__llI5q5T\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"A slice of an array is a view into the same data, so modifying it will modify the original array.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"5G-xCH_n5q5T\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"be596423-d268-4eb2-c3e2-0c3749256a57\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"print a[0, 1]  \\n\",\n        \"b[0, 0] = 77    # b[0, 0] is the same piece of data as a[0, 1]\\n\",\n        \"print a[0, 1] \"\n      ],\n      \"execution_count\": 50,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"2\\n\",\n            \"77\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"7YnhuQqw5q5V\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"You can also mix integer indexing with slice indexing. However, doing so will yield an array of lower rank than the original array. Note that this is quite different from the way that MATLAB handles array slicing:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"P3l4gKyp5q5X\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 68\n        },\n        \"outputId\": \"1182f26a-8751-49e9-811e-5fe44b7ccd80\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Create the following rank 2 array with shape (3, 4)\\n\",\n        \"a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])\\n\",\n        \"print a\"\n      ],\n      \"execution_count\": 51,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[[ 1  2  3  4]\\n\",\n            \" [ 5  6  7  8]\\n\",\n            \" [ 9 10 11 12]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"abW3Kruq5q5Z\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Two ways of accessing the data in the middle row of the array.\\n\",\n        \"Mixing integer indexing with slices yields an array of lower rank,\\n\",\n        \"while using only slices yields an array of the same rank as the\\n\",\n        \"original array:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"VtPRP0Gi5q5a\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 68\n        },\n        \"outputId\": \"575135c1-d36d-44d7-8496-853c25f96aa9\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"row_r1 = a[1, :]    # Rank 1 view of the second row of a  \\n\",\n        \"row_r2 = a[1:2, :]  # Rank 2 view of the second row of a\\n\",\n        \"row_r3 = a[[1], :]  # Rank 2 view of the second row of a\\n\",\n        \"print row_r1, row_r1.shape \\n\",\n        \"print row_r2, row_r2.shape\\n\",\n        \"print row_r3, row_r3.shape\"\n      ],\n      \"execution_count\": 52,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[5 6 7 8] (4,)\\n\",\n            \"[[5 6 7 8]] (1, 4)\\n\",\n            \"[[5 6 7 8]] (1, 4)\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"eTCT0bct5q5c\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 102\n        },\n        \"outputId\": \"88683304-3041-4a73-960c-23ba8a01f5e8\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# We can make the same distinction when accessing columns of an array:\\n\",\n        \"col_r1 = a[:, 1]\\n\",\n        \"col_r2 = a[:, 1:2]\\n\",\n        \"print col_r1, col_r1.shape\\n\",\n        \"print\\n\",\n        \"print col_r2, col_r2.shape\"\n      ],\n      \"execution_count\": 53,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[ 2  6 10] (3,)\\n\",\n            \"\\n\",\n            \"[[ 2]\\n\",\n            \" [ 6]\\n\",\n            \" [10]] (3, 1)\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"scGrCnbk5q5h\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Integer array indexing: When you index into numpy arrays using slicing, the resulting array view will always be a subarray of the original array. In contrast, integer array indexing allows you to construct arbitrary arrays using the data from another array. Here is an example:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"CcvqvKKx5q5i\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"ada60889-ccaa-491e-d725-7a90aafd1eb8\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"a = np.array([[1,2], [3, 4], [5, 6]])\\n\",\n        \"\\n\",\n        \"# An example of integer array indexing.\\n\",\n        \"# The returned array will have shape (3,) and \\n\",\n        \"print a[[0, 1, 2], [0, 1, 0]]\\n\",\n        \"\\n\",\n        \"# The above example of integer array indexing is equivalent to this:\\n\",\n        \"print np.array([a[0, 0], a[1, 1], a[2, 0]])\"\n      ],\n      \"execution_count\": 54,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[1 4 5]\\n\",\n            \"[1 4 5]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"Y4HIfrq05q5l\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"de6e169f-d2b8-4ea7-82f4-937262759462\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# When using integer array indexing, you can reuse the same\\n\",\n        \"# element from the source array:\\n\",\n        \"print a[[0, 0], [1, 1]]\\n\",\n        \"\\n\",\n        \"# Equivalent to the previous integer array indexing example\\n\",\n        \"print np.array([a[0, 1], a[0, 1]])\"\n      ],\n      \"execution_count\": 55,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[2 2]\\n\",\n            \"[2 2]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"7p8DhBFQ5q5q\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"One useful trick with integer array indexing is selecting or mutating one element from each row of a matrix:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"d8AJ849O5q5r\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 85\n        },\n        \"outputId\": \"8b8a389b-98b1-4feb-8467-a4d234e43235\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Create a new array from which we will select elements\\n\",\n        \"a = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])\\n\",\n        \"print a\"\n      ],\n      \"execution_count\": 56,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[[ 1  2  3]\\n\",\n            \" [ 4  5  6]\\n\",\n            \" [ 7  8  9]\\n\",\n            \" [10 11 12]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"QnezokHy5q5s\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 34\n        },\n        \"outputId\": \"456cd000-78bc-4548-cbd6-dfe92c8f9913\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Create an array of indices\\n\",\n        \"b = np.array([0, 2, 0, 1])\\n\",\n        \"\\n\",\n        \"# Select one element from each row of a using the indices in b\\n\",\n        \"print a[np.arange(4), b]  # Prints \\\"[ 1  6  7 11]\\\"\"\n      ],\n      \"execution_count\": 57,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[ 1  6  7 11]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"_iXO2tyM5q5u\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 85\n        },\n        \"outputId\": \"5984d18f-5bf7-4b90-f484-37d8cb2b9378\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Mutate one element from each row of a using the indices in b\\n\",\n        \"a[np.arange(4), b] += 10\\n\",\n        \"print a\"\n      ],\n      \"execution_count\": 58,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[[11  2  3]\\n\",\n            \" [ 4  5 16]\\n\",\n            \" [17  8  9]\\n\",\n            \" [10 21 12]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"LkKSUFId5q5x\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Boolean array indexing: Boolean array indexing lets you pick out arbitrary elements of an array. Frequently this type of indexing is used to select the elements of an array that satisfy some condition. Here is an example:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"Z8SEDQTu5q5x\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 68\n        },\n        \"outputId\": \"a6c9af8b-bdb4-448c-c9fb-a43f9386864f\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"import numpy as np\\n\",\n        \"\\n\",\n        \"a = np.array([[1,2], [3, 4], [5, 6]])\\n\",\n        \"\\n\",\n        \"bool_idx = (a > 2)  # Find the elements of a that are bigger than 2;\\n\",\n        \"                    # this returns a numpy array of Booleans of the same\\n\",\n        \"                    # shape as a, where each slot of bool_idx tells\\n\",\n        \"                    # whether that element of a is > 2.\\n\",\n        \"\\n\",\n        \"print bool_idx\"\n      ],\n      \"execution_count\": 59,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[[False False]\\n\",\n            \" [ True  True]\\n\",\n            \" [ True  True]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"rRvDJXN25q5z\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"97ca548b-76ea-4e51-d46b-2ede935ce1fc\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# We use boolean array indexing to construct a rank 1 array\\n\",\n        \"# consisting of the elements of a corresponding to the True values\\n\",\n        \"# of bool_idx\\n\",\n        \"print a[bool_idx]\\n\",\n        \"\\n\",\n        \"# We can do all of the above in a single concise statement:\\n\",\n        \"print a[a > 2]\"\n      ],\n      \"execution_count\": 60,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[3 4 5 6]\\n\",\n            \"[3 4 5 6]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"enaYXsPT5q51\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"For brevity we have left out a lot of details about numpy array indexing; if you want to know more you should read the documentation.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"Xp-dmhK55q51\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"###Datatypes\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"I1iAVr005q51\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Every numpy array is a grid of elements of the same type. Numpy provides a large set of numeric datatypes that you can use to construct arrays. Numpy tries to guess a datatype when you create an array, but functions that construct arrays usually also include an optional argument to explicitly specify the datatype. Here is an example:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"Jhc1qiWe5q52\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 34\n        },\n        \"outputId\": \"891d2d3e-1686-469f-8a6a-25c6d5ae0181\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"x = np.array([1, 2])  # Let numpy choose the datatype\\n\",\n        \"y = np.array([1.0, 2.0])  # Let numpy choose the datatype\\n\",\n        \"z = np.array([1, 2], dtype=np.int64)  # Force a particular datatype\\n\",\n        \"\\n\",\n        \"print x.dtype, y.dtype, z.dtype\"\n      ],\n      \"execution_count\": 61,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"int64 float64 int64\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"dwsQbnfH5q53\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"You can read all about numpy datatypes in the [documentation](http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html).\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"J0krzpaq5q54\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"###Array math\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"MB1QONDf5q54\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Basic mathematical functions operate elementwise on arrays, and are available both as operator overloads and as functions in the numpy module:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"pqsjtRiM5q54\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 85\n        },\n        \"outputId\": \"47534904-eae8-4251-9ab7-779afffc6bbd\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"x = np.array([[1,2],[3,4]], dtype=np.float64)\\n\",\n        \"y = np.array([[5,6],[7,8]], dtype=np.float64)\\n\",\n        \"\\n\",\n        \"# Elementwise sum; both produce the array\\n\",\n        \"print x + y\\n\",\n        \"print np.add(x, y)\"\n      ],\n      \"execution_count\": 62,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[[ 6.  8.]\\n\",\n            \" [10. 12.]]\\n\",\n            \"[[ 6.  8.]\\n\",\n            \" [10. 12.]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"8lUHQNVL5q58\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 85\n        },\n        \"outputId\": \"4c93f703-da51-4c1f-9ae0-2be8ae300e60\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Elementwise difference; both produce the array\\n\",\n        \"print x - y\\n\",\n        \"print np.subtract(x, y)\"\n      ],\n      \"execution_count\": 63,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[[-4. -4.]\\n\",\n            \" [-4. -4.]]\\n\",\n            \"[[-4. -4.]\\n\",\n            \" [-4. -4.]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"IC8ctFQk5q59\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 85\n        },\n        \"outputId\": \"7d9aac78-21bb-4139-b1e3-d8ff60532d86\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Elementwise product; both produce the array\\n\",\n        \"print x * y\\n\",\n        \"print np.multiply(x, y)\"\n      ],\n      \"execution_count\": 64,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[[ 5. 12.]\\n\",\n            \" [21. 32.]]\\n\",\n            \"[[ 5. 12.]\\n\",\n            \" [21. 32.]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"XXtTacc-5q5_\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 85\n        },\n        \"outputId\": \"52577235-6288-44cb-a329-63665eb063a0\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Elementwise division; both produce the array\\n\",\n        \"# [[ 0.2         0.33333333]\\n\",\n        \"#  [ 0.42857143  0.5       ]]\\n\",\n        \"print x / y\\n\",\n        \"print np.divide(x, y)\"\n      ],\n      \"execution_count\": 65,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[[0.2        0.33333333]\\n\",\n            \" [0.42857143 0.5       ]]\\n\",\n            \"[[0.2        0.33333333]\\n\",\n            \" [0.42857143 0.5       ]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"f8mK4UbW5q6A\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"8f5bb712-f559-45f8-b4af-841702935f2e\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Elementwise square root; produces the array\\n\",\n        \"# [[ 1.          1.41421356]\\n\",\n        \"#  [ 1.73205081  2.        ]]\\n\",\n        \"print np.sqrt(x)\"\n      ],\n      \"execution_count\": 66,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[[1.         1.41421356]\\n\",\n            \" [1.73205081 2.        ]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"gUaJRH_O5q6D\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Note that unlike MATLAB, `*` is elementwise multiplication, not matrix multiplication. We instead use the dot function to compute inner products of vectors, to multiply a vector by a matrix, and to multiply matrices. dot is available both as a function in the numpy module and as an instance method of array objects:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"xpax7lRp5q6D\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"d2536513-d0c2-4450-fc61-b16aa51ae9e1\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"x = np.array([[1,2],[3,4]])\\n\",\n        \"y = np.array([[5,6],[7,8]])\\n\",\n        \"\\n\",\n        \"v = np.array([9,10])\\n\",\n        \"w = np.array([11, 12])\\n\",\n        \"\\n\",\n        \"# Inner product of vectors; both produce 219\\n\",\n        \"print v.dot(w)\\n\",\n        \"print np.dot(v, w)\"\n      ],\n      \"execution_count\": 67,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"219\\n\",\n            \"219\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"QadKUnk95q6E\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"e26dd606-26b5-4921-8538-ea1444bb3580\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Matrix / vector product; both produce the rank 1 array [29 67]\\n\",\n        \"print x.dot(v)\\n\",\n        \"print np.dot(x, v)\"\n      ],\n      \"execution_count\": 68,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[29 67]\\n\",\n            \"[29 67]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"sIb3tp555q6G\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 85\n        },\n        \"outputId\": \"8d4d1642-2936-4618-86a7-87cd8999bc1f\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Matrix / matrix product; both produce the rank 2 array\\n\",\n        \"# [[19 22]\\n\",\n        \"#  [43 50]]\\n\",\n        \"print x.dot(y)\\n\",\n        \"print np.dot(x, y)\"\n      ],\n      \"execution_count\": 69,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[[19 22]\\n\",\n            \" [43 50]]\\n\",\n            \"[[19 22]\\n\",\n            \" [43 50]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"IE5yrZG45q6H\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Numpy provides many useful functions for performing computations on arrays; one of the most useful is `sum`:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"y5K4V28p5q6I\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 68\n        },\n        \"outputId\": \"cee25913-485b-411f-a853-5e4995704ada\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"x = np.array([[1,2],[3,4]])\\n\",\n        \"\\n\",\n        \"print np.sum(x)  # Compute sum of all elements; prints \\\"10\\\"\\n\",\n        \"print np.sum(x, axis=0)  # Compute sum of each column; prints \\\"[4 6]\\\"\\n\",\n        \"print np.sum(x, axis=1)  # Compute sum of each row; prints \\\"[3 7]\\\"\"\n      ],\n      \"execution_count\": 70,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"10\\n\",\n            \"[4 6]\\n\",\n            \"[3 7]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"TOEJPgkk5q6K\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"You can find the full list of mathematical functions provided by numpy in the [documentation](http://docs.scipy.org/doc/numpy/reference/routines.math.html).\\n\",\n        \"\\n\",\n        \"Apart from computing mathematical functions using arrays, we frequently need to reshape or otherwise manipulate data in arrays. The simplest example of this type of operation is transposing a matrix; to transpose a matrix, simply use the T attribute of an array object:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"1NhZkHCm5q6K\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 85\n        },\n        \"outputId\": \"e15e29a2-d85e-4f83-b36a-3bf5ef122ba9\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"print x\\n\",\n        \"print x.T\"\n      ],\n      \"execution_count\": 71,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[[1 2]\\n\",\n            \" [3 4]]\\n\",\n            \"[[1 3]\\n\",\n            \" [2 4]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"GCCJQ-835q6M\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 85\n        },\n        \"outputId\": \"e23e5ce9-f560-4f15-9b29-fb40cc3ebef9\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"v = np.array([[1,2,3]])\\n\",\n        \"print v \\n\",\n        \"print v.T\"\n      ],\n      \"execution_count\": 72,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[[1 2 3]]\\n\",\n            \"[[1]\\n\",\n            \" [2]\\n\",\n            \" [3]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"98-AIk6u5q6O\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"### Broadcasting\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"ihjioOGn5q6O\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Broadcasting is a powerful mechanism that allows numpy to work with arrays of different shapes when performing arithmetic operations. Frequently we have a smaller array and a larger array, and we want to use the smaller array multiple times to perform some operation on the larger array.\\n\",\n        \"\\n\",\n        \"For example, suppose that we want to add a constant vector to each row of a matrix. We could do it like this:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"DPtd0SVC5q6O\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 85\n        },\n        \"outputId\": \"5aec3d4d-7136-4b8c-ae6d-f2009ddb00de\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# We will add the vector v to each row of the matrix x,\\n\",\n        \"# storing the result in the matrix y\\n\",\n        \"x = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])\\n\",\n        \"v = np.array([1, 0, 1])\\n\",\n        \"y = np.empty_like(x)   # Create an empty matrix with the same shape as x\\n\",\n        \"\\n\",\n        \"# Add the vector v to each row of the matrix x with an explicit loop\\n\",\n        \"for i in range(4):\\n\",\n        \"    y[i, :] = x[i, :] + v\\n\",\n        \"\\n\",\n        \"print y\"\n      ],\n      \"execution_count\": 73,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[[ 2  2  4]\\n\",\n            \" [ 5  5  7]\\n\",\n            \" [ 8  8 10]\\n\",\n            \" [11 11 13]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"V6krlZtE5q6Q\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"This works; however when the matrix `x` is very large, computing an explicit loop in Python could be slow. Note that adding the vector v to each row of the matrix `x` is equivalent to forming a matrix `vv` by stacking multiple copies of `v` vertically, then performing elementwise summation of `x` and `vv`. We could implement this approach like this:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"iACv1y1O5q6R\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 85\n        },\n        \"outputId\": \"1f5d5d43-af53-4fdd-cba0-f0d900c98f97\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"vv = np.tile(v, (4, 1))  # Stack 4 copies of v on top of each other\\n\",\n        \"print vv                 # Prints \\\"[[1 0 1]\\n\",\n        \"                         #          [1 0 1]\\n\",\n        \"                         #          [1 0 1]\\n\",\n        \"                         #          [1 0 1]]\\\"\"\n      ],\n      \"execution_count\": 74,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[[1 0 1]\\n\",\n            \" [1 0 1]\\n\",\n            \" [1 0 1]\\n\",\n            \" [1 0 1]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"e9VwkQ4v5q6S\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 85\n        },\n        \"outputId\": \"d55b8551-a22c-4626-a867-253192c401e2\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"y = x + vv  # Add x and vv elementwise\\n\",\n        \"print y\"\n      ],\n      \"execution_count\": 75,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[[ 2  2  4]\\n\",\n            \" [ 5  5  7]\\n\",\n            \" [ 8  8 10]\\n\",\n            \" [11 11 13]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"SjJw6Plx5q6U\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Numpy broadcasting allows us to perform this computation without actually creating multiple copies of v. Consider this version, using broadcasting:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"CKBoLNJg5q6U\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 85\n        },\n        \"outputId\": \"880086d1-3125-4e2d-bc38-acd5145aa7a1\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"import numpy as np\\n\",\n        \"\\n\",\n        \"# We will add the vector v to each row of the matrix x,\\n\",\n        \"# storing the result in the matrix y\\n\",\n        \"x = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]])\\n\",\n        \"v = np.array([1, 0, 1])\\n\",\n        \"y = x + v  # Add v to each row of x using broadcasting\\n\",\n        \"print y\"\n      ],\n      \"execution_count\": 76,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[[ 2  2  4]\\n\",\n            \" [ 5  5  7]\\n\",\n            \" [ 8  8 10]\\n\",\n            \" [11 11 13]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"3n0cLWAw5q6V\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"The line `y = x + v` works even though `x` has shape `(4, 3)` and `v` has shape `(3,)` due to broadcasting; this line works as if v actually had shape `(4, 3)`, where each row was a copy of `v`, and the sum was performed elementwise.\\n\",\n        \"\\n\",\n        \"Broadcasting two arrays together follows these rules:\\n\",\n        \"\\n\",\n        \"1. If the arrays do not have the same rank, prepend the shape of the lower rank array with 1s until both shapes have the same length.\\n\",\n        \"2. The two arrays are said to be compatible in a dimension if they have the same size in the dimension, or if one of the arrays has size 1 in that dimension.\\n\",\n        \"3. The arrays can be broadcast together if they are compatible in all dimensions.\\n\",\n        \"4. After broadcasting, each array behaves as if it had shape equal to the elementwise maximum of shapes of the two input arrays.\\n\",\n        \"5. In any dimension where one array had size 1 and the other array had size greater than 1, the first array behaves as if it were copied along that dimension\\n\",\n        \"\\n\",\n        \"If this explanation does not make sense, try reading the explanation from the [documentation](http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html) or this [explanation](http://wiki.scipy.org/EricsBroadcastingDoc).\\n\",\n        \"\\n\",\n        \"Functions that support broadcasting are known as universal functions. You can find the list of all universal functions in the [documentation](http://docs.scipy.org/doc/numpy/reference/ufuncs.html#available-ufuncs).\\n\",\n        \"\\n\",\n        \"Here are some applications of broadcasting:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"8lsu4IME5q6W\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 68\n        },\n        \"outputId\": \"87eff86e-1897-4f3b-acc2-f1df3b6392fc\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Compute outer product of vectors\\n\",\n        \"v = np.array([1,2,3])  # v has shape (3,)\\n\",\n        \"w = np.array([4,5])    # w has shape (2,)\\n\",\n        \"# To compute an outer product, we first reshape v to be a column\\n\",\n        \"# vector of shape (3, 1); we can then broadcast it against w to yield\\n\",\n        \"# an output of shape (3, 2), which is the outer product of v and w:\\n\",\n        \"\\n\",\n        \"print np.reshape(v, (3, 1)) * w\"\n      ],\n      \"execution_count\": 77,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[[ 4  5]\\n\",\n            \" [ 8 10]\\n\",\n            \" [12 15]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"-orCUm6c5q6X\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"d72d71e1-977a-4d4f-cc4a-6d9b1d563f7b\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Add a vector to each row of a matrix\\n\",\n        \"x = np.array([[1,2,3], [4,5,6]])\\n\",\n        \"# x has shape (2, 3) and v has shape (3,) so they broadcast to (2, 3),\\n\",\n        \"# giving the following matrix:\\n\",\n        \"\\n\",\n        \"print x + v\"\n      ],\n      \"execution_count\": 78,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[[2 4 6]\\n\",\n            \" [5 7 9]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"fAuY02dP5q6b\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"6155b6fd-63b4-4271-ad69-d42ccdf12991\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Add a vector to each column of a matrix\\n\",\n        \"# x has shape (2, 3) and w has shape (2,).\\n\",\n        \"# If we transpose x then it has shape (3, 2) and can be broadcast\\n\",\n        \"# against w to yield a result of shape (3, 2); transposing this result\\n\",\n        \"# yields the final result of shape (2, 3) which is the matrix x with\\n\",\n        \"# the vector w added to each column. Gives the following matrix:\\n\",\n        \"\\n\",\n        \"print (x.T + w).T\"\n      ],\n      \"execution_count\": 79,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[[ 5  6  7]\\n\",\n            \" [ 9 10 11]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"hMzxU0GW5q6c\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"cfe67ca5-9562-4901-cc06-a9cfecf1dfaa\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Another solution is to reshape w to be a row vector of shape (2, 1);\\n\",\n        \"# we can then broadcast it directly against x to produce the same\\n\",\n        \"# output.\\n\",\n        \"print x + np.reshape(w, (2, 1))\"\n      ],\n      \"execution_count\": 80,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[[ 5  6  7]\\n\",\n            \" [ 9 10 11]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"jGCfbEhK5q6d\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 51\n        },\n        \"outputId\": \"9797fffc-417d-4b8c-e1f2-16cb6b64e201\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Multiply a matrix by a constant:\\n\",\n        \"# x has shape (2, 3). Numpy treats scalars as arrays of shape ();\\n\",\n        \"# these can be broadcast together to shape (2, 3), producing the\\n\",\n        \"# following array:\\n\",\n        \"print x * 2\"\n      ],\n      \"execution_count\": 81,\n      \"outputs\": [\n        {\n          \"output_type\": \"stream\",\n          \"text\": [\n            \"[[ 2  4  6]\\n\",\n            \" [ 8 10 12]]\\n\"\n          ],\n          \"name\": \"stdout\"\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"4srkWKOE5q6f\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Broadcasting typically makes your code more concise and faster, so you should strive to use it where possible.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"vdNrBYZK5q6f\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"This brief overview has touched on many of the important things that you need to know about numpy, but is far from complete. Check out the [numpy reference](http://docs.scipy.org/doc/numpy/reference/) to find out much more about numpy.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"UKm2hzgz5q6f\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"##Matplotlib\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"VDFgGJz45q6g\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"Matplotlib is a plotting library. In this section give a brief introduction to the `matplotlib.pyplot` module, which provides a plotting system similar to that of MATLAB.\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"0bTVXB7L5q6g\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"import matplotlib.pyplot as plt\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"ELWE3_9J5q6h\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"By running this special iPython command, we will be displaying plots inline:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"H0vjMgyu5q6h\",\n        \"colab_type\": \"code\",\n        \"colab\": {}\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"%matplotlib inline\"\n      ],\n      \"execution_count\": 0,\n      \"outputs\": []\n    },\n    {\n      \"metadata\": {\n        \"id\": \"EQMkKaNH5q6j\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"###Plotting\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"biPNrc5O5q6j\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"The most important function in `matplotlib` is plot, which allows you to plot 2D data. Here is a simple example:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"bw_DJK-E5q6j\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 282\n        },\n        \"outputId\": \"5d87c56c-ab63-420a-e54d-587ba9fbfb39\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Compute the x and y coordinates for points on a sine curve\\n\",\n        \"x = np.arange(0, 3 * np.pi, 0.1)\\n\",\n        \"y_sin = np.sin(x)\\n\",\n        \"\\n\",\n        \"# Plot the points using matplotlib\\n\",\n        \"plt.plot(x, y_sin)\"\n      ],\n      \"execution_count\": 86,\n      \"outputs\": [\n        {\n          \"output_type\": \"execute_result\",\n          \"data\": {\n            \"text/plain\": [\n              \"[<matplotlib.lines.Line2D at 0x7f3bc5807190>]\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"execution_count\": 86\n        },\n        {\n          \"output_type\": \"display_data\",\n          \"data\": {\n            \"image/png\": \"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\\n\",\n            \"text/plain\": [\n              \"<matplotlib.figure.Figure at 0x7f3bc8133550>\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          }\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"7i9nqVNL5q6l\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"With just a little bit of extra work we can easily plot multiple lines at once, and add a title, legend, and axis labels:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"v96UGlPT5q6l\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 311\n        },\n        \"outputId\": \"5b761e58-49c7-4ef4-e5cb-d6f8ffd9ceaa\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"y_cos = np.cos(x)\\n\",\n        \"\\n\",\n        \"# Plot the points using matplotlib\\n\",\n        \"plt.plot(x, y_sin)\\n\",\n        \"plt.plot(x, y_cos)\\n\",\n        \"plt.xlabel('x axis label')\\n\",\n        \"plt.ylabel('y axis label')\\n\",\n        \"plt.title('Sine and Cosine')\\n\",\n        \"plt.legend(['Sine', 'Cosine'])\"\n      ],\n      \"execution_count\": 87,\n      \"outputs\": [\n        {\n          \"output_type\": \"execute_result\",\n          \"data\": {\n            \"text/plain\": [\n              \"<matplotlib.legend.Legend at 0x7f3bc5723250>\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          },\n          \"execution_count\": 87\n        },\n        {\n          \"output_type\": \"display_data\",\n          \"data\": {\n            \"image/png\": \"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\\n\",\n            \"text/plain\": [\n              \"<matplotlib.figure.Figure at 0x7f3bc5851290>\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          }\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"jJCY7j3Y5q6p\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"###Subplots \"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"vPAoU6yZ5q6q\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"You can plot different things in the same figure using the subplot function. Here is an example:\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"Lhgz6eYq5q6q\",\n        \"colab_type\": \"code\",\n        \"colab\": {\n          \"base_uri\": \"https://localhost:8080/\",\n          \"height\": 280\n        },\n        \"outputId\": \"06f647dd-a022-4b3e-8886-236588b4dad5\"\n      },\n      \"cell_type\": \"code\",\n      \"source\": [\n        \"# Compute the x and y coordinates for points on sine and cosine curves\\n\",\n        \"x = np.arange(0, 3 * np.pi, 0.1)\\n\",\n        \"y_sin = np.sin(x)\\n\",\n        \"y_cos = np.cos(x)\\n\",\n        \"\\n\",\n        \"# Set up a subplot grid that has height 2 and width 1,\\n\",\n        \"# and set the first such subplot as active.\\n\",\n        \"plt.subplot(2, 1, 1)\\n\",\n        \"\\n\",\n        \"# Make the first plot\\n\",\n        \"plt.plot(x, y_sin)\\n\",\n        \"plt.title('Sine')\\n\",\n        \"\\n\",\n        \"# Set the second subplot as active, and make the second plot.\\n\",\n        \"plt.subplot(2, 1, 2)\\n\",\n        \"plt.plot(x, y_cos)\\n\",\n        \"plt.title('Cosine')\\n\",\n        \"\\n\",\n        \"# Show the figure.\\n\",\n        \"plt.show()\"\n      ],\n      \"execution_count\": 88,\n      \"outputs\": [\n        {\n          \"output_type\": \"display_data\",\n          \"data\": {\n            \"image/png\": \"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\\n\",\n            \"text/plain\": [\n              \"<matplotlib.figure.Figure at 0x7f3bc573f090>\"\n            ]\n          },\n          \"metadata\": {\n            \"tags\": []\n          }\n        }\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"nCEH5MGI5q6s\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"You can read much more about the `subplot` function in the [documentation](http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.subplot).\"\n      ]\n    },\n    {\n      \"metadata\": {\n        \"id\": \"6mObYgBb55Ug\",\n        \"colab_type\": \"text\"\n      },\n      \"cell_type\": \"markdown\",\n      \"source\": [\n        \"# Acknowledgements\\n\",\n        \"\\n\",\n        \"This tutorial is based on the adapted version by [Volodymyr Kuleshov](http://web.stanford.edu/~kuleshov/) and [Isaac Caswell](https://symsys.stanford.edu/viewing/symsysaffiliate/21335), which was in turn adapted from the original `CS231n` Python tutorial by Justin Johnson (http://cs231n.github.io/python-numpy-tutorial/).\"\n      ]\n    }\n  ]\n}"
  }
]