3723 lines
645 KiB
Plaintext
3723 lines
645 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Chapter 14 – Recurrent Neural Networks**"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"_This notebook contains all the sample code and solutions to the exercises in chapter 14._"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Setup"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"First, let's make sure this notebook works well in both python 2 and 3, import a few common modules, ensure MatplotLib plots figures inline and prepare a function to save the figures:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"# To support both python 2 and python 3\n",
|
||
"from __future__ import division, print_function, unicode_literals\n",
|
||
"\n",
|
||
"# Common imports\n",
|
||
"import numpy as np\n",
|
||
"import os\n",
|
||
"\n",
|
||
"# to make this notebook's output stable across runs\n",
|
||
"def reset_graph(seed=42):\n",
|
||
" tf.reset_default_graph()\n",
|
||
" tf.set_random_seed(seed)\n",
|
||
" np.random.seed(seed)\n",
|
||
"\n",
|
||
"# To plot pretty figures\n",
|
||
"%matplotlib inline\n",
|
||
"import matplotlib\n",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"plt.rcParams['axes.labelsize'] = 14\n",
|
||
"plt.rcParams['xtick.labelsize'] = 12\n",
|
||
"plt.rcParams['ytick.labelsize'] = 12\n",
|
||
"\n",
|
||
"# Where to save the figures\n",
|
||
"PROJECT_ROOT_DIR = \".\"\n",
|
||
"CHAPTER_ID = \"rnn\"\n",
|
||
"\n",
|
||
"def save_fig(fig_id, tight_layout=True):\n",
|
||
" path = os.path.join(PROJECT_ROOT_DIR, \"images\", CHAPTER_ID, fig_id + \".png\")\n",
|
||
" print(\"Saving figure\", fig_id)\n",
|
||
" if tight_layout:\n",
|
||
" plt.tight_layout()\n",
|
||
" plt.savefig(path, format='png', dpi=300)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Then of course we will need TensorFlow:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 2,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import tensorflow as tf"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Basic RNNs"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Manual RNN"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"n_inputs = 3\n",
|
||
"n_neurons = 5\n",
|
||
"\n",
|
||
"X0 = tf.placeholder(tf.float32, [None, n_inputs])\n",
|
||
"X1 = tf.placeholder(tf.float32, [None, n_inputs])\n",
|
||
"\n",
|
||
"Wx = tf.Variable(tf.random_normal(shape=[n_inputs, n_neurons],dtype=tf.float32))\n",
|
||
"Wy = tf.Variable(tf.random_normal(shape=[n_neurons,n_neurons],dtype=tf.float32))\n",
|
||
"b = tf.Variable(tf.zeros([1, n_neurons], dtype=tf.float32))\n",
|
||
"\n",
|
||
"Y0 = tf.tanh(tf.matmul(X0, Wx) + b)\n",
|
||
"Y1 = tf.tanh(tf.matmul(Y0, Wy) + tf.matmul(X1, Wx) + b)\n",
|
||
"\n",
|
||
"init = tf.global_variables_initializer()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import numpy as np\n",
|
||
"\n",
|
||
"X0_batch = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 0, 1]]) # t = 0\n",
|
||
"X1_batch = np.array([[9, 8, 7], [0, 0, 0], [6, 5, 4], [3, 2, 1]]) # t = 1\n",
|
||
"\n",
|
||
"with tf.Session() as sess:\n",
|
||
" init.run()\n",
|
||
" Y0_val, Y1_val = sess.run([Y0, Y1], feed_dict={X0: X0_batch, X1: X1_batch})"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[[-0.06640061 0.96257669 0.68105787 0.70918542 -0.89821595]\n",
|
||
" [ 0.99777555 -0.71978879 -0.99657613 0.96739244 -0.99989706]\n",
|
||
" [ 0.99999785 -0.99898809 -0.99999887 0.99677628 -0.99999988]\n",
|
||
" [ 1. -1. -1. -0.99818921 0.99950868]]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(Y0_val)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 6,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[[ 1. -1. -1. 0.40200272 -0.99999994]\n",
|
||
" [-0.12210429 0.62805295 0.96718436 -0.99371219 -0.25839329]\n",
|
||
" [ 0.99999815 -0.9999994 -0.99999744 -0.85943311 -0.99998796]\n",
|
||
" [ 0.99928296 -0.99999809 -0.99990588 0.98579615 -0.92205751]]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(Y1_val)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Using `static_rnn()`"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 7,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"n_inputs = 3\n",
|
||
"n_neurons = 5"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 8,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"X0 = tf.placeholder(tf.float32, [None, n_inputs])\n",
|
||
"X1 = tf.placeholder(tf.float32, [None, n_inputs])\n",
|
||
"\n",
|
||
"basic_cell = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)\n",
|
||
"output_seqs, states = tf.contrib.rnn.static_rnn(basic_cell, [X0, X1],\n",
|
||
" dtype=tf.float32)\n",
|
||
"Y0, Y1 = output_seqs"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 9,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"init = tf.global_variables_initializer()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 10,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"X0_batch = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 0, 1]])\n",
|
||
"X1_batch = np.array([[9, 8, 7], [0, 0, 0], [6, 5, 4], [3, 2, 1]])\n",
|
||
"\n",
|
||
"with tf.Session() as sess:\n",
|
||
" init.run()\n",
|
||
" Y0_val, Y1_val = sess.run([Y0, Y1], feed_dict={X0: X0_batch, X1: X1_batch})"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 11,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"array([[ 0.30741337, -0.32884312, -0.65428472, -0.93850589, 0.52089024],\n",
|
||
" [ 0.99122751, -0.95425415, -0.75180781, -0.99952078, 0.98202336],\n",
|
||
" [ 0.99992675, -0.99783254, -0.82473516, -0.99999636, 0.99947786],\n",
|
||
" [ 0.99677092, -0.68750608, 0.84199691, 0.93039113, 0.81206834]], dtype=float32)"
|
||
]
|
||
},
|
||
"execution_count": 11,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"Y0_val"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 12,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"array([[ 0.99998885, -0.99976063, -0.06679297, -0.99998027, 0.99982214],\n",
|
||
" [-0.65249425, -0.5152086 , -0.37968948, -0.59225941, -0.08968376],\n",
|
||
" [ 0.99862403, -0.99715203, -0.03308632, -0.99915659, 0.99329019],\n",
|
||
" [ 0.99681675, -0.95981938, 0.39660627, -0.83076048, 0.79671967]], dtype=float32)"
|
||
]
|
||
},
|
||
"execution_count": 12,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"Y1_val"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 13,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"from IPython.display import clear_output, Image, display, HTML\n",
|
||
"\n",
|
||
"def strip_consts(graph_def, max_const_size=32):\n",
|
||
" \"\"\"Strip large constant values from graph_def.\"\"\"\n",
|
||
" strip_def = tf.GraphDef()\n",
|
||
" for n0 in graph_def.node:\n",
|
||
" n = strip_def.node.add() \n",
|
||
" n.MergeFrom(n0)\n",
|
||
" if n.op == 'Const':\n",
|
||
" tensor = n.attr['value'].tensor\n",
|
||
" size = len(tensor.tensor_content)\n",
|
||
" if size > max_const_size:\n",
|
||
" tensor.tensor_content = \"b<stripped %d bytes>\"%size\n",
|
||
" return strip_def\n",
|
||
"\n",
|
||
"def show_graph(graph_def, max_const_size=32):\n",
|
||
" \"\"\"Visualize TensorFlow graph.\"\"\"\n",
|
||
" if hasattr(graph_def, 'as_graph_def'):\n",
|
||
" graph_def = graph_def.as_graph_def()\n",
|
||
" strip_def = strip_consts(graph_def, max_const_size=max_const_size)\n",
|
||
" code = \"\"\"\n",
|
||
" <script>\n",
|
||
" function load() {{\n",
|
||
" document.getElementById(\"{id}\").pbtxt = {data};\n",
|
||
" }}\n",
|
||
" </script>\n",
|
||
" <link rel=\"import\" href=\"https://tensorboard.appspot.com/tf-graph-basic.build.html\" onload=load()>\n",
|
||
" <div style=\"height:600px\">\n",
|
||
" <tf-graph-basic id=\"{id}\"></tf-graph-basic>\n",
|
||
" </div>\n",
|
||
" \"\"\".format(data=repr(str(strip_def)), id='graph'+str(np.random.rand()))\n",
|
||
"\n",
|
||
" iframe = \"\"\"\n",
|
||
" <iframe seamless style=\"width:1200px;height:620px;border:0\" srcdoc=\"{}\"></iframe>\n",
|
||
" \"\"\".format(code.replace('\"', '"'))\n",
|
||
" display(HTML(iframe))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 14,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"\n",
|
||
" <iframe seamless style=\"width:1200px;height:620px;border:0\" srcdoc=\"\n",
|
||
" <script>\n",
|
||
" function load() {\n",
|
||
" document.getElementById("graph0.3745401188473625").pbtxt = 'node {\\n name: "Placeholder"\\n op: "Placeholder"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "shape"\\n value {\\n shape {\\n dim {\\n size: -1\\n }\\n dim {\\n size: 3\\n }\\n }\\n }\\n }\\n}\\nnode {\\n name: "Placeholder_1"\\n op: "Placeholder"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "shape"\\n value {\\n shape {\\n dim {\\n size: -1\\n }\\n dim {\\n size: 3\\n }\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/Shape"\\n op: "Shape"\\n input: "Placeholder"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "out_type"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice/stack"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice/stack_1"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice/stack_2"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice"\\n op: "StridedSlice"\\n input: "rnn/Shape"\\n input: "rnn/strided_slice/stack"\\n input: "rnn/strided_slice/stack_1"\\n input: "rnn/strided_slice/stack_2"\\n attr {\\n key: "Index"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "begin_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "ellipsis_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "end_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "new_axis_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "shrink_axis_mask"\\n value {\\n i: 1\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/ExpandDims/dim"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/ExpandDims"\\n op: "ExpandDims"\\n input: "rnn/strided_slice"\\n input: "rnn/BasicRNNCellZeroState/ExpandDims/dim"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "Tdim"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/Const"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 5\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/concat/axis"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/concat"\\n op: "ConcatV2"\\n input: "rnn/BasicRNNCellZeroState/ExpandDims"\\n input: "rnn/BasicRNNCellZeroState/Const"\\n input: "rnn/BasicRNNCellZeroState/concat/axis"\\n attr {\\n key: "N"\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "Tidx"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/ExpandDims_1/dim"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/ExpandDims_1"\\n op: "ExpandDims"\\n input: "rnn/strided_slice"\\n input: "rnn/BasicRNNCellZeroState/ExpandDims_1/dim"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "Tdim"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/Const_1"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 5\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/zeros/Const"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n }\\n float_val: 0.0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/zeros"\\n op: "Fill"\\n input: "rnn/BasicRNNCellZeroState/concat"\\n input: "rnn/BasicRNNCellZeroState/zeros/Const"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/shape"\\n op: "Const"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 2\\n }\\n }\\n tensor_content: "\\\\010\\\\000\\\\000\\\\000\\\\005\\\\000\\\\000\\\\000"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min"\\n op: "Const"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n }\\n float_val: -0.6793662309646606\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/max"\\n op: "Const"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n }\\n float_val: 0.6793662309646606\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/RandomUniform"\\n op: "RandomUniform"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/shape"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "seed"\\n value {\\n i: 42\\n }\\n }\\n attr {\\n key: "seed2"\\n value {\\n i: 20\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/sub"\\n op: "Sub"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/max"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/mul"\\n op: "Mul"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/RandomUniform"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/sub"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform"\\n op: "Add"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/mul"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel"\\n op: "VariableV2"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n attr {\\n key: "container"\\n value {\\n s: ""\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "shape"\\n value {\\n shape {\\n dim {\\n size: 8\\n }\\n dim {\\n size: 5\\n }\\n }\\n }\\n }\\n attr {\\n key: "shared_name"\\n value {\\n s: ""\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Assign"\\n op: "Assign"\\n input: "rnn/basic_rnn_cell/kernel"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n attr {\\n key: "use_locking"\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: "validate_shape"\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/read"\\n op: "Identity"\\n input: "rnn/basic_rnn_cell/kernel"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/rnn/basic_rnn_cell/basic_rnn_cell/concat/axis"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/rnn/basic_rnn_cell/basic_rnn_cell/concat"\\n op: "ConcatV2"\\n input: "Placeholder"\\n input: "rnn/BasicRNNCellZeroState/zeros"\\n input: "rnn/rnn/basic_rnn_cell/basic_rnn_cell/concat/axis"\\n attr {\\n key: "N"\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "Tidx"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/rnn/basic_rnn_cell/basic_rnn_cell/MatMul"\\n op: "MatMul"\\n input: "rnn/rnn/basic_rnn_cell/basic_rnn_cell/concat"\\n input: "rnn/basic_rnn_cell/kernel/read"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "transpose_a"\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: "transpose_b"\\n value {\\n b: false\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/bias/Initializer/Const"\\n op: "Const"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/bias"\\n }\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 5\\n }\\n }\\n float_val: 0.0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/bias"\\n op: "VariableV2"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/bias"\\n }\\n }\\n }\\n attr {\\n key: "container"\\n value {\\n s: ""\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "shape"\\n value {\\n shape {\\n dim {\\n size: 5\\n }\\n }\\n }\\n }\\n attr {\\n key: "shared_name"\\n value {\\n s: ""\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/bias/Assign"\\n op: "Assign"\\n input: "rnn/basic_rnn_cell/bias"\\n input: "rnn/basic_rnn_cell/bias/Initializer/Const"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/bias"\\n }\\n }\\n }\\n attr {\\n key: "use_locking"\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: "validate_shape"\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/bias/read"\\n op: "Identity"\\n input: "rnn/basic_rnn_cell/bias"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/rnn/basic_rnn_cell/basic_rnn_cell/BiasAdd"\\n op: "BiasAdd"\\n input: "rnn/rnn/basic_rnn_cell/basic_rnn_cell/MatMul"\\n input: "rnn/basic_rnn_cell/bias/read"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "data_format"\\n value {\\n s: "NHWC"\\n }\\n }\\n}\\nnode {\\n name: "rnn/rnn/basic_rnn_cell/Tanh"\\n op: "Tanh"\\n input: "rnn/rnn/basic_rnn_cell/basic_rnn_cell/BiasAdd"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/rnn/basic_rnn_cell/basic_rnn_cell_1/concat/axis"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/rnn/basic_rnn_cell/basic_rnn_cell_1/concat"\\n op: "ConcatV2"\\n input: "Placeholder_1"\\n input: "rnn/rnn/basic_rnn_cell/Tanh"\\n input: "rnn/rnn/basic_rnn_cell/basic_rnn_cell_1/concat/axis"\\n attr {\\n key: "N"\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "Tidx"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/rnn/basic_rnn_cell/basic_rnn_cell_1/MatMul"\\n op: "MatMul"\\n input: "rnn/rnn/basic_rnn_cell/basic_rnn_cell_1/concat"\\n input: "rnn/basic_rnn_cell/kernel/read"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "transpose_a"\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: "transpose_b"\\n value {\\n b: false\\n }\\n }\\n}\\nnode {\\n name: "rnn/rnn/basic_rnn_cell/basic_rnn_cell_1/BiasAdd"\\n op: "BiasAdd"\\n input: "rnn/rnn/basic_rnn_cell/basic_rnn_cell_1/MatMul"\\n input: "rnn/basic_rnn_cell/bias/read"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "data_format"\\n value {\\n s: "NHWC"\\n }\\n }\\n}\\nnode {\\n name: "rnn/rnn/basic_rnn_cell/Tanh_1"\\n op: "Tanh"\\n input: "rnn/rnn/basic_rnn_cell/basic_rnn_cell_1/BiasAdd"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "init"\\n op: "NoOp"\\n input: "^rnn/basic_rnn_cell/kernel/Assign"\\n input: "^rnn/basic_rnn_cell/bias/Assign"\\n}\\n';\n",
|
||
" }\n",
|
||
" </script>\n",
|
||
" <link rel="import" href="https://tensorboard.appspot.com/tf-graph-basic.build.html" onload=load()>\n",
|
||
" <div style="height:600px">\n",
|
||
" <tf-graph-basic id="graph0.3745401188473625"></tf-graph-basic>\n",
|
||
" </div>\n",
|
||
" \"></iframe>\n",
|
||
" "
|
||
],
|
||
"text/plain": [
|
||
"<IPython.core.display.HTML object>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"show_graph(tf.get_default_graph())"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Packing sequences"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 15,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"n_steps = 2\n",
|
||
"n_inputs = 3\n",
|
||
"n_neurons = 5"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 16,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
|
||
"X_seqs = tf.unstack(tf.transpose(X, perm=[1, 0, 2]))\n",
|
||
"\n",
|
||
"basic_cell = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)\n",
|
||
"output_seqs, states = tf.contrib.rnn.static_rnn(basic_cell, X_seqs,\n",
|
||
" dtype=tf.float32)\n",
|
||
"outputs = tf.transpose(tf.stack(output_seqs), perm=[1, 0, 2])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 17,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"init = tf.global_variables_initializer()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 18,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"X_batch = np.array([\n",
|
||
" # t = 0 t = 1 \n",
|
||
" [[0, 1, 2], [9, 8, 7]], # instance 1\n",
|
||
" [[3, 4, 5], [0, 0, 0]], # instance 2\n",
|
||
" [[6, 7, 8], [6, 5, 4]], # instance 3\n",
|
||
" [[9, 0, 1], [3, 2, 1]], # instance 4\n",
|
||
" ])\n",
|
||
"\n",
|
||
"with tf.Session() as sess:\n",
|
||
" init.run()\n",
|
||
" outputs_val = outputs.eval(feed_dict={X: X_batch})"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 19,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[[[-0.45652321 -0.68064117 0.40938237 0.63104498 -0.45732823]\n",
|
||
" [-0.94288003 -0.99988687 0.94055808 0.99999845 -0.99999976]]\n",
|
||
"\n",
|
||
" [[-0.80015343 -0.99218273 0.78177965 0.99710321 -0.99646091]\n",
|
||
" [-0.63711601 0.11300934 0.5798437 0.43105593 -0.6371699 ]]\n",
|
||
"\n",
|
||
" [[-0.93605185 -0.99983793 0.93088669 0.9999814 -0.99998313]\n",
|
||
" [-0.9165386 -0.99456036 0.89605415 0.99987191 -0.99997509]]\n",
|
||
"\n",
|
||
" [[ 0.99273676 -0.99819332 -0.55543649 0.99890316 -0.9953323 ]\n",
|
||
" [-0.02746333 -0.73191983 0.7827872 0.95256817 -0.97817719]]]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(outputs_val)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 20,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[[-0.94288003 -0.99988687 0.94055808 0.99999845 -0.99999976]\n",
|
||
" [-0.63711601 0.11300934 0.5798437 0.43105593 -0.6371699 ]\n",
|
||
" [-0.9165386 -0.99456036 0.89605415 0.99987191 -0.99997509]\n",
|
||
" [-0.02746333 -0.73191983 0.7827872 0.95256817 -0.97817719]]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(np.transpose(outputs_val, axes=[1, 0, 2])[1])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Using `dynamic_rnn()`"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 21,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"n_steps = 2\n",
|
||
"n_inputs = 3\n",
|
||
"n_neurons = 5"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 22,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
|
||
"\n",
|
||
"basic_cell = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)\n",
|
||
"outputs, states = tf.nn.dynamic_rnn(basic_cell, X, dtype=tf.float32)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 23,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"init = tf.global_variables_initializer()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 24,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"X_batch = np.array([\n",
|
||
" [[0, 1, 2], [9, 8, 7]], # instance 1\n",
|
||
" [[3, 4, 5], [0, 0, 0]], # instance 2\n",
|
||
" [[6, 7, 8], [6, 5, 4]], # instance 3\n",
|
||
" [[9, 0, 1], [3, 2, 1]], # instance 4\n",
|
||
" ])\n",
|
||
"\n",
|
||
"with tf.Session() as sess:\n",
|
||
" init.run()\n",
|
||
" outputs_val = outputs.eval(feed_dict={X: X_batch})"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 25,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[[[-0.09488751 -0.78635406 -0.75976861 0.81456453 -0.86596662]\n",
|
||
" [-0.99999815 -0.99989909 -0.99999416 0.99959815 -0.40855828]]\n",
|
||
"\n",
|
||
" [[-0.98823678 -0.99379843 -0.99848312 0.99407363 -0.9553898 ]\n",
|
||
" [ 0.21658953 -0.20340657 0.0259128 0.44528607 -0.40116799]]\n",
|
||
"\n",
|
||
" [[-0.9999153 -0.99983823 -0.99999154 0.99982715 -0.98561245]\n",
|
||
" [-0.99981052 -0.99268615 -0.99952883 0.99385989 -0.25559658]]\n",
|
||
"\n",
|
||
" [[-0.99883723 0.84198499 -0.97267139 -0.86984289 0.99912697]\n",
|
||
" [-0.97511077 -0.3484098 -0.9212814 0.39821982 0.2795389 ]]]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(outputs_val)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 26,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"\n",
|
||
" <iframe seamless style=\"width:1200px;height:620px;border:0\" srcdoc=\"\n",
|
||
" <script>\n",
|
||
" function load() {\n",
|
||
" document.getElementById("graph0.3745401188473625").pbtxt = 'node {\\n name: "Placeholder"\\n op: "Placeholder"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "shape"\\n value {\\n shape {\\n dim {\\n size: -1\\n }\\n dim {\\n size: 2\\n }\\n dim {\\n size: 3\\n }\\n }\\n }\\n }\\n}\\nnode {\\n name: "Rank"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 3\\n }\\n }\\n }\\n}\\nnode {\\n name: "range/start"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 2\\n }\\n }\\n }\\n}\\nnode {\\n name: "range/delta"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "range"\\n op: "Range"\\n input: "range/start"\\n input: "Rank"\\n input: "range/delta"\\n attr {\\n key: "Tidx"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "concat/values_0"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 2\\n }\\n }\\n tensor_content: "\\\\001\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000"\\n }\\n }\\n }\\n}\\nnode {\\n name: "concat/axis"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "concat"\\n op: "ConcatV2"\\n input: "concat/values_0"\\n input: "range"\\n input: "concat/axis"\\n attr {\\n key: "N"\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "Tidx"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "transpose"\\n op: "Transpose"\\n input: "Placeholder"\\n input: "concat"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "Tperm"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/Shape"\\n op: "Shape"\\n input: "transpose"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "out_type"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice/stack"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice/stack_1"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 2\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice/stack_2"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice"\\n op: "StridedSlice"\\n input: "rnn/Shape"\\n input: "rnn/strided_slice/stack"\\n input: "rnn/strided_slice/stack_1"\\n input: "rnn/strided_slice/stack_2"\\n attr {\\n key: "Index"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "begin_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "ellipsis_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "end_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "new_axis_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "shrink_axis_mask"\\n value {\\n i: 1\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/ExpandDims/dim"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/ExpandDims"\\n op: "ExpandDims"\\n input: "rnn/strided_slice"\\n input: "rnn/BasicRNNCellZeroState/ExpandDims/dim"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "Tdim"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/Const"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 5\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/concat/axis"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/concat"\\n op: "ConcatV2"\\n input: "rnn/BasicRNNCellZeroState/ExpandDims"\\n input: "rnn/BasicRNNCellZeroState/Const"\\n input: "rnn/BasicRNNCellZeroState/concat/axis"\\n attr {\\n key: "N"\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "Tidx"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/ExpandDims_1/dim"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/ExpandDims_1"\\n op: "ExpandDims"\\n input: "rnn/strided_slice"\\n input: "rnn/BasicRNNCellZeroState/ExpandDims_1/dim"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "Tdim"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/Const_1"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 5\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/zeros/Const"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n }\\n float_val: 0.0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/BasicRNNCellZeroState/zeros"\\n op: "Fill"\\n input: "rnn/BasicRNNCellZeroState/concat"\\n input: "rnn/BasicRNNCellZeroState/zeros/Const"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/Shape_1"\\n op: "Shape"\\n input: "transpose"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "out_type"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice_1/stack"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice_1/stack_1"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice_1/stack_2"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice_1"\\n op: "StridedSlice"\\n input: "rnn/Shape_1"\\n input: "rnn/strided_slice_1/stack"\\n input: "rnn/strided_slice_1/stack_1"\\n input: "rnn/strided_slice_1/stack_2"\\n attr {\\n key: "Index"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "begin_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "ellipsis_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "end_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "new_axis_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "shrink_axis_mask"\\n value {\\n i: 1\\n }\\n }\\n}\\nnode {\\n name: "rnn/Shape_2"\\n op: "Shape"\\n input: "transpose"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "out_type"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice_2/stack"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice_2/stack_1"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 2\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice_2/stack_2"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/strided_slice_2"\\n op: "StridedSlice"\\n input: "rnn/Shape_2"\\n input: "rnn/strided_slice_2/stack"\\n input: "rnn/strided_slice_2/stack_1"\\n input: "rnn/strided_slice_2/stack_2"\\n attr {\\n key: "Index"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "begin_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "ellipsis_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "end_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "new_axis_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "shrink_axis_mask"\\n value {\\n i: 1\\n }\\n }\\n}\\nnode {\\n name: "rnn/ExpandDims/dim"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/ExpandDims"\\n op: "ExpandDims"\\n input: "rnn/strided_slice_2"\\n input: "rnn/ExpandDims/dim"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "Tdim"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/Const"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 5\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/concat/axis"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/concat"\\n op: "ConcatV2"\\n input: "rnn/ExpandDims"\\n input: "rnn/Const"\\n input: "rnn/concat/axis"\\n attr {\\n key: "N"\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "Tidx"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/zeros/Const"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n }\\n float_val: 0.0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/zeros"\\n op: "Fill"\\n input: "rnn/concat"\\n input: "rnn/zeros/Const"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/time"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArray"\\n op: "TensorArrayV3"\\n input: "rnn/strided_slice_1"\\n attr {\\n key: "clear_after_read"\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "dynamic_size"\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: "element_shape"\\n value {\\n shape {\\n unknown_rank: true\\n }\\n }\\n }\\n attr {\\n key: "tensor_array_name"\\n value {\\n s: "rnn/dynamic_rnn/output_0"\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArray_1"\\n op: "TensorArrayV3"\\n input: "rnn/strided_slice_1"\\n attr {\\n key: "clear_after_read"\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "dynamic_size"\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: "element_shape"\\n value {\\n shape {\\n unknown_rank: true\\n }\\n }\\n }\\n attr {\\n key: "tensor_array_name"\\n value {\\n s: "rnn/dynamic_rnn/input_0"\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArrayUnstack/Shape"\\n op: "Shape"\\n input: "transpose"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "out_type"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArrayUnstack/strided_slice/stack"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArrayUnstack/strided_slice/stack_1"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArrayUnstack/strided_slice/stack_2"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArrayUnstack/strided_slice"\\n op: "StridedSlice"\\n input: "rnn/TensorArrayUnstack/Shape"\\n input: "rnn/TensorArrayUnstack/strided_slice/stack"\\n input: "rnn/TensorArrayUnstack/strided_slice/stack_1"\\n input: "rnn/TensorArrayUnstack/strided_slice/stack_2"\\n attr {\\n key: "Index"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "begin_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "ellipsis_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "end_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "new_axis_mask"\\n value {\\n i: 0\\n }\\n }\\n attr {\\n key: "shrink_axis_mask"\\n value {\\n i: 1\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArrayUnstack/range/start"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArrayUnstack/range/delta"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArrayUnstack/range"\\n op: "Range"\\n input: "rnn/TensorArrayUnstack/range/start"\\n input: "rnn/TensorArrayUnstack/strided_slice"\\n input: "rnn/TensorArrayUnstack/range/delta"\\n attr {\\n key: "Tidx"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArrayUnstack/TensorArrayScatter/TensorArrayScatterV3"\\n op: "TensorArrayScatterV3"\\n input: "rnn/TensorArray_1"\\n input: "rnn/TensorArrayUnstack/range"\\n input: "transpose"\\n input: "rnn/TensorArray_1:1"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@transpose"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Enter"\\n op: "Enter"\\n input: "rnn/time"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "frame_name"\\n value {\\n s: "rnn/while/rnn/while/"\\n }\\n }\\n attr {\\n key: "is_constant"\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: "parallel_iterations"\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Enter_1"\\n op: "Enter"\\n input: "rnn/TensorArray:1"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "frame_name"\\n value {\\n s: "rnn/while/rnn/while/"\\n }\\n }\\n attr {\\n key: "is_constant"\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: "parallel_iterations"\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Enter_2"\\n op: "Enter"\\n input: "rnn/BasicRNNCellZeroState/zeros"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "frame_name"\\n value {\\n s: "rnn/while/rnn/while/"\\n }\\n }\\n attr {\\n key: "is_constant"\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: "parallel_iterations"\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Merge"\\n op: "Merge"\\n input: "rnn/while/Enter"\\n input: "rnn/while/NextIteration"\\n attr {\\n key: "N"\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Merge_1"\\n op: "Merge"\\n input: "rnn/while/Enter_1"\\n input: "rnn/while/NextIteration_1"\\n attr {\\n key: "N"\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Merge_2"\\n op: "Merge"\\n input: "rnn/while/Enter_2"\\n input: "rnn/while/NextIteration_2"\\n attr {\\n key: "N"\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Less/Enter"\\n op: "Enter"\\n input: "rnn/strided_slice_1"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "frame_name"\\n value {\\n s: "rnn/while/rnn/while/"\\n }\\n }\\n attr {\\n key: "is_constant"\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: "parallel_iterations"\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Less"\\n op: "Less"\\n input: "rnn/while/Merge"\\n input: "rnn/while/Less/Enter"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/LoopCond"\\n op: "LoopCond"\\n input: "rnn/while/Less"\\n}\\nnode {\\n name: "rnn/while/Switch"\\n op: "Switch"\\n input: "rnn/while/Merge"\\n input: "rnn/while/LoopCond"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/while/Merge"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Switch_1"\\n op: "Switch"\\n input: "rnn/while/Merge_1"\\n input: "rnn/while/LoopCond"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/while/Merge_1"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Switch_2"\\n op: "Switch"\\n input: "rnn/while/Merge_2"\\n input: "rnn/while/LoopCond"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/while/Merge_2"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Identity"\\n op: "Identity"\\n input: "rnn/while/Switch:1"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Identity_1"\\n op: "Identity"\\n input: "rnn/while/Switch_1:1"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Identity_2"\\n op: "Identity"\\n input: "rnn/while/Switch_2:1"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/TensorArrayReadV3/Enter"\\n op: "Enter"\\n input: "rnn/TensorArray_1"\\n attr {\\n key: "T"\\n value {\\n type: DT_RESOURCE\\n }\\n }\\n attr {\\n key: "frame_name"\\n value {\\n s: "rnn/while/rnn/while/"\\n }\\n }\\n attr {\\n key: "is_constant"\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: "parallel_iterations"\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/TensorArrayReadV3/Enter_1"\\n op: "Enter"\\n input: "rnn/TensorArrayUnstack/TensorArrayScatter/TensorArrayScatterV3"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "frame_name"\\n value {\\n s: "rnn/while/rnn/while/"\\n }\\n }\\n attr {\\n key: "is_constant"\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: "parallel_iterations"\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/TensorArrayReadV3"\\n op: "TensorArrayReadV3"\\n input: "rnn/while/TensorArrayReadV3/Enter"\\n input: "rnn/while/Identity"\\n input: "rnn/while/TensorArrayReadV3/Enter_1"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/shape"\\n op: "Const"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 2\\n }\\n }\\n tensor_content: "\\\\010\\\\000\\\\000\\\\000\\\\005\\\\000\\\\000\\\\000"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min"\\n op: "Const"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n }\\n float_val: -0.6793662309646606\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/max"\\n op: "Const"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n }\\n float_val: 0.6793662309646606\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/RandomUniform"\\n op: "RandomUniform"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/shape"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "seed"\\n value {\\n i: 42\\n }\\n }\\n attr {\\n key: "seed2"\\n value {\\n i: 74\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/sub"\\n op: "Sub"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/max"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/mul"\\n op: "Mul"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/RandomUniform"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/sub"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform"\\n op: "Add"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/mul"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform/min"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel"\\n op: "VariableV2"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n attr {\\n key: "container"\\n value {\\n s: ""\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "shape"\\n value {\\n shape {\\n dim {\\n size: 8\\n }\\n dim {\\n size: 5\\n }\\n }\\n }\\n }\\n attr {\\n key: "shared_name"\\n value {\\n s: ""\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/Assign"\\n op: "Assign"\\n input: "rnn/basic_rnn_cell/kernel"\\n input: "rnn/basic_rnn_cell/kernel/Initializer/random_uniform"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/kernel"\\n }\\n }\\n }\\n attr {\\n key: "use_locking"\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: "validate_shape"\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/kernel/read"\\n op: "Identity"\\n input: "rnn/basic_rnn_cell/kernel"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/rnn/basic_rnn_cell/basic_rnn_cell/concat/axis"\\n op: "Const"\\n input: "^rnn/while/Identity"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/rnn/basic_rnn_cell/basic_rnn_cell/concat"\\n op: "ConcatV2"\\n input: "rnn/while/TensorArrayReadV3"\\n input: "rnn/while/Identity_2"\\n input: "rnn/while/rnn/basic_rnn_cell/basic_rnn_cell/concat/axis"\\n attr {\\n key: "N"\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "Tidx"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/rnn/basic_rnn_cell/basic_rnn_cell/MatMul/Enter"\\n op: "Enter"\\n input: "rnn/basic_rnn_cell/kernel/read"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "frame_name"\\n value {\\n s: "rnn/while/rnn/while/"\\n }\\n }\\n attr {\\n key: "is_constant"\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: "parallel_iterations"\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/rnn/basic_rnn_cell/basic_rnn_cell/MatMul"\\n op: "MatMul"\\n input: "rnn/while/rnn/basic_rnn_cell/basic_rnn_cell/concat"\\n input: "rnn/while/rnn/basic_rnn_cell/basic_rnn_cell/MatMul/Enter"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "transpose_a"\\n value {\\n b: false\\n }\\n }\\n attr {\\n key: "transpose_b"\\n value {\\n b: false\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/bias/Initializer/Const"\\n op: "Const"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/bias"\\n }\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_FLOAT\\n tensor_shape {\\n dim {\\n size: 5\\n }\\n }\\n float_val: 0.0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/bias"\\n op: "VariableV2"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/bias"\\n }\\n }\\n }\\n attr {\\n key: "container"\\n value {\\n s: ""\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "shape"\\n value {\\n shape {\\n dim {\\n size: 5\\n }\\n }\\n }\\n }\\n attr {\\n key: "shared_name"\\n value {\\n s: ""\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/bias/Assign"\\n op: "Assign"\\n input: "rnn/basic_rnn_cell/bias"\\n input: "rnn/basic_rnn_cell/bias/Initializer/Const"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/basic_rnn_cell/bias"\\n }\\n }\\n }\\n attr {\\n key: "use_locking"\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: "validate_shape"\\n value {\\n b: true\\n }\\n }\\n}\\nnode {\\n name: "rnn/basic_rnn_cell/bias/read"\\n op: "Identity"\\n input: "rnn/basic_rnn_cell/bias"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/rnn/basic_rnn_cell/basic_rnn_cell/BiasAdd/Enter"\\n op: "Enter"\\n input: "rnn/basic_rnn_cell/bias/read"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "frame_name"\\n value {\\n s: "rnn/while/rnn/while/"\\n }\\n }\\n attr {\\n key: "is_constant"\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: "parallel_iterations"\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/rnn/basic_rnn_cell/basic_rnn_cell/BiasAdd"\\n op: "BiasAdd"\\n input: "rnn/while/rnn/basic_rnn_cell/basic_rnn_cell/MatMul"\\n input: "rnn/while/rnn/basic_rnn_cell/basic_rnn_cell/BiasAdd/Enter"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "data_format"\\n value {\\n s: "NHWC"\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/rnn/basic_rnn_cell/Tanh"\\n op: "Tanh"\\n input: "rnn/while/rnn/basic_rnn_cell/basic_rnn_cell/BiasAdd"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/TensorArrayWrite/TensorArrayWriteV3/Enter"\\n op: "Enter"\\n input: "rnn/TensorArray"\\n attr {\\n key: "T"\\n value {\\n type: DT_RESOURCE\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/while/rnn/basic_rnn_cell/Tanh"\\n }\\n }\\n }\\n attr {\\n key: "frame_name"\\n value {\\n s: "rnn/while/rnn/while/"\\n }\\n }\\n attr {\\n key: "is_constant"\\n value {\\n b: true\\n }\\n }\\n attr {\\n key: "parallel_iterations"\\n value {\\n i: 32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/TensorArrayWrite/TensorArrayWriteV3"\\n op: "TensorArrayWriteV3"\\n input: "rnn/while/TensorArrayWrite/TensorArrayWriteV3/Enter"\\n input: "rnn/while/Identity"\\n input: "rnn/while/rnn/basic_rnn_cell/Tanh"\\n input: "rnn/while/Identity_1"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/while/rnn/basic_rnn_cell/Tanh"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/add/y"\\n op: "Const"\\n input: "^rnn/while/Identity"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/add"\\n op: "Add"\\n input: "rnn/while/Identity"\\n input: "rnn/while/add/y"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/NextIteration"\\n op: "NextIteration"\\n input: "rnn/while/add"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/NextIteration_1"\\n op: "NextIteration"\\n input: "rnn/while/TensorArrayWrite/TensorArrayWriteV3"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/NextIteration_2"\\n op: "NextIteration"\\n input: "rnn/while/rnn/basic_rnn_cell/Tanh"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Exit"\\n op: "Exit"\\n input: "rnn/while/Switch"\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Exit_1"\\n op: "Exit"\\n input: "rnn/while/Switch_1"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/while/Exit_2"\\n op: "Exit"\\n input: "rnn/while/Switch_2"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArrayStack/TensorArraySizeV3"\\n op: "TensorArraySizeV3"\\n input: "rnn/TensorArray"\\n input: "rnn/while/Exit_1"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/TensorArray"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArrayStack/range/start"\\n op: "Const"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/TensorArray"\\n }\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArrayStack/range/delta"\\n op: "Const"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/TensorArray"\\n }\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArrayStack/range"\\n op: "Range"\\n input: "rnn/TensorArrayStack/range/start"\\n input: "rnn/TensorArrayStack/TensorArraySizeV3"\\n input: "rnn/TensorArrayStack/range/delta"\\n attr {\\n key: "Tidx"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/TensorArray"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/TensorArrayStack/TensorArrayGatherV3"\\n op: "TensorArrayGatherV3"\\n input: "rnn/TensorArray"\\n input: "rnn/TensorArrayStack/range"\\n input: "rnn/while/Exit_1"\\n attr {\\n key: "_class"\\n value {\\n list {\\n s: "loc:@rnn/TensorArray"\\n }\\n }\\n }\\n attr {\\n key: "dtype"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "element_shape"\\n value {\\n shape {\\n dim {\\n size: -1\\n }\\n dim {\\n size: 5\\n }\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/Const_1"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 1\\n }\\n }\\n int_val: 5\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/Rank"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 3\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/range/start"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 2\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/range/delta"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 1\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/range"\\n op: "Range"\\n input: "rnn/range/start"\\n input: "rnn/Rank"\\n input: "rnn/range/delta"\\n attr {\\n key: "Tidx"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/concat_1/values_0"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n dim {\\n size: 2\\n }\\n }\\n tensor_content: "\\\\001\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000\\\\000"\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/concat_1/axis"\\n op: "Const"\\n attr {\\n key: "dtype"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "value"\\n value {\\n tensor {\\n dtype: DT_INT32\\n tensor_shape {\\n }\\n int_val: 0\\n }\\n }\\n }\\n}\\nnode {\\n name: "rnn/concat_1"\\n op: "ConcatV2"\\n input: "rnn/concat_1/values_0"\\n input: "rnn/range"\\n input: "rnn/concat_1/axis"\\n attr {\\n key: "N"\\n value {\\n i: 2\\n }\\n }\\n attr {\\n key: "T"\\n value {\\n type: DT_INT32\\n }\\n }\\n attr {\\n key: "Tidx"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "rnn/transpose"\\n op: "Transpose"\\n input: "rnn/TensorArrayStack/TensorArrayGatherV3"\\n input: "rnn/concat_1"\\n attr {\\n key: "T"\\n value {\\n type: DT_FLOAT\\n }\\n }\\n attr {\\n key: "Tperm"\\n value {\\n type: DT_INT32\\n }\\n }\\n}\\nnode {\\n name: "init"\\n op: "NoOp"\\n input: "^rnn/basic_rnn_cell/kernel/Assign"\\n input: "^rnn/basic_rnn_cell/bias/Assign"\\n}\\n';\n",
|
||
" }\n",
|
||
" </script>\n",
|
||
" <link rel="import" href="https://tensorboard.appspot.com/tf-graph-basic.build.html" onload=load()>\n",
|
||
" <div style="height:600px">\n",
|
||
" <tf-graph-basic id="graph0.3745401188473625"></tf-graph-basic>\n",
|
||
" </div>\n",
|
||
" \"></iframe>\n",
|
||
" "
|
||
],
|
||
"text/plain": [
|
||
"<IPython.core.display.HTML object>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"show_graph(tf.get_default_graph())"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Setting the sequence lengths"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 27,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"n_steps = 2\n",
|
||
"n_inputs = 3\n",
|
||
"n_neurons = 5\n",
|
||
"\n",
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
|
||
"basic_cell = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 28,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"seq_length = tf.placeholder(tf.int32, [None])\n",
|
||
"outputs, states = tf.nn.dynamic_rnn(basic_cell, X, dtype=tf.float32,\n",
|
||
" sequence_length=seq_length)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 29,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"init = tf.global_variables_initializer()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 30,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"X_batch = np.array([\n",
|
||
" # step 0 step 1\n",
|
||
" [[0, 1, 2], [9, 8, 7]], # instance 1\n",
|
||
" [[3, 4, 5], [0, 0, 0]], # instance 2 (padded with zero vectors)\n",
|
||
" [[6, 7, 8], [6, 5, 4]], # instance 3\n",
|
||
" [[9, 0, 1], [3, 2, 1]], # instance 4\n",
|
||
" ])\n",
|
||
"seq_length_batch = np.array([2, 1, 2, 2])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 31,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"with tf.Session() as sess:\n",
|
||
" init.run()\n",
|
||
" outputs_val, states_val = sess.run(\n",
|
||
" [outputs, states], feed_dict={X: X_batch, seq_length: seq_length_batch})"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 32,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[[[ 0.73155701 0.3483572 0.50582004 -0.22882834 -0.44022721]\n",
|
||
" [-0.61832327 0.99999994 0.865848 0.97933763 0.99022454]]\n",
|
||
"\n",
|
||
" [[ 0.84387034 0.99697542 0.84789455 0.43032196 0.09275493]\n",
|
||
" [ 0. 0. 0. 0. 0. ]]\n",
|
||
"\n",
|
||
" [[ 0.9115923 0.99999052 0.95954448 0.81892222 0.57740241]\n",
|
||
" [-0.77545458 0.99987745 0.97847283 0.73172009 0.88877612]]\n",
|
||
"\n",
|
||
" [[-0.99952275 0.99977851 0.5974465 0.99309695 0.99847412]\n",
|
||
" [-0.62119997 0.54000831 0.96938437 0.19893228 0.19448037]]]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(outputs_val)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 33,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[[-0.61832327 0.99999994 0.865848 0.97933763 0.99022454]\n",
|
||
" [ 0.84387034 0.99697542 0.84789455 0.43032196 0.09275493]\n",
|
||
" [-0.77545458 0.99987745 0.97847283 0.73172009 0.88877612]\n",
|
||
" [-0.62119997 0.54000831 0.96938437 0.19893228 0.19448037]]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(states_val)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Training a sequence classifier"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Note: the book uses `tensorflow.contrib.layers.fully_connected()` rather than `tf.layers.dense()` (which did not exist when this chapter was written). It is now preferable to use `tf.layers.dense()`, because anything in the contrib module may change or be deleted without notice. The `dense()` function is almost identical to the `fully_connected()` function. The main differences relevant to this chapter are:\n",
|
||
"* several parameters are renamed: `scope` becomes `name`, `activation_fn` becomes `activation` (and similarly the `_fn` suffix is removed from other parameters such as `normalizer_fn`), `weights_initializer` becomes `kernel_initializer`, etc.\n",
|
||
"* the default `activation` is now `None` rather than `tf.nn.relu`."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 34,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"n_steps = 28\n",
|
||
"n_inputs = 28\n",
|
||
"n_neurons = 150\n",
|
||
"n_outputs = 10\n",
|
||
"\n",
|
||
"learning_rate = 0.001\n",
|
||
"\n",
|
||
"X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
|
||
"y = tf.placeholder(tf.int32, [None])\n",
|
||
"\n",
|
||
"basic_cell = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)\n",
|
||
"outputs, states = tf.nn.dynamic_rnn(basic_cell, X, dtype=tf.float32)\n",
|
||
"\n",
|
||
"logits = tf.layers.dense(states, n_outputs)\n",
|
||
"xentropy = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y,\n",
|
||
" logits=logits)\n",
|
||
"loss = tf.reduce_mean(xentropy)\n",
|
||
"optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)\n",
|
||
"training_op = optimizer.minimize(loss)\n",
|
||
"correct = tf.nn.in_top_k(logits, y, 1)\n",
|
||
"accuracy = tf.reduce_mean(tf.cast(correct, tf.float32))\n",
|
||
"\n",
|
||
"init = tf.global_variables_initializer()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 35,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Extracting /tmp/data/train-images-idx3-ubyte.gz\n",
|
||
"Extracting /tmp/data/train-labels-idx1-ubyte.gz\n",
|
||
"Extracting /tmp/data/t10k-images-idx3-ubyte.gz\n",
|
||
"Extracting /tmp/data/t10k-labels-idx1-ubyte.gz\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"from tensorflow.examples.tutorials.mnist import input_data\n",
|
||
"mnist = input_data.read_data_sets(\"/tmp/data/\")\n",
|
||
"X_test = mnist.test.images.reshape((-1, n_steps, n_inputs))\n",
|
||
"y_test = mnist.test.labels"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 36,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"0 Train accuracy: 0.946667 Test accuracy: 0.9366\n",
|
||
"1 Train accuracy: 0.966667 Test accuracy: 0.9487\n",
|
||
"2 Train accuracy: 0.946667 Test accuracy: 0.9517\n",
|
||
"3 Train accuracy: 0.946667 Test accuracy: 0.9618\n",
|
||
"4 Train accuracy: 0.946667 Test accuracy: 0.9638\n",
|
||
"5 Train accuracy: 0.966667 Test accuracy: 0.9684\n",
|
||
"6 Train accuracy: 0.953333 Test accuracy: 0.9714\n",
|
||
"7 Train accuracy: 0.986667 Test accuracy: 0.9704\n",
|
||
"8 Train accuracy: 0.96 Test accuracy: 0.9764\n",
|
||
"9 Train accuracy: 0.986667 Test accuracy: 0.9686\n",
|
||
"10 Train accuracy: 0.98 Test accuracy: 0.9681\n",
|
||
"11 Train accuracy: 0.966667 Test accuracy: 0.9728\n",
|
||
"12 Train accuracy: 0.966667 Test accuracy: 0.9707\n",
|
||
"13 Train accuracy: 0.98 Test accuracy: 0.9692\n",
|
||
"14 Train accuracy: 0.973333 Test accuracy: 0.9652\n",
|
||
"15 Train accuracy: 0.986667 Test accuracy: 0.9739\n",
|
||
"16 Train accuracy: 0.993333 Test accuracy: 0.9771\n",
|
||
"17 Train accuracy: 0.986667 Test accuracy: 0.9768\n",
|
||
"18 Train accuracy: 0.98 Test accuracy: 0.9775\n",
|
||
"19 Train accuracy: 0.973333 Test accuracy: 0.9734\n",
|
||
"20 Train accuracy: 0.993333 Test accuracy: 0.9772\n",
|
||
"21 Train accuracy: 0.98 Test accuracy: 0.9767\n",
|
||
"22 Train accuracy: 0.986667 Test accuracy: 0.9778\n",
|
||
"23 Train accuracy: 0.993333 Test accuracy: 0.9795\n",
|
||
"24 Train accuracy: 0.986667 Test accuracy: 0.9726\n",
|
||
"25 Train accuracy: 0.993333 Test accuracy: 0.9716\n",
|
||
"26 Train accuracy: 0.96 Test accuracy: 0.974\n",
|
||
"27 Train accuracy: 0.986667 Test accuracy: 0.9773\n",
|
||
"28 Train accuracy: 0.966667 Test accuracy: 0.9782\n",
|
||
"29 Train accuracy: 0.993333 Test accuracy: 0.9737\n",
|
||
"30 Train accuracy: 0.973333 Test accuracy: 0.9786\n",
|
||
"31 Train accuracy: 0.993333 Test accuracy: 0.973\n",
|
||
"32 Train accuracy: 0.966667 Test accuracy: 0.9765\n",
|
||
"33 Train accuracy: 1.0 Test accuracy: 0.9801\n",
|
||
"34 Train accuracy: 0.993333 Test accuracy: 0.978\n",
|
||
"35 Train accuracy: 0.986667 Test accuracy: 0.9763\n",
|
||
"36 Train accuracy: 0.993333 Test accuracy: 0.9785\n",
|
||
"37 Train accuracy: 1.0 Test accuracy: 0.9803\n",
|
||
"38 Train accuracy: 0.993333 Test accuracy: 0.9793\n",
|
||
"39 Train accuracy: 0.986667 Test accuracy: 0.9775\n",
|
||
"40 Train accuracy: 0.993333 Test accuracy: 0.9749\n",
|
||
"41 Train accuracy: 0.98 Test accuracy: 0.9762\n",
|
||
"42 Train accuracy: 1.0 Test accuracy: 0.9776\n",
|
||
"43 Train accuracy: 1.0 Test accuracy: 0.9813\n",
|
||
"44 Train accuracy: 1.0 Test accuracy: 0.9765\n",
|
||
"45 Train accuracy: 0.98 Test accuracy: 0.9779\n",
|
||
"46 Train accuracy: 1.0 Test accuracy: 0.9782\n",
|
||
"47 Train accuracy: 1.0 Test accuracy: 0.9762\n",
|
||
"48 Train accuracy: 0.973333 Test accuracy: 0.9747\n",
|
||
"49 Train accuracy: 0.993333 Test accuracy: 0.979\n",
|
||
"50 Train accuracy: 1.0 Test accuracy: 0.9792\n",
|
||
"51 Train accuracy: 0.993333 Test accuracy: 0.9725\n",
|
||
"52 Train accuracy: 0.986667 Test accuracy: 0.9796\n",
|
||
"53 Train accuracy: 0.993333 Test accuracy: 0.9771\n",
|
||
"54 Train accuracy: 0.98 Test accuracy: 0.9787\n",
|
||
"55 Train accuracy: 0.993333 Test accuracy: 0.9758\n",
|
||
"56 Train accuracy: 0.986667 Test accuracy: 0.9805\n",
|
||
"57 Train accuracy: 0.993333 Test accuracy: 0.9787\n",
|
||
"58 Train accuracy: 0.993333 Test accuracy: 0.981\n",
|
||
"59 Train accuracy: 0.993333 Test accuracy: 0.9795\n",
|
||
"60 Train accuracy: 1.0 Test accuracy: 0.9813\n",
|
||
"61 Train accuracy: 0.993333 Test accuracy: 0.9723\n",
|
||
"62 Train accuracy: 1.0 Test accuracy: 0.9772\n",
|
||
"63 Train accuracy: 1.0 Test accuracy: 0.981\n",
|
||
"64 Train accuracy: 0.993333 Test accuracy: 0.9782\n",
|
||
"65 Train accuracy: 0.993333 Test accuracy: 0.9792\n",
|
||
"66 Train accuracy: 1.0 Test accuracy: 0.9793\n",
|
||
"67 Train accuracy: 0.986667 Test accuracy: 0.9769\n",
|
||
"68 Train accuracy: 1.0 Test accuracy: 0.979\n",
|
||
"69 Train accuracy: 0.993333 Test accuracy: 0.9813\n",
|
||
"70 Train accuracy: 0.993333 Test accuracy: 0.9781\n",
|
||
"71 Train accuracy: 1.0 Test accuracy: 0.975\n",
|
||
"72 Train accuracy: 0.993333 Test accuracy: 0.9762\n",
|
||
"73 Train accuracy: 0.993333 Test accuracy: 0.9812\n",
|
||
"74 Train accuracy: 0.98 Test accuracy: 0.9782\n",
|
||
"75 Train accuracy: 0.986667 Test accuracy: 0.9771\n",
|
||
"76 Train accuracy: 1.0 Test accuracy: 0.9793\n",
|
||
"77 Train accuracy: 1.0 Test accuracy: 0.9825\n",
|
||
"78 Train accuracy: 0.986667 Test accuracy: 0.9783\n",
|
||
"79 Train accuracy: 0.986667 Test accuracy: 0.9788\n",
|
||
"80 Train accuracy: 0.98 Test accuracy: 0.9648\n",
|
||
"81 Train accuracy: 0.986667 Test accuracy: 0.9791\n",
|
||
"82 Train accuracy: 0.986667 Test accuracy: 0.9776\n",
|
||
"83 Train accuracy: 0.993333 Test accuracy: 0.978\n",
|
||
"84 Train accuracy: 0.993333 Test accuracy: 0.9727\n",
|
||
"85 Train accuracy: 0.993333 Test accuracy: 0.9775\n",
|
||
"86 Train accuracy: 1.0 Test accuracy: 0.9768\n",
|
||
"87 Train accuracy: 0.986667 Test accuracy: 0.9772\n",
|
||
"88 Train accuracy: 1.0 Test accuracy: 0.9765\n",
|
||
"89 Train accuracy: 0.98 Test accuracy: 0.9746\n",
|
||
"90 Train accuracy: 1.0 Test accuracy: 0.9764\n",
|
||
"91 Train accuracy: 0.986667 Test accuracy: 0.9776\n",
|
||
"92 Train accuracy: 0.993333 Test accuracy: 0.9801\n",
|
||
"93 Train accuracy: 1.0 Test accuracy: 0.9767\n",
|
||
"94 Train accuracy: 0.986667 Test accuracy: 0.974\n",
|
||
"95 Train accuracy: 0.993333 Test accuracy: 0.9785\n",
|
||
"96 Train accuracy: 1.0 Test accuracy: 0.9781\n",
|
||
"97 Train accuracy: 0.98 Test accuracy: 0.9718\n",
|
||
"98 Train accuracy: 1.0 Test accuracy: 0.9771\n",
|
||
"99 Train accuracy: 0.993333 Test accuracy: 0.9789\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"n_epochs = 100\n",
|
||
"batch_size = 150\n",
|
||
"\n",
|
||
"with tf.Session() as sess:\n",
|
||
" init.run()\n",
|
||
" for epoch in range(n_epochs):\n",
|
||
" for iteration in range(mnist.train.num_examples // batch_size):\n",
|
||
" X_batch, y_batch = mnist.train.next_batch(batch_size)\n",
|
||
" X_batch = X_batch.reshape((-1, n_steps, n_inputs))\n",
|
||
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
||
" acc_train = accuracy.eval(feed_dict={X: X_batch, y: y_batch})\n",
|
||
" acc_test = accuracy.eval(feed_dict={X: X_test, y: y_test})\n",
|
||
" print(epoch, \"Train accuracy:\", acc_train, \"Test accuracy:\", acc_test)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Multi-layer RNN"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 37,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"n_steps = 28\n",
|
||
"n_inputs = 28\n",
|
||
"n_outputs = 10\n",
|
||
"\n",
|
||
"learning_rate = 0.001\n",
|
||
"\n",
|
||
"X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
|
||
"y = tf.placeholder(tf.int32, [None])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 38,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"n_neurons = 100\n",
|
||
"n_layers = 3\n",
|
||
"\n",
|
||
"layers = [tf.contrib.rnn.BasicRNNCell(num_units=n_neurons,\n",
|
||
" activation=tf.nn.relu)\n",
|
||
" for layer in range(n_layers)]\n",
|
||
"multi_layer_cell = tf.contrib.rnn.MultiRNNCell(layers)\n",
|
||
"outputs, states = tf.nn.dynamic_rnn(multi_layer_cell, X, dtype=tf.float32)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 39,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"states_concat = tf.concat(axis=1, values=states)\n",
|
||
"logits = tf.layers.dense(states_concat, n_outputs)\n",
|
||
"xentropy = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y, logits=logits)\n",
|
||
"loss = tf.reduce_mean(xentropy)\n",
|
||
"optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)\n",
|
||
"training_op = optimizer.minimize(loss)\n",
|
||
"correct = tf.nn.in_top_k(logits, y, 1)\n",
|
||
"accuracy = tf.reduce_mean(tf.cast(correct, tf.float32))\n",
|
||
"\n",
|
||
"init = tf.global_variables_initializer()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 40,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"0 Train accuracy: 0.94 Test accuracy: 0.9384\n",
|
||
"1 Train accuracy: 0.973333 Test accuracy: 0.9655\n",
|
||
"2 Train accuracy: 0.966667 Test accuracy: 0.9649\n",
|
||
"3 Train accuracy: 0.986667 Test accuracy: 0.9753\n",
|
||
"4 Train accuracy: 0.993333 Test accuracy: 0.9763\n",
|
||
"5 Train accuracy: 0.986667 Test accuracy: 0.9761\n",
|
||
"6 Train accuracy: 0.966667 Test accuracy: 0.974\n",
|
||
"7 Train accuracy: 0.993333 Test accuracy: 0.9819\n",
|
||
"8 Train accuracy: 1.0 Test accuracy: 0.9775\n",
|
||
"9 Train accuracy: 0.98 Test accuracy: 0.982\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"n_epochs = 10\n",
|
||
"batch_size = 150\n",
|
||
"\n",
|
||
"with tf.Session() as sess:\n",
|
||
" init.run()\n",
|
||
" for epoch in range(n_epochs):\n",
|
||
" for iteration in range(mnist.train.num_examples // batch_size):\n",
|
||
" X_batch, y_batch = mnist.train.next_batch(batch_size)\n",
|
||
" X_batch = X_batch.reshape((-1, n_steps, n_inputs))\n",
|
||
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
||
" acc_train = accuracy.eval(feed_dict={X: X_batch, y: y_batch})\n",
|
||
" acc_test = accuracy.eval(feed_dict={X: X_test, y: y_test})\n",
|
||
" print(epoch, \"Train accuracy:\", acc_train, \"Test accuracy:\", acc_test)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Time series"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 41,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"t_min, t_max = 0, 30\n",
|
||
"resolution = 0.1\n",
|
||
"\n",
|
||
"def time_series(t):\n",
|
||
" return t * np.sin(t) / 3 + 2 * np.sin(t*5)\n",
|
||
"\n",
|
||
"def next_batch(batch_size, n_steps):\n",
|
||
" t0 = np.random.rand(batch_size, 1) * (t_max - t_min - n_steps * resolution)\n",
|
||
" Ts = t0 + np.arange(0., n_steps + 1) * resolution\n",
|
||
" ys = time_series(Ts)\n",
|
||
" return ys[:, :-1].reshape(-1, n_steps, 1), ys[:, 1:].reshape(-1, n_steps, 1)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 42,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Saving figure time_series_plot\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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\ntm0bV1xxBX379mXDhg1s2rSJ6667jurqagAeeughnnvuOZ555hl27drFAw88wO23387q1atbfA6U\nUq0nOxvmz4eUFFi1yvo5f761Ximl/JYxxu+XUaNGGVd27drVZJ01J6h3lpa4/PLLzW9/+1tjjDG1\ntbUmLS3NvP76627vM2fOHDNt2rQG63JycgxgnnjiiWaf87rrrjNz5851+XiXX365GTduXIP7XHnl\nlQ3uc/nll5s777yz7nZaWpr54Q9/2OA+ffv2NY888ogxxpi1a9ea4OBgc/jw4brtGzZsMIBZvny5\ny1h/9atfmcGDBzeINSUlxVRXV9et+6//+i8zefJkY4wxJ0+eNIDJyspy+njLly83UVFRLp/PYffu\n3QYw33zzjTHGmHXr1hnArF27tm6f9evXN9jnhhtuaHLeHIqLi01ERIT5+OOPG6xfsGCBmTp1arPx\nNMfZ34BS9QGbjQ98lnuyuPu8b23vvGOMzWZMaKgxN95orZs927pts1nblVKqI/H0815bIDqo/fv3\ns379em644QYARITZs2c3243JnczMzAa3a2pqePTRRxk2bBgJCQlER0fzxhtvcOjQIbePM2zYsAa3\nu3fvzokTJ877Pnv27KF79+706NGjbvvo0aMJCmr52zcjI4Pg4GCnzxMfH8/NN9/MlClTmDZtGk89\n9VSzxwrWQPYZM2aQlpZGTExM3XlsfN/6x9i9e3eAuuf+8ssvmTRpktPH37VrF+Xl5Xz7298mOjq6\nbvnzn/9Mtn7NqZRXZGfDzJlQWgpVVXDrrdb6W2+1bpeWWtv1T1Qp5Y90JmonjPF2BM1btmwZNTU1\npKam1q0z9sC/+eYbevbs2eLHjIqKanD7iSee4Mknn+Tpp59m6NChREdH8/Of/7zZZCA0NLTBbRFp\nMAaite5zPpp7nuXLl3P33Xezdu1a3n77bR588EHefPNNpkyZ4vTxSkpKmDJlCldeeSUvvPACycnJ\nFBQUcOmll1JZWenyucXeX82TY3Ts889//rPB6+3seJRS7aOyEkpKzt129KicMKHh/5A9e9o3LqWU\nag/aAtEBVVdXs2LFCh5//HG2bt1at2zbto1hw4Y1GehcX1hYGDU1NR49z/r165k+fTo33XQTI0aM\nID09nX379rXWYXhs4MCB5OXl1Q0oBti8eXObJBgAw4cPZ9GiRWRlZTFx4kRWrFgBOD93e/bsoaCg\n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\n",
|
||
"text/plain": [
|
||
"<matplotlib.figure.Figure at 0x7f450af6d320>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"t = np.linspace(t_min, t_max, int((t_max - t_min) / resolution))\n",
|
||
"\n",
|
||
"n_steps = 20\n",
|
||
"t_instance = np.linspace(12.2, 12.2 + resolution * (n_steps + 1), n_steps + 1)\n",
|
||
"\n",
|
||
"plt.figure(figsize=(11,4))\n",
|
||
"plt.subplot(121)\n",
|
||
"plt.title(\"A time series (generated)\", fontsize=14)\n",
|
||
"plt.plot(t, time_series(t), label=r\"$t . \\sin(t) / 3 + 2 . \\sin(5t)$\")\n",
|
||
"plt.plot(t_instance[:-1], time_series(t_instance[:-1]), \"b-\", linewidth=3, label=\"A training instance\")\n",
|
||
"plt.legend(loc=\"lower left\", fontsize=14)\n",
|
||
"plt.axis([0, 30, -17, 13])\n",
|
||
"plt.xlabel(\"Time\")\n",
|
||
"plt.ylabel(\"Value\")\n",
|
||
"\n",
|
||
"plt.subplot(122)\n",
|
||
"plt.title(\"A training instance\", fontsize=14)\n",
|
||
"plt.plot(t_instance[:-1], time_series(t_instance[:-1]), \"bo\", markersize=10, label=\"instance\")\n",
|
||
"plt.plot(t_instance[1:], time_series(t_instance[1:]), \"w*\", markersize=10, label=\"target\")\n",
|
||
"plt.legend(loc=\"upper left\")\n",
|
||
"plt.xlabel(\"Time\")\n",
|
||
"\n",
|
||
"\n",
|
||
"save_fig(\"time_series_plot\")\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 43,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"X_batch, y_batch = next_batch(1, n_steps)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 44,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"array([[ 1.38452097, 2.05081182],\n",
|
||
" [ 2.05081182, 2.29742291],\n",
|
||
" [ 2.29742291, 2.0465599 ],\n",
|
||
" [ 2.0465599 , 1.34009916],\n",
|
||
" [ 1.34009916, 0.32948704],\n",
|
||
" [ 0.32948704, -0.76115235],\n",
|
||
" [-0.76115235, -1.68967022],\n",
|
||
" [-1.68967022, -2.25492776],\n",
|
||
" [-2.25492776, -2.34576159],\n",
|
||
" [-2.34576159, -1.96789418],\n",
|
||
" [-1.96789418, -1.24220428],\n",
|
||
" [-1.24220428, -0.37478448],\n",
|
||
" [-0.37478448, 0.39387907],\n",
|
||
" [ 0.39387907, 0.84815766],\n",
|
||
" [ 0.84815766, 0.85045064],\n",
|
||
" [ 0.85045064, 0.3752526 ],\n",
|
||
" [ 0.3752526 , -0.48422846],\n",
|
||
" [-0.48422846, -1.53852738],\n",
|
||
" [-1.53852738, -2.54795941],\n",
|
||
" [-2.54795941, -3.28097239]])"
|
||
]
|
||
},
|
||
"execution_count": 44,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"np.c_[X_batch[0], y_batch[0]]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Using an `OuputProjectionWrapper`"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Let's create the RNN. It will contain 100 recurrent neurons and we will unroll it over 20 time steps since each traiing instance will be 20 inputs long. Each input will contain only one feature (the value at that time). The targets are also sequences of 20 inputs, each containing a sigle value:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 45,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"n_steps = 20\n",
|
||
"n_inputs = 1\n",
|
||
"n_neurons = 100\n",
|
||
"n_outputs = 1\n",
|
||
"\n",
|
||
"X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
|
||
"y = tf.placeholder(tf.float32, [None, n_steps, n_outputs])\n",
|
||
"\n",
|
||
"cell = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons, activation=tf.nn.relu)\n",
|
||
"outputs, states = tf.nn.dynamic_rnn(cell, X, dtype=tf.float32)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"At each time step we now have an output vector of size 100. But what we actually want is a single output value at each time step. The simplest solution is to wrap the cell in an `OutputProjectionWrapper`."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 46,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"n_steps = 20\n",
|
||
"n_inputs = 1\n",
|
||
"n_neurons = 100\n",
|
||
"n_outputs = 1\n",
|
||
"\n",
|
||
"X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
|
||
"y = tf.placeholder(tf.float32, [None, n_steps, n_outputs])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 47,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"cell = tf.contrib.rnn.OutputProjectionWrapper(\n",
|
||
" tf.contrib.rnn.BasicRNNCell(num_units=n_neurons, activation=tf.nn.relu),\n",
|
||
" output_size=n_outputs)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 48,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"outputs, states = tf.nn.dynamic_rnn(cell, X, dtype=tf.float32)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 49,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"learning_rate = 0.001\n",
|
||
"\n",
|
||
"loss = tf.reduce_mean(tf.square(outputs - y)) # MSE\n",
|
||
"optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)\n",
|
||
"training_op = optimizer.minimize(loss)\n",
|
||
"\n",
|
||
"init = tf.global_variables_initializer()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 50,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"saver = tf.train.Saver()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 51,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"0 \tMSE: 18.9177\n",
|
||
"100 \tMSE: 0.762545\n",
|
||
"200 \tMSE: 0.291118\n",
|
||
"300 \tMSE: 0.14968\n",
|
||
"400 \tMSE: 0.077413\n",
|
||
"500 \tMSE: 0.066281\n",
|
||
"600 \tMSE: 0.0619901\n",
|
||
"700 \tMSE: 0.0570403\n",
|
||
"800 \tMSE: 0.0562764\n",
|
||
"900 \tMSE: 0.0523798\n",
|
||
"1000 \tMSE: 0.0530646\n",
|
||
"1100 \tMSE: 0.0522798\n",
|
||
"1200 \tMSE: 0.0457455\n",
|
||
"1300 \tMSE: 0.0524218\n",
|
||
"1400 \tMSE: 0.0465029\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"n_iterations = 1500\n",
|
||
"batch_size = 50\n",
|
||
"\n",
|
||
"with tf.Session() as sess:\n",
|
||
" init.run()\n",
|
||
" for iteration in range(n_iterations):\n",
|
||
" X_batch, y_batch = next_batch(batch_size, n_steps)\n",
|
||
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
||
" if iteration % 100 == 0:\n",
|
||
" mse = loss.eval(feed_dict={X: X_batch, y: y_batch})\n",
|
||
" print(iteration, \"\\tMSE:\", mse)\n",
|
||
" \n",
|
||
" saver.save(sess, \"./my_time_series_model\") # not shown in the book"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 52,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"INFO:tensorflow:Restoring parameters from ./my_time_series_model\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"with tf.Session() as sess: # not shown in the book\n",
|
||
" saver.restore(sess, \"./my_time_series_model\") # not shown\n",
|
||
"\n",
|
||
" X_new = time_series(np.array(t_instance[:-1].reshape(-1, n_steps, n_inputs)))\n",
|
||
" y_pred = sess.run(outputs, feed_dict={X: X_new})"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 53,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"array([[[-3.43122363],\n",
|
||
" [-2.4584446 ],\n",
|
||
" [-1.13031602],\n",
|
||
" [ 0.72546744],\n",
|
||
" [ 2.13117671],\n",
|
||
" [ 3.14365387],\n",
|
||
" [ 3.62318993],\n",
|
||
" [ 3.39904499],\n",
|
||
" [ 2.78487206],\n",
|
||
" [ 2.20466471],\n",
|
||
" [ 1.74011052],\n",
|
||
" [ 1.62807786],\n",
|
||
" [ 1.97047997],\n",
|
||
" [ 2.74833345],\n",
|
||
" [ 3.89308596],\n",
|
||
" [ 5.16543388],\n",
|
||
" [ 6.17067528],\n",
|
||
" [ 6.72142124],\n",
|
||
" [ 6.66966438],\n",
|
||
" [ 6.05645227]]], dtype=float32)"
|
||
]
|
||
},
|
||
"execution_count": 53,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"y_pred"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 54,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Saving figure time_series_pred_plot\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X14VNW99//3lyElJiGlUtrbSjUcTi1PhiDBUBEBHxoi\nUUuNVaq9tdhjLfZqq9ADv2qPPeD5nXq3VavY47Faay2lR2jRkjKmpQrVWuNBidQKhzY/wfrUH6gg\nmUkkGb73H3smJjHkASaZPcnndV372jN71qy99mYuvllrrwdzd0RERMJmSKYLICIi0hkFKBERCSUF\nKBERCSUFKBERCSUFKBERCSUFKBERCSUFKBmUzOzbZrYlg+d/3cy+nKnzp4OZbTSzu3qRfpyZuZlN\n6styycChACUZk/zPqqvtx2k4x+H+U7wJKD/a/Htw/qvNbG9fn0dkIBqa6QLIoHZcm9eVwA87HGvs\nqxO7ewPQ0Ff5i8jRUw1KMsbdX09twL6Ox9x9P4CZnWhma8xsn5m9aWa/MrMxqXzMbIyZVZvZW2YW\nM7MXzOzTZpYLbE8m+1OyJvVI8jvtmvjM7OdmttbMvm5mryXP80MzG9YmTaGZ/Sx5jtfMbHFXzVxm\nNhf4D2Bkm1rhsjZJ8s3sR2Z2wMz+ZmZf6fD9Y83sXjPbY2Zvm9mjZlbS1T1NNh3+P2b2UzNrMLPd\nyXtxbPL6Gsxsh5nN7vC9s8zsv83sneS1/R8zy2nz+fBknqlrX9LJuXPN7Htm9koyXa2ZndlVeUW6\nogAloWZmw4FNwFvATGAGQTD7bZvgcTdgwBnAycAS4G13b0p+B2A2Qe1sQRenOwcoAuYAlwGXAIva\nfH47MB04L5l2BjCti/weBZYCbybPfRxwR5vPlwBPA1OA7wPfN7NTktcdAR4BRgIVwFRgC/ComY3q\n4pwAi4HNQAnwK+AB4KfAL5Pn+m9glZm9L3muIuDXwFPAZOBLwOeBb7XJ8/sE9/L85LXPBE7tcN5V\nyWMXA8XAfwFRMxvfTXlFOufu2rRlfAOqgp/je44vAp7vcCwHOACcn3y/E1h6mHzHAQ5M6nD828CW\nNu9/DtQDQ9ocewCoTr4+FmgBPtXm8/cny3FXF9d1NbC3k+OvA/d1OPY3YEny9bkEge19HdLsAL7S\nxfna5Qt8MHn9/+dw9wT4HvBnwDqUO56816lrv7DN5yMImkjvSr6fACSAD3cozyPALV39W2jTdrhN\nz6Ak7KYC48ys4/OiPGBs8vVtBLWP84HfAb9097ojONfz7n6ozftXgY8nX38MiBDUeABw9/1mtuMI\nzpOyrcP7V4EPJV9PJQiAb5pZ2zS5vHvd3ebr7nvNLAH8qc3nf0/uU+caDzzp7m1njn4COAYYA3yA\n4Nr/2CbffWa2vU36qQQtMvUdyjsMeKeb8op0SgFKwm4IUAtc3slnewHc/QdmVk1Q6zgbWGZm/+Lu\n3+7luZo7vHf6thm8q/MNAV4Gzurke/t7mW/HY6lA1JNr6+lyB0OS55jSyXdiPcxDpB09g5KwexY4\nCfi7u/+1w7YvlcjdX3L3u9y9Cvg34KrkRweT+8hRluMvBE1Yrc+czKyQoNmqKweP8NzPAh8B3unk\nuvccQX5d2Q6cZu2rPqcT9KLcxbvXPj31oZm9n6Dm1ba8OcAHOynva2kurwwSClASdvcTPOd5yMxm\nJnvszTKz75vZiQBmttLMPpn87BSCh/gvJL//GkGQmGtmH0oGlV5z9zcJOhp8z8xmm9lE4EfAIbqu\nZewC3p8s8wfN7JgennIDwX/6v0peW5GZnWZmN5lZ2ZFcQxfuIGg2/H5y3NgFwArgVndvTl77AwTX\nfmZyTNmPCa4dAHf/E/ALgs4X85P/FtPMbKmZnZfm8sogoQAloebubxP8Nf8qQS+07cB9BM+gUk1d\nOQTdubcTPJTfDVyZ/H4jcC3wZYJg9eBRFOcrBD3gNgAbgSeB54GmLr7zWLK8vwT2AF/tyYncPQF8\nMnmOHxN0BPk5wTOh14+o9Ic/1y5gHnAa8Bzwn8kyf6tNsq8SPINaT3DtT9HmeVzSpcDPgFuA/yHo\nQTgdeCmd5ZXBw9o/FxWRnkrWhl4G/sXd78x0eUQGGnWSEOkhMzuVoAazhaCH3fUEtbe1mSyXyECl\nACXSc0Yw8PYkgudaW4GZ7v73Lr8lIkdETXwiIhJK6iQhIiKhlPEmvg9+8INeVFSU6WKIiEg/eeaZ\nZ/a6e3dzSmY+QBUVFbFlS8bWjRMRkX5mZrt7kk5NfCIiEkoKUCIiEkoKUCIiEkoZfwbVmebmZl5+\n+WWamrqaQUZ6Izc3l9GjR5OTk9N9YhGREAhlgHr55ZcZPnw4RUVFdFhbRo6Au/PGG2/w8ssvM2bM\nmO6/ICISAqFs4mtqamLkyJEKTmliZowcOVI1UpEsUl8P11yd4PKR1bywYAWXj6zmmqsT1Nf3Lo9F\ni2D0aFi3LtgvWkSv8sikUNagAAWnNNP9FMke0Sh85sIEDzeVc1qkltz/inFXJJ8/3l1GyU9qePAX\nESoqus+jqgoSBxP82+lR5j+/lfp/nMINP6zg/vsjrF1Lt3lkWihrUL2R+guhsBCGDAn22fQXgohI\nW/X1QWCZ1RhlmteS29IA7hzT0sA0r2VWY5Sqqq7/j0vl0RRPUN1SzldrF8CNN/K1pxdQ3VJOUzzR\nbR5hkNUBKhqF4mK45x44cADcg/099wTHo9Ejz/u00047ou899NBDvPDCC90nFBHpxMGDEItB9fKt\nDLdYu8+GW4zqFXXEYtDc3H0eifVRzi6oZWhjEOSGNjZwdkEtifXRbvMIg6wNUKm/EOLx997k5ubg\n+NH8hfDkk08e0fcUoETkaCxZEgQXpkyB/Pz2H+bnQ0kJsRgsXtyDPLZuTb5oIxaDurpu8wiDrA1Q\n3/te99G/uRluvfXI8i8oKABg06ZNzJ49m6qqKsaNG8ell15Kagb4ZcuWMWHCBIqLi1myZAlPPvkk\nv/rVr/j6179OSUkJ9fX1/PCHP2TatGlMnjyZCy+8kHg8DsAVV1zBV77yFU477TT+4R/+gbVr311S\n6Oabb+bkk09m8uTJLFu2DID6+nrmzp3L1KlTmTlzJjt27DiyCxORUItGobISYmdUQFkZFBSAWbAv\nKyN2RgXz5sEjj3SfR9P4zoNc07iSbvMIBXfP6DZ16lTv6IUXXnjPsY6GD3cPGvW63goLu82qU/n5\n+e7u/thjj3lhYaH/7W9/80Qi4dOnT/fHH3/c9+7d6yeddJIfOnTI3d3feustd3e//PLLfc2aNa35\n7N27t/X19ddf77fffntruqqqKk8kEv7nP//Zx44d6+7uGzZs8E984hMei8Xc3f2NN95wd/czzzzT\nd+7c6e7uTz31lM+ZM6fX19ST+yoimZX6v23ePPf4gRb39evdV6xwX7/e4wdafN687v9vS+Vx3rkt\n3jL7LPeCAncz94ICb5l9lp93bstR/f94tIAt3oP4ENpefN1paEhvuq6ceuqpjB49GoCSkhJ27drF\n9OnTyc3N5corr6SyspLKyspOv/v8889zww03sG/fPhoaGigvL2/97FOf+hRDhgxhwoQJ/P3vwZp3\nGzdu5POf/zx5eXkAHHvssTQ0NPDkk09y0UUXtX73nXfeOfoLE5HQueyy4Dn6iBHQ4hFa5lZy8MxK\n3vc+aGkMjufkwOc+130ehR+IEF9VQ97mKIln64icUkJ8VgWFX450m0cYZG0TX7IFLm3pujJs2LDW\n15FIhJaWFoYOHcrTTz9NVVUV1dXVzJ07t9PvXnHFFaxcuZI//elP3Hjjje3GIrXN17tYOPLQoUOM\nGDGCurq61m379u1Hf2EiEjqLFwcB6MorIS8Ptm2DCy4I9nl5sHBh8Pm11/Ywj+ERnvtoJfOevIHn\nPlpJ3vBIj/IIg6wNUJddFtzgrvTlXwgNDQ3s37+fc889l1tvvZXnnnsOgOHDh3PgwIHWdAcOHOC4\n446jubmZVatWdZvvOeecw3333df6rOrNN9+ksLCQMWPGsGbNGiAIZqnzicjAMnYsrF0btP4sXQql\npbBxI0ybBsuWBX0c1q4N0vVlHmGQtQEq9RdCV/ryL4QDBw5QWVlJcXExp59+OrfccgsAl1xyCd/5\nzneYMmUK9fX1rFixgrKyMmbMmMG4ceO6zXfu3Lmcf/75lJaWUlJSwne/+10AVq1axb333svkyZOZ\nOHEiDz/8cN9cmIikRyIB1dWwYkWwTyR6/NWKCpgwAZqaYPjwYIxnQQE0NgbHezLANh15ZJp11bTU\nH0pLS73jgoXbt29n/Pjx3X43NVK6ubl9j76cnGDLhpHS/amn91VEjk79zgTNZ5Yz+tVa8okRI5+X\nP1JGzqM1jD0pkuniZZyZPePupd2ly9oaFATBZ9s2uOqq9jNJXHVVcFzBSUT6WzQK/1wc5fhXainw\nBsydAm/g+Fdq+efi6FFNIDDYpD1AmdklZrbdzGJmVm9mM9N9jrbGjoWVK2H//qAGvX9/8D7sbasi\nMvCkJhCY8M5W8mg/QDaPGOPfqcuKKYY6dRRNlkcqrd3Mzewc4GbgYuBp4Lh05i8iEmapKYaongIL\n8tuNc4kU5HPT6hJuqoSsG2efSEB5OdTWBheYnx8MIq6pgUjfNVmmuwb1r8Byd3/K3Q+5+yvu/kqa\nzyEiEkqtUwxVdD4LBBUVWTHF0HtEo0Fwagjm9KOhIXjfx+2VaQtQZhYBSoFRZvZXM3vZzFaa2THp\nOoeISJi1TlPUFAlqF6tXw/Llwb6mhlhTJDumGOqoizn9+lI6a1AfBnKAKmAmUAJMAW7omNDMrjKz\nLWa2Zc+ePWksgohI5hQUwKZNcPHF0HgwEkSrG26AykoaD0a4+GLYvDk9Ewj0qy4mru1L6QxQjcn9\nHe7+mrvvBW4Bzu2Y0N3vdvdSdy8dNWpUGouQHvv27eMHP/hBn59n06ZNRzxruoiET2oCgREjoKUl\n2OLxd1/3ZJqiUOqiybIvpS1AuftbwMtA24FVmR1kdYR6G6DcnUOHDvX6PApQIgNLOqYpCqVI502W\nfdlBAtI8UNfMlgMVwDygGfgVsMndv3m47xzNQN2+cskll/Dwww/z8Y9/nDlz5rBt2zbeeustmpub\nuemmm7jgggvYtWsX5eXllJWV8cwzz7BhwwY2btzIzTffzIgRI5g8eTLDhg1j5cqV7Nmzh6uvvpqX\nXnoJgNtuu43jjz+e6dOnE4lEGDVqFHfccQczZ/Zpj/yM31eRwSAaDWpLmzfDLbcEfQqGDIHrroMz\nzoChQzVGs6cDddM9m/kK4IPATqAJeBD4tzSfo899+9vf5vnnn6euro6Wlhbi8TiFhYXs3buX6dOn\nc/755wPwl7/8hfvvv5/p06fz6quvsmLFCp599lmGDx/OmWeeyeTJkwH46le/yrXXXsvpp5/OSy+9\nRHl5Odu3b+fqq6+moKCAJUuWZPJyRSSNKiqCcU41NcEUQw0N7acY0hjNnktrgHL3ZmBRchsQ3J1v\nfOMb/P73v2fIkCG88sorrUtjnHjiiUyfPh2Ap59+mlmzZnHssccCcNFFF7Fz504gWEKj7Sq7b7/9\nNg3pWAdEREIpNYHAypWZLkl2y9r1oPrLqlWr2LNnD8888ww5OTkUFRW1LpmR37FXy2EcOnSIp556\nitzc3L4sqojIgJLVc/H1lbZLZuzfv58PfehD5OTk8Nhjj7F79+5OvzNt2jQ2b97MW2+9RUtLC7/4\nxS9aP/vkJz/JHXfc0fq+Ljl2oOPSHCIi8i4FqE6MHDmSGTNmMGnSJOrq6tiyZQsnn3wyP/nJTw67\nZMbxxx/PN77xDU499VRmzJhBUVER73//+wG4/fbb2bJlC8XFxUyYMIG77roLgPPOO49169ZRUlLC\n448/3m/XJyKSDbJ6uY2waWhooKCggJaWFubPn8/ChQuZP39+povVKlvvq4gMLINiuY2w+da3vkVJ\nSQmTJk1izJgxfOpTn8p0kUREspY6SaRRavVbERE5egpQIiJtJRLBaNutW4M56Coq+nzGBOmcApSI\nSJKWag8XPYMSEUFLtYeRApSIDHoDeqn2LKYA1U8KkgvAvPrqq1RVVXWZ9rbbbiMej7e+P/fcc9m3\nb1+flk9kMEst1b5i/RQiBe1niIkU5HPT+hJiMWhuzlABB6mBEaASCaiuhhUrgn0i0U+n7f15PvKR\nj7B27dou03QMUBs2bGDEiBG9PpeI9MyAXao9y2V/gEokoLwcFiyAG28M9uXlRx2kdu3axbhx47j0\n0ksZP348VVVVxONxioqKWLp0Kaeccgpr1qyhvr6euXPnMnXqVGbOnMmOHTsAePHFF/nEJz7BySef\nzA033NAu30mTJiWLnmDJkiVMmjSJ4uJi7rjjDm6//XZeffVV5syZw5w5cwAoKipi7969ANxyyy1M\nmjSJSZMmcdttt7XmOX78eP7pn/6JiRMn8slPfpLGxkZEpGcG7FLt2c7dM7pNnTrVO3rhhRfec+yw\n1q93LyhwD5ZdCbaCguD4UXjxxRcd8CeeeMLd3T//+c/7d77zHT/xxBP95ptvbk135pln+s6dO93d\n/amnnvI5c+a4u/t5553n999/v7u7r1y50vPz81vznThxoru7/+AHP/ALL7zQm5ub3d39jTfecHf3\nE0880ffs2dN6jtT7LVu2+KRJk7yhocEPHDjgEyZM8GeffdZffPFFj0QivnXrVnd3v+iii/yBBx54\nzzX16r6KDCLDhwf/dcyb5x6Pt/8sHg+Og3thYWbKN9AAW7wH8SH7a1Bbtybr5m3EYpCckPVofPSj\nH2XGjBkAXHbZZTzxxBMAXHzxxUAwtdGTTz7JRRddRElJCV/84hd57bXXAPjDH/7AggULAPjcYdZ3\n3rhxI1/84hcZOjTo7Z9aquNwnnjiCebPn09+fj4FBQV8+tOfbp3Db8yYMZSUlAAwdepUdu3adRRX\nLjK4DNil2rNc9geoKVOg47IX+fmQ/M/6aJhZp+9Ty2wcOnSIESNGUFdX17pt3779sN/vS8OGDWt9\nHYlEaGlp6bdzi2S7AbtUe5bL/gDVxUPNo/XSSy/xxz/+EYCf/exnnH766e0+LywsZMyYMaxZswYI\nmkufe+45AGbMmMHPf/5zIFhTqjPnnHMO//mf/9kaTN58803g8MtwzJw5k4ceeoh4PE4sFmPdunV9\nvky8yGAwdiysXRusfrt0KZSWwsaNMG0aLFsWNMqsXavVcPtb9geoSOcPNdMxNcnHP/5x7rzzTsaP\nH89bb73Fl770pfekWbVqFffeey+TJ09m4sSJPPzwwwB8//vf58477+Tkk0/mlVde6TT/L3zhC5xw\nwgkUFxczefJkfvaznwFw1VVXMXfu3NZOEimnnHIKV1xxBaeeeiplZWV84QtfYMqUKUd9nSIS/E07\nYQI0NQVLtQ8Z0n6p9jT8zSu9pOU2DmPXrl1UVlby/PPPZ7Qc6RSG+yoiouU2REQkqylAHUZRUdGA\nqj2JiGSb0AaoTDc9DjS6nyKSbUIZoHJzc3njjTf0n2qauDtvvPEGubm5mS6KiEiPhXI9qNGjR/Py\nyy+zZ8+eTBdlwMjNzWX06NGZLoaISI+FMkDl5OQwZsyYTBdDREQyKJRNfCIiIgpQIiISSgpQIiIS\nSn0SoMzsY2bWZGY/7Yv8RURk4OurGtSdwH/3Ud4iIjIIpD1AmdklwD7gd+nOW0TkcOrrYdEiGD0a\n1q0L9osWBcclO6U1QJlZIbAcuC6d+YqIdCUaheJi+NEPE1z7sWrmP7+Cr/1jNT/6YYLi4uBzyT7p\nHge1ArjX3V/uarE+M7sKuArghBNOSHMRRGQwqa+HqipoiieooZzZtbWwOcbXcvMpaSmjvKWGqqoI\n27ZpPadsk7YalJmVAGcDt3aX1t3vdvdSdy8dNWpUuoogIoPQwYPBgoKJ9VHOLqhlaGMDuDO0sYGz\nC2pJrI8Si0Fzc6ZLKr2Vzia+2UAR8JKZvQ4sAS40s2fTeA4RkXaWLAkCFFu3Jl+0EYtBXR2xWLCs\nu2SXdAaou4GxQElyuwv4NVCexnOIiLQTjUJlJTSNnwL5+e0/zM+naVwJ8+bBI49kpnxy5NIWoNw9\n7u6vpzagAWhyd834Kkesvh6uuTrB5SOreWHBCi4fWc01VyfUM0taFRTApk3wmfsqSJSWBQfMoKCA\nRGkZn7mvgs2bg8OSXfpsslh3/1Zf5S2DQzQKn7kwwcNN5ZwWqSX3v2LcFcnnj3eXUfKTGh78RYSK\nikyXUjLtssvgnnug8AMR4qtqyNscJfFsHZFTSojPqqDwyxFycuBzn8t0SaW3NNWRhFKqZ9asxijT\nvJbcluDB9zEtDUzzWmY1Rqmq6tkYF42PGdgWL4acHLjySsgbHuG5j1Yy78kbeO6jleQNj7BwYfD5\ntddmuqTSWwpQEkqpnlnVy7cy3No/+B5uMapX1PWoZ1ZqfMw998CcOTB/PsyeHbzX+JiBYexYWLsW\nGhpg6VIoLYWNG2HaNFi2LPgdrV2rLubZSAFKQqm1Z9aUzh98U1LSbc+sVC0sHodEc4Kvj6+GFSv4\n+vhqEs0J4nF6XAuTcKuogAkToKkJhg+HIUOCZ06NjcFxNQVnJ8v0suqlpaW+ZcuWjJZBwmfIEJg1\nC6ofTpD/6XKorQ0iVn4+lJUR+2UN886P8PjjkEh0nsf27TB+PEGC8nL8qVosHsPz8rHpZVBTA5EI\nO3bAuHH9enkig5qZPePupd2lUw1KQinVM+viz0ZofKgGVq+G5cth9WoaH6rh4s9Guu2Z1VoLi0ah\nthaLBc+xLNYQBLxoVONjREJMAUpC6bLLggfbI0ZAi0domVtJ/LobaJlbSYtHGDGCbntmpcbHHKzt\nfADnwafrND5GJMQUoKRPHG3PuXY9s/Jg2za44IJgn5dHj3pmpWph//7IFDyv/XMsz8vn36MlGh8j\nEmIKUJJ26ZhZOh09s1K1sL9+LBjA6fkFuBmeHwzg/OvHKjQ+RiTEFKAkrdrOLF3dUs5XaxfAjTfy\ntacXUN1STlM80eOec0fbMytVC1v4TxHsNzXU37SaH49ZTv1Nq7Hf1PD5L0Q0PkYkxNSLT9Kqtedc\ndTUsWBBUgVIKCoLODpWV/dZzLhqFlhbYvBluuQXcg0B33XVwxhkwdKi6IIv0N/Xik4wI28zS6Rwf\noxkpRPqXApSkVRhnlh47FlauhP37gyFR+/cH73szs4BmpBDpfwpQklYDcWbptjNSNDcHPQgh2Dc3\noxkpRPqIApSkVarnXOEHIsTX1ZD46WoOfnM5iZ+uJr6uhsIPZN/M0ql5Ad2D7bTTguMzZrx7TCu2\nHjk1ncrhKEBJWg3EmaVbn6sBJBIM+20wp9+w31a3zrOkGSmOTDqGJMjApV58knYDredcOuYFlPeq\nrw+CU1M8QQ3lzD6mlqFNMVpy89nUWEY5NeTmRdi2TTORDzTqxScZM9Bmlk49V/vuWVH8qdqg67w7\nNDTgT9Xy3bOiWfdcLQxSTaeJ9VHOLqhlaGNwX4c2NnB2QS2J9VE1nQ5yClDSJ9LRcy4sUs/VJh7c\nCvEOXefjMSYcrMu652phELYhCRI+ClAi3Ug9Vzvp4k66zuflc9JnSrLuuVoYhHFIgoSLApRIN1Lz\nAu6eUMFfji3jAAUkMA5QwF9HlvHSxAqt2HoEBuKQBEmvoZkugEg2qKiA+voIt82r4e8/jvLxpjr+\nJ7eED8+r4GsnRxScjsBllwUDnQs/ECG+qoa8zVESz9YROaWE+KwKCr+cfUMSJL3Ui09EMiLVi6+6\nOujd+dxzwcz1N98MkycHvUDPOw/14huA1ItPJIQ0KPVd6VhSRQY2BSiRfqL5/N5roA1JkPRSE59I\nP0g1Z8XjwftHHw2C1KOPwllnBcdSKwerxiADnZr45IipGSr92s3n15Lg9H3BdEkz91fjLQnN5yfS\nCQUoaUdzo/WN1kGpiQSUl5Pzv4OVhnP+9wIoL4dEQoNSRTpQE5+00txofSc1n1/0mmpyP//elYab\n7lvN3JWVms9PBoV+b+Izs2Fmdq+Z7TazA2ZWZ2Z6xJlFNDda30kNSl17/Va8w7Q+Houx5vo6DUoV\n6SCdTXxDgb8Bs4D3AzcAD5pZURrPIX1Ic6P1ndR8fq8fNwXy3jtd0t+PK8nKQan19XDN1QkuH1nN\nCwtWcPnIaq65OqHnlZIe7t5nG7ANuLCrNFOnTnUJBzP32bPdG9esdy8oSK3FF2wFBd64Zr3PmuU+\nZEimS5p9/vpX97w890d/2+KHzjzLW44p8ATmLccU+KEzz/Lf/abF8/KCdNliwwb3gmNa/Hd2ljcO\nLXA38/jQAv+dneUFx7T4hg2ZLqGEFbDFexBD+uwZlJl9GNgNlLj7jg6fXQVcBXDCCSdM3b17d5+U\nQXqnsBAOHIDzzk2wLl5OZMu76x4lSsuYn1fD+g0RCguD2cmld1LrZP3+sQQ7bo0ymTq2WQnjrq1g\n5uxIVq2TlXpeOSdezWoWMJx3n6kdoIAFrOaxvEo9r5ROZbSbuZnlAKuA+zsGJwB3v9vdS929dNSo\nUX1RBDkCA3G59jBJDUptPBjh94WV/PuQG9g8vJL4O5FeDUoNwzCA1PPK6uVbGW7tm4OHW4zqFXV6\nXilHryfVrN5sBEHv58AGIKe79GriC4/WZqhH3Vta3J95xv3ss4N9S4v7737nWdcMNdBs2BD8Gwwb\n2uLfnb3effly/86s9T5saNBE2F/Nauee697Q4O7rO28O9vXrvaEhSCfSEZlo4jMzA34EFAHnuntj\nd99RN/NwGWjLtQ8kYRoGkOo2X/1wgvxPl0Ptu83BlJUR+2UN886PqNu8dCpTTXz/AYwHzutJcJLw\n0dxo4ZXuYQBH0wMv1W3+4s9GaHyoBlavhuXLYfVqGh+q4eLPRtRtXo5eT6pZPdmAEwEHmoCGNtul\nXX1PTXwiPdParLZ8edDlsm2zmpn7ihU9blY72h54X/qSe06O+6WXur/9tntzs3ssFuzffjs4npPj\nfs01abl0GWDoYRNf2mpQ7r7b3c3dc929oM22Kl3nEBnM0rVEen09VFXBrMYo07yW3JagJnZMSwPT\nvJZZjVE4mfN5AAAPV0lEQVSqqrrudLF4cdCh5sor353k9oILgn1eHixcGHx+7bVHf90yeGkuPpEs\nka4l0tPRA09rOUl/UIASyRLpGgbQOmPIlM5rYpSU9GjGED2vlL6myWJFskS6lkhXDzzJtJ724lOA\nEski6RgGkJoxZN48WPPzBMdsikJdHZSU0Di7gosuifDrX6MZQ6TPaMFCkQEoHc1qqabCESOgxSO0\nzK0kft0NtMytpMUjjBiBZgyRUFCAEskyY8fCypVB7SaRCPYrV/a8Q4J64Em2UIASGWTUA0+yhQKU\nyCCkHniSDdRJQkRE+pU6SYiISFZTgBIRkVBSgBIRkVBSgBpgwrDaqohIOihADSDRaDAVzj33wJw5\nMH8+zJ4dvC8uDj4XEckWClADRGoJhXg8mIV64cLg+MKFwft4nG6XUBARCRMFqAEitYSCO3hLgtP3\nVcOKFczcX423JHCnV6utiohk2tBMF0DSY8kSePBByM9NQHk5OckZqnOSM1RTU0OsKcLixfDrX2e6\ntCIi3VMNaoBoXW11XTRYPqEhWCWVhgaoraVpXbRHq62KiISFAtQAkVptde31W/FY+1VSPRZjzfV1\nPVptVUQkLBSgBojUEgqvHzcF8jqskpqXz9+PK9ESCiKSVRSgBojUEgpTb6iAsjISxxRwCCNxTAGU\nlXHK9RVaQkFEsoo6SQwQrUsoNEb458k17Hg0ymTq2NZUwriSCmY2RbSEgohkFQWoAaSiIhjnVFMT\n4feFlWxoqKSgAE54J1hCQcFJRLKJltsQEZF+peU2REQkqylAiYhIKClAiYhIKClAiYhIKKU1QJnZ\nsWa2zsxiZrbbzD6bzvxFRGTwSHc38zuBg8CHgRLg12b2nLv/Oc3nERGRAS5tNSgzywcuBL7p7g3u\n/gTwK0CT64iISK+ls4nvJKDF3Xe2OfYcMLFjQjO7ysy2mNmWPXv2pLEIIiIyUKQzQBUAb3c4th8Y\n3jGhu9/t7qXuXjpq1Kg0FkFERAaKdAaoBqCww7FC4EAazyEiIoNEOgPUTmComX2szbHJgDpIiIhI\nr6UtQLl7DPglsNzM8s1sBnAB8EC6ziEiIoNHugfqLgKOAf5/YDXwJXUxFxGRI5HWcVDu/ibwqXTm\nKSIig5OmOhIRkVBSgBIRkVBSgAqJ+npYtAhGj4Z164L9okXBcRGRwUgBKgSiUSguhnvugTlzYP58\nmD07eF9cHHwuIjLYKEBlWH09VFVBPA7NzbBwYXB84cLgfTwefK6alIgMNumezVx66eBBiMXeff/O\nO8F+xgxwf/f4jh39Wy4RkUxTDSrDlixpH6CGDWu/h+DzxYv7t1wiIpmmAJVh0ShUVrYPUm3FYjBv\nHjzySP+WS0Qk0xSgMqygADZtgosvhsbG9p81NgbHN28O0omIDCYKUBl22WWQkwMjRkBLS7DF4+++\nHjEi+PxzWvZRRAYZBagMW7w4CEBXXgl5ebBtG1xwQbDPywt68+XkwLXXZrqkIiL9SwEqw8aOhbVr\noaEBli6F0lLYuBGmTYNly4JnUGvXBulERAYTdTMPgYqKYJzTb6IJqnKjjGvayo5hU2iKVTBhQkTB\nSUQGJQWokBhblOCOneUQqQViEMmHnWVQVANEMl08EZF+pya+sIhGobY2aOtzD/a1tZrnSEQGLQWo\nsNi69b2DoWIxqKvLTHlERDJMASospkyB/Pz2x/LzoaQkM+UREckwBaiwqKiAsrJgRK5ZsC8rC46L\niAxC6iQRFpEI1NQEz5zq6oKaU0VFcFxEZBBSgAqTSCSYmK+yMtMlERHJODXxiYhIKClAiYhIKClA\niYhIKClAiYhIKClAiYhIKClAiYhIKClAiYhIKClApUF9PSxaBKNHw7p1wX7RouC4iIgcmaMOUGY2\nzMzuNbPdZnbAzOrMbNDMzxONQnEx3HMPzJkD8+fD7NnB++JiTUYuInKk0lGDGgr8DZgFvB+4AXjQ\nzIrSkHeo1ddDVRXE49DcHCzPDsG+uTk4XlWlmpSIyJE46qmO3D0GfKvNoWozexGYCuw62vzD7ODB\n9itkvPNOsJ8xI1jSKWXHjv4tl4jIQJD2Z1Bm9mHgJODPXaS5ysy2mNmWPXv2pLsI/WbJkvYBatiw\n9nsIPl+8uH/LJSIyEKQ1QJlZDrAKuN/dD1tvcPe73b3U3UtHjRqVziL0q2g0mNe14zqDKbEYzJsH\njzzSv+USERkIug1QZrbJzPww2xNt0g0BHgAOAl/uwzKHRkEBbNoEF18MjY3tP2tsDI5v3hykExGR\n3uk2QLn7bHe3w2ynA5iZAfcCHwYudPfmPi53KFx2GeTkwIgR0NISbPH4u69HjAg+/9znMl1SEZHs\nk64mvv8AxgPnuXtjd4kHisWLgwB05ZWQlwfbtsEFFwT7vLygN19ODlx7baZLKiKSfdIxDupE4ItA\nCfC6mTUkt0uPunQhN3YsrF0LDQ2wdCmUlsLGjTBtGixbFjyDWrs2SCciIr2Tjm7muwFLQ1myUkVF\nMM7pN9EEVblRxjVtZcewKTTFKpgwIaLgJCJyhLTkexqMLUpwx85yiNQCMYjkw84yKKoBIpkunohI\nVtJcfOkQjUJtbdDW5x7sa2s1z5GIyFFQgEqHrVvfOxgqFoO6usyUR0RkAFCASocpUyA/v/2x/Hwo\nKclMeUREBgAFqHSoqICysmBErlmwLysLjouIyBFRJ4l0iESgpiZ45lRXF9ScKiqC4yIickQUoNIl\nEgkm5quszHRJREQGhEHfxKfVcEVEwmlQByithisiEl6DNkBpNVwRkXAbtM+gtBquiEi4DdoalFbD\nFREJt0EboLQarohIuA3aAKXVcEVEwi1rA1Sqe3hhIQwZEux70z1cq+GKiIRbVgaott3DDxwIOjUc\nONC77uFaDVdEJNzM23ZZy4DS0lLfsmVLj9PX1wdBKB4/fJpUwOluscBoNKgtbd4Mt9wSBLohQ+C6\n6+CMM2DoUE2nJyKSbmb2jLuXdpcu62pQ3/teME6pK83NcOut3edVUQETJsA78QRVudV801Zw4bBq\nmmIJJkxQcBIRyaSsq0EVFgbNeT1Jt39/DzJMJKC8PFhgMBYLlskoKwsmf9VkryIiaTdga1ANDelN\np9VwRUTCKesCVE+7ffe4e7hWwxURCaWsC1Cp7uFd6VX3cK2GKyISSlkXoFLdw7vSq+7hWg1XRCSU\nsm6y2LFjYe3aYKbx5ub2PfpycoJt7druu5i30mq4IiKhlHW9+FLq64Ou5A88EPRrKCgImvWuvbYX\nwUlERPpdT3vxZW2AEhGR7DRgu5mLiMjgoAAlIiKhpAAlIiKhpAAlIiKhlPFOEma2B9id0UKExweB\nvZkuxAChe5keuo/po3v5rhPdfVR3iTIeoORdZralJz1bpHu6l+mh+5g+upe9pyY+EREJJQUoEREJ\nJQWocLk70wUYQHQv00P3MX10L3tJz6BERCSUVIMSEZFQUoASEZFQUoASEZFQUoDqQ2b2ZTPbYmbv\nmNmP2xyfbma/NbM3zWyPma0xs+O6yGeTmTWZWUNy+59+uYAQ6eJeTkgefyu5bTSzCV3kc6yZrTOz\nmJntNrPP9ssFhEQa76N+k4e5lx3S/IuZuZmd3UU+RWb2mJnFzWxHV2kHGwWovvUqcBPwow7HP0DQ\no6cIOBE4ANzXTV5fdveC5PbxdBc0CxzuXr4KVAHHEozU/xXw8y7yuRM4CHwYuBT4DzObmPbShle6\n7iPoN3m4ewmAmY0FLgJe6yaf1cBWYCRwPbDWzLqdZWEwUIDqQ+7+S3d/CHijw/Gou69x97fdPQ6s\nBGZkpJBZoot7uc/dd3nQHdWABPCPneVhZvnAhcA33b3B3Z8g+I/4c31b+vBIx32UwOHuZRt3AksJ\n/iDqlJmdBJwC3Ojuje7+C+BPBL/TQU8BKhzOAP7cTZp/N7O9ZvYHM5vdD2XKKma2D2gC7gD+38Mk\nOwlocfedbY49BwymGlSXengfU/SbPAwzuwh4x903dJN0IvD/ufuBNsf0m0wamukCDHZmVgz8C3BB\nF8mWAi8Q/CV2CbDezErcvb4fipgV3H1EsoZ0OYeffLgAeLvDsf3A8L4sWzbp4X0E/SYPy8yGEwT3\nc3qQvIDgN9jWfuD4dJcrG6kGlUFm9o9AFPiquz9+uHTuXuvuB9z9HXe/H/gDcG5/lTNbuHsMuAv4\niZl9qJMkDUBhh2OFBM8AJakH91G/ya59C3jA3Xf1IK1+k11QgMoQMzsR2AiscPcHevn11HMCea8h\nQB6d/wW6ExhqZh9rc2wy3TevDkZd3cfO6Df5rrOAr5jZ62b2OvBR4EEzW9pJ2j8D/5CsdaXoN5mk\nANWHzGyomeUCESBiZrnJY8cDjwIr3f2ubvIYYWblbb57KcEzq0f6/grCo4t7eY6ZTTGziJkVArcA\nbwHbO+aRrBn8ElhuZvlmNoOgabW3fyBkrXTcR/0mA4e7lwQBahJQktxeBb5I0GmineTz0DrgxuT3\n5wPFwC/66TLCzd219dFGUNX3Dtu3gBuTrxvabm2+9w0gmnw9Cvhvgir/PuAp4JxMX1uI7uVFwI7k\nPdwD/Boo7uxeJt8fCzwExICXgM9m+tqy7T7qN9n1vewk3S7g7Dbv7wLuavO+CNgENAL/0zbtYN80\nWayIiISSmvhERCSUFKBERCSUFKBERCSUFKBERCSUFKBERCSUFKBERCSUFKBE+lByLaCqTJdDJBsp\nQIkcgWTg6Wr7cTLpccD6DBZVJGtpoK7IETCz/9XmbSXwQ4JglNLo7h1nqRaRXlANSuQIuPvrqY1g\nup92x1LBqW0TX3JpbzezS8xss5k1mtlWMys2s0lm9mRyKfonzGxM2/OZ2Xlm9kxymfUXzezfzOx9\n/X7hIv1IAUqk//0rcDMwhSC4rSZYIPB64FQgF7g9ldjMyoFVBCsvTwQWEizP3t2CgiJZTQFKpP/d\n4u4b3H0H8D1gAnCHuz/m7n8mCERz2qS/HviOu9/n7vXu/hjBgoFXm5mWuJABSyvqivS/bW1e/z25\n/1OHY/lmlufucWAqcGqH9YSGAMcA/wt4rS8LK5IpClAi/a+5zWvv4tiQNvt/BdZ0ktee9BZNJDwU\noETC71lgnLv/NdMFEelPClAi4bccqDaz3cCDQAvBiq2nuvs/Z7RkIn1InSREQs7da4B5BB0nnk5u\nywhWBBYZsDRQV0REQkk1KBERCSUFKBERCSUFKBERCSUFKBERCSUFKBERCSUFKBERCSUFKBERCSUF\nKBERCaX/C+0Ay+wF3MDGAAAAAElFTkSuQmCC\n",
|
||
"text/plain": [
|
||
"<matplotlib.figure.Figure at 0x7f45085de278>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"plt.title(\"Testing the model\", fontsize=14)\n",
|
||
"plt.plot(t_instance[:-1], time_series(t_instance[:-1]), \"bo\", markersize=10, label=\"instance\")\n",
|
||
"plt.plot(t_instance[1:], time_series(t_instance[1:]), \"w*\", markersize=10, label=\"target\")\n",
|
||
"plt.plot(t_instance[1:], y_pred[0,:,0], \"r.\", markersize=10, label=\"prediction\")\n",
|
||
"plt.legend(loc=\"upper left\")\n",
|
||
"plt.xlabel(\"Time\")\n",
|
||
"\n",
|
||
"save_fig(\"time_series_pred_plot\")\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Without using an `OutputProjectionWrapper`"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 55,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"n_steps = 20\n",
|
||
"n_inputs = 1\n",
|
||
"n_neurons = 100\n",
|
||
"\n",
|
||
"X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
|
||
"y = tf.placeholder(tf.float32, [None, n_steps, n_outputs])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 56,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"cell = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons, activation=tf.nn.relu)\n",
|
||
"rnn_outputs, states = tf.nn.dynamic_rnn(cell, X, dtype=tf.float32)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 57,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"n_outputs = 1\n",
|
||
"learning_rate = 0.001"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 58,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"stacked_rnn_outputs = tf.reshape(rnn_outputs, [-1, n_neurons])\n",
|
||
"stacked_outputs = tf.layers.dense(stacked_rnn_outputs, n_outputs)\n",
|
||
"outputs = tf.reshape(stacked_outputs, [-1, n_steps, n_outputs])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 59,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"loss = tf.reduce_mean(tf.square(outputs - y))\n",
|
||
"optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)\n",
|
||
"training_op = optimizer.minimize(loss)\n",
|
||
"\n",
|
||
"init = tf.global_variables_initializer()\n",
|
||
"saver = tf.train.Saver()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 60,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"0 \tMSE: 10.1622\n",
|
||
"100 \tMSE: 0.406077\n",
|
||
"200 \tMSE: 0.114877\n",
|
||
"300 \tMSE: 0.0687288\n",
|
||
"400 \tMSE: 0.0680822\n",
|
||
"500 \tMSE: 0.0624701\n",
|
||
"600 \tMSE: 0.0578985\n",
|
||
"700 \tMSE: 0.0512753\n",
|
||
"800 \tMSE: 0.051964\n",
|
||
"900 \tMSE: 0.0506501\n",
|
||
"1000 \tMSE: 0.0497327\n",
|
||
"1100 \tMSE: 0.055799\n",
|
||
"1200 \tMSE: 0.0414312\n",
|
||
"1300 \tMSE: 0.0482651\n",
|
||
"1400 \tMSE: 0.0423256\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"n_iterations = 1500\n",
|
||
"batch_size = 50\n",
|
||
"\n",
|
||
"with tf.Session() as sess:\n",
|
||
" init.run()\n",
|
||
" for iteration in range(n_iterations):\n",
|
||
" X_batch, y_batch = next_batch(batch_size, n_steps)\n",
|
||
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
||
" if iteration % 100 == 0:\n",
|
||
" mse = loss.eval(feed_dict={X: X_batch, y: y_batch})\n",
|
||
" print(iteration, \"\\tMSE:\", mse)\n",
|
||
" \n",
|
||
" X_new = time_series(np.array(t_instance[:-1].reshape(-1, n_steps, n_inputs)))\n",
|
||
" y_pred = sess.run(outputs, feed_dict={X: X_new})\n",
|
||
" \n",
|
||
" saver.save(sess, \"./my_time_series_model\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 61,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"array([[[-3.40452433],\n",
|
||
" [-2.46502566],\n",
|
||
" [-1.04943395],\n",
|
||
" [ 0.78888667],\n",
|
||
" [ 2.2034986 ],\n",
|
||
" [ 3.10955405],\n",
|
||
" [ 3.45868301],\n",
|
||
" [ 3.41553068],\n",
|
||
" [ 2.90523958],\n",
|
||
" [ 2.25080061],\n",
|
||
" [ 1.67066932],\n",
|
||
" [ 1.52167678],\n",
|
||
" [ 1.89057231],\n",
|
||
" [ 2.74813795],\n",
|
||
" [ 3.98666906],\n",
|
||
" [ 5.24567223],\n",
|
||
" [ 6.19634914],\n",
|
||
" [ 6.65263987],\n",
|
||
" [ 6.60886383],\n",
|
||
" [ 6.01817656]]], dtype=float32)"
|
||
]
|
||
},
|
||
"execution_count": 61,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"y_pred"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 62,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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\nT4HmEzXXiEjavH1PhNYN8dS77tDYSOuGWt6+J5LuquUMBXkRSYtIBO68fCOF0c6pdwujTfz48noi\nivNJoSAvIoMuMU7r822TaabzQ4XNFPP7tjKN05okCvKDJBwfweCtt96iurq617K33HILzc3N7Z/P\nOussdu3aldL6iQymxDita6KVDJ9ZgRcHqXe9OMzwmRWsiVZm9jitWSQ3gvwgD4z7wW4Pfj8f//jH\nWblyZa9lugb5xx9/nBEjRhz0vkQyVfs4rfHUu/ZIkHrXHvkg9W7GjtOaZbI/yKdoYNytW7cybtw4\nLrzwQsaPH091dTXNzc2MHj2axYsXc8IJJ7BixQoaGho488wzmTJlCtOmTWPz5s0AvPbaa3zmM5/h\n+OOP5+qrr+603YkTJ8arHmPRokVMnDiR0tJSbrvtNm699VbeeustZsyYwYwZMwAYPXo07777LgDL\nli1j4sSJTJw4kVtuuaV9m+PHj+fv//7vOe644/j85z9PS0sLIpkqMaRpe6DvMIRfIsDPng1r16a7\npjmgP6kqUzkNONXw6tXu4bB7cG8+mMLhYP4AvPbaaw74M8884+7uF198sd94440+atQov+GGG9rL\nnXbaab5lyxZ3d3/uued8xowZ7u5+9tln+/333+/u7suXL/fi4uL27SbSGP/whz/08847z9va2tzd\nfceOHe7uPmrUKN++fXv7PhKf6+rqfOLEid7Y2Oh79uzxCRMm+B/+8Ad/7bXXPBQK+caNG93d/fzz\nz/cHHnjggGNSqmHJFMOHB/9VZ892b27uvKy5OZgP7iUl6alfNqCfqYaz/0o+hQPjfuITn2Dq1KkA\nzJs3j2eeeQaACy64AAjSGDz77LOcf/75lJWV8bWvfY23334bgN/+9rfMnTsXgC/3MNjkunXr+NrX\nvsaQIcHjCok0xT155plnmDNnDsXFxYTDYf7mb/6mPefNmDFjKIuPEzllyhS2bt06gCMXSa2sHqc1\ny2R/kE/hwLhm1u3nRIrh/fv3M2LECOrr69unV155pcf1U2no0KHt70OhENFodND2LXKwsnqc1iyT\n/UE+hQPjvvHGG/zud78D4Cc/+QmnnHJKp+UlJSWMGTOGFStWAEHT14svvgjA1KlTeeSRR4AgJ313\nzjjjDH70ox+1B+T33nsP6DkF8bRp03j00Udpbm6mqamJVatWachAyUpZPU5rlsn+IJ/CgXE//elP\n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\nAABJRU5ErkJggg==\n",
|
||
"text/plain": [
|
||
"<matplotlib.figure.Figure at 0x7f450808d5c0>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"plt.title(\"Testing the model\", fontsize=14)\n",
|
||
"plt.plot(t_instance[:-1], time_series(t_instance[:-1]), \"bo\", markersize=10, label=\"instance\")\n",
|
||
"plt.plot(t_instance[1:], time_series(t_instance[1:]), \"w*\", markersize=10, label=\"target\")\n",
|
||
"plt.plot(t_instance[1:], y_pred[0,:,0], \"r.\", markersize=10, label=\"prediction\")\n",
|
||
"plt.legend(loc=\"upper left\")\n",
|
||
"plt.xlabel(\"Time\")\n",
|
||
"\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Generating a creative new sequence"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 63,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"INFO:tensorflow:Restoring parameters from ./my_time_series_model\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"with tf.Session() as sess: # not shown in the book\n",
|
||
" saver.restore(sess, \"./my_time_series_model\") # not shown\n",
|
||
"\n",
|
||
" sequence = [0.] * n_steps\n",
|
||
" for iteration in range(300):\n",
|
||
" X_batch = np.array(sequence[-n_steps:]).reshape(1, n_steps, 1)\n",
|
||
" y_pred = sess.run(outputs, feed_dict={X: X_batch})\n",
|
||
" sequence.append(y_pred[0, -1, 0])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 64,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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\nRU5ErkJggg==\n",
|
||
"text/plain": [
|
||
"<matplotlib.figure.Figure at 0x7f450809a6d8>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"plt.figure(figsize=(8,4))\n",
|
||
"plt.plot(np.arange(len(sequence)), sequence, \"b-\")\n",
|
||
"plt.plot(t[:n_steps], sequence[:n_steps], \"b-\", linewidth=3)\n",
|
||
"plt.xlabel(\"Time\")\n",
|
||
"plt.ylabel(\"Value\")\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 65,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"INFO:tensorflow:Restoring parameters from ./my_time_series_model\n",
|
||
"Saving figure creative_sequence_plot\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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\nAABJRU5ErkJggg==\n",
|
||
"text/plain": [
|
||
"<matplotlib.figure.Figure at 0x7f45085c3048>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"with tf.Session() as sess:\n",
|
||
" saver.restore(sess, \"./my_time_series_model\")\n",
|
||
"\n",
|
||
" sequence1 = [0. for i in range(n_steps)]\n",
|
||
" for iteration in range(len(t) - n_steps):\n",
|
||
" X_batch = np.array(sequence1[-n_steps:]).reshape(1, n_steps, 1)\n",
|
||
" y_pred = sess.run(outputs, feed_dict={X: X_batch})\n",
|
||
" sequence1.append(y_pred[0, -1, 0])\n",
|
||
"\n",
|
||
" sequence2 = [time_series(i * resolution + t_min + (t_max-t_min/3)) for i in range(n_steps)]\n",
|
||
" for iteration in range(len(t) - n_steps):\n",
|
||
" X_batch = np.array(sequence2[-n_steps:]).reshape(1, n_steps, 1)\n",
|
||
" y_pred = sess.run(outputs, feed_dict={X: X_batch})\n",
|
||
" sequence2.append(y_pred[0, -1, 0])\n",
|
||
"\n",
|
||
"plt.figure(figsize=(11,4))\n",
|
||
"plt.subplot(121)\n",
|
||
"plt.plot(t, sequence1, \"b-\")\n",
|
||
"plt.plot(t[:n_steps], sequence1[:n_steps], \"b-\", linewidth=3)\n",
|
||
"plt.xlabel(\"Time\")\n",
|
||
"plt.ylabel(\"Value\")\n",
|
||
"\n",
|
||
"plt.subplot(122)\n",
|
||
"plt.plot(t, sequence2, \"b-\")\n",
|
||
"plt.plot(t[:n_steps], sequence2[:n_steps], \"b-\", linewidth=3)\n",
|
||
"plt.xlabel(\"Time\")\n",
|
||
"save_fig(\"creative_sequence_plot\")\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Deep RNN"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## MultiRNNCell"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 66,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"n_inputs = 2\n",
|
||
"n_steps = 5\n",
|
||
"\n",
|
||
"X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 67,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"n_neurons = 100\n",
|
||
"n_layers = 3\n",
|
||
"\n",
|
||
"layers = [tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)\n",
|
||
" for layer in range(n_layers)]\n",
|
||
"multi_layer_cell = tf.contrib.rnn.MultiRNNCell(layers)\n",
|
||
"outputs, states = tf.nn.dynamic_rnn(multi_layer_cell, X, dtype=tf.float32)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 68,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"init = tf.global_variables_initializer()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 69,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"X_batch = np.random.rand(2, n_steps, n_inputs)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 70,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"with tf.Session() as sess:\n",
|
||
" init.run()\n",
|
||
" outputs_val, states_val = sess.run([outputs, states], feed_dict={X: X_batch})"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 71,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"(2, 5, 100)"
|
||
]
|
||
},
|
||
"execution_count": 71,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"outputs_val.shape"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Distributing a Deep RNN Across Multiple GPUs"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Do **NOT** do this:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 72,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"with tf.device(\"/gpu:0\"): # BAD! This is ignored.\n",
|
||
" layer1 = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)\n",
|
||
"\n",
|
||
"with tf.device(\"/gpu:1\"): # BAD! Ignored again.\n",
|
||
" layer2 = tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Instead, you need a `DeviceCellWrapper`:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 73,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import tensorflow as tf\n",
|
||
"\n",
|
||
"class DeviceCellWrapper(tf.contrib.rnn.RNNCell):\n",
|
||
" def __init__(self, device, cell):\n",
|
||
" self._cell = cell\n",
|
||
" self._device = device\n",
|
||
"\n",
|
||
" @property\n",
|
||
" def state_size(self):\n",
|
||
" return self._cell.state_size\n",
|
||
"\n",
|
||
" @property\n",
|
||
" def output_size(self):\n",
|
||
" return self._cell.output_size\n",
|
||
"\n",
|
||
" def __call__(self, inputs, state, scope=None):\n",
|
||
" with tf.device(self._device):\n",
|
||
" return self._cell(inputs, state, scope)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 74,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"n_inputs = 5\n",
|
||
"n_steps = 20\n",
|
||
"n_neurons = 100\n",
|
||
"\n",
|
||
"X = tf.placeholder(tf.float32, shape=[None, n_steps, n_inputs])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 75,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"devices = [\"/cpu:0\", \"/cpu:0\", \"/cpu:0\"] # replace with [\"/gpu:0\", \"/gpu:1\", \"/gpu:2\"] if you have 3 GPUs\n",
|
||
"cells = [DeviceCellWrapper(dev,tf.contrib.rnn.BasicRNNCell(num_units=n_neurons))\n",
|
||
" for dev in devices]\n",
|
||
"multi_layer_cell = tf.contrib.rnn.MultiRNNCell(cells)\n",
|
||
"outputs, states = tf.nn.dynamic_rnn(multi_layer_cell, X, dtype=tf.float32)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 76,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"init = tf.global_variables_initializer()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 77,
|
||
"metadata": {
|
||
"scrolled": true
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[[[ 0.06828325 -0.11375451 0.06424566 ..., -0.24244198 -0.04821674\n",
|
||
" -0.12077257]\n",
|
||
" [ 0.07453813 -0.2251049 0.20471548 ..., -0.14811224 -0.0922538\n",
|
||
" -0.04429063]\n",
|
||
" [ 0.13780868 -0.14680631 -0.0095655 ..., -0.08136044 0.07381541\n",
|
||
" -0.03125775]\n",
|
||
" ..., \n",
|
||
" [-0.25400278 -0.32078549 0.39923593 ..., -0.26669216 0.33505771\n",
|
||
" -0.03757669]\n",
|
||
" [ 0.22596692 -0.09880773 -0.27422303 ..., -0.13385999 -0.25443044\n",
|
||
" -0.36498186]\n",
|
||
" [ 0.1655937 -0.33435836 0.34313348 ..., -0.36904442 0.06908746\n",
|
||
" 0.46574104]]\n",
|
||
"\n",
|
||
" [[ 0.00489879 -0.03151967 0.02628033 ..., -0.19341362 -0.0730375\n",
|
||
" 0.00451888]\n",
|
||
" [ 0.03073939 -0.0579551 0.17785911 ..., -0.20945786 0.05200011\n",
|
||
" -0.07436937]\n",
|
||
" [ 0.00192378 -0.25690764 0.12488247 ..., 0.02644884 -0.25046453\n",
|
||
" -0.12239399]\n",
|
||
" ..., \n",
|
||
" [-0.13501379 -0.06209698 0.1595035 ..., -0.20012119 -0.3338365\n",
|
||
" -0.09281697]\n",
|
||
" [-0.44347292 0.20323271 0.12526961 ..., -0.07962411 0.27046496\n",
|
||
" 0.31884009]\n",
|
||
" [ 0.23965777 -0.22903362 0.07749593 ..., -0.02653922 0.084024\n",
|
||
" 0.02313657]]]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"with tf.Session() as sess:\n",
|
||
" init.run()\n",
|
||
" print(sess.run(outputs, feed_dict={X: np.random.rand(2, n_steps, n_inputs)}))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Dropout"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 78,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"n_inputs = 1\n",
|
||
"n_neurons = 100\n",
|
||
"n_layers = 3\n",
|
||
"n_steps = 20\n",
|
||
"n_outputs = 1\n",
|
||
"\n",
|
||
"X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
|
||
"y = tf.placeholder(tf.float32, [None, n_steps, n_outputs])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 79,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"keep_prob = 0.5\n",
|
||
"\n",
|
||
"cells = [tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)\n",
|
||
" for layer in range(n_layers)]\n",
|
||
"cells_drop = [tf.contrib.rnn.DropoutWrapper(cell, input_keep_prob=keep_prob)\n",
|
||
" for cell in cells]\n",
|
||
"multi_layer_cell = tf.contrib.rnn.MultiRNNCell(cells_drop)\n",
|
||
"rnn_outputs, states = tf.nn.dynamic_rnn(multi_layer_cell, X, dtype=tf.float32)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 80,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"learning_rate = 0.01\n",
|
||
"\n",
|
||
"stacked_rnn_outputs = tf.reshape(rnn_outputs, [-1, n_neurons])\n",
|
||
"stacked_outputs = tf.layers.dense(stacked_rnn_outputs, n_outputs)\n",
|
||
"outputs = tf.reshape(stacked_outputs, [-1, n_steps, n_outputs])\n",
|
||
"\n",
|
||
"loss = tf.reduce_mean(tf.square(outputs - y))\n",
|
||
"optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)\n",
|
||
"training_op = optimizer.minimize(loss)\n",
|
||
"\n",
|
||
"init = tf.global_variables_initializer()\n",
|
||
"saver = tf.train.Saver()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Unfortunately, this code is only usable for training, because the `DropoutWrapper` class has no `training` parameter, so it always applies dropout, even when the model is not being trained, so we must first train the model, then create a different model for testing, without the `DropoutWrapper`."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 81,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"0 Training MSE: 15.9668\n",
|
||
"100 Training MSE: 5.1096\n",
|
||
"200 Training MSE: 4.03458\n",
|
||
"300 Training MSE: 3.89255\n",
|
||
"400 Training MSE: 2.76559\n",
|
||
"500 Training MSE: 3.37984\n",
|
||
"600 Training MSE: 4.58208\n",
|
||
"700 Training MSE: 3.43498\n",
|
||
"800 Training MSE: 2.99072\n",
|
||
"900 Training MSE: 4.42512\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"n_iterations = 1000\n",
|
||
"batch_size = 50\n",
|
||
"\n",
|
||
"with tf.Session() as sess:\n",
|
||
" init.run()\n",
|
||
" for iteration in range(n_iterations):\n",
|
||
" X_batch, y_batch = next_batch(batch_size, n_steps)\n",
|
||
" _, mse = sess.run([training_op, loss], feed_dict={X: X_batch, y: y_batch})\n",
|
||
" if iteration % 100 == 0:\n",
|
||
" print(iteration, \"Training MSE:\", mse)\n",
|
||
" \n",
|
||
" saver.save(sess, \"./my_dropout_time_series_model\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Now that the model is trained, we need to create the model again, but without the `DropoutWrapper` for testing:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 82,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"n_inputs = 1\n",
|
||
"n_neurons = 100\n",
|
||
"n_layers = 3\n",
|
||
"n_steps = 20\n",
|
||
"n_outputs = 1\n",
|
||
"\n",
|
||
"X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
|
||
"y = tf.placeholder(tf.float32, [None, n_steps, n_outputs])\n",
|
||
"\n",
|
||
"keep_prob = 0.5\n",
|
||
"\n",
|
||
"cells = [tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)\n",
|
||
" for layer in range(n_layers)]\n",
|
||
"multi_layer_cell = tf.contrib.rnn.MultiRNNCell(cells)\n",
|
||
"rnn_outputs, states = tf.nn.dynamic_rnn(multi_layer_cell, X, dtype=tf.float32)\n",
|
||
"\n",
|
||
"learning_rate = 0.01\n",
|
||
"\n",
|
||
"stacked_rnn_outputs = tf.reshape(rnn_outputs, [-1, n_neurons])\n",
|
||
"stacked_outputs = tf.layers.dense(stacked_rnn_outputs, n_outputs)\n",
|
||
"outputs = tf.reshape(stacked_outputs, [-1, n_steps, n_outputs])\n",
|
||
"\n",
|
||
"loss = tf.reduce_mean(tf.square(outputs - y))\n",
|
||
"\n",
|
||
"init = tf.global_variables_initializer()\n",
|
||
"saver = tf.train.Saver()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 83,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"INFO:tensorflow:Restoring parameters from ./my_dropout_time_series_model\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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\nM+Owww7TNyMpeXV1MG8eNDVBczNcemnYfuml4XNTU9hfVxftuXHKy+IaQAE+YnqfIrB3LzSmTJGy\nJzEn1pQpkNr5f2Mn84llcm6c8jIn3xt1dbBwIVRWQr9+Yb1wYf79NRWR+C1e3DZQH3xw2zWE/YsW\nRXtunAo6yNfUQFUV3HEH7NwZ/pru3Bk+V1WF/X11/PHH9+m8Bx98kFdeeaXnA0Uk52pqYM6ctsE6\nVWMjzJ4NjzwS7blxKtgg3758LFUU5WNPP/10n85TkBfJXxUVsHYtnHce7NrVdt+uXWH7unXhuCjP\njVPBBvnrrusY3Ntrbobrr+/b9SsS/1Jr165l2rRpzJs3j6OPPpoLL7wQTxTALVmyhJEjR1JVVcXi\nxYt5+umneeihh/jmN79JdXU1dXV1/OAHP2DixImMHTuWc845h6amJgAuvvhivv71r3P88cfz6U9/\nmlWrDgx5fs011zBmzBjGjh3LkiVLAKirq2PmzJmMHz+eqVOnsjHfCv5ECsD8+VBWBoMHQ0tLWJqa\nDvw8eHDYf9FF0Z4bq3Sa4GRz6awJ5SuvvNJj86FBg9xDAU33S2Vl+k2SUpWXl7u7+xNPPOGVlZX+\nxhtveGtrqx933HH+5JNP+tatW/3II4/c38zz/fffd3f3L3zhC75y5cr919m6dev+n7/97W/7TTfd\ntP+4efPmeWtrq7/88ss+YsQId3dfs2aNf/azn/XGxkZ3d9+2bZu7u5988sn+2muvubv7M88849On\nT+/1M6XzXkWK2euvh6aOjz/u3tLi/vzz7p/7XFi3tLj/5jdh/+uvR3tuNpBmE8q8bV3Tk4aGaI/r\nzqRJkxgyZAgA1dXVbN68meOOO44BAwZw2WWXMWfOHObMmdPpuS+99BJXXnkl27dvp6GhgRkzZuzf\nd/bZZ9OvXz9GjhzJX/8a5rV47LHHuOSSSxg4cCAAhx56KA0NDTz99NOce+65+8/dk6zaF5G0jRgB\nq1aFuHDFFbB8ecgOTpwI3/gGnHhi2N9Zp6ZMzo1TwRbXpFvuFUX52MEp1ef9+/enpaWFgw46iOee\ne4558+axevVqZs6c2em5F198MStWrOCPf/wjS5cubdNWPfW63s3kLfv27WPw4MFs2LBh//Lqq69m\n/mAiJWjWLBg5EnbvhkGDQqu8iopQrj5yZNifjXPjUrBBPlk+1p1slo81NDSwY8cOTj/9dK6//npe\neOEFAAYNGsTOnTv3H7dz504+9rGP0dzczL333tvjdU899VTuuuuu/WX37733HpWVlQwfPpyVK1cC\n4Q9C8n4i0nsjRsCKFbBjB7S2hvWKFenlwjM5Nw4FG+QXLUovyF9+eXbuv3PnTubMmUNVVRUnnHAC\ny5cvB+D888/n2muvZdy4cdTV1bFs2TImT57MlClTOProo3u87syZMznzzDOZMGEC1dXVfPe73wXg\n3nvv5c4772Ts2LGMGjWKX/7yl9l5MJECkewjM2QIPPBAWKuPTEexz/E6YcIEbz9pyKuvvsoxxxzT\n47k1NaGZZHNz25Y2ZWVhWbUqP78+xSXd9yqS71L/7593HtxzT/h2f//9pfN/38yed/cJPR1XsDl5\nCP+IL74ICxa07fG6YEHYXuz/yCKlqFDHkIlL5K1rzOx8YCnwKeBd4GJ3fzLq+yQly8dWrMjWHUQk\nnxTqGDJxiTQnb2anAtcAlwCDgBOBP0d5DxEpbYU6hkxcoi6u+Vfgand/xt33uftb7v5WxPcQkRJW\nqGPIxCWyIG9m/YEJwOFm9rqZvWlmK8zskE6OXWBmtWZWW19fH1USRKQEFOoYMnGJMid/BFAGzAOm\nAtXAOODK9ge6++3uPsHdJxx++OERJkFEil3BjiETkyiDfPJv6s3u/o67bwWWA6dHeI+c2L59O7fe\nemvW77N27do+j3YpUqqSfWQuuwwGDgwt6c46K6wHDgytbLLZR6bQRBbk3f194E0gteF9vI3w+6i3\nQd7d2bdvX6/voyAv0nvtx5CZMAEeeyyMIbNkSSiTz8cxZOISdcXrXcA/m9lHzexvgMuB1RHfI+uW\nLFlCXV0d1dXVXH755Zxyyikce+yxjBkzZn9P082bN3PUUUfxj//4j4wePZo33niDO++8kyOPPJJJ\nkybxpS99ia997WsA1NfXc8455zBx4kQmTpzIb3/7WzZv3sxtt93G9ddfT3V1NU8+mbVWpiJFpxDH\nkIlNOkNVprsQyuRvBbYT2sjfBAzo7py+DjWcTZs2bfJRo0a5u3tzc7Pv2LHD3d3r6+t9xIgRvm/f\nPt+0aZObmf/ud79zd/e33nrLhw4d6tu2bfO9e/f6CSec4F/96lfd3f2CCy7wJ5980t3dt2zZ4kcf\nfbS7uy9dutSvvfbanD1X3O9VRKJDHEMNu3szsDCxFAV351vf+hb/9V//Rb9+/Xjrrbf2Dws8dOhQ\njjvuOACee+45TjrpJA499FAAzj33XF577TUgDB+cOlvUBx98QEMUYyCLiPSgYMeTz5V7772X+vp6\nnn/+ecrKyhg2bNj+4YLLy8vTusa+fft45plnGDBgQDaTKiLSQUGPXZMtqcMF79ixg49+9KOUlZXx\nxBNPsGXLlk7PmThxIuvWreP999+npaWFn//85/v3nXbaadx88837P2/YsKHDfUREskFBvhOHHXYY\nU6ZMYfTo0WzYsIHa2lrGjBnDj3/84y6HC/7EJz7Bt771LSZNmsSUKVMYNmwYH/7whwG46aabqK2t\npaqqipEjR3LbbbcBcMYZZ/DAAw+o4lVEsqaghxrONw0NDVRUVNDS0sLcuXO59NJLmTt3btzJ2q9Q\n36uIdFQSQw3nm6uuuorq6mpGjx7N8OHDOfvss+NOkoiUOFW8Rig5i5OISL5QTl5EpIgpyItIbDRP\na/YpyItILGpqoKoK7rgDpk+HuXNh2rTwuaoq7JfMKciLSM5pntbcUZDPkYrEDAZvv/028+bN6/bY\nG264gaampv2fTz/9dLZv357V9InkUnKeVvewHH982J6cp9U97G9ujjedxaA4gnxrK6xeDcuWhXVr\na45u2/v7fPzjH2fVqlXdHtM+yK9Zs4bBgwf3+l4i+UrztOZO4Qf51laYMQMuuACWLg3rGTMyDvSb\nN2/m6KOP5sILL+SYY45h3rx5NDU1MWzYMK644gqOPfZYVq5cSV1dHTNnzmT8+PFMnTqVjYkp4jdt\n2sRnP/tZxowZw5VXXtnmuqNHj04kvZXFixczevRoqqqquPnmm7npppt4++23mT59OtOnTwdg2LBh\nbN26FYDly5czevRoRo8ezQ033LD/mscccwxf+tKXGDVqFKeddhq72s+LJpJHNE9rDqUzVGU2l4yH\nGn74YfeKiuQ3vLBUVITtGdi0aZMD/tRTT7m7+yWXXOLXXnutDx061K+55pr9x5188sn+2muvubv7\nM88849OnT3d39zPOOMPvvvtud3dfsWKFl5eX779uchjjW2+91c855xxvbm52d/dt27a5u/vQoUO9\nvr5+/z2Sn2tra3306NHe0NDgO3fu9JEjR/of/vAH37Rpk/fv39/Xr1/v7u7nnnuu33PPPR2eSUMN\nS74YNCj8V509272pqe2+pqawHdwrK+NJXyEgzaGGCz8nv359x+xAYyMkBgHLxCc/+UmmTJkCwPz5\n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\n",
|
||
"text/plain": [
|
||
"<matplotlib.figure.Figure at 0x7f4508633ba8>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"with tf.Session() as sess:\n",
|
||
" saver.restore(sess, \"./my_dropout_time_series_model\")\n",
|
||
"\n",
|
||
" X_new = time_series(np.array(t_instance[:-1].reshape(-1, n_steps, n_inputs)))\n",
|
||
" y_pred = sess.run(outputs, feed_dict={X: X_new})\n",
|
||
"\n",
|
||
"plt.title(\"Testing the model\", fontsize=14)\n",
|
||
"plt.plot(t_instance[:-1], time_series(t_instance[:-1]), \"bo\", markersize=10, label=\"instance\")\n",
|
||
"plt.plot(t_instance[1:], time_series(t_instance[1:]), \"w*\", markersize=10, label=\"target\")\n",
|
||
"plt.plot(t_instance[1:], y_pred[0,:,0], \"r.\", markersize=10, label=\"prediction\")\n",
|
||
"plt.legend(loc=\"upper left\")\n",
|
||
"plt.xlabel(\"Time\")\n",
|
||
"\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Oops, it seems that Dropout does not help at all in this particular case. :/"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Another option is to write a script with a command line argument to specify whether you want to train the mode or use it for making predictions:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 84,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"0 Training MSE: 15.9668\n",
|
||
"100 Training MSE: 5.12977\n",
|
||
"200 Training MSE: 3.99256\n",
|
||
"300 Training MSE: 3.59732\n",
|
||
"400 Training MSE: 2.73932\n",
|
||
"500 Training MSE: 3.14028\n",
|
||
"600 Training MSE: 4.7545\n",
|
||
"700 Training MSE: 3.8126\n",
|
||
"800 Training MSE: 3.78185\n",
|
||
"900 Training MSE: 4.42619\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"import sys\n",
|
||
"training = True # in a script, this would be (sys.argv[-1] == \"train\") instead\n",
|
||
"\n",
|
||
"X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
|
||
"y = tf.placeholder(tf.float32, [None, n_steps, n_outputs])\n",
|
||
"\n",
|
||
"cells = [tf.contrib.rnn.BasicRNNCell(num_units=n_neurons)\n",
|
||
" for layer in range(n_layers)]\n",
|
||
"if training:\n",
|
||
" cells = [tf.contrib.rnn.DropoutWrapper(cell, input_keep_prob=keep_prob)\n",
|
||
" for cell in cells]\n",
|
||
"multi_layer_cell = tf.contrib.rnn.MultiRNNCell(cells)\n",
|
||
"rnn_outputs, states = tf.nn.dynamic_rnn(multi_layer_cell, X, dtype=tf.float32)\n",
|
||
"\n",
|
||
"stacked_rnn_outputs = tf.reshape(rnn_outputs, [-1, n_neurons]) # not shown in the book\n",
|
||
"stacked_outputs = tf.layers.dense(stacked_rnn_outputs, n_outputs) # not shown\n",
|
||
"outputs = tf.reshape(stacked_outputs, [-1, n_steps, n_outputs]) # not shown\n",
|
||
"loss = tf.reduce_mean(tf.square(outputs - y)) # not shown\n",
|
||
"optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate) # not shown\n",
|
||
"training_op = optimizer.minimize(loss) # not shown\n",
|
||
"init = tf.global_variables_initializer() # not shown\n",
|
||
"saver = tf.train.Saver() # not shown\n",
|
||
"\n",
|
||
"with tf.Session() as sess:\n",
|
||
" if training:\n",
|
||
" init.run()\n",
|
||
" for iteration in range(n_iterations):\n",
|
||
" X_batch, y_batch = next_batch(batch_size, n_steps) # not shown\n",
|
||
" _, mse = sess.run([training_op, loss], feed_dict={X: X_batch, y: y_batch}) # not shown\n",
|
||
" if iteration % 100 == 0: # not shown\n",
|
||
" print(iteration, \"Training MSE:\", mse) # not shown\n",
|
||
" save_path = saver.save(sess, \"/tmp/my_model.ckpt\")\n",
|
||
" else:\n",
|
||
" saver.restore(sess, \"/tmp/my_model.ckpt\")\n",
|
||
" X_new = time_series(np.array(t_instance[:-1].reshape(-1, n_steps, n_inputs))) # not shown\n",
|
||
" y_pred = sess.run(outputs, feed_dict={X: X_new}) # not shown"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# LSTM"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 85,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"lstm_cell = tf.contrib.rnn.BasicLSTMCell(num_units=n_neurons)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 86,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"n_steps = 28\n",
|
||
"n_inputs = 28\n",
|
||
"n_neurons = 150\n",
|
||
"n_outputs = 10\n",
|
||
"n_layers = 3\n",
|
||
"\n",
|
||
"learning_rate = 0.001\n",
|
||
"\n",
|
||
"X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])\n",
|
||
"y = tf.placeholder(tf.int32, [None])\n",
|
||
"\n",
|
||
"lstm_cells = [tf.contrib.rnn.BasicLSTMCell(num_units=n_neurons)\n",
|
||
" for layer in range(n_layers)]\n",
|
||
"multi_cell = tf.contrib.rnn.MultiRNNCell(lstm_cells)\n",
|
||
"outputs, states = tf.nn.dynamic_rnn(multi_cell, X, dtype=tf.float32)\n",
|
||
"top_layer_h_state = states[-1][1]\n",
|
||
"logits = tf.layers.dense(top_layer_h_state, n_outputs, name=\"softmax\")\n",
|
||
"xentropy = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y, logits=logits)\n",
|
||
"loss = tf.reduce_mean(xentropy, name=\"loss\")\n",
|
||
"optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)\n",
|
||
"training_op = optimizer.minimize(loss)\n",
|
||
"correct = tf.nn.in_top_k(logits, y, 1)\n",
|
||
"accuracy = tf.reduce_mean(tf.cast(correct, tf.float32))\n",
|
||
" \n",
|
||
"init = tf.global_variables_initializer()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 87,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"(LSTMStateTuple(c=<tf.Tensor 'rnn/while/Exit_2:0' shape=(?, 150) dtype=float32>, h=<tf.Tensor 'rnn/while/Exit_3:0' shape=(?, 150) dtype=float32>),\n",
|
||
" LSTMStateTuple(c=<tf.Tensor 'rnn/while/Exit_4:0' shape=(?, 150) dtype=float32>, h=<tf.Tensor 'rnn/while/Exit_5:0' shape=(?, 150) dtype=float32>),\n",
|
||
" LSTMStateTuple(c=<tf.Tensor 'rnn/while/Exit_6:0' shape=(?, 150) dtype=float32>, h=<tf.Tensor 'rnn/while/Exit_7:0' shape=(?, 150) dtype=float32>))"
|
||
]
|
||
},
|
||
"execution_count": 87,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"states"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 88,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"<tf.Tensor 'rnn/while/Exit_7:0' shape=(?, 150) dtype=float32>"
|
||
]
|
||
},
|
||
"execution_count": 88,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"top_layer_h_state"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 89,
|
||
"metadata": {
|
||
"scrolled": true
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Epoch 0 Train accuracy = 0.946667 Test accuracy = 0.9506\n",
|
||
"Epoch 1 Train accuracy = 0.98 Test accuracy = 0.9691\n",
|
||
"Epoch 2 Train accuracy = 0.993333 Test accuracy = 0.9745\n",
|
||
"Epoch 3 Train accuracy = 0.993333 Test accuracy = 0.982\n",
|
||
"Epoch 4 Train accuracy = 0.973333 Test accuracy = 0.9819\n",
|
||
"Epoch 5 Train accuracy = 0.993333 Test accuracy = 0.9838\n",
|
||
"Epoch 6 Train accuracy = 0.993333 Test accuracy = 0.9799\n",
|
||
"Epoch 7 Train accuracy = 0.993333 Test accuracy = 0.9873\n",
|
||
"Epoch 8 Train accuracy = 1.0 Test accuracy = 0.9862\n",
|
||
"Epoch 9 Train accuracy = 1.0 Test accuracy = 0.9873\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"n_epochs = 10\n",
|
||
"batch_size = 150\n",
|
||
"\n",
|
||
"with tf.Session() as sess:\n",
|
||
" init.run()\n",
|
||
" for epoch in range(n_epochs):\n",
|
||
" for iteration in range(mnist.train.num_examples // batch_size):\n",
|
||
" X_batch, y_batch = mnist.train.next_batch(batch_size)\n",
|
||
" X_batch = X_batch.reshape((batch_size, n_steps, n_inputs))\n",
|
||
" sess.run(training_op, feed_dict={X: X_batch, y: y_batch})\n",
|
||
" acc_train = accuracy.eval(feed_dict={X: X_batch, y: y_batch})\n",
|
||
" acc_test = accuracy.eval(feed_dict={X: X_test, y: y_test})\n",
|
||
" print(\"Epoch\", epoch, \"Train accuracy =\", acc_train, \"Test accuracy =\", acc_test)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 90,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"lstm_cell = tf.contrib.rnn.LSTMCell(num_units=n_neurons, use_peepholes=True)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 91,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"gru_cell = tf.contrib.rnn.GRUCell(num_units=n_neurons)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Embeddings"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"This section is based on TensorFlow's [Word2Vec tutorial](https://www.tensorflow.org/versions/r0.11/tutorials/word2vec/index.html)."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Fetch the data"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 92,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"from six.moves import urllib\n",
|
||
"\n",
|
||
"import errno\n",
|
||
"import os\n",
|
||
"import zipfile\n",
|
||
"\n",
|
||
"WORDS_PATH = \"datasets/words\"\n",
|
||
"WORDS_URL = 'http://mattmahoney.net/dc/text8.zip'\n",
|
||
"\n",
|
||
"def mkdir_p(path):\n",
|
||
" \"\"\"Create directories, ok if they already exist.\n",
|
||
" \n",
|
||
" This is for python 2 support. In python >=3.2, simply use:\n",
|
||
" >>> os.makedirs(path, exist_ok=True)\n",
|
||
" \"\"\"\n",
|
||
" try:\n",
|
||
" os.makedirs(path)\n",
|
||
" except OSError as exc:\n",
|
||
" if exc.errno == errno.EEXIST and os.path.isdir(path):\n",
|
||
" pass\n",
|
||
" else:\n",
|
||
" raise\n",
|
||
"\n",
|
||
"def fetch_words_data(words_url=WORDS_URL, words_path=WORDS_PATH):\n",
|
||
" os.makedirs(words_path, exist_ok=True)\n",
|
||
" zip_path = os.path.join(words_path, \"words.zip\")\n",
|
||
" if not os.path.exists(zip_path):\n",
|
||
" urllib.request.urlretrieve(words_url, zip_path)\n",
|
||
" with zipfile.ZipFile(zip_path) as f:\n",
|
||
" data = f.read(f.namelist()[0])\n",
|
||
" return data.decode(\"ascii\").split()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 93,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"words = fetch_words_data()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 94,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"['anarchism', 'originated', 'as', 'a', 'term']"
|
||
]
|
||
},
|
||
"execution_count": 94,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"words[:5]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Build the dictionary"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 95,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"from collections import Counter\n",
|
||
"\n",
|
||
"vocabulary_size = 50000\n",
|
||
"\n",
|
||
"vocabulary = [(\"UNK\", None)] + Counter(words).most_common(vocabulary_size - 1)\n",
|
||
"vocabulary = np.array([word for word, _ in vocabulary])\n",
|
||
"dictionary = {word: code for code, word in enumerate(vocabulary)}\n",
|
||
"data = np.array([dictionary.get(word, 0) for word in words])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 96,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"('anarchism originated as a term of abuse first used',\n",
|
||
" array([5242, 3081, 12, 6, 195, 2, 3136, 46, 59]))"
|
||
]
|
||
},
|
||
"execution_count": 96,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"\" \".join(words[:9]), data[:9]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 97,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'default originated as a term of presidency first used'"
|
||
]
|
||
},
|
||
"execution_count": 97,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"\" \".join([vocabulary[word_index] for word_index in [5241, 3081, 12, 6, 195, 2, 3134, 46, 59]])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 98,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"('culottes', 0)"
|
||
]
|
||
},
|
||
"execution_count": 98,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"words[24], data[24]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Generate batches"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 99,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import random\n",
|
||
"from collections import deque\n",
|
||
"\n",
|
||
"def generate_batch(batch_size, num_skips, skip_window):\n",
|
||
" global data_index\n",
|
||
" assert batch_size % num_skips == 0\n",
|
||
" assert num_skips <= 2 * skip_window\n",
|
||
" batch = np.ndarray(shape=(batch_size), dtype=np.int32)\n",
|
||
" labels = np.ndarray(shape=(batch_size, 1), dtype=np.int32)\n",
|
||
" span = 2 * skip_window + 1 # [ skip_window target skip_window ]\n",
|
||
" buffer = deque(maxlen=span)\n",
|
||
" for _ in range(span):\n",
|
||
" buffer.append(data[data_index])\n",
|
||
" data_index = (data_index + 1) % len(data)\n",
|
||
" for i in range(batch_size // num_skips):\n",
|
||
" target = skip_window # target label at the center of the buffer\n",
|
||
" targets_to_avoid = [ skip_window ]\n",
|
||
" for j in range(num_skips):\n",
|
||
" while target in targets_to_avoid:\n",
|
||
" target = random.randint(0, span - 1)\n",
|
||
" targets_to_avoid.append(target)\n",
|
||
" batch[i * num_skips + j] = buffer[skip_window]\n",
|
||
" labels[i * num_skips + j, 0] = buffer[target]\n",
|
||
" buffer.append(data[data_index])\n",
|
||
" data_index = (data_index + 1) % len(data)\n",
|
||
" return batch, labels"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 100,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"data_index=0\n",
|
||
"batch, labels = generate_batch(8, 2, 1)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 101,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"(array([3081, 3081, 12, 12, 6, 6, 195, 195], dtype=int32),\n",
|
||
" ['originated', 'originated', 'as', 'as', 'a', 'a', 'term', 'term'])"
|
||
]
|
||
},
|
||
"execution_count": 101,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"batch, [vocabulary[word] for word in batch]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 102,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"(array([[ 12],\n",
|
||
" [5242],\n",
|
||
" [ 6],\n",
|
||
" [3081],\n",
|
||
" [ 12],\n",
|
||
" [ 195],\n",
|
||
" [ 2],\n",
|
||
" [ 6]], dtype=int32),\n",
|
||
" ['as', 'anarchism', 'a', 'originated', 'as', 'term', 'of', 'a'])"
|
||
]
|
||
},
|
||
"execution_count": 102,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"labels, [vocabulary[word] for word in labels[:, 0]]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Build the model"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 103,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"batch_size = 128\n",
|
||
"embedding_size = 128 # Dimension of the embedding vector.\n",
|
||
"skip_window = 1 # How many words to consider left and right.\n",
|
||
"num_skips = 2 # How many times to reuse an input to generate a label.\n",
|
||
"\n",
|
||
"# We pick a random validation set to sample nearest neighbors. Here we limit the\n",
|
||
"# validation samples to the words that have a low numeric ID, which by\n",
|
||
"# construction are also the most frequent.\n",
|
||
"valid_size = 16 # Random set of words to evaluate similarity on.\n",
|
||
"valid_window = 100 # Only pick dev samples in the head of the distribution.\n",
|
||
"valid_examples = np.random.choice(valid_window, valid_size, replace=False)\n",
|
||
"num_sampled = 64 # Number of negative examples to sample.\n",
|
||
"\n",
|
||
"learning_rate = 0.01"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 104,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"# Input data.\n",
|
||
"train_labels = tf.placeholder(tf.int32, shape=[batch_size, 1])\n",
|
||
"valid_dataset = tf.constant(valid_examples, dtype=tf.int32)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 105,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"vocabulary_size = 50000\n",
|
||
"embedding_size = 150\n",
|
||
"\n",
|
||
"# Look up embeddings for inputs.\n",
|
||
"init_embeds = tf.random_uniform([vocabulary_size, embedding_size], -1.0, 1.0)\n",
|
||
"embeddings = tf.Variable(init_embeds)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 106,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"train_inputs = tf.placeholder(tf.int32, shape=[None])\n",
|
||
"embed = tf.nn.embedding_lookup(embeddings, train_inputs)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 107,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Construct the variables for the NCE loss\n",
|
||
"nce_weights = tf.Variable(\n",
|
||
" tf.truncated_normal([vocabulary_size, embedding_size],\n",
|
||
" stddev=1.0 / np.sqrt(embedding_size)))\n",
|
||
"nce_biases = tf.Variable(tf.zeros([vocabulary_size]))\n",
|
||
"\n",
|
||
"# Compute the average NCE loss for the batch.\n",
|
||
"# tf.nce_loss automatically draws a new sample of the negative labels each\n",
|
||
"# time we evaluate the loss.\n",
|
||
"loss = tf.reduce_mean(\n",
|
||
" tf.nn.nce_loss(nce_weights, nce_biases, train_labels, embed,\n",
|
||
" num_sampled, vocabulary_size))\n",
|
||
"\n",
|
||
"# Construct the Adam optimizer\n",
|
||
"optimizer = tf.train.AdamOptimizer(learning_rate)\n",
|
||
"training_op = optimizer.minimize(loss)\n",
|
||
"\n",
|
||
"# Compute the cosine similarity between minibatch examples and all embeddings.\n",
|
||
"norm = tf.sqrt(tf.reduce_sum(tf.square(embeddings), axis=1, keep_dims=True))\n",
|
||
"normalized_embeddings = embeddings / norm\n",
|
||
"valid_embeddings = tf.nn.embedding_lookup(normalized_embeddings, valid_dataset)\n",
|
||
"similarity = tf.matmul(valid_embeddings, normalized_embeddings, transpose_b=True)\n",
|
||
"\n",
|
||
"# Add variable initializer.\n",
|
||
"init = tf.global_variables_initializer()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Train the model"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 108,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Iteration: 0\tAverage loss at step 0 : 285.895568848\n",
|
||
"Nearest to would: stems, secessionist, coronary, provers, surpasses, subscriber, losing, excommunicated,\n",
|
||
"Nearest to on: enumerative, camus, biochemical, skeptic, idealised, sooty, grossman, flashing,\n",
|
||
"Nearest to four: maj, glue, doubt, emil, civilis, generative, bested, necrosis,\n",
|
||
"Nearest to his: exerted, talmudic, switzerland, particles, somehow, standstill, value, hau,\n",
|
||
"Nearest to often: billed, shrine, lems, aalborg, prescriptions, winger, manichaeism, sox,\n",
|
||
"Nearest to in: charlestown, cobe, moody, appeals, dauphin, buenos, liar, inuit,\n",
|
||
"Nearest to an: rota, haihowak, melatonin, graham, guaranteeing, catalyze, pcd, gobind,\n",
|
||
"Nearest to eight: onstage, usn, brl, guevara, arbitrate, wild, radiocarbon, manning,\n",
|
||
"Nearest to these: thames, natufian, lasted, genghis, amitabh, dodo, bain, thorne,\n",
|
||
"Nearest to nine: mindstorms, blocks, proceed, tn, nihilist, elucidated, aspects, intermediate,\n",
|
||
"Nearest to called: humanoid, dealing, writ, gracefully, superfluous, wooing, confessed, diputados,\n",
|
||
"Nearest to about: smile, mirrored, affaires, ducktales, threatening, eureka, hiller, woke,\n",
|
||
"Nearest to up: subgenre, proposal, straps, orchestral, constants, equinox, gmc, livejournal,\n",
|
||
"Nearest to one: tubulin, hijack, alum, decentralisation, sombre, lords, ts, drumming,\n",
|
||
"Nearest to and: soft, flap, costumed, heldenplatz, paleo, kiel, monotheistic, fermion,\n",
|
||
"Nearest to been: navigable, mansi, wards, ud, hideous, yong, linear, josh,\n",
|
||
"Iteration: 2000\tAverage loss at step 2000 : 130.956728756\n",
|
||
"Iteration: 4000\tAverage loss at step 4000 : 62.7161855488\n",
|
||
"Iteration: 6000\tAverage loss at step 6000 : 42.0940016119\n",
|
||
"Iteration: 8000\tAverage loss at step 8000 : 31.4492927847\n",
|
||
"Iteration: 10000\tAverage loss at step 10000 : 25.6146161559\n",
|
||
"Nearest to would: to, washed, fit, investigators, can, was, repeated, alkanes,\n",
|
||
"Nearest to on: in, aegean, actinium, methylene, donohue, levitt, of, and,\n",
|
||
"Nearest to four: nine, six, five, two, one, seven, eight, zero,\n",
|
||
"Nearest to his: the, and, satisfies, rescue, molyneux, conquer, babylon, bambaataa,\n",
|
||
"Nearest to often: priests, progressed, sometimes, it, whitfield, participation, horrible, guise,\n",
|
||
"Nearest to in: and, on, ampere, of, with, conformations, omotic, altaic,\n",
|
||
"Nearest to an: a, this, induced, submachine, and, imaged, that, the,\n",
|
||
"Nearest to eight: nine, one, six, four, seven, two, five, three,\n",
|
||
"Nearest to these: nsu, altaic, neutral, signification, romanus, cosmonaut, and, staggered,\n",
|
||
"Nearest to nine: one, six, eight, four, seven, five, two, zero,\n",
|
||
"Nearest to called: motorola, is, absurd, matrices, lubricants, familial, outer, rigor,\n",
|
||
"Nearest to about: denunciation, fixtures, gide, endeavor, abortions, esp, methanol, unarable,\n",
|
||
"Nearest to up: spite, delos, lighthouses, possessions, arcade, unhappy, exposure, socialite,\n",
|
||
"Nearest to one: nine, two, six, eight, seven, four, five, three,\n",
|
||
"Nearest to and: in, of, a, the, asparagales, altaic, which, UNK,\n",
|
||
"Nearest to been: have, bani, annealing, are, alhazred, ppp, columbus, guise,\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"num_steps = 10001\n",
|
||
"\n",
|
||
"with tf.Session() as session:\n",
|
||
" init.run()\n",
|
||
"\n",
|
||
" average_loss = 0\n",
|
||
" for step in range(num_steps):\n",
|
||
" print(\"\\rIteration: {}\".format(step), end=\"\\t\")\n",
|
||
" batch_inputs, batch_labels = generate_batch(batch_size, num_skips, skip_window)\n",
|
||
" feed_dict = {train_inputs : batch_inputs, train_labels : batch_labels}\n",
|
||
"\n",
|
||
" # We perform one update step by evaluating the training op (including it\n",
|
||
" # in the list of returned values for session.run()\n",
|
||
" _, loss_val = session.run([training_op, loss], feed_dict=feed_dict)\n",
|
||
" average_loss += loss_val\n",
|
||
"\n",
|
||
" if step % 2000 == 0:\n",
|
||
" if step > 0:\n",
|
||
" average_loss /= 2000\n",
|
||
" # The average loss is an estimate of the loss over the last 2000 batches.\n",
|
||
" print(\"Average loss at step \", step, \": \", average_loss)\n",
|
||
" average_loss = 0\n",
|
||
"\n",
|
||
" # Note that this is expensive (~20% slowdown if computed every 500 steps)\n",
|
||
" if step % 10000 == 0:\n",
|
||
" sim = similarity.eval()\n",
|
||
" for i in range(valid_size):\n",
|
||
" valid_word = vocabulary[valid_examples[i]]\n",
|
||
" top_k = 8 # number of nearest neighbors\n",
|
||
" nearest = (-sim[i, :]).argsort()[1:top_k+1]\n",
|
||
" log_str = \"Nearest to %s:\" % valid_word\n",
|
||
" for k in range(top_k):\n",
|
||
" close_word = vocabulary[nearest[k]]\n",
|
||
" log_str = \"%s %s,\" % (log_str, close_word)\n",
|
||
" print(log_str)\n",
|
||
"\n",
|
||
" final_embeddings = normalized_embeddings.eval()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Let's save the final embeddings (of course you can use a TensorFlow `Saver` if you prefer):"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 109,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"np.save(\"./my_final_embeddings.npy\", final_embeddings)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Plot the embeddings"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 110,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"def plot_with_labels(low_dim_embs, labels):\n",
|
||
" assert low_dim_embs.shape[0] >= len(labels), \"More labels than embeddings\"\n",
|
||
" plt.figure(figsize=(18, 18)) #in inches\n",
|
||
" for i, label in enumerate(labels):\n",
|
||
" x, y = low_dim_embs[i,:]\n",
|
||
" plt.scatter(x, y)\n",
|
||
" plt.annotate(label,\n",
|
||
" xy=(x, y),\n",
|
||
" xytext=(5, 2),\n",
|
||
" textcoords='offset points',\n",
|
||
" ha='right',\n",
|
||
" va='bottom')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 111,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAABBYAAAP4CAYAAABpy3/WAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xlc1WXe//HXARFQFDJT0ZxQE0U4hx0XQk1TLDWXdLSx\nEp0Wc9psIrU0yZymGb2ztNJsXMp0ctSysEUSNXFLAcEVRf2dqRRzBQUBOfD9/cHtuSV3Ag/I+/l4\n9Ihz8V0+10kT3+e6Pl+TYRiIiIiIiIiIiJSHk6MLEBEREREREZHqS8GCiIiIiIiIiJSbggURERER\nERERKTcFCyIiIiIiIiJSbgoWRERERERERKTcFCyIiIiIiIiISLkpWBARERERERGRclOwICIiIiIi\nIiLlpmBBRERERERERMqtlqMLaNiwoeHj4+PoMkRERERERETkIikpKScMw7jjWsc5PFjw8fEhOTnZ\n0WWIiIiIiIiIyEVMJtN/r+c4bYUQERERERERkXJTsCAiIiIiIiIi5aZgQURERERERETKTcGCiIiI\niIiIiJSbggURERERERERKTcFCyIiIiIiIiJSbgoWRERERERERKTcFCyIiIiIiIiISLkpWBARERER\nERGRclOwICIiIiIiIiLlpmBBRERERERERMpNwYKIiIiIiIiIlJuCBREREREREREpNwULIiIiIiIi\nIlJuChZEREREREREpNwULIiIiIiIiIhIuSlYEBEREREREZFyq9BgwWQy+ZhMpm9MJtNpk8l01GQy\nvWcymWpV5D1EREREREREpOqo6BULHwDHAG8gCOgCjK7ge4iIiIiIiIhIFVHRwUIL4D+GYRQYhnEU\n+A7wr+B7iIiIiIiIiEgVUdHBwjvAUJPJVMdkMjUD7qc0XBARERERERGRW1BFBwvrKV2hcAb4BUgG\nVvz2IJPJ9KTJZEo2mUzJx48fr+ASRERERERERORmqbBgwWQyOVG6OuFzoC7QELgN+MdvjzUMY45h\nGGGGYYTdcccdFVWCiIiIiIiIiNxkFblioQHwB+A9wzAKDcM4CcwHHqjAe4iIiIiIiIhIFVJhwYJh\nGCeA/wc8bTKZaplMJi9gOLCjou4hIiIiIiIiIlVLRfdYGAj0Ao4DB4AiYEwF30NEREREREREqoha\nFXkxwzDSgK4VeU0RERERERERqboqesWCiIiIiIiIiNQgChZEREREREREpNwULIiIiIiIiIhIuSlY\nEBEREREREZFyU7AgIiIiIiIiIuWmYEFEREREREREyk3BgoiIiIiIiIiUm4IFERERcSir1UpAQICj\nyxAREZFyUrAgIiIi1VZxcbGjSxAREanxFCyIiIiIw9lsNoYNG4afnx+DBg3i3LlzJCYmEhwcjNls\nZuTIkRQWFgLg4+PD2LFjCQkJYenSpXTt2pWxY8cSERGBr68vSUlJDp6NiIhIzaJgQURERBxu3759\njB49mr1791K/fn3efvttYmJiWLJkCTt37sRmszFr1iz78bfffjupqakMHToUKA0mtm7dyjvvvMPr\nr7/uqGmIiIjUSAoWRERExOGaN29OZGQkAI888giJiYm0aNECX19fAIYPH8769evtxw8ZMqTM+QMH\nDgQgNDQUq9V6c4oWERERQMGCiIiIVAEmk6nMay8vr6seX7du3TKvXV1dAXB2dsZms1VscSIiInJV\nChZERETE4X766Sc2b94MwOLFiwkLC8NqtXLgwAEAFi5cSJcuXRxZooiIiFyBggURERFxuDZt2vD+\n++/j5+fH6dOnGTNmDPPnz2fw4MGYzWacnJwYNWqUo8sUERGRyzAZhuHQAsLCwozk5GSH1iAiIiIi\nIiIiZZlMphTDMMKudVytm1GMiIiISGXYsWMHiYmJ5OTk4OnpSffu3bFYLI4uS0REpEZRsCAiIiLV\n0o4dO4iPj6eoqAiAnJwc4uPjARQuiIiI3ETqsSAiIiLVUmJioj1UuKCoqIjExEQHVSQiIlIzKVgQ\nERGRaiknJ+eGxkVERKRyKFgQERGRasnT0/OGxkVERKRyKFgQERGRaql79+64uLiUGXNxcaF79+4O\nqkhERKRmUrAgIiLVVnZ2Nh988EGFX3fBggUcOXLE/trHx4cTJ05U+H3k97FYLPTt29e+QsHT05O+\nffuqcaOIiMhNpqdCiIhItXUhWBg9enSFXnfBggUEBATQtGnT330tm81GrVr647ayWCwWBQkiIiIO\nphULIiJSbY0bN46DBw8SFBREbGwssbGxBAQEYDabWbJkCQAlJSWMHj2atm3b0qNHDx544AGWLVsG\nQEpKCl26dCE0NJTo6GiysrJYtmwZycnJDBs2jKCgIPLz8wGYOXMmISEhmM1mMjIyAMjLy2PkyJFE\nREQQHBzMl19+CZQGEw8++CDdunXTsnwRERG55SlYEBGRauutt96iVatWpKWl0aFDB9LS0khPT2f1\n6tXExsaSlZXF559/jtVqZc+ePSxcuJDNmzcDpY8lfPbZZ1m2bBkpKSmMHDmSV199lUGDBhEWFsai\nRYtIS0vD3d0dgIYNG5KamsrTTz/NtGnTAPjb3/5Gt27d2Lp1K2vXriU2Npa8vDwAUlNTWbZsGT/8\n8INj3hwRERGRm0RrM0VE5JawYcMGHn74YZydnWncuDFdunRh27ZtbNiwgcGDB+Pk5ESTJk249957\nAdi3bx+7du2iR48eABQXF+Pt7X3F6w8cOBCA0NBQPv/8cwASEhL46quv7EFDQUEBP/30EwA9evSg\nQYMGlTZfERERkapCwYKIiNRIhmHg7+9vX8FwLa6urgA4Oztjs9ns11i+fDlt2rQpc+yPP/5I3bp1\nK7ZgERERkSpKWyFERKTaqlevHmfPngUgKiqKJUuWUFxczPHjx1m/fj0RERFERkayfPlySkpK+PXX\nX1m3bh0Abdq04fjx42W2RuzevfuS615NdHQ0M2fOxDAMALZv314JsxQRERGp2rRiQUREqq3bb7+d\nyMhIAgICuP/++7FYLAQGBmIymfjnP/9JkyZNeOihh0hMTKRdu3Y0b96ckJAQPD09qV27NsuWLeO5\n554jJycHm83GCy+8gL+/PzExMYwaNQp3d/errmiYOHEiL7zwAhaLhZKSElq0aMHKlStv4jsgIiIi\n4nimC5+yOEpYWJiRnJzs0BpEROTWlpubi4eHBydPniQiIoKNGzfSpEmTCr/P8qOn+PuhLA4XFtHM\n1YXxLb15qIn6LIiIiEj1ZDKZUgzDCLvWcVqxICIit7w+ffqQnZ3N+fPnmThxYqWFCi/t+5n8ktLA\n/pfCIl7a9zOAwgURERG5pSlYEBGRW96FvgqV6e+HsuyhwgX5JQZ/P5SlYEFERERuaWreKCIiUgEO\nFxbd0LiIiIjIrULBgoiISAVo5upyQ+MiIiIitwoFCyIiIhVgfEtv3J1MZcbcnUyMb+ntoIpERERE\nbg71WBAREakAF/oo6KkQIiIiUtMoWBAREakgDzVpoCBBREREahxthRARERERERGRclOwICIiIiIi\nIiLlpmBBRERERERERMpNwYKIiIhUuK5du5KcnAzAAw88QHZ2NtnZ2XzwwQf2Y44cOcKgQYPKdf2Y\nmBiWLVtWIbWKiIjI76NgQURERCrVN998g5eX1yXBQtOmTRUOiIiI3AIULIiIiMg1Wa1W2rZty7Bh\nw/Dz82PQoEGcO3eOxMREgoODMZvNjBw5ksLCwkvO9fHx4cSJE4wbN46DBw8SFBREbGwsVquVgIAA\nAIqLi3nppZcICAjAYrEwc+ZMACZPnkx4eDgBAQE8+eSTGIZxU+ctIiIi16ZgQURERK7Lvn37GD16\nNHv37qV+/fq8/fbbxMTEsGTJEnbu3InNZmPWrFlXPP+tt96iVatWpKWlMXXq1DLfmzNnDlarlbS0\nNHbs2MGwYcMAeOaZZ9i2bRu7du0iPz+flStXVuocRURE5MYpWBAREZHr0rx5cyIjIwF45JFHSExM\npEWLFvj6+gIwfPhw1q9fX65rr169mqeeeopatWoB0KBBAwDWrl1L+/btMZvNrFmzht27d1fATERE\nRKQi1XJ0ASIiIlI9mEymMq+9vLw4efJkpd2voKCA0aNHk5ycTPPmzYmLi6OgoKDS7iciIiLloxUL\nIiIicl1++uknNm/eDMDixYsJCwvDarVy4MABABYuXEiXLl2ueH69evU4e/bsZb/Xo0cPPvzwQ2w2\nGwCnTp2yhwgNGzYkNzdXjR5FRESqKAULIiIicl3atGnD+++/j5+fH6dPn2bMmDHMnz+fwYMHYzab\ncXJyYtSoUVc8//bbbycyMpKAgABiY2PLfO/xxx/nD3/4AxaLhcDAQBYvXoyXlxdPPPEEAQEBREdH\nEx4eXtlTFBERkXIwObq7clhYmHHhOdciIiJSNVmtVvr06cOuXbscXYqIiIjcJCaTKcUwjLBrHacV\nCyIiIlK17fgPTA+AOK/Sf+/4j6MrEhERkYuoeaOIiIhck4+Pj2NWK+z4D8Q/B0X5pa9zfi59DWD5\n482vR0RERC6hFQsiIiJSdSVO/r9Q4YKi/NJxERERqRIULIiIiEjVlfPLjY2LiIjITadgQURERKou\nzztvbFxERERuOgULIiIiUnV1fw1c3MuOubiXjouIiEiVoGBBREREqi7LH6HvDPBsDphK/913hho3\nioiIVCF6KoSIiIhUbZY/KkgQERGpwrRiQURERERERETKTcGCiIiIiIiIiJSbggURERERERERKTcF\nCyIiIiIiIiJSbgoWRERERERERKTcFCyIiIiIiEPl5eXRu3dvAgMDCQgIYMmSJSQmJhIcHIzZbGbk\nyJEUFhY6ukwREbkCBQsiIiIi4lDfffcdTZs2JT09nV27dtGrVy9iYmJYsmQJO3fuxGazMWvWLEeX\nKSIiV6BgQUTkFhQXF8e0adMcXYaIyHUxm818//33jB07lqSkJKxWKy1atMDX1xeA4cOHs379egdX\nKSIiV6JgQUREREQcytfXl9TUVMxmMxMmTGDFihWOLklERG6AggURkVvE3/72N3x9fbnnnnvYt28f\nAGlpaXTo0AGLxcKAAQM4ffo0AAcPHqRXr16EhoYSFRVFRkYGAEuXLiUgIIDAwEA6d+7ssLmISM1y\n5MgR6tSpwyOPPEJsbCybN2/GarVy4MABABYuXEiXLl0cXOXN1alTJ0eXICJy3Wo5ugAREfn9UlJS\n+Oyzz0hLS8NmsxESEkJoaCiPPfYYM2fOpEuXLrz22mu8/vrrvPPOOzz55JPMnj2b1q1b8+OPPzJ6\n9GjWrFnD5MmTWbVqFc2aNSM7O9vR0xKRGmLnzp3Exsbi5OSEi4sLs2bNIicnh8GDB2Oz2QgPD2fU\nqFGOLvOm2rRpk6NLEBG5blqxICJyC0hKSmLAgAHUqVOH+vXr8+CDD5KXl0d2drb9U74Le5Rzc3PZ\ntGkTgwcPJigoiKeeeoqsrCwAIiMjiYmJ4aOPPqK4uNiRUxKpNMnJyTz33HNXPWbdunX06dPnJlUk\n0dHR7Nixg7S0NLZt20ZYWBjdu3dn+/bt7Ny5k3nz5uHq6uroMm8qDw8PoPTXYpcuXejXrx8tW7Zk\n3LhxLFq0iIiICMxmMwcPHgQgPj6e9u3bExwczH333cevv/4KwPHjx+nRowf+/v48/vjj3HXXXZw4\ncQKATz/9lIiICPufBfr/voiUl4IFEZEapqSkBC8vL9LS0uz/7N27F4DZs2czZcoUfv75Z0JDQzl5\n8qSDqxWpeGFhYcyYMcPRZchV7E1ay5y/jOB/hvZlzl9GsDdpraNLcqj09HRmz57N3r17WbhwIfv3\n72fr1q08/vjjzJw5E4B77rmHLVu2sH37doYOHco///lPAF5//XW6devG7t27GTRoED/99BMAe/fu\nZcmSJWzcuJG0tDScnZ1ZtGiRw+YoItWbggURkWrOx8cHs9nMihUryM/P5+zZs8THx1O3bl1uu+02\nkpKSgP/bo1y/fn1atGjB0qVLATAMg/T0dADq1q1L+/btmTx5MnfccQc///wzADExMSxbtswxExT5\njby8PHr37k1gYCABAQEsWbKExMREgoODMZvNjBw5ksLCQgC2bdtGp06dCAwMJCIigrNnz5ZZjbB1\n61Y6duxIcHAwnTp1svcnkd/vwifu12vdunVs2rSJvUlrSZjzHmdPHAfD4OyJ4yTMea9Ghwvh4eF4\ne3vj6upKq1at6NmzJ1D6NA2r1QrAL7/8QnR0NGazmalTp7J7924ANmzYwNChQwHo1asXt912GwCJ\niYmkpKQQHh5OUFAQiYmJHDp06OZPTkRuCeqxICJyCwgMDGTIkCEEBgbSqFEjwsPDAfj4448ZNWoU\n586do2XLlsyfPx+ARYsW8fTTTzNlyhSKiooYOnQogYGBFBYWYjabMQyD7t27ExgY6MhpiVzWd999\nR9OmTfn6668ByMnJISAggMTERHx9fXnssceYNWsWo0ePZsiQISxZsoTw8HDOnDmDu7t7mWu1bduW\npKQkatWqxerVq3nllVdYvny5I6ZV461btw4PDw/q/7/d2M4Xlvme7XwhSZ99gl/UvQ6qzrEu3gbi\n5ORkf+3k5ITNZgPg2Wef5cUXX+TBBx9k3bp1xMXFXfWahmEwfPhw/v73v1da3SJScyhYEBGpRvLy\n8vjjH//IL7/8QnFxMRMnTgRg5syZxMfH4+rqyr/+9S/atm3LqVOnGDlyJOfOnaNOnTpMnjyZ2267\njbi4ODw8PPjuu+8ACAgI4LHHHgPAzc2NnTt3YhgGzz77LG3btqV58+bUrl3bYXMW+S2z2cxf//pX\nxo4dS58+feyrcHx9fYHSfiLvv/8+3bt3x9vb2x601a9f/5Jr5eTkMHz4cDIzMzGZTBQVFd3UuVRn\nU6dOxdXVleeee44xY8aQnp7OmjVrWLNmDXPnzgXg1VdfZeXKlbi7u/Pll1/SuHFj4uPjmTJlCufP\nn+f2229n0aJF5OfnM3v2bJydneFcLv2D/Wl5R4My9zt78oQjpllt5OTk0KxZM6A0VL4gMjKS//zn\nP4wdO5aEhAT704G6d+9Ov379GDNmDI0aNeLUqVOcPXuWu+66yyH1i0j1pq0QIiLVyIVPatPT09m1\naxe9evUCoGHDhqSmpvL0008zbdo0ACZNmkRwcDA7duzgzTfftIcHl7V3JUwPgPN5MD2AL6a/xL59\n+9izZw+ffPKJupNLleLr60tqaipms5kJEyawYsWKcl9r4sSJ3HvvvezatYv4+HgKCgoqsNJbW1RU\nlH2rVXJyMrm5uRQVFZGUlETnzp3Jy8ujQ4cOpKen07lzZz766CPg8r0AfHx8GDVqFGPGjGHSnwZe\nEioA1Lu94U2dX3UTFxfH4MGDCQ0NpWHD/3uvJk2aREJCAgEBASxdupQmTZpQr1492rVrx5QpU+jZ\nsycWi4UePXrYG/mKiNworVgQEalGfvtJbVRUFAADBw4EIDQ0lM8//xwo3Vd7YUl3t27dOHnyJGfO\nnLn0ogU5kPg6eJwvfZ3zM+sTZvNw9GM4OzvTtGlTunXrVvmTE7lOR44coUGDBjzyyCN4eXnx3nvv\nYbVaOXDgAHfffbe9n0ibNm3Iyspi27ZthIeHc/bs2Uu2Qlz8Ke+CBQscMJvqKzQ0lJSUFM6cOYOr\nqyshISEkJyeTlJTEjBkzqF27tr2XRWhoKN9//z1Q2gtgyJAhZGVlcf78eVq0aFHmulFDHyNhzntl\ntkPUqu1K1NCrhKO3oNzcXAC6du1K165d7ePr1q2zf33x9/r160e/fv0uuY6npyerVq2iVq1abN68\nmW3bttm3UgwZMoQhQ4ZU2hxEpOZQsCAiUo1c+KT2m2++YcKECXTv3h34v/23zs7O9v22V1KrVi1K\nSkrsrwuyj4GtNmUWsZXYYO9XwKyKnoLI77Zz505iY2NxcnLCxcWFWbNmkZOTw+DBg7HZbISHhzNq\n1Chq167NkiVLePbZZ8nPz8fd3Z3Vq1eXudbLL7/M8OHDmTJlCr1793bQjKonFxcXWrRowYIFC+jU\nqRMWi4W1a9dy4MAB/Pz8cHFxwWQyAWX/33StXgAX+igkffYJZ0+eoN7tDYka+liN7a/we/3000/8\n8Y9/pKSkhNq1a/PRRx+RdfRLDh2cRkFhFm6u3rRs9RLeTS4NJURErpeCBRGRauS3n9T+61//uuKx\nUVFRLFq0iIkTJ7Ju3ToaNmxI/fr18fHxYeXKlQCkpqby/06dB8r2UOh8lzMfJh9jeHExx44dY+3a\ntfzpT3+qzKmJXLfo6Giio6MvGd++ffslY+Hh4WzZsqXM2MWf8nbs2JH9+/eTt/0YZ1ZZGTU0mqy3\nthIe3c7++0SuLCoqimnTpjFv3jzMZjMvvvgioaGh9kDhcq7UC6BevXr2VVV+UfcqSKggrVu3LvN7\nI+vol2RkvEpJST4ABYVHyMh4FUDhgoiUm3osiIhUIzt37iQiIoKgoCBef/11JkyYcMVj4+LiSElJ\nwWKxMG7cOPsP8A899BCnTp3C39+f9957D987Lm3MOKBtLVo3qU+7du147LHH6NixY6XNScTR8rYf\nI/vzTIqzS5feF2cXkv15Jnnbjzm4sqovKiqKrKwsOnbsSOPGjXFzc7Nv0bqSK/UC6Nu3L1988QVB\nQUH23g1S8Q4dnGYPFS4oKcnn0MFpDqpIRG4FJsMwHFpAWFiYkZyc7NAaRERqtB3/gfjnoOiiHzRd\n3KHvDLD80XF1idwkWW9ttYcKF3P2csV7XIQDKhKpPIlr7gYu9/O/ie7dDtzsckSkijOZTCmGYYRd\n6zhthRARqekuhAeJkyHnF1bU7sNU2xCOLHai6TdriI1uQ//gZo6tUaQSXS5UuNq4VJz9Px5l85cH\nyT1ViEcDVzr2a4Vv+yaOLuuW5ubqTUHhkcuOi4iUl7ZCiIhIabgwZhcr+u1mfP4jHD7nhAEczs5n\n/Oc7WbH9sKMrFKk0zl6uNzQuFWP/j0dZuyiD3FOlAU7uqULWLspg/49HHVzZra1lq5dwcir7dBQn\nJ3datnrJQRWJyK1AwYKIiNhNXbWP/KLiMmP5RcVMXbXPQRXJtVitVhYvXuzoMqq1+tE+mFzK/khk\ncnGifrSPYwqqITZ/eRDb+ZIyY7bzJWz+8qCDKqoZvJv0o23bv+Hm2hQw4ebalLZt/6bGjSLyu2gr\nhIiI2B3Jzr+hcXG8C8GCntpRfnWDGwFwZpWV4uxCnL1cqR/tYx+XynFhpcL1jkvF8W7ST0GCiFQo\nrVgQERG7pl7uNzQuN85qtdK2bVtiYmLw9fVl2LBhrF69msjISFq3bs3WrVs5deoU/fv3x2Kx0KFD\nB3bs2AHADz/8wB/+8Afc3d1xd3dn6NChPPXUU3z77be4u7vj6+vLr7/+aj82KCiIoKAggoODOXv2\nLABTp04lPDwci8XCpEmTHPY+VDV1gxvhPS6CO9+KwntchEKFm8CjweW3mlxpXEREqi4FCyIiYhcb\n3QZ3F+cyY+4uzsRGt3FQRbemAwcO8Ne//pWMjAwyMjJYvHgxGzZsYNq0abz55ptMmjSJ4OBgduzY\nwZtvvsljjz0GwKRJkzAMg59//pnjx48zY8YMpk2bRq9evcjPz+fll1/mn//8JwDTpk3j/fffJy0t\njaSkJNzd3UlISCAzM5OtW7eSlpZGSkoK69evd+RbITVYx36tqFW77I+itWo70bFfKwdVJCIi5aWt\nECIiYnfh6Q9TV+3jSHY+Tb3c9VSIStCiRQvMZjMA/v7+dO/eHZPJhNlsxmq18t///pfly5cD0K1b\nN06ePMmZM2eoX78+xcXFLF68mIEDB3LnnXdy/Phxtm7ditls5vz587Ro0QKAyMhIXnzxRYYNG2Y/\nNiEhgYSEBIKDgwHIzc0lMzOTzp07O+aNkBrtwtMf9FQIEZHqT8GCiIiU0T+4mYKESubq+n9LvZ2c\nnOyvnZycsNlsuLi4XPa8Hj160LhxY/Lz84mMjGTVqlXMmDEDHx8ftm3bxrp164iLiwNg3Lhx9O7d\nm2+++cZ+rGEYjB8/nqeeeqrS5yhyPXzbN1GQICJyC9BWCBERkSomKiqKRYsWAbBu3ToaNmxI/fr1\nufvuu/nhhx94/PHHCQ8PZ9u2beTn51NcXPokj48//th+jYMHD2I2mxk7dizh4eFkZGQQHR3NvHnz\nyM3NBeDw4cMcO3bs5k9QREREbilasSAiIlLFxMXFMXLkSCwWC3Xq1LEHBt988w3nzp2jWbNm9gaO\nb775Jo888gh16tShffv29mu88847rF27FicnJ/z9/bn//vtxdXVl7969dOzYEQAPDw8+/fRTGjVS\no0IREREpP5NhGA4tICwszEhOTnZoDSIiItXJ14e+5t3Udzmad5QmdZvwfMjz9G7Z29FliYiIyC3G\nZDKlGIYRdq3jtBVCRESkGvn60NfEbYojKy8LA4OsvCziNsXx9aGvr3luTnw8md26s9evHZndupMT\nH38TKhYREZFbnYIFERGRauTd1HcpKC4oM1ZQXMC7qe9e9byc+HiyJr6G7cgRMAxsR46QNfE1hQsi\nIiLyuylYEBERqUaO5h29ofELjk1/B6OgbCBhFBRwbPo7FVabiIiI1EwKFkRERKqRJnUv/2i+K41f\nYMvKuqFxuTIPDw9HlyAiIlKlKFgQERGpRp4PeR43Z7cyY27Objwf8vxVz6vl7X1D4yIiIiLXS8GC\niIhINdK7ZW/iOsXhXdcbEya863oT1ynumk+FaDTmBUxuZQMJk5sbjca8UJnl3vKmTp1KeHg4FouF\nSZMm2cf79+9PaGgo/v7+zJkzxz4+d+5cfH19iYiI4IknnuCZZ54BICYmhmXLltmPu3hVxJXuISIi\nUlXUcnQBIiIicmN6t+x9w4+X9OzbFyjttWDLyqKWtzeNxrxgH5cbl5CQQGZmJlu3bsUwDB588EHW\nr19P586dmTdvHg0aNCA/P5/w8HAeeughCgsLeeONN0hNTaVevXp069aNwMDAct9DRESkqlCwICIi\nUkN49u2rIKECJSQkkJCQQHBwMAC5ublkZmbSuXNnZsyYwRdffAHAzz//TGZmJkePHqVLly40aNAA\ngMGDB7Nm0iHfAAAgAElEQVR///5y30NERKSqULAgIiIiUg6GYTB+/HieeuqpMuPr1q1j9erVbN68\nmTp16tC1a1cKfvNEjt+qVasWJSUlAJSUlHD+/Pmr3kNERKQqUY8FERERkXKIjo5m3rx55ObmAnD4\n8GGOHTtGTk4Ot912G3Xq1CEjI4MtW7YAEB4ezg8//MDp06ex2WwsX77cfi0fHx9SUlIA+Oqrrygq\nKrrqPURERKoSrVgQERERKYeePXuyd+9eOnbsCJQ2XPz000/p1asXs2fPxs/PjzZt2tChQwcAmjVr\nxiuvvEJERAQNGjSgbdu2eHp6AvDEE0/Qr18/AgMD6dWrF3Xr1r3qPRo1auSAGYuIiFyeyTAMhxYQ\nFhZmJCcnO7QGERERR4qJiaFPnz4MGjTI0aVIJcvNzcXDwwObzcaAAQMYOXIkAwYMcHRZIiIil2Uy\nmVIMwwi71nFasSAiIiJyk8TFxbF69WoKCgro2bMn/fv3v+KxeduPcWaVleLsQpy9XKkf7UPdYK1U\nEBGRqkc9FkRERCrB22+/TUBAAAEBAbzzzjtYrVb8/Px44okn8Pf3p2fPnuTn55c5Z82aNWX+ovn9\n99/r0+xbzLRp00hLSyMjI4MZM2ZgMpkue1ze9mNkf55JcXYhAMXZhWR/nknedvVXEBGRqkfBgoiI\nSAVLSUlh/vz5/Pjjj2zZsoWPPvqI06dPk5mZyV/+8hd2796Nl5dXmeZ9APfeey8ZGRkcP34cgPnz\n5zNy5EhHTEEc7MwqK0ZRSZkxo6iEM6usjilIRETkKhQsiIiIVLANGzYwYMAA6tati4eHBwMHDiQp\nKYkWLVoQFBQEQGhoKFartcx5JpOJRx99lE8//ZTs7Gw2b97M/fff74AZiKNdWKlwveMiIiKOpB4L\nIiIiN4mrq6v9a2dn50u2QgCMGDGCvn374ubmxuDBg6lVS39U10TOXq6XDRGcvVwvc7SIiIhjacWC\niIhIBYuKimLFihWcO3eOvLw8vvjiC6Kioq7r3KZNm9K0aVOmTJnCiBEjKrlSqarqR/tgcin7Y5rJ\nxYn60T6OKagauZH+JgcOHOC+++4jMDCQkJAQDh48CMDUqVMJDw/HYrEwadIkR05HRKRaULAgIiJS\nwUJCQoiJiSEiIoL27dvz+OOPc9ttt133+cOGDaN58+b4+flVYpVSldUNboTXwNb2FQrOXq54DWyt\np0Jcw432Nxk2bBh/+ctfSE9PZ9OmTXh7e5OQkEBmZiZbt24lLS2NlJQU1q9f7+CZiYhUbVpfKSIi\nUglefPFFXnzxxTJju3btsn/90ksv2b9esGBBmeM2bNjAE088Uan1yc1htVrZtGkTf/rTn27ovJiY\nGPr06cOgcYMqqbJb08X9TYCr9jc5e/Yshw8ftj95xc3NDYCEhAQSEhIIDg4GIDc3l8zMTDp37uyA\nGYmIVA8VvmLBZDINNZlMe00mU57JZDpoMpmub+2niIhIDbdjxw6aN29OfHw8p06dYseOHY4uSS5i\ns9lu+Byr1crixYsroRq5Eb/tb3K1/5aGYTB+/HjS0tJIS0vjwIED/PnPf74ZZYqIVFsVGiyYTKYe\nwD+AEUA9oDNwqCLvISIicivasWMH8fHx/PnPf2bEiBHk5eURHx+vcOEm++STT7BYLAQGBvLoo48S\nExPDqFGjaN++PS+//DJ5eXmMHDmSiIgIgoOD+fLLL4HSACEqKoqQkBBCQkLYtGkTAOPGjSMpKYmg\noCCmT59OcXExsbGx9v37H374IVD6l9lnnnmGNm3acN9993Hs2DGHvQfV2Y30N6lXrx533nknK1as\nAKCwsJBz584RHR3NvHnzyM3NBeDw4cP67yEicg0VvRXidWCyYRhb/vf14Qq+voiIyC0pMTGRoqKi\nMmNFRUUkJiZisVgcVFXNsnv3bqZMmcKmTZto2LAhp06d4sUXX+SXX35h06ZNODs788orr9CtWzfm\nzZtHdnY2ERER3HfffTRq1Ijvv/8eNzc3MjMzefjhh0lOTuatt95i2rRprFy5EoA5c+bg6enJtm3b\nKCwsJDIykp49e7J9+3b27dvHnj17+PXXX2nXrh0jR4508DtS/Vzc3wS4Zn+ThQsX8tRTT/Haa6/h\n4uLC0qVL6dmzJ3v37qVjx44AeHh48Omnn9KokfpbiIhcSYUFCyaTyRkIA74ymUwHADdgBRBrGEb+\nb459EngS4A9/+ENFlSAiIlJt5eTk3NC4VLw1a9YwePBgGjZsCECDBg0AGDx4MM7OzkDp/vuvvvqK\nadOmAVBQUMBPP/1E06ZNeeaZZ0hLS8PZ2Zn9+/df9h4JCQns2LGDZcuWAaX/fTMzM1m/fj0PP/ww\nzs7ONG3alG7dulX2dG9ZN9LfpHXr1qxZs+aSazz//PM8//zzlVekiMgtpiJXLDQGXIBBQBRQBHwJ\nTABevfhAwzDmAHMAwsLCjAqsQUREpFry9PS8bIjg6enpgGrkYhcaAULploXly5fTpk2bMsfExcXR\nuHFj0tPTKSkpsTcC/C3DMJg5cybR0dFlxr/55puKL1xu2P4fj7L5y4PknirEo4ErHfu1wrd9E0eX\nJSJS5VVkj4ULqxJmGoaRZRjGCeBt4IEKvIeIiMgtqXv37ri4uJQZc3FxoXv37g6qqObp1q0bS5cu\n5eTJkwCcOnXqkmOio6OZOXMmhlH6ucj27duB0pUH3t7eODk5sXDhQoqLi4HSffxnz54tc/6sWbPs\n2172799PXl4enTt3ZsmSJRQXF5OVlcXatWsrda5yqf0/HmXtogxyTxUCkHuqkLWLMtj/41EHVyYi\nUvVVWLBgGMZp4Bfg4hUIWo0gIjVS//79CQ0Nxd/fnzlz5gCl+3RjY2Px9/fnvvvuY+vWrXTt2pWW\nLVvy1VdfAaXLqkeMGIHZbCY4ONj+l4sFCxYwcOBAevXqRevWrXn55Zft95o7dy6+vr5ERETwxBNP\n8Mwzz9z8CcvvZrFY6Nu3r32FgqenJ3379lV/hZvI39+fV199lS5duhAYGHjJcnqAiRMnUlRUhMVi\nwd/fn4kTJwIwevRoPv74YwIDA8nIyLCvcrBYLDg7OxMYGMj06dN5/PHHadeuHSEhIQQEBPDUU09h\ns9kYMGAArVu3pl27djz22GP2/f1y82z+8iC28yVlxmznS9j85UEHVSQiUn2YLiTuFXIxk2kycD/Q\nm9KtEF8B6wzDmHilc8LCwozk5OQKq0FEpCo4deoUDRo0ID8/n/DwcH744QcaNmzIN998w/3338+A\nAQPIy8vj66+/Zs+ePQwfPpy0tDT+53/+h927dzNv3jwyMjLo2bMn+/fv57PPPmPy5Mls374dV1dX\n2rRpw4YNG3B2dqZTp06kpqZSr149unXrRmBgIO+9956j3wKRy7JarfTp06fMnneRquD9UZf2Wrjg\nL7PV80JEaiaTyZRiGEbYtY6r6KdCvAE0BPYDBcB/gL9V8D1ERKq8GTNm8MUXXwDw888/k5mZSe3a\ntenVqxcAZrMZV1dXXFxcMJvNWK1WADZs2MCzzz4LQNu2bbnrrrvsTeC6d+9u/zS7Xbt2/Pe//+XE\niRN06dKlTJO5KzWNE5Gqa8X2w0xdtY8j2fk09XInNroN/YObObqsGsWjgat9G8Rvx0VE5OoqsscC\nhmEUGYYx2jAML8MwmhiG8ZxhGAUVeQ8Rkapu3bp1rF69ms2bN5Oenk5wcDAFBQW4uLhgMpkAcHJy\nwtXV1f61zWa75nUvHA/g7Ox8XeeIVEU2m41hw4bh5+fHoEGDOHfuHCkpKXTp0oXQ0FCio6PJysoC\nYNu2bVgsFoKCgoiNjSUgIAAoXfkQFRVFSEgIISEhbNq0CSj9/de1a1cGDRpE27ZtGTZsGBW5OrMy\nrNh+mPGf7+Rwdj4GcDg7n/Gf72TFdj21+2bq2K8VtWqX/dG4Vm0nOvZr5aCKRESqjwoNFkREpLSJ\n22233UadOnXIyMhgy5Yt131uVFQUixYtAkqbuv3000+XdJ+/2IVtFqdPn8Zms7F8+fLfXb9IZdu3\nbx+jR49m79691K9fn/fff59nn32WZcuWkZKSwsiRI3n11dIHSo0YMYIPP/zQ/hjHCxo1asT3339P\namoqS5Ys4bnnnrN/b/v27bzzzjvs2bOHQ4cOsXHjxps+xxsxddU+8ouKy4zlFxUzddU+B1VUM/m2\nb8K9w9raVyh4NHDl3mFt9VQIEZHrUNFbIUREarxevXoxe/Zs/Pz8aNOmDR06dLjuc0ePHs3TTz+N\n2WymVq1aLFiwoMxKhd9q1qwZr7zyChERETRo0IC2bdvq8YRS5TVv3pzIyEgAHnnkEd5880127dpF\njx49ACguLsbb25vs7GzOnj1rb2T4pz/9iZUrVwJQVFTEM888Yw8cLt4CFBERwZ133glAUFAQVquV\ne+6552ZO8YYcyc6/oXGpPL7tmyhIEBEpBwULIiIVzNXVlW+//faS8dzcXPvXcXFxl/2em5sb8+fP\nv+TcmJgYYmJi7K8v/OUKSv+y9eSTT9o7y/fv3/93zkCkcl3YEnRBvXr18Pf3Z/PmzWXGs7Ozr3iN\n6dOn07hxY9LT0ykpKcHNzc3+veq2baiplzuHLxMiNPVyd0A1IiIiN05bIUREqrGso1/yxBNtuftu\nV1q1qk+jxoaCBanyfvrpJ3uIsHjxYjp06MDx48ftY0VFRezevRsvLy/q1avHjz/+CMBnn31mv0ZO\nTg7e3t44OTmxcOFCiouLL71RNREb3QZ3F+cyY+4uzsRGX3kblIiISFWiYEFEpJrKOvolGRmv8vgT\nrnw4507mzffmkUesHP31K0eXJnJVbdq04f3338fPz4/Tp0/b+yuMHTuWwMBAgoKC7M0Y586dyxNP\nPEFQUBB5eXn2rT6jR4/m448/JjAwkIyMDOrWrevIKf0u/YOb8feBZpp5uWMCmnm58/eBZj0VQkRE\nqg2Tozslh4WFGcnJyQ6tQUSkOtq4MYqCwiOXjLu5NiUyMskBFYlUvNzcXDw8PAB46623yMrK4t13\n33VwVSIiIjWDyWRKMQwj7FrHqceCiEg1VVCYdUPjItXR119/zd///ndsNht33XUXCxYsuPKxh77m\n3dR3OZp3lCZ1m/B8yPP0btn75hUrIiJSQylYEBGpptxcva+wYsHbAdWIVI4hQ4YwZMiQax739aGv\nidsUR0FxAQBZeVnEbYoDULggIpXmjTfe4NNPP+WOO+6gefPmhIaG4unpyZw5czh//jx33303Cxcu\npE6dOsTExODu7s727ds5duwY8+bN45NPPmHz5s20b9/eHpwmJCQwadIkCgsLadWqFfPnz7ev3BKp\nqtRjQUSkmmrZ6iWcnMp2jXdycqdlq5ccVJGI47yb+q49VLigoLiAd1O1bUJEKse2bdtYvnw56enp\nfPvtt1zY3j1w4EC2bdtGeno6fn5+zJ07137O6dOn2bx5M9OnT+fBBx9kzJgx7N69m507d5KWlsaJ\nEyeYMmUKq1evJjU1lbCwMN5++21HTVHkumnFgoj8bg888ACLFy/Gy8vrisf4+PiQnJxMw4YNb2Jl\ntzbvJv0AOHRwGgWFWbi5etOy1Uv2cZGa5Gje0RsaFxH5vTZu3Ei/fv1wc3PDzc2Nvn37ArBr1y4m\nTJhAdnY2ubm5REdH28/p27cvJpMJs9lM48aNMZvNAPj7+2O1Wvnll1/Ys2cPkZGRAJw/f56OHTve\n/MmJ3CAFCyLyu33zzTeOLqHG8m7ST0GCCNCkbhOy8i7tL9KkbhMHVCNSOTw8PMjNzXV0GXINMTEx\nrFixgsDAQBYsWMC6devs33N1dQXAycnJ/vWF1zabDWdnZ3r06MG///3vm122yO+irRAiNUReXh69\ne/cmMDCQgIAAlixZgo+PDy+//DJms5mIiAgOHDgAwPHjx3nooYcIDw8nPDycjRs3AqXd2UeMGIHZ\nbMZisbB8+XKgdDXCiRMnAOjfvz+hoaH4+/szZ84cx0xWRGqc50Oex83ZrcyYm7Mbz4c876CKRORW\nFxkZSXx8PAUFBeTm5rJy5UoAzp49i7e3N0VFRSxatOiGrtmhQwc2btxo/5ksLy+P/fv3V3jtIhVN\nwYJIDfHdd9/RtGlT0tPT2bVrF7169QLA09OTnTt38swzz/DCCy8A8PzzzzNmzBj73sHHH38cKG1Q\ndOH4HTt20K1bt0vuM2/ePFJSUkhOTmbGjBmcPHny5k1SRGqs3i17E9cpDu+63pgw4V3Xm7hOcWrc\nKLesqVOnEh4ejsViYdKkScDlP0QAGDduHO3atcNisfDSS+rDU1HCw8N58MEHsVgs3H///ZjNZjw9\nPXnjjTdo3749kZGRtG3b9oaueccdd7BgwQIefvhhLBYLHTt2JCMjo5JmIFJxTIZhOLSAsLAw40Kj\nExGpPPv376dnz54MGTKEPn36EBUVhY+PD2vWrKFly5YUFRXRpEkTTp48SaNGjWjatKn93OPHj7Nv\n3z66dOnCZ599RuvWrctc++L+CXFxcXzxxRcAWK1WVq1aRYcOHdRjoYaJi4vDw8Pjkh9grVYrffr0\nYdeuXQ6qTESk+rqwFSIhIYFly5bx4YcfYhgGDz74IC+//DLHjx/nu+++46OPPgIgJycHm81Gp06d\nyMjIwGQykZ2dfdWeSHJjcnNz8fDw4Ny5c3Tu3Jk5c+YQEhLi6LJEKozJZEoxDCPsWsdpxYJIDeHr\n60tqaipms5kJEyYwefJkAEwmk/2YC1+XlJSwZcsW0tLSSEtL4/Dhw9f1mKN169axevVqNm/eTHp6\nOsHBwRQUFFzzPBGR6qJr167oAxFxtISEBBISEggODiYkJISMjAwyMzMxm818//33jB07lqSkJDw9\nPfH09MTNzY0///nPfP7559SpU8fR5d9SnnzySYKCgggJCeGhhx76XaFCTnw8md26s9evHZndupMT\nH1+BlYpULgULIjXEkSNHqFOnDo888gixsbGkpqYC2JdJLlmyxN51uGfPnsycOdN+blpaGgA9evTg\n/ffft4+fPn26zD1ycnK47bbbqFOnDhkZGWzZsqVS5yQVZ+rUqcyYMQOAMWPG2Le5rFmzhmHDhvHv\nf/8bs9lMQEAAY8eOtZ93ceC0bNkyYmJiLrl2SkoKgYGBBAYGlvn1IyIi5WMYBuPHj7d/AHDgwAH+\n/Oc/X/ZDhFq1arF161YGDRrEypUr7VshpWIsXryYtLQ0MjIyGD9+fLmvkxMfT9bE17AdOQKGge3I\nEbImvqZwQaoNBQsiNcTOnTuJiIggKCiI119/nQkTJgCl4YDFYuHdd99l+vTpAMyYMYPk5GQsFgvt\n2rVj9uzZAEyYMIHTp08TEBBAYGAga9euLXOPXr16YbPZ8PPzY9y4cXTo0OHmTrKae+CBB8jOzr7q\nMVf6tDQtLe13PZ0jKiqKpKQkAJKTk8nNzaWoqIikpCR8fX0ZO3Ysa9asIS0tjW3btrFixYrrvvaI\nESOYOXMm6enp5a7vZnnttddYvXq1o8uQCma1Wmnbti0xMTH4+voybNgwVq9eTWRkJK1bt2br1q1s\n3bqVjh07EhwcTKdOndi3bx8A+fn5DB06FD8/PwYMGEB+fr79ugkJCXTs2JGQkBAGDx6sbv1y00RH\nRzN37lz7r7nDhw9z7Nixy36IkJubS05ODg888ADTp0+vFv8vvlVlZ2fzwQcfXPZ7x6a/g/GbVZ5G\nQQHHpr9zM0oT+d30uEmRGiI6OrrMc5QviI2N5R//+EeZsYYNG9pXMlzMw8ODjz/++JJxq9Vq//rb\nb7+97P0vPkYuZRgGK1euxMmpfHlvWloaycnJPPDAA+U6PzQ0lJSUFM6cOYOrqyshISEkJyeTlJRE\n37596dq1K3fccQcAw4YNY/369fTv3/+a183OziY7O5vOnTsD8Oijj17x10hVcGGLkNx6Dhw4wNKl\nS5k3bx7h4eEsXryYDRs28NVXX/Hmm2/yySefkJSURK1atVi9ejWvvPIKy5cvZ9asWdSpU4e9e/ey\nY8cO+zLnEydOMGXKFFavXk3dunX5xz/+wdtvv81rr73m4JlKVWe1WunVqxcdOnRg06ZNhIeHM2LE\nCCZNmsSxY8dYtGgRd999NyNHjuTQoUPUqVOHOXPmYLFYOH/+PI8++iiHDh3CZrPRsWNHjh49Sn5+\nPs2aNSM6Opp169bh5OSEi4sLs2bN4uzZs/Tr14+CggIMw+Dtt9929FtQY10IFkaPHn3J92xZlz4u\n92rjIlWNggURqXB5249xZpWV4uxCnL1cqR/tQ93gRo4uq8qxWq1ER0fTvn17UlJS2LNnD8ePH6dh\nw4a88cYbfPrpp9xxxx00b96c0NBQeyPEpUuXMnr0aLKzs5k7dy7t27fntddeIz8/nw0bNjB+/HiG\nDBlyXTVcaLJ45swZPD09WbBgAZ06dcJisbB27Vp27dpFTk4Ofn5+lz3/4h4d1a2fxuXe4127dtGn\nTx88PDyYO3cuS5cuBUr7h0ybNo2VK1eSkJDApEmTKCwspFWrVsyfPx8PDw98fHwYPnw48fHxFBUV\nsXTp0hvuBi6Vp0WLFpjNZgD8/f3p3r07JpMJs9mM1WolJyeH4cOHk5mZiclkoqioCID169fz3HPP\nAWCxWLBYLABs2bKFPXv2EBkZCcD58+ft28lEruVaQVfz5s0JDg5mxYoVrFmzhscee4y0tDReeeUV\n4uPj2bBhA+7u7syZM4djx44xYcIECgsLiYyM5Msvv6RFixZl7rd161YHzVQuNm7cOA4ePEhQUBCt\nW7dm2LBh9pB+7OlT9HSuxZmSYlbn5pJbXMyvNhv9mt3JjP89/9NPP2XGjBmcP3+e9u3b88EHH+Ds\n7Oy4CYlcRFshRGowq9Va4U9pyNt+jOzPMynOLgSgOLuQ7M8zydt+rELvc6vIzMxk9OjR7N69m7vu\nugvA/pjP9PR0vv3220u2PthsNrZu3co777zD66+/Tu3atZk8eTJDhgwhLS3tukOFi02ePJl+/fox\nbdo0OnfuTFRUFLNnz+buu+/Gy8uLH374gRMnTlBcXMy///1vunTpAkDjxo3Zu3cvJSUl9qeBXMzL\nywsvLy82bNgAcMPP864s13qP77vvPn788Ufy8vKA0h4kQ4cOLfMpdWpqKmFhYWU+/WvYsCGpqak8\n/fTTTJs27abOSa7O1dXV/rWTk5P9tZOTEzabjYkTJ3Lvvfeya9cu+3Ppr8YwDHr06GHf475nzx7m\nzp1bqXO4VVxtOXhNcSHocnJyumzQtWHDBh599FEAunXrxsmTJzlz5gwADz74IO7u7kDpdpxPPvmE\noKAg2rdvz8mTJ8nMzARg/49H+fiVjbw/ag0fv7KR/T8edcxkxe6tt96iVatWpKWl8cwzz7BgwQKg\ntEdVumHQ9X9/JtuZn8+7ze7ky7Z+rC4pJjk5mb1797JkyRI2btxIWloazs7OVebPVBFQsCAiFezM\nKitGUUmZMaOohDOrrI4pqIq76667LulFsXHjRvr164ebmxv16tWjb9++Zb4/cOBAoHT7Qnm2mPzt\nb3/D19eXe+65x76PPCYmBsMwyMrKIjc3ly5dunDs2DFMJhOurq689dZb3HvvvQQGBhIaGkq/fv2A\n0h+S+vTpQ6dOnfD2/v/s3X1czXf/wPHX6UYhSnN/sxVDd+d0ukHJoYRsE0OhZaRhY243NmZorpit\ntrndtXEh5m6TuYldm6lMaKOUhAg77s1Nq4lKN+f3x7n6/joqt9VJfZ6Pxx7rfM735vM9jpzz/r4/\n73eLMs+3Zs0a3n33XZRKJfpucVzsUa+xkZERffv2JSoqioKCAnbv3s2AAQN07lIrlUrWrl3LhQsX\npP2e9c9G0J+srCxatWoFIH3YB+jevTsbN24EIDU1lZSUFADc3Nw4ePAgZ8+eBeDu3bucOXOmaif9\nnBKBhUcHuh6mfv360s8ajYalS5dKAa4///yTPn36cOaP68RuSCM7Qxvkz87II3ZDmgguVCM9evQg\nPT2dmzdvsmnTJvzffJM2of/C0KIRXeub0bhNG6znh+I3ciQHDhwgOjqaxMREOnXqhFKpJDo6mvPn\nz+v7MgRBIpZCCIJQoYozFR53vLYr+QHxcRV/ADU0NHzkB9AHJSYmsnnzZpKTkykoKMDZ2RkXFxcA\n5HI5d+7coX379sTExPDyyy8zdOhQ7t27R0BAAAEBAaWO5+fnh5+fX6nxkJAQQHvHLHVHLmPdv8LM\n0gT3Ae34/PPPn/CK9WPYsGEsW7YMS0tLXF1dadCggXSXetOmTWXu8yx/NlUhMzOTjRs3lrm+t7b7\n4IMPGDlyJKGhobz22mvS+Lhx4xg1ahS2trbY2tpKf1+aNGlCREQEAQEB5OVpf7+FhobSoUMHvcz/\neVIyHbx3796EhYXpe0rVjkqlYsOGDcyePZt9+/bRuHFjGjZsWGo7Hx8f/v3vf9OzZ0+MjY05c+YM\nrVq1In7HOQru6wb5C+4XEb/jHB26NK+qyxAeYcSIEaxfv57NmzezZs0azO3saHb7NhaxsbQvrml1\n5AgymQyNRsPIkSP59NNP9TtpQSiHyFgQBKFCGVqYPNG4UJqHh4eUip2dnc2uXbseuU+DBg24c+fO\nI7eLi4tj4MCB1KtXj4YNG9K/f3+d59PS0rC2tqZ9+/bIZDKGDx/+1NdRne+YPc5r3KNHD44ePcrK\nlSsZNmwY8HzfpS4oKKi1d4qtrKxITU2VHkdEREgBseLn3N3dOXPmDElJSYSGhkoZJ3Xr1mXz5s2c\nOnWKH3/8kT/++IMLrdvieugEgTJLNIsjmLtnHykpKaX+PgllK5kOLoIKZQsJCSExMRGFQsGMGTPK\nLJwMMHr0aOzs7HB2dsbBwYG3336bgoIC6ffug8obF6rGg/9WBwUFsWiRtuuDnZ2dNP7rr7+SkZFB\nTk4O27dvx8PDA29vbyIjI7lxQ7u0NCMjQydjThD0TQQWBEF4amZmZqXGGvpYsT5lJ5GpPwMwdfcC\ndu61ldoAACAASURBVJ/9jYY+VlU8u+dXp06d6N+/PwqFgldeeQW5XI65uflD9/Hy8uLkyZMolcoy\nO3row8PumOnb47zGhoaG9OvXj//+97/069cP0N6ldnBw4PXXX0ehUODu7k5aWlqp4+/bt4979+49\n8zzXrVuHQqHA0dGRN998E7VaTc+ePVEoFHh7e3Px4kVA++E0MjJS2q/47+a+fftQqVT0798fOzs7\nnTvF06dPf+b51UZbr2cw7fQlLuflowEu5+Uz7fQltl7P0PfUhOfE4wS6LC0t2b59OykpKfz+++9S\n0dCQkBCpkC9ol04sWLCA48ePk5qaSmxsLObm5phZlh3ML29cqBovvPACHh4eODg4MH36dJo1a4at\nrS2jRo3S2a5z584MHjwYhULB4MGDcXV1xc7OjtDQUPr06YNCoaB3795cEx0jhGpELIUQBKFC1Xdq\nysT506WuEAZ1DKnfpYXoClGGBz9cllyTP23aNEJCQrh37x7du3eX0q/37dsHwKm4WOI2r2Oim5wV\n745CNWwER44ceeQ5u3fvTlBQEDNnzqSgoICoqCjefvtt6XkbGxvUajXnzp2jXbt25ab8P47qfses\nrNd4zJgxOtssW7aMZcuW6Yz99NNPZR6v5J9famoqH3zwwTPN78SJE4SGhnLo0CEaN25MRkYGI0eO\nlP5bvXo1kyZNYvv27Q89ztGjR0lNTcXa2hq1Wk1qairJycnPNLfa7NPz18gp0q0VklOk4dPz1xjc\n3FJPsxJqpZQfIHoeZF0G89bgPQcUQwBwH9CO2A1pOsFdozoGuA9op6/ZCv9TXLMF4N69e6Snp5da\nati6detSv9tTUlK4evUqr7/+Oubm5nh7e0sBJ0GoDkTGgiAI5QoLC2PJEm2To6lTp9KzZ08AYmJi\nCAwMBGDWrFk4Ojri5ubGX3/9pd1vx9dsMNpP64Uq6sobY2qtvROcmJhIjx49cHFxwcfHR0TaH2Ls\n2LEolUqcnZ0ZPHgwzs7O0nOn4mLZs2IZd27dBI2GO7dusmfFMk7FxT7yuM7OzgwdOhRHR0deeeUV\nOnXqpPO8qakpK1as4LXXXsPZ2ZmmTZ8+IFTd75gVv8ZyuZwLFy7wxRdfYGtri5+fH/fu3SM6Ohon\nJyfkcjnBwcHSOnpPT0+pi4SZmRmzZs3Cwdoapbk5ce078L2LKzu2bmX69OkolUrOnXu6DI2YmBj8\n/f2lzi2WlpbEx8fzxhtvAPDmm29K3TYepnPnzqVazwlP70pe/hONC6U97tIt4SFSfoCoSZB1CdBo\n/x81STsOdOjSHK9AG+n3rZmlCV6BNqK+QjWyd+9ebG1tmThx4iOzElNSUoiKiiIrKwvQFpuNioqS\niskKQnUgMhYEQSiXSqXiiy++YNKkSSQkJJCXl0d+fj5xcXFSpXQ3Nzfmz5/PBx98wMqVK/n444/L\nPFZ+fj4TJ05kx44dNGnShO+//55Zs2axevXqKr6q50PJOxoPitu8joL7unf9C+7nEbd5HbYqr0ce\ne9asWcyaNavc5/v27Vtmev+Tqu53zIpfY7VajbW1NePHj8fDw4Pg4GC+/PJLvv32W6Kjo+nQoQMj\nRozg3//+N1OmTNE5xt27d5EbGPCmuQVhWf8Qmfk37xga4mlszMChQxmxcGGVXIuRkRFFRdrXuaio\niPv370vPPU2BUKF8rUyMuVxGEKGVibEeZvN8KpkO/sorr4g6C08jeh7k5+iO5edox/+XtdChS3MR\nSKjGevXqVWaNhKCgIIKCgnTGoqOjyc/X/b2Tn59PdHS0yFoQqg2RsSAIQrlcXFxITEzkn3/+wcTE\nBHd3dxISEoiLi0OlUlGnTh1p7fmj2uudPn2a1NRUevfujVKpJDQ0lMuXL1fRldQsd27feqLxJ3E3\n6QbXFh7m8ow4ri08zN2kG099rOfpjlmbNm3w8PAAYPjw4URHR2NtbS1V+B85ciT79+8vtV+dOnVw\nPnAQTW4u9qamXCn+4FdYSNau3c80p549e7JlyxZu374NaAt1de3alc2bNwOwYcMGVCoVoF1Wk5iY\nCMDOnTtLfQAtJu4UP7uZbVtQ10CmM1bXQMbMtmW3WxW0WVYr3h3FF8N8WfHuKE7FxbJx40ZSU1NF\nUOFpZZXz72d548JzrThT4XHHBUEfRMaCIAjlMjY2xtramoiICLp27YpCoSA2NpazZ89ia2uLsbEx\nMpn2A/aj2utpNBrs7e2Jj4+vqunXWA1eaKxdBlHG+LO4m3SDzB/T0eRr73wXZuaR+WM6wFPXyHhe\n7pgVv4+LWVhYSF/oH8bY2JjC69ouFwYyKNT8/9r7wr//fqY52dvbM2vWLHr06IGhoSFOTk4sXbqU\nUaNGERYWRpMmTVizZg0AY8aMYcCAATg6OtK3b99ysxTEneJnV1xH4dPz17iSl08rE2Nmtm0h6iuU\no3jpVnGWVfHSLeCxMqyEcpi3/t8yiDLGhRrH3Ny8zCDCo5ZQCEJVEoEFQRAeSqVSER4ezurVq5HL\n5bz33nu4uLiU+iL2KB07duTmzZvEx8fj7u5Ofn4+Z86cwd7evpJmXnOpho3Q+aAOYFTHBNWwEc90\n3H9+UUtBhWKa/CL++UVd44tvXrx4UXpvbty4EVdXV7799lvOnj3Lyy+/zHfffUePHj3K3NeoRQsK\nrl7VGatnYEBuwwbPPK/iQo0lxcTElNquWbNm/P7779Ljzz77DNDWg8g0b4/HwhiuZubQ0qIu06eH\nsdGp1TPPrTYb3NxSBBIe07Mu3RLK4T1HW1Oh5HII47racaHG8fb2JioqSicbzdjYGG9vbz3OShB0\niaUQgiA8lEql4tq1a7i7u9OsWTNMTU2l9OsnUadOHSIjI/nwww9xdHREqVRy6NChSphxzWer8qLP\n2Ak0aNwEZDIaNG5Cn7ETnvlDemFm2d0ayhsvi1qtxsHBocznShY9rG46duzI8uXLsbW15e+//2bq\n1KmsWbMGf39/5HI5BgYGvPPOO2Xu23TqFGSmpjpjrzVuTMTduzg5OT118caKsD3pCjN/PM6VzBw0\nwJXMHEZP/pCgqbNLbVvyzy4hIYFJkyaVe9x9+/ZJy6CexsPeJ0LNUplLt2o1xRDwXQLmbQCZ9v++\nS6T6CkLNolAo8PX1lTIUzM3N8fX1FfUVhGpFZCwIgvBQ3t7eOhHyM2fOSD9nZ2dLP/v5+Ul9uENC\nQqTxiIgI6WelUlnmOnXhydmqvCr8bp+hhUmZQQRDC90uDuvWrSM8PByZTIZCoWDIkCGEhoZy//59\n6tWrJy2JCQkJ4eLFi5w/f56LFy9iaGhYofOtSEZGRqxfv15nzNvbm6SkpFLbFrf8BN2/A699tQif\na9cwatGC16ZO4Q1f30qb7+MK++U0OfmFOmMFRUXsO116KU1Jrq6uuLq6VubUhFqispZuCWiDCHoO\nJGg0GjQaDQYG4l5lZVMoFCKQIFRr4reAIAhVYuv1DFwPnaBFbDKuh06w9XqGvqckPKChjxVbT/1C\n79VB9Fk9ism7Qrl89y+GbX0PhUKBt7c3e/fuJTQ0FDs7O2bPns3ixYvp1q0bJ06cICkpCV9fX27d\n0t6JzM/PZ+fOnVy/fh1bW1v+/PPPh9bheJ7t7eRBQOgSen69kYDQJezt5FFl51ar1djY2BAYGKjT\nLtPKyopLV7X1H/KupXN94wxpn1sXz+Du7k779u1ZuXJlqWOWzEj47bffUCqVKJVKnJycpOKP2dnZ\n+Pn5SefW/K++RHltZRMTE3F0dMTR0ZHly5dX6mvyNPSVUVOdM3kqgmrYCIzq6AYnK2LpllCxZsyY\nofP3MiQkhPDwcMLCwujUqRMKhYK5c+cC2t85HTt2ZMSIETg4OPCvf/1Lp2POypUrmTp1apVfgyAI\n+iUCC4IgVLqt1zOYdvoSl/Py0QCX8/KZdvqSCC5UM+o6N1mWvIktb/+bPcFr+Negacw7toLgCWNI\nSUkhMDCQ9957D39/f0z/l/pvaWnJ5cuXyc3NRS6Xs2LFCvLytFkPCQkJvPTSS6SlpfHpp59SWFj4\nWAURq5qVlRWpqalPvX91eH+fPn2a8ePHc+rUKRo2bMjXX38NQHPzumVur7l9gZiYGOLj45k3bx5X\nH6gRUVJ4eDjLly8nOTmZuLg46tbVHjMpKYlFixZx8uRJzp8/z8GDB6W2spGRkSQmJhIcHCy1Nh01\nahRLly7l2LFjFXz1j0+j0UhtOYXK07VrV+nnx126tX37dk6ePFnVUxX+Z+jQofzwww/S4x9++IEm\nTZqQnp7O4cOHSU5OJjExUco6TE9PZ/z48Zw4cYL3339fZ/3/mjVrCA4O1st1CIKgPyKwIAhCpfv0\n/DVyijQ6YzlFGj49f01PMxLKEhMTw5Dhw3D4Vx9aL1RhN683h08e5Y033gDgzTff5Pz586X2mzhx\nIsbGxhw/fpwFCxZIX9wuXLhAp06dAG0Kp6mpKYWFhaX2f95Vh/f3g+0yDxw4AMAEr5epa6y7BMXI\nwIDXfH2pW7cujRs3xsvLi8OHD5d7bA8PD9577z2WLFlCZmYmRkbaVZSdO3emdevWGBgYoFQqUavV\n5baVzczMJDMzk+7duwPa91JVefDu6nfffYe7uzvOzs74+/vrLGcptmfPnjK3mTdvHp06dcLBwYGx\nY8dKWRpLlizBzs4OhULBsGHDALh79y7BwcF07twZJycnduzYAUBOTg7Dhg3D1taWgQMHkpOTU+r8\nz7sH6+fYqrwYu3wN72+OYuzyNWUu4xKBBf1ycnLixo0bXL16lWPHjtGoUSOOHz/Onj17cHJywtnZ\nmbS0NNLTtZ2CXnrpJdzc3AAwMzOjZ8+e7Nq1i7S0NPLz85HL5fq8HEEQ9EAEFgRBqHRX8vKfaFyo\nvoyNjdmyZQsFBQUUFRWRkZFBZmamtMQhMjJSzzOsetXh/f1glxaZTIaRkRF9HZrx6SA5jetqn29l\nUZdetk2xbWH+0P1LmjFjBv/5z3/IycnBw8ODtLQ0AExM/j+9vbjdbHFb2eTkZJKTk6UvJvpWfHf1\nt99+Y9WqVezdu5ejR4/i6urKl19+qbPtrVu3CA0NLXObCRMmcOTIEVJTU8nJyWHXrl0ALFy4kKSk\nJFJSUvjmm28AmD9/Pj179uTw4cPExsYyffp07t69y7///W/q1avHqVOn+OSTT0hMTKzaF6MKmJmZ\nlSrwOWHCBKnmzowZM6RAzLRp0zh06BA7d+5k+vTpKJVKvRY8rc38/f2JjIzk+++/Z+jQoWg0GmbO\nnCn9fT579ixvvfUWQKmWtqNHjyYiIoI1a9YwatQofUxfEAQ9E4EFQRAqXSsT4ycaF/SjZ8+ebNmy\nRVqukJGRQdeuXdm8eTMAGzZswNPTk1mzZvHrr78yYcIE3nvvPV555RUKCgpwcXHB0vL/W/C99NJL\nUvHD1NRUcnNzq/6iqkB1eH8Xt8sE2LhxI926dcPKyorExERed2pFr7pq3Nq+wMEZPbFp0ZAdO3aQ\nm5vL7du32bdvn5RZUpZz584hl8v58MMP6dSpkxRYKEvJtrKgrbNx4sQJLCwssLCwkDIpNmzYUIFX\n/2jFd1d///13Tp48iYeHB0qlkrVr13LhwgWdbR+2TWxsLF26dEEulxMTE8OJEycAbUZOYGAg69ev\nlzI69uzZw8KFC1EqlXh6epKbm8vFixfZv38/w4cPl/arbcXYbt++zbZt2zhx4gQpKSl8/PHHdO3a\nlf79+xMWFkZycjLt2rXT9zRrpaFDh7J582YiIyPx9/fHx8eH1atXSxk7V65c4caNG2Xu26VLFy5d\nusTGjRsJCAioymkLglBNiK4QgiBUupltWzDt9CWddPG6BjJmtm2hx1kJD7K3t2fWrFn06NEDQ0ND\nnJycWLp0KaNGjSIsLIwmTZqwZs0aXnzxRfr27cuAAQNISkqiWbNm1K9fn8TERNRqtZQGvX37dkaN\nGoWtrS22trZ07tyZli1b6vkqK151eH8Xt8sMDg7Gzs6OcePG0blzZ9566y1mz56Np6enzvYKhQIv\nLy9u3brF7NmzadmyJWq1usxjL1q0iNjYWAwMDLC3t+eVV16RAgcPKm4rO2nSJLKysigoKGDKlCnY\n29tL665lMhl9+vSp4Ffg4Yrvrmo0Gnr37s2mTZvK3ba8bXJzcxk/fjwJCQm0adOGkJAQKVi2e/du\n9u/fT1RUFPPnz+f48eNoNBq2bt1Kx44dK+/CnkPm5uaYmpry1ltv0a9fv2dqWypULHt7e+7cuUOr\nVq1o0aIFLVq04NSpU7i7uwPaTJT169eX2+FnyJAhJCcn06hRo6qctiAI1YSseH2gvri6umpqcjVk\nQRC0tl7P4NPz17iSl08rE2Nmtm3B4OaWj95ReG5tXBXFotRsbtZpQJP7d5jiYMYbb+m/BWNl0Of7\nW61W069fv2cqQFmTlXx9bt68iYuLCzExMbz88svcvXuXK1eu0KFDBzw9PQkPD+ell14qc5umTZvS\nsWNH1Go1hYWFuLm54efnx5w5c7h48SJWVlbk5+fz0ksvcfLkST7//HP++ecfli5dikwmIykpCScn\nJ7788ktOnjzJf/7zH1JTU1Eqlfz+++81qr2nmZkZP//8MwsWLOCnn34CtKny3bp1IygoiLy8PKKj\no4mMjEStVhMTE0NQUBD9+vWT2hYLz49r13dw/lw4779/lICAtgwZGkqL5gP0PS1BECqITCZL1Gg0\nj/xHSmQsCIJQJQY3txSBhFpk46ooPjlVQJ5JQwBumDTkk1P3YVVUjQwuiPd3+U7FxRK3eR13bt+i\nwQuNUQ0bUWbxvqrQpEkTIiIiCAgIkLqXhIaG0qFDh8faZsyYMTg4ONC8eXNp+UhhYSHDhw8nKysL\njUbDpEmTsLCwYPbs2UyZMgWFQkFRURHW1tbs2rWLcePG6WTyuLi4VP0LUQWKAyx5eXnk5OQQHR1N\nt27dyM7O5t69e7z66qt4eHjQtm1bABo0aCC1MhWeH9eu7yAhYQbj3jlHu3Z1cJDfIy1N2wlGBBcE\noXYRGQuCIAhChes8dRM3/hdUKKlp3j8c/kqsv60tTsXFsmfFMgru50ljRnVMymw3KNQcxUGCDz74\ngG3btmFtbY2ZmRn9+/fHx8eHAQMGkJubi0ajYdq0aYwcOZKDBw8yZswYTExMiIyMFHUWnhMHD6rI\nzSvdrtbUpCUeHnF6mJEgCBVNZCwIgiAIenOzToMnGhdqprjN63SCCgAF9/OI27yuVgYWzvxxnfgd\n58jOyMPM0gT3Ae3o0KW5vqdVoW7fvi0Vcf3888/5/PPPS21TVntTDw8P0W7yOZSbV3Zb3fLGBUGo\nuURgQRAEQahwTe7fKTNjocl9kepcm9y5feuJxmuyM39cJ3ZDGgX3iwDIzsgjdoO2w0ZNCS5cvXoV\nT09Ppk2b9shtq9MSGeHpmZq0KCdjQRRnFoTaRrSbFARBECrcFAczTAru64yZFNxnioOZnmYk6EOD\nFxo/0XhNFr/jnBRUKFZwv4j4Hef0NKOK17JlS86cOcPEiRMful3xEpk7t26CRsOdWzfZs2IZp+Ji\nq2imQkVp224aBgZ1dcYMDOrStt2jg0uCINQsIrAgCIIgVLg33vJlrq0RTfP+QabR0DTvH+baGtXI\nwo1C+VTDRmBUx0RnzKiOCaphI/Q0I/3Jzsh7ovGa7GFLZITnS4vmA7CxmY+pSUtAhqlJS2xs5ovC\njYJQC4mlEIIgCEKleOMtX97Q9yQEvSpObddHyruVlRUJCQk0blw9siPMLE3KDCKYWZqUsXXNJpbI\n1Cwtmg8QgQRBEERgQRAEQRAqk1qtpl+/fqSmpup7Knphq/Kq8rXzhYWFVXq+x+E+oJ1OjQUAozoG\nuA+ofd0PGrzQWLsMooxxQRAE4fkklkIIgiAIglBthIWFsWTJEgCmTp1Kz549AYiJiSEwMJBNmzYh\nl8txcHDgww8/lPYzMzPj/fffx9HRkfj4eGk8JyeHV155hZUrV1bthTygQ5fmeAXaSBkKZpYmeAXa\n1JjCjU/ieV8i07VrV31PQRAEodoRgQVBEARBqGQFBQUEBgZia2uLn58f9+7dIzExkR49euDi4oKP\njw/Xrmnbs509e5ZevXrh6OiIs7Mz586dIzs7G29vb5ydnZHL5ezYsQPQZkM4ODhI5wkPDyckJASA\nJUuWYGdnh0KhYNiwYQDcvXuX4OBgOnfujJOTk3Sc6kSlUhEXFwdAQkIC2dnZ5OfnExcXR4cOHfjw\nww+JiYkhOTmZI0eOsH37dkB7bV26dOHYsWN069YNgOzsbHx9fQkICGDMmDF6u6ZiHbo0Z+QCD979\npicjF3jUyqACaLNY+oydQIPGTUAmo0HjJvQZO+G56Qpx6NAhfU9BEASh2hFLIQRBEAShkp0+fZpV\nq1bh4eFBcHAwy5cvZ9u2bezYsYMmTZrw/fffM2vWLFavXk1gYCAzZsxg4MCB5ObmUlRURJ06ddi2\nbRsNGzbk1q1buLm50b9//4eec+HChfz555+YmJiQmZkJwPz58+nZsyerV68mMzOTzp0706tXL+rX\nr18VL8NjcXFxITExkX/++QcTExOcnZ1JSEggLi4OX19fPD09adKkCQCBgYHs37+f119/HUNDQwYP\nHqxzrAEDBvDBBx8QGBioj0sRHkIfS2QqipmZGdnZ2fqehiAIQrUiMhYEQRAEoZK1adMGDw8PAIYP\nH84vv/xCamoqvXv3RqlUEhoayuXLl7lz5w5Xrlxh4MCBAJiamlKvXj00Gg0fffQRCoWCXr16ceXK\nFf7666+HnlOhUBAYGMj69esxMtLeR9izZw8LFy5EqVTi6elJbm4uFy9erNyLf0LGxsZYW1sTERFB\n165dUalUxMbGcvbsWaysrMrdz9TUFENDQ50xDw8Pfv75ZzQaTSXPWhAEQRBqNxFYEJ4L69atQ6FQ\n4OjoyJtvvolaraZnz54oFAq8vb2lD8ZBQUGMGzcONzc32rZty759+wgODsbW1pagoCDpeGZmZkyf\nPh17e3t69erF4cOH8fT0pG3btuzcuROA3NxcRo0ahVwux8nJidhYbX/tiIgIBg0aRN++fWnfvj0f\nfPBBlb8egiA8X2Qymc7jBg0aYG9vT3JyMsnJyRw/fpw9e/aUu/+GDRu4efMmiYmJJCcn06xZM3Jz\nczEyMqKo6P+LAebm5ko/7969m3fffZejR4/SqVMnCgoK0Gg0bN26VTrvxYsXsbW1rfgLfkYqlYrw\n8HC6d++OSqXim2++wcnJic6dO/Pbb79x69YtCgsL2bRpEz169Cj3OPPmzaNRo0a8++67VTh7QRAE\nQah9RGBBqPZOnDhBaGgoMTExHDt2jMWLFzNx4kRGjhxJSkoKgYGBTJo0Sdr+77//Jj4+nq+++or+\n/fszdepUTpw4wfHjx0lOTga0a3F79uzJiRMnaNCgAR9//DG//vor27ZtY86cOQAsX74cmUzG8ePH\n2bRpEyNHjpQ+tCcnJ/P9999z/Phxvv/+ey5dulT1L4wgCM+NixcvSgUFN27ciJubGzdv3pTG8vPz\npd9HrVu3luoG5OXlce/ePbKysmjatCnGxsbExsZy4cIFAJo1a8aNGze4ffs2eXl57Nq1C4CioiIu\nXbqEl5cXn332GVlZWWRnZ+Pj48PSpUulO/hJSUlV/VI8FpVKxbVr13B3d6dZs2aYmpqiUqlo0aIF\nCxcuxMvLC0dHR1xcXBgw4OFt7hYvXkxOTo4IAguCIAhCJRI1FoRqLyYmBn9/f6kXuaWlJfHx8fz4\n448AvPnmmzofGH19fZHJZMjlcpo1a4ZcLgfA3t4etVqNUqmkTp069O3bFwC5XI6JiQnGxsbI5XLU\najUABw4cYOLEiQDY2Njw0ksvcebMGQC8vb0xNzcHwM7OjgsXLtCmTZvKfzEEQXgudezYkeXLlxMc\nHIydnR0TJ07Ex8eHSZMmkZWVRUFBAVOmTMHe3p7vvvuOt99+mzlz5mBsbMyWLVsIDAzE19cXuVyO\nq6srNjY2gHbZwJw5c+jcuTOtWrWSxgsLCxk+fDhZWVloNBomTZqEhYUFs2fPZsqUKSgUCoqKirC2\ntpaCEdWJt7c3+fn50uPi370AAQEBBAQElNqn5Jr37UlXaPXOajqF/0FLi7pMnxTK606tKnfSgiAI\nglCLicCCUOOYmGhbWBkYGEg/Fz8uKCgAtB/Gi1OTS25XcpvHOQeAoaHhY+0jCELtZGVlRVpaWqlx\npVLJ/v37S423b9+emJiYUuMlWyiWNGnSJJ2srWIHDhzQeXwqLpa4zevokHULl+6uqIaNeG6L5z3M\n9qQrzPzxODn5hQBcycxh5o/HAURwQRAEQRAqiVgKIVR7PXv2ZMuWLdy+fRuAjIwMunbtyubNmwHt\n2mOVSlXh51WpVGzYsAHQ3i27ePEiHTt2rPDzCIJQPrVajY2NDUFBQXTo0IHAwED27t2Lh4cH7du3\n5/Dhwxw+fBh3d3ecnJzo2rUrp0+fBqB79+7S8ieAbt26cezYMX1dil6diotlz4pl3Ll1EzQa7ty6\nyZ4VyzgVF6vvqVW4sF9OS0GFYjn5hYT9clpPMxJqGtERQhAEoTQRWBCqPXt7e2bNmkWPHj1wdHTk\nvffeY+nSpaxZswaFQsF3333H4sWLK/y848ePp6ioCLlcztChQ4mIiNDJVBAEoWqcPXuW999/n7S0\nNNLS0ti4cSMHDhwgPDycBQsWYGNjQ1xcHElJScybN4+PPvoIgLfeeouIiAhAGxzMzc3F0dFRj1ei\nP3Gb11FwP09nrOB+HnGb1+lpRpXnambOE40LwsPsPr+bPpF9UKxV0CeyD7vP79b3lARBEKolmb5b\nMLm6umoSEhL0OgdBeFwpKSlER0eTlZWFubk53t7eKBQKfU9LEGostVpN7969SU9PB2DEiBH4+PgQ\nGBjI+fPnGTRoEFFRUUyaNIn09HRkMhn5+fmkpaVx7949FAoFp06dYvbs2bRu3ZoJEybo+Yr0FLWO\nhAAAIABJREFU44thvlDWv/cyGe9vjqr6CVUij4UxXCkjiNDKoi4HZ/TUw4yE59Xu87sJORRCbuH/\nd1sxNTQlpGsIr7V9TY8zEwRBqDoymSxRo9G4Pmo7kbEgCI8pJSWFqKgosrKyAMjKyiIqKoqUlBQ9\nz0wQarYHa6U8WBNl9uzZeHl5kZqaSlRUlNS9pV69evTu3ZsdO3bwww8/EBgYqJf5VwcNXmj8ROPP\ns+k+HalrbKgzVtfYkOk+Yimb8GQWH12sE1QAyC3MZfHRR2dJitpLgiDUNiKwIAiPKTo6WqdKOWhb\nxEVHR+tpRoIggDbI16qVtihf8dKHYqNHj2bSpEl06tSJRo0a6WF2zyYzM5Ovv/4agH379tGvX7+n\nOo5q2AiM6ugu5TKqY4Jq2IhnnmN187pTKz4dJKeVRV1kaDMVPh0kr3WFG62srLh16xYAZmZmep5N\n9aBWq7G1tWXMmDHY29vTp08fcnJyOHfuHH379sXFxQWVSkVaWhpZWVnse2cfmiJtpk9RXhFp76Wh\nKdBw4c8LpbYHCAoK4p133qFLly6ivakgCLWO6AohCI+pOFPhcccFQagaH3zwASNHjiQ0NJTXXtNN\nT3ZxcaFhw4aMGjVKT7N7NsWBhfHjxz/TcYq7P8RtXsed27do8EJjqStEQUEBRkY16+PA606tal0g\nQXg86enpbNq0iZUrVzJkyBC2bt3KmjVr+Oabb2jfvj1//PEH48ePJyYmBgtrC+6evouZrRl3ku/Q\nwKEBMiMZt9bdYtePu0ptD3D58mUOHTqEoaHhI2YiCIJQs9SsTxKCUInMzc3LDCKYm5vrYTaCUDtY\nWVmRmpoqPS6ZkVDyuTNnzkjjoaGh0s9Xr16lqKiIPn36VP5kK8GMGTM4d+4cSqUSY2Nj6tevj5+f\nH6mpqbi4uLB+/XpkMhmJiYm89957ZGdn07hxYyIiImjRogXJycm888473Lt3j3bt2rF69WoaNWqE\np6cnJ7fu4MDU6fj6+hIREcGZM2cwNjbmn3/+wdHRUXosVA61Wk2/fv2k93B4eDjZ2dlYWlryzTff\nYGRkhJ2dHZs3byYkJAQzMzOmTZsGgIODA7t27cLKyorXX3+dS5cukZuby+TJkxk7dmy55xwxYgSD\nBg3i9ddfByAwMJAhQ4YwYMCAyr/gasLa2hqlUgloA49qtZpDhw7h7+8vbZOXpy10OjJwJGuj1mJm\na0bmH5m80PMFjPONyU7PLnN7AH9/fxFUEAShVhJLIQThMXl7e5f6kG1sbIy3t7eeZiQIwoMWLVrE\nvXv32Ho9A+vZC2ijdKZwxDtsu5Gp76k9lYULF9KuXTuSk5MJCwsjKSmJRYsWcfLkSc6fP8/BgwfJ\nz89n4sSJREZGkpiYSHBwMLNmzQK0XyQ/++wzUlJSkMvlfPLJJ9Kx79+/T0JCAnPnzsXT05Pdu7XV\n7jdv3sygQYNEUEFPFi5cSFJSEikpKXzzzTeP3H716tUkJiaSkJDAkiVLpNbMZSnZKSUrK4tDhw6V\nyvKp6UrWbDE0NCQjIwMLCwuSk5Ol/06dOgXA3NFzkZ2W0bioMbnqXF52fZmZnWZi2ciyzO0B6tev\nX+XXJAiCUB2IwIIgPCaFQoGvr6+UoWBubo6vr6/oCiEI1ciiRYv4/s8rTDt9iZyer9Lk+5+569GT\naacvsfV6hr6n98w6d+5M69atMTAwQKlUolarOX36NKmpqfTu3RulUkloaCiXL18mKyuLzMxMevTo\nAcDIkSPZv3+/dKyhQ4dKP48ePZo1a9YAsGbNmud26UhlGz16NCdPngRgwYIF0njJWhjPSqFQEBgY\nyPr16x9ricqSJUtwdHTEzc2NS5cuSR1UytKjRw/S09O5efMmmzZtYvDgwTVuGcyTatiwIdbW1mzZ\nsgUAjUbDsWPHAG1tiu7u3Wkd05rRQ0fz69Bf8Xf0L3d7QRCE2qx2/2siCE9IoVCIQIIgVBC1Wk3f\nvn1xc3Pj0KFDdOrUiVGjRjF37lxu3LjBhg0b+Omnn8pMAW/SpAlDhgzh8uXLFBYWMnv2bP766y+u\nXr3K+P6vUdjQHMsvV0rnyinS8On5awxubqmvy60QD95tLSgoQKPRYG9vT3x8vM62j6r/UvLOqoeH\nB2q1mn379lFYWIiDg0PFTrwGKCws5D//+Y/0eMGCBXz00UfA09XCMDIyoqioSHpc3M1k9+7d7N+/\nn6ioKObPn8/x48fL3Xbfvn3s3buX+Ph46tWrh6enp/RceUaMGMH69evZvHmzFEyq7TZs2MC4ceMI\nDQ0lPz+fYcOG4ejoCGgDcP7+/uzbt++xthcEQaitRGBBEARB0JuzZ8+yZcsWVq9eTadOndi4cSMH\nDhxg586dLFiwQFoL/aCff/6Zli1bSun7WVlZmJub8+WXX5LzxbfIzEt3gLiSl19qrLpr0KABd+7c\neeg2HTt25ObNm8THx+Pu7k5+fj5nzpzB3t6eRo0aERcXh0ql4rvvvpOyF8oyYsQI3njjDWbPnl3R\nl1FthYWFYWJiwqRJk5g6dSrHjh0jJiaGmJgYVq1axY4dO3j77bfZu3cvy5cv5+OPPyY8PJzIyEhy\ncnJQKpXY29tTWFgo1cLo3bs3YWFhhIWF8cMPP5CXl8fAgQP55JNPUKvVvPLKK3Tr1o2DBw9y9uxZ\nLl++TJMmTdi1axd9+vTh0qVLeHl50a1bNzZv3kx2djZWVlbs2rULgKNHj/Lnn38C2vd9o0aNqFev\nHmlpafz++++PvOagoCA6d+5M8+bNsbOzq9TXt7p5sGZLccAStL9TyuLn54dGo9EZs7a2LnP7B7vS\nCIIg1CZiKYQgCIKgN9bW1sjlcgwMDLC3t8fb2xuZTIZcLketVpe7n1wu59dff+XDDz8kLi5Op4hq\nizpl1wZoZaIdr6gWjlXhhRdewMPDAwcHB6ZPn17mNnXq1CEyMpIPP/wQR0dHlEolhw4dAmDt2rVM\nnz4dhUJBcnIyc+bMKfdcgYGB/P333wQEBFTKtVRHKpWKuLg4ABISEsjOziY/P5+4uDi6d+/O3bt3\n6dKlC8eOHaNbt27SfgsXLqRu3bokJyezYcOGUrUw9uzZQ3p6OocPHyY5OZnExERpGUp6ejrvvvsu\nJ0+exN7eHmdnZ3r37o2NjQ2FhYUMHz4cuVyOk5MTkyZNwsLCgsGDB5ORkYG9vT3Lli2jQ4cOAPTt\n25eCggJsbW2ZMWMGbm5uj7zmZs2aYWtrK5a7VJAzf1xn7UcHWf5ODGs/OsiZP67re0qCIAh6ITIW\nBEEQBL0pmdpvYGAgPTYwMJDaIJaVAt6hQweOHj3KTz/9xMcff4y3t7f0pXnyS82Yd+seOUX/f5ex\nroGMmW1bABXXwrGqbNy4sczxZcuWST8rlUqd+gklx8u6i10yrbvYgQMH8PPzw8LC4ukn+5xxcXEh\nMTGRf/75BxMTE5ydnUlISCAuLo4lS5ZgaGjI4MGDn/i4e/bsYc+ePTg5OQGQnZ1Neno6L774ok5X\ngmHDhpGfn8/HH3/80OPVrVuXPXv2lPncf//73zLHSwbmsrOzOfPHdeJ3nCPjryyO/nGc+dOXPPF1\n1UQPducoNmfOHLp3706vXr3K3ffMH9eJ3ZBGwX3t76jsjDxiN6QB0KFL84ee19PTk/DwcFxdXdmy\nZQtz5syhefPmxMbGPuMVCYIg6IcILAiCIAjVVnkp4FevXsXS0pLhw4djYWEhrX1v0KABnvWMaNix\nDZ+ev8aVvHxamRgzs20Lqb7Cs7Zw9PT0pEuXLsTGxpKZmcmqVatQqVT6eYEqyKtvjSHml19osGAp\nrodO6LxeNZmxsTHW1tZERETQtWtXFAoFsbGxnD17FltbW0xNTZ+qdaBGo2HmzJm8/fbbOuNqtbpU\nnYycnJxnvo5HKf4CnHr+CBt+C6en3I+EHVdpYNbwkV+Aa6t58+Y9cpv4HeekoEKxgvtFxO8490Sv\n66pVq1i5cqVOVowgCMLzRiyFEARBEKqt8lLAjx8/TufOnVEqlXzyySfSHd+xY8fSt29flgUMJqGr\nPde8lCR0tdf5kvysLRwBCgoKOHz4MIsWLdJp4fg82no9g1MjJmDx3U4M27zE5bz8GtNF43GoVCrC\nw8Pp3r07KpWKb775BicnJ2Qy2UP3MzY2Jj9fW7fjwVoYPj4+rF69muzsbACuXLnCjRs3Ku8iHqH4\nC7BNaxf+FbgJL8Vg6QuwoC3MOWbMGOzt7enTpw85OTkEBQURGRkJaAOcM2fORKlU4urqytGjR/Hx\n8WHacn/iTkYBkHX3Nl/tmMKnkWOZ+c1waYnNnj17cHd3x9nZGX9/f+k9UWzevHkcOHCAt956q9zl\nToIgCM8DkbEgCIIg6MWDhdRKFj4r+VxZKeBWVlb4+PiwPekKYb+cxj/yL1rujWG6zyBOT5z4RPMo\nbuEISC0cLSwspBaOoP3i0aJFC2mfQYMGAdpU+ofVgngefHr+ms6yEag5XTQeh0qlYv78+bi7u1O/\nfn1MTU0fKwNl7NixKBQKnJ2d2bBhg1QL45VXXiEsLIxTp07h7u4OaNsWrl+//qmyHypCdkbeE43X\nNunp6WzatImVK1cyZMgQtm7dWmqbF198keTkZKZOnUpQUBAHDx4kYvZvzFrxJio7XxLORmPbphN9\nnQOpZ2GEUqnk1q1bhIaGsnfvXurXr89nn33Gl19+qVPrZM6cOcTExEjLIgRBEJ5XIrAgCIIgPJe2\nJ11h5o/HyckvBOBKZg4zfzwOwOtOrR77OE/SwvHBfYq3f56V1y3jeeyi8TS8vb2lzAOAM2fOSD8/\neHe5ZG2Kzz77jM8++0x6/GAtjMmTJzN58uRS5yuvK0FlMrM0KTOIYGZpUsbWtU/JuhflBQv79+8P\naAvHZmdn06BBA3wCXJm7qg738rJ5qYkN638LQyMrZMyE4TRo0IDffvuNkydP4uHhAcD9+/elYJMg\nCEJNIwILgiAIwnMp7JfTUlChWE5+IWG/nH5oYOFZWzjWNK1MjLlcRhChuIuGUHFSUlKIjo6W2qN6\ne3ujUCgq/bzuA9rpFBkEMKpjgPuAdpV+7ufB49S9KFlYtvjnDl2aU8+sDnXNDXnZRMGsEV+TbZbO\n3C+mkaV5j0aNGtG7d282bdpUNRciCIKgR6LGgiDUMmZmZoC2+J2fn580HhAQgEKh4KuvvtLX1ATh\niVzNLLvoXXnjxZ61haO+qdVqbGxsCAoKokOHDgQGBrJ37148PDxo3749hw8f5u7duwQHB9O5c2ec\nnJzYsWOHtK9KpcLZ2RlnZ2cOHTqk7ZZxLIGMqaPJDJnGrZEDyV7wETOstcXnZsyYgZ2dHQqFosru\nsNdEKSkpREVFkZWVBUBWVhZRUVGkpKRU+rk7dGmOV6CNlKFgZmmCV6CNKNxYAYxMDBn2cRf6zWzH\nxEX9+PjTaYwePZqjR4/i5ubGwYMHOXv2LAB3797VyYgRBEGoSUTGgiDUUi1btpQKU12/fp0jR45I\nH34E4XnQ0qIuV8oIIrS0qPvIfZ+lhWPJdPjGjRvrpcbC2bNn2bJlC6tXr6ZTp05s3LiRAwcOsHPn\nThYsWICdnR09e/Zk9erVZGZm0rlzZ3r16kXTpk359ddfMTU1JT09nYCAABISEkh9sSnzzp7GYnUk\nbVq2JHtKMM3PneJ2HVu2bdtGWloaMpmMzMzMKr/WmiI6OlpnyQVAfn4+0dHRVZK10KFL81oVSDAz\nMyu1lKWkzMxMNm7cyKuvvloh59u3bx9hYWEYGxtjZmbGunXraNKkCREREQQEBJCXp12KEhoaKhWh\nFQRBqElkGo3m0VtVIldXV01CQoJe5yAItUnxh62SvbsVCgXp6el07NiRpUuX0rJlS959911u3rxJ\nvXr1WLlyJTY2NvqeuiDoeLDGAkBdY0M+HSR/ohoLT+LMH9eJ33GO7Iw8zCxNcB/Qrsq/rKnVanr3\n7k16ejoAI0aMwMfHh8DAQM6fP8+gQYMwMjIiNzcXIyPt/YOMjAx++eUXWrZsyYQJE0hOTsbQ0JAz\nZ85w79499u3bx/z58/n1118BGDduHB4eHgwbNgwXFxdcXFzo168f/fr1o06dOlV6vTVFSEjIUz0n\nPJ1HBRZK/hv4uDQaDRqNBgOD6pvw6+npWamFIPft20d4eLjUBlgQhJpPJpMlajSaR/5Sqb6/GQVB\nqDI7d+6U2u+pVCrGjh3L0qVLSUxMJDw8nPHjx+t7ioJQyutOrfh0kJxWFnWRAa0s6lZ6UCF2Q5pU\nBC87I4/YDWmc+eN6pZzvYUquCS+55tvAwEAqPrl161aSk5NJTk7m4sWL2Nra8tVXX9GsWTOOHTtG\nQkIC9+/fL/OYxUUpjYyMOHz4MH5+fuzatYu+fftW3UXWMObm5k80LlSM7OxsvL29cXZ2Ri6XS8uC\nZsyYwblz51AqldKSqLCwMDp16oRCoWDu3LmANgDRsWNHRowYgYODA5cuXXrmOe0+v5s+kX1QrFXQ\nJ7IPu8/vfuZjCoIg6JtYCiEIgo7s7GwOHTqEv7+/NFacwikI1c3rTq0qLZDwoPgd53SK3wEU3C8i\nfse5apdi7uPjw9KlS1m6dCkymYykpCScnJzIysqidevWGBgYsHbtWgoLCx96nOzsbO7du8err76K\nh4cHbdu2raIrqHm8vb2JiorSWQ5hbGyMt7e3HmdV85mamrJt2zYaNmzIrVu3cHNzo3///ixcuJDU\n1FSSk5MBbVvb9PR0Dh8+jEajoX///uzfv58XX3yR9PR01q5di5ub2zPPZ/f53YQcCiG3MBeAa3ev\nEXIoBIDX2r722MdRq9X07dsXFxcXjh49ir29PevWrdPZZty4cRw5coScnBz8/Pz45JNPiImJYcmS\nJWzfvh2AX3/9la+//ppt27axZ88e5s6dS15eHu3atWPNmjWYmZnx888/M2XKFOrVq0e3bt2e+TUQ\nBKFmEhkLgiDoKCoqwsLCQrrTmZyczKlTp/Q9LUHQu7La9T1sXJ9mz55Nfn4+CoUCe3t7Zs+eDcD4\n8eNZu3Ytjo6OpKWlUb9+/Yce586dO/Tr1w+FQkG3bt348ssvq2L6NZJCocDX11fKUDA3N8fX17dK\n6ivUZhqNho8++giFQkGvXr24cuUKf/31V6nt9uzZw549e3BycsLZ2Zm0tDRpudFLL71UIUEFgMVH\nF0tBhWK5hbksPrr4iY91+vRpxo8fz6lTp2jYsCFff/21zvPz588nISGBlJQUfvvtN1JSUvDy8iIt\nLY2bN28CsGbNGoKDg7l16xahoaHs3buXo0eP4urqypdffklubi5jxowhKiqKxMRErl+v+gwtQRCe\nDyJjQRAEHQ0bNsTa2potW7bg7++PRqMhJSUFR0dHfU9NEPTKzNKkzCBCcaX9qmJlZaWzLjwiIqLM\n57799ttS+7Zv316nC8Fnn30GaNdle3p6SuPLli0jKyqKG4HDWXsnG6MWLWg6dQrmvr4VfDW1i0Kh\nqHGBhDlz5mBpacmUKVMAmDVrFk2bNuXy5cv897//RSaT8fHHHzN06NBS6/MnTJiAq6srQUFBlTa/\nDRs2cPPmTRITEzE2NsbKyorc3NxS22k0GmbOnMnbb7+tM65Wqx8ZgHsS1++W/cW8vPGHadOmDR4e\nHgAMHz6cJUuW6Dz/ww8/sGLFCgoKCrh27RonT55EoVDw5ptvsn79ekaNGkV8fDzr1q3j559/5uTJ\nk9Lx7t+/j7u7O2lpaVhbW9O+fXvpPCtWrHjiuQqCUPOJjAVBEErZsGEDq1atwtHREXt7e2lNqiDU\nZu4D2mFUR/efTaM6BrgPaKenGVWerKgors2eQ8HVq6DRUHD1KtdmzyErKkrfUxOqmeDgYCkFv6io\niM2bN9O6dWuSk5M5duwYe/fuZfr06Vy7dk0v88vKyqJp06YYGxsTGxvLhQsXAGjQoAF37tyRtvPx\n8WH16tVSwccrV65w48aNCp9P8/plL5sqb/xhZDJZuY///PNPwsPDiY6OJiUlhddee00KqIwaNYr1\n69ezadMm/P39MTIyQqPR0Lt3bylT8eTJk6xateqJ5yQIQu0lAguCUMsUf2gqeWez5M9br2fgf+0e\nxz5ciPG/N/KvmAPMmTNHb/MVhOqiQ5fmeAXaSBkKZpYmeAXaVLv6ChXhxleL0DxwV1eTm8uNrxbp\naUZCdWVlZcULL7xAUlKStJTgwIEDBAQEYGhoSLNmzejRowdHjhzRy/wCAwNJSEhALpezbt06qcPR\nCy+8gIeHBw4ODkyfPp0+ffrwxhtv4O7ujlwux8/PTyfwUFEmO0/G1NBUZ8zU0JTJzpOf+FgXL14k\nPj4e0LbQLVn/4J9//qF+/fqYm5vz119/8d///ld6rmXLlrRs2ZLQ0FBGjRoFgJubGwcPHpTaTt+9\ne5czZ85gY2ODWq3m3LlzAGzatOmJ5ykIQu0glkIIgiDZej2DaacvkVOkbUN7OS+faae1FbAHN7fU\n59QEoVro0KV5jQwkPKignLvL5Y0Ltdvo0aOJiIjg+vXrBAcHS21LH2RkZERR0f8XQC1rSUJFKQ6i\nN27cWPry/aCNGzfqPJ48eTKTJ08mJSWF6OhovvvuO8zNzUtt9yyKCzQuPrqY63ev07x+cyY7T36i\nwo3FOnbsyPLlywkODsbOzo5x48YR9b+sIkdHR5ycnLCxsdFZMlEsMDCQmzdvYmtrC0CTJk2IiIgg\nICBAKtgcGhpKhw4dWLFiBa+99hr16tVDpVJVSsBFEITnn0yj0eh1Aq6urpqEhAS9zkEQBC3XQye4\nnJdfary1iTEJXe31MCNBEPQhvae3dhnEA4xatqR9TLQeZiRUZ/fv30cul5Ofn096ejo7duzg22+/\n5aeffiIjIwNXV1f++OMP8vPzUalUnD59mpycHJycnJg7d26l1lh4UikpKWV276huhTbVajX9+vXT\nqbfyJCZMmICTkxNvvfVWBc9MEISaRiaTJWo0GtdHbScyFgRBkFwpI6jwsHFBEGqmplOncG32HJ3l\nEDJTU5pOnaLHWQnVVZ06dfDy8sLCwgJDQ0MGDhxIfHw8jo6OyGQyPv/8c5o312b6DBkyBAcHB6yt\nrXFyctLzzEuLjo7WCSoA5OfnEx0dXa0CC8/CxcWF+vXr88UXXzxy293nd1dIdoUgCDWfyFgQBEEi\nMhYEQSiWFRXFja8WUXDtmugKITxUUVERzs7ObNmyReoe8LwKCQl5qudqot3ndxNyKESnPaapoSkh\nXUNEcEEQahGRsSAIwhOb2baFTo0FgLoGMma2baHHWQmCoA/mvr4ikCA80smTJ+nXrx8DBw58ZFCh\nuHZBVlYW5ubmeHt7V7ssAHNzc7Kyssocr20WH12sE1QAyC3MZfHRxSKwIAhCKaIrhCAIksHNLQnv\n2IbWJsbI0GYqhHdsIwo3CoLw3Fu0aBH37t3T9zRqHDs7O86fP//ItPri2gXFX9qzsrKIiooiJSWl\nKqb52Ly9vTE2NtYZMzY2xtvbW08z0p/rd68/0bggCLWbCCwIgqBjcHNLErrac81LSUJXe70FFTw9\nPSleJvXqq6+SmZn50O3nzJnD3r17q2JqgiBUsMLCwko/hz4DC2q1GltbW8aMGYO9vT19+vQhJyeH\n5ORk3NzcUCgUDBw4kL///lsv86sKD6tdUJ0oFAp8fX2lDAVzc/NqV7ixqjSvX3YHnPLGK5OZmVmZ\n40FBQURGRlbxbARBKIsILAiCoDcajUan9Vh5fvrpJywsLB66zbx58+jVq1dFTU0QhAqiVquxsbEh\nMDAQW1tb/Pz8uHfvHlZWVnz44YfS2vxz587Rt29fXFxcUKlUpKWlAbBlyxYcHBxwdHSke/fugDYQ\nMX36dDp16oRCoeDbb78FYN++fXh6euLn5yedU6PRsGTJEq5evYqXlxdeXl56eR3S09N59913OXHi\nBBYWFmzdupURI0bw2WefkZKSglwu55NPPtHL3KpCWcsLHjauTwqFgqlTpxISEsLUqVNrbFAhJCSE\n8PDwcp+f7DwZU0NTnTFTQ1MmO09+quNVhJI3HQRBqF5EYEEQhCqlVqvp2LEjI0aMwMHBge+++w53\nd3ecnZ3x9/eXeo+XZGVlxa1btwD417/+RceOHenWrRsBAQHSh5iSdy2io6NxcnJCLpcTHBws9eQu\neZyEhAQ8PT0B+O2331AqlSiVSpycnESPbkGoYKdPn2b8+PGcOnWKhg0b8vXXXwPwwgsvcPToUYYN\nG8bYsWNZunQpiYmJhIeHM378eEAbNPzll184duwYO3fuBGDVqlWYm5tz5MgRjhw5wsqVK/nzzz8B\nSEpKYtGiRZw8eZLz589z8OBBJk2aRMuWLYmNjSU2NlYvr4G1tTVKpRLQVuU/d+4cmZmZ9OjR4//Y\nu++wKK62gcO/pUgRBRWxR7ABArsgTUUsGCVWbNgLscUSW15NNLFgYqKJvcaY2NGIvX2J+ioQAUmU\nDoqKIkEBKwEBASnn+4OXCQhYEhTL3NeVK+6ZsmeGZdh55pznAWDUqFGcPXu2Uvr2KpSXo+BdzF3w\npujRpAeebT2pV7UeChTUq1rvlSRuXLFiBZaWllhaWrJq1apSy7/77jtMTU15//33uXv37kvty+vO\ny8sLBwcHrK2t+eijj1i/fj2zZs2Slm/bto2PP/64zHWLRorp6enxxRdfoFKpaN26NXfu3Hnqe+bl\n5b28A5K90eTAgkwme+ViY2OZNGkSv/32G5s3b+b06dOEhoZiZ2fHihUryt3uwoULHDhwgIiICH79\n9dcyn1pkZ2fj4eGBt7c3UVFR5OXl8f333z+1P8uWLWP9+vWEh4fj7++Pjo7Ovz5GmUz2t0aNGuHk\n5ATA8OHDCQgIAGDQoEEAZGRkcO7cOdzd3aUvvcnJyQA4OTnh4eHBjz/+KH0RPnXqFDt27MDa2hpH\nR0cePHhAbGwsAA4ODjRs2BA1NTWsra2Jj49/xUdbNi0tLenf6urqz5zeVZY1a9Zgbm4P+viIAAAg\nAElEQVTOsGHD8PPz49y5cxXZxZdi6dKlrFmzhs6dO/Pf//6X7du3A3Djxg0OHTqEjo7OM4PLsorz\n9ddf06JFC9q1a8eVK1cAyhwtlJaWRuPGjelm3I1TA04RNCCImBkxdG3UtdzRRcWVN82nY8eOTJs2\nDWtraywtLTl//jwAmZmZjB49GgsLC7744gvmzZvH77//zg8//ICrqyuPHj2ib9++JCUl8eeff3Lp\n0iV27NjxRvwOvCwxMTF4e3sTGBhIeHg46urq6OnpcejQIWkdb29vatSogVKpZPLkyahUKkJCQtiy\nZQt9+/ZFpVKRmZmJqakpERER2NnZ4eLigr29Pfb29gQGBgKFo1FGjBiBk5MTI0aM4NGjRwwcOJCW\nLVvSt29fHB0dCQ4OZsuWLUyf/ndZ4h9//JEZM2a88nMjqxxyYEEmk71yjRs3pnXr1vz+++9cunQJ\nJycnrK2t2b59O3/++We52wUGBuLm5oa2tjbVqlWjVxkZ669cuYKJiQktWrQAnu8poJOTE5988glr\n1qwhNTUVDQ25YI5MVpEUCkWZr6tWrQoUlis0MDAgPDxc+i8mJgaAjRs3smjRIm7evImtrS0PHjxA\nCMHatWuldW/cuEHXrl2B0jfwr+vTNX19fWrUqIG/vz8AO3fulEYvlGfDhg3897//ZdeuXW9MYMHZ\n2Rl/f3+USiVZWVnk5+eTn5/PnTt36NSpE7t3737u4LLs3wkJCWHPnj2Eh4fzyy+/cOHCBYAyRwvp\n6+tjbW3Nb7/9BsDx48dxdXVFU1Oz3NFFxT1tms+jR48IDw9nw4YNjB49GigMeLi4uDB+/HimTJnC\nvHnzUCgUNGzYkLS0NHR1dVm4cCHXrl3D1dUVdXV16tevj4uLyys4c6+nM2fOEBISgr29PdbW1pw5\nc4YbN27QpEkTfv/9dx48eEBkZCTh4eGMGTOGqlWrcujQIUxMTMjLy6Nq1apERESgpqYmffcKCwvD\nxMREepAzduxY6f0uXbrE6dOn+fnnn9mwYQM1atTg0qVLfPXVV4SEhAAwcOBAjh07JuVT2bp1q/Qz\nlr395G/PMpnslSu6mRBC0KVLF37++edX8r4aGhpSTofs7L9LaM2ePZsePXrwyy+/4OTkxMmTJzEz\nM3slfZLJnjR//nzat29fKmeIn58fy5Yt4/jx45XUs38uISGBoKAg2rRpw+7du2nXrh1hYWHS8urV\nq2NiYsK+fftwd3dHCEFkZCQqlYrr16/j6OiIo6Mjv/76Kzdv3sTV1ZXvv/8eFxcXNDU1uXr1Kg0a\nNHhqH6pVq0Z6ejqGhoYv+3DLlZqayu7du6XXS5cuxc3NjYYNG9KkSRO2bt0qLVuxYgVbtmwBYOzY\nsVy+fJm4uDi6devG6NGj2bhxI+rq6nh5ebF27VrMzMyYMGECCQkJQGGySicnJzw9PUlISCAuLo6E\nhASmT5/O1KlTX9kxR0dHc/78eR4+fEjNmjVxdname/fuBAUF0aRJE7y8vKTRLI8fP6ZNmzavrG/v\nGn9/f/r27Yuuri4AvXv3Jjs7WxotVKRo+uCgQYPw9vamU6dO7Nmzh0mTJpUYXfTk+kXS0tJKTfMp\nvv6QIUMAaN++PQ8fPiQ1NZVTp05x9OhR/vrrL/Lz86lSpQoJCQkkJCTQpUsXoqOjUSqVlfr7+7oR\nQjBq1CgWL15con3Lli3s3bsXMzMzTE1NCQkJISwsjPz8fGrVqsWQIUNYvHixdC3S1NSUAgvR0dGo\nq6tL07YePnwojSLq3bu3NKIzICCAadMKc21YWlpKeUj09PRwcXHh+PHjmJubk5ubi5WV1cs/GbLX\nghxYkMlklaZ169ZMnjyZa9eu0axZMzIzM0lMTJRGGzzJycmJjz76iDlz5pCXl8fx48cZP358iXVM\nTU2Jj4+X9ln8KaCxsTEhISF069aNAwcOkJ2djaWlJUeOHMHKygorKysuXLjA5cuXSwQWit/orVq1\nivHjx0tfzLp3787u3bvLTS5pbGxMcHCw/GVI9ty+/PLLyu5ChTM1NWX9+vWMHj2ali1bMnHiRNau\nXVtinV27djFx4kQWLVpEbm4ugwcPRqVSMWvWLGJjYxFC0LlzZ1QqFUqlkvj4eFq1aoUQgtq1a3P4\n8OGn9mH8+PF88MEHUq6FV8nY2Jjo6Gji4+PZsGED0dHR0rKUlJRS64eEhLB161b++OMPhBA4Ojri\n5eXFiRMn8PX1xdDQkLS0NPT09Jg5cyYAQ4cOZcaMGbRr146EhARcXV2lUR+XL1/G19eX9PR0TE1N\nmThxYqmSii+Ll5cXRkZGbNu2jbZt26JUKvH19eXatWuYmJi80uCyrLTio4We1Lt3bz7//HNSUlII\nCQnBxcWFzMzMctd/XmWNYBJCcODAATIzM/Hw8OD3339HCEFycnKJG1M9PT1OnTrFggULuHv3Lr6+\nvgwdOvQf9+VN1rlzZ9zc3JgxYwZGRkakpKSQnp5O3759+frrrwkLC8PW1hZHR0dGjBiBm5sb/v7+\nGBkZsWzZMhISEmjcuDHwd94EIQQ9evRg586dpd6v6KHQs4wdO5ZvvvkGMzMzPvzww4o7YNlrT54K\nIZPJKk3t2rXZtm0b1tbWKJVK2rRpU+ZczSL29vb07t0bpVJJt27dsLKyKpX4S1tbm61bt+Lu7o6V\nlRVqampMmDABgAULFjBt2jTs7OxQV1eXtlm1apUUcdfU1KRbt27Ssvz8/BIVJ54sWfc8FStksszM\nTHr06IFKpcLS0hJvb2++/PJL7O3tsbS0ZPz48QghgJKJSE+cOIGZmRmtWrXi4MGDlXkI/4qGhgZe\nXl7ExMRw4MABdHV1iY+PLxFwMzEx4cSJE0RERHDp0iXmz58PwMGDB4mKiiI6OprVq1ejUChQU1Pj\nm2++kdp9fX3R19enY8eOJUZ0rFu3Dg8PDwCmTJnClStXygwqlPXzeVoS2Dlz5mBtbY2dnR2hoaG4\nurrStGlTNm7cKO1z6dKlUtWKBQsWAIWjo65fv461tTXTR07m/GeHMa3dhOQl5/lh4Rr69OlDly5d\n6NKlCw0bNuSHH37A2dmZtLQ0Tpw4ARTmJvjggw/YtGkTGzZskK6Z//d//0eXLl3Q0dGhZcuWJZ40\n9ujRAy0tLQwNDTEyMnpmcraneZHSmfv37yc4OJi4uDhmzpyJo6Mjzs7ObNy4ERsbG1q3bk1gYCDX\nrl2Tfg5Xr179x32TPV379u05fPgwWVlZpKenc+zYMXR1daXRQlB4YxkREQEU3sTb29szbdo0evbs\nibq6eonRRU+uX+RZ03y8vb2Bwqfe+vr66Ovr4+rqytq1a7GxscHDwwMrKyscHR1xcXGRpmxER0eT\nkJDAe++9R8uWLRk5cuQ7PcKlZcuWzJ07l2bNmqGjo0ODBg3YuXMnoaGh3L9/n8DAQOLi4ti3bx+G\nhoakpqbSvn17zMzMpJwVUBhU8Pf3x8nJCS0tLS5dusTMmTOxtLSkefPmUhD41q1bdOjQAVtbWy5d\nusS2bduAwikSUVFRUr8cHR25efMmu3fvlkanyN4RQohK/c/W1lbIZDLZ80pPTxdCCJGZmSlsbW1F\nSEjIP97XjRs3hKmpqRg6dKgwMzMT/fv3F5mZmaJx48bi008/FTY2NuLnn38Wo0aNEvv27ROrV68W\nmpqawtLSUnTs2FEIIUTjxo3FvXv3REZGhujevbtQKpXCwsJC7NmzR1o+f/58YWNjIywtLUVMTMy/\nPwmyN87+/fvF2LFjpdepqaniwYMH0uvhw4eLo0ePCiGE9HnLysoSDRs2FFevXhUFBQXC3d1d9OjR\n45X3/d+6ceOGsLCwqJw3j/AWYoWFEAv0C/8f4V3mamX9fBo2bCiuXLkihBBixIgRYuXKlUKIwt/p\nDRs2CCGEmD59urCyshIPHz4Ud+/eFUZGRkIIIU6ePCnGjRsnCgoKRH5+vujRo4f47bffpHOREXpH\n3JobIM5N8BYtDE3Ezc/OihW9PhdNGhqLhw8fikWLFgktLS3x/fffCyGEcHBwEH379hWNGzcWzs7O\n4urVq2LBggViypQpolOnTkIIIdTV1cW1a9eEEEL89ddf0rEsWLBALF26VHptYWEhbty48Y9P6Y0b\nN4S6uroICwsTQgjh7u4udu7cKaysrISfn58QQoh58+aJadOmCSGE6NChg1i/fr3Q0NAQGRkZQggh\nmjdvLpYvXy6EEOLMmTPCzs5OWFlZCSsrK3HkyJF/3DfZsy1atEg0b95cODk5iSFDhoilS5eKuLg4\n4erqKpRKpTA3NxcLFy6U1t+3b58ApJ+tEKLc9Yt/1sLCwoSjo6OwsrISbm5uIiUlRQhR+HmYNm2a\nsLa2FhYWFuKPP/4QQgjx6NEjMX78eGFpaSlatmwpXesePXokBg0aJMzMzETfvn2Fg4ODuHDhwis5\nV2+C57l2jRw5UqhUKqGpqSmUSqUICgoSOjo6okOHDkKIwt/hmjVrikePHol79+6JVq1aierVqwtz\nc3Px0UcfiQcPHoi5c+eKxo0bi7t37wohhNi2bZto3LixMDc3F3379hUqlUpcvXpV6sfixYvFoEGD\nXt2JkL1UQLB4jvt6ObAgk8kqXdWqVUV6erpwcXGRbsAPHz4shCh989+oUSNhZWUlTE1NRefOnYWd\nnZ2wsLCQvsQLUfjF5dNPPxX29vaiefPm4uzZs0IIIfLy8sTMmTOlL7GfzR4mALHwyzpCpaouDAz0\nRJ06dUSdOnXEt99+K06ePClat24tatasKVq3bi3S09OlQEKRotdl/XEvWr5mzRohhBDr168XY8aM\neSXnVPZ6uXLlihSwKvo87t+/Xzg4OAhLS0tRv359sXjxYiHE34GFsLAw4ezsLO3jyJEjb2RgodJE\neAuxqI4QC6r//d+iOmUGF578+YSHh5c496dPnxZ9+/YVQhT+Tt+6dUsIIcTmzZtL/N43atRI/PXX\nX+I///mPaNy4sVCpVEKlUommTZuKn376SQosJC3+Q9z87GyJwMLy7nPEUHs3IYQQISEhQlNTU8TG\nxoqMjAxRv359MWTIENGoUSOhra0tVCqVqF+/vqhTp44wMzMTQgjRrFkz0bx5c7Fp0yZx//596cb/\nZQQWmjVrJr1esmSJ8PT0FI0aNZLarl27JmxsbIQQhddj+UZQVuTffh4yQu9Ivz9Ji/8QGaF3KrB3\nb54XvXYVfX+5cOGC6NChg9if/EDUGz1R6I2aIGwDo8X+5AeiX79+4tSpUyXeJyoqSlSrVk26pllY\nWAgXFxchROHvu7GxsYj/c58ICGgnTp9pKtq2rSG89y4UsrfD8wYW5KkQMpnstaCtrc2hQ4cIDQ3F\n19eX//znP9LQ8CtXrjBp0iRiYmJ4//33GTlyJJcvX2bv3r1cuHCB6OhosrKySgyBzsvL4/z586xa\ntUrKRr1582b09fW5cOECR4/NZ6/3fmrWUiMpMZdWturMnVcLleo9qlSpQpcuXVi0aBGnT5+mV69e\nNG3a9KnZyq2srPjvf//LZ599hr+/f4kpGv369QMKa9e/LqXvZK9WixYtCA0NxcrKirlz5/Lll18y\nadIk9u/fT1RUFOPGjSuRUFRWAc58CblZJdtyswrbn/Dkz+dZ+RqKKk+oqamVqEKhpqZGXl4eQgjm\nzJkjVa24du0aY8aMkdbLT80ptU8AzfzCr2WtWrVCT0+Pnj174ujoSIcOHahZsyZQmOgyPDwcX19f\njIyM0NLSwt/fn6CgIN577z3mzp1LvXr1WLVq1bPP0T9UEaUzATLD7pK85Dy3ZvuTvOQ8mWF3K6qL\nsrdE8u0jBAY6c8anGf5+TvwZsF36/clPzSH1YOw7/bl5kWvXkwms7z3OY+aVmzzMKwBtHW7l5DLz\nyk0Ssx+X2lYIgYWFhXRNCwoKIi0tDZVKRd++fVm0aARxcZ7cf3CTUSMT0NB4TO3ae0m+feSlHbvs\n9SMHFmQy2WtBCMHnn3+OUqnk/fffJzExUZoH3KhRIylr+PDhwwkICADA19cXR0dHrKys8PHx4eLF\ni9L+yrqZP3XqFDt27MDa2pou73uQkZFHfh6Ymmlx8kQ6J0884N69K6ipqRETEyOVwjx69Ch+fn5P\nLYVZ1o1jkaIv4a9z6TvZy5WUlISuri7Dhw9n1qxZhIaGAmBoaEhGRoaUU6E4MzMz4uPjuX79OoCc\n4O5Fpd167vYnfz5BQUFSElh4vlKQxbm6urJlyxYuXryIpaUliYmJ3L17V6pMoW6gVeZ24Xcus2zZ\nMqAwgBAQEEB0dDStWrXi559/JiEhgaZNm7Jv3z5atGhBREQE27dvl/IwnD59mjt37qBSqaRa8jNs\nbXH75VdizFsS69KZwMWLMTY2fu5jeR5Pm1NfdMxPygy7S+rBWPkm8R3j5+eHnZ3dc62bfPsIly9/\nQXZOEiB4XHCb22ZbSKv7d5lVkVvAw5PxL6ezb4AXuXYVJbAGOHDgAAnZOWQViBL7yyoQJLe04Ycf\nfpC+r6SkpGBqasq9e/cICgoCCh8Gbd++nYiICCIjIzE29qWgIAs9PXW272jE/AV1KCjIIu76sld1\nKmSvAbkqhEwmey3s2rWLe/fuERISgqamJsbGxtIT3LIySGdnZzNp0iSCg4Np1KgRnp6eJZ74lnUz\nL4Rg7dq1uLq6csanGbdvP2b4sJtoqCtYsbI+i766Q3JyHqBZohSmh4cHPXv2ZMCAAVhZWZVZsi4p\nKYmaNWsyfPhwDAwM+Omnn17i2ZK9aaKiopg1axZqampoamry/fffc/jwYSwtLalbty729valttHW\n1mbTpk306NEDXV1dnJ2dy7xBk5VDvyGk3Sy7/Qll/XzS0tJwd3cnLy8Pe3t7KQns8+jatSsxMTH0\n69ePP//8kwEDBuDl5UXTpk1xcnKi808jaV+7FaOs+0jbKNQVqOuXHXAo7kWqZ6QdO0byvPmI/10b\n85KSSJ5XmBRTv1ev5z6e57F9+3YmTJjAo0ePSpTO9PDwYMKECejo6BAUFCSVq3t4Mh6RW1BiH0U3\niVVtjCq0b7I3U9z1ZRQUlBx1JNQfc7/5AfRvt5XayhsB9C54kWvXggULGDNmDPPmzaNjx47kFAjK\nqvOQ49qb937JkBJajxs3jo8//pj9+/czdepU0tLSyMvLY/r06VhYWACQnZNcZv/Ka5e9nRRFQ40r\ni52dnQgODq7UPshkssqlp6fH119/zbVr11i7di2+vr64uLhw48YNoDBb/Llz52jTpg1jx47F3Nyc\nMWPGSKUl8/Pzad26NQMGDMDT05OOHTuybNky7OzsuH//PnZ2dsTHx7Np0yZ++eUX9u3bx/nzLgT9\nfo1VK+/TuHEVbt58TGPjKlirjNi+/QHnz5+na9eu+Pj4sGjRIt5//30cHBw4efIk69atk0rWFZWT\nDAkJKfXH3c7OrkS5yeDgYGbOnImfn1/lnnCZ7F0QuReOTS05HUJTB3qtAeXAV9KF+Ph4unXrRrt2\n7Th37hwNGjTgyJEjJCUlMWHEOO78mYS2mhbL3L/AdkRHlh7ZIJWQDAkJYfTo0UBhoOLXX38tUaay\nyNU/bhN05DoZKTno1dSijVtTWjjWBSDWpTN5SUmlttGoX5/mPmde7sE/w63Z/uUua7jE+RX2RPa6\nOuPTDCjjPkWA6X+3SS/VDbSoN9vhlfXrbWF37iK3cnJLtTfU0iS4rYX0+mnXmCKBgc7/G1lSkrZW\nfZycyv9dl70ZFApFiBDimUON5KkQMpms0ikUCoYNG0ZwcDBWVlbs2LEDMzMzabmpqSnr16/H3Nyc\nv/76i4kTJ2JgYMC4ceOwtLTE1dW1zCe+Txo7diwtW7akVatWjBmTwC6vh6zf0JB27aqirq7gdnIB\n58/rEBERgZmZGdu2bWPIkCGEhoby3Xffcfny5VIl64pK5rm6uhIZGUl4eDgXLlzglno9nJb4oBi8\nHrefIjkcloidnZ0cVJA9t8jISFauXImnpycrV64kMjKysrv0ZlEOLAwi6DcCFIX/f4VBhSKxsbFM\nnjyZixcvYmBgwIEDBxg/fjwbtv9AZOJl1u7fhGf4xlJP6T/88EPWrl1bqpRfcVf/uI3vrstkpBQ+\nsc1IycF312Wu/nEbgLzksp8WltdeUYrPiw8MdC5znnV500HKa5e9e7S16pXZrpFdS/q3QlON6q7G\nr6hHb5c5Teqho1ZyRKiOmoI5Tf4+78+6xhRp0nQmamo6JdrU1HRo0nTmS+q97HUkj1iQyWSV6sGD\nB7Rq1arc/AXx8fH07NmzzCd1/1by7SPEXV9Gdk4y2lr1aNJ0JvXquv3r/R4OS2TOwSiycvOlNh1N\ndRb3s6KPTYN/vX/Z2y8yMpJjx46Rm/v30yRNTU169eqFUqmsxJ7JXkR8fDxdunQhNjYWgG+//Zbc\n3Fy+/vprTE1NpfVycnKIiYnB09MTPT09xo4di1KpJCEhASj8PAwdOrTUdXD754HSF/7i9GpqMeob\np0oZsVA0L774EHY1NR3MzL4ucX0tyrFQfDqEQlMNg37N5akQMqCczxLa1L02hmpx9qgbaFHd1Vj+\nvPwLB26nsDgumcScXBpoaTKnST36160pLX/WNaa4l/WdSlb5nnfEgpxjQSaTVZqkpCQ6duzIzJmV\nE9GuV9et3D96z/pj+zRLT14pEVQAyMrNZ+nJK3JgQfZczpw5UyKoAJCbm8uZM2f+VWBh27ZtBAcH\ns27dOukm9kV+//T09MjIyPjH7/8uerKCwp07dzAwMCA8PPxf77usL/zF241mTC+RYwFAoa2N0Yzp\n//q9y1PWvPiiJG7Fr7dFN4MPT8aTn5oj3yTKSin6vJS6WXWRb1YrSv+6NZ/63eZZ15jinvadSvZu\nkAMLMpms0tSvX5+rV68+dR1jY+OXMlrhaQ7cTmHmlZtStuSiEkzAcwUXklKzXqhdJntSWlraC7XL\n3hzVq1fHxMSEffv24e7ujhCCyMhIVCqVtI6BgQEGBgYEBATQrl07du3aVea+9Gpqlfs0Ef5O0Hh3\n5SrykpPRqFcPoxnTKzxxY3EvksStqo2RHEiQPZV8s1q5nnWNkcmKk3MsyGQy2RMWxyWXWYJpcdzz\nzUuub6DzQu1vIj09PaBw1MmAAQOeuu7Ro0dZsmTJq+jWa2PNmjWYm5szbNiwf7S9vr7+U9vj4+Ox\ntLSU2nfs2IFSqUSlUjFixAiOHTuGo6MjNjY2vP/++1Lp1vJcv36dDz74AFtbW5ydnbl8+TIAN27c\noE2bNlIZVVnF2LVrF5s3b0alUmFhYcGRI6VzEGzdupXJkydjbW1NedNW27g1RaNKya9yGlXUaOPW\nVHqt36sXzX3OYB5zieY+Z15qUAHKnxdfXrtMJnt9Pc81RiYrIudYkMlksifU8w0vKw81CiC5k/Uz\nt38XcizIQ+KfzszMjNOnT9OwYenShs/jWTkWiuceuXjxIn379uXcuXMYGhqSkpKCQqHAwMAAhULB\nTz/9RExMDMuXLy93KkTnzp3ZuHEjzZs3548//mDOnDn4+PjQu3dvBgwYwMiRI1m/fj2fffaZ/HN/\nzTxPxvZX6XlzLMhksjfD63aNkb16co4FmUwm+4caaGmWWYKpgZbmc21fFDxYevIKSalZ1DfQYZar\n6VsTVCiu+A1u69at2bx5s1TXuqjsZ3R0NIGBgdjY2HD+/HkePnyIr68vNWrU4LvvvmPAgAEUFBTw\n8ccf4+PjQ6NGjdDU1GT06NHPHA3xPP161SZMmEBcXBzdunXDw8MDf39/4uLi0NXVZdOmTSiVylL5\nDSwtLTl+/DiAVJ7Qx8cHDQ0NBgwYgKGhIfXq1WPEiBFAYfnBIj4+Pri7u2NoaAhAzZo1iYqKYtCg\nQSQnJ/P48WNMTEzK7W9GRgbnzp3D3d1dasvJKRz6GhgYyIEDBwAYMWIEn332WQWeKVl5DoclPvf1\no4Vj3dfqS3658+LloIJM9kZ63a4xsteXPBVCJpPJnvA8JZiepY9NAwJnu3BjSQ8CZ7u8lUGFJw0a\nNIi9e/cCkJycTHJyMnZ2hQHunJwcNmzYAEBKSgpt27bl+PHjzJ49G4CDBw8SHx/PpUuX2LlzJ0FB\nQZVzEBVg48aN1K9fH19fX+Lj47GxsSEyMpJvvvmGkSNHPnP7ovKE169fR6VSYW5uzowZM/jmm2+e\nWX6wyJQpU/j444+Jiorihx9+ILtY8r4nFRQUSMkEi/6LiYmRlisUinK3lVW8ohFPialZCCAxNYs5\nB6M4HJZY2V17bvXquuHk5E9nl2s4OfnLQQWZTCZ7B7yUwIJCoWiuUCiyFQqF18vYv0wmk71M/evW\nZJlpIxpqaaIAGmppssy00XNXhXhXDRw4kP379wOwd+/eEqMNgoKCuH79OkePHiUhIYHMzEzmz59P\nXFwcw4YNw9/fH3d3d3x9fenWrRsFBQVs2LBBenJubGzM/fv3AQgODqZjx44A3Lt3jy5dumBhYcHY\nsWNp3LixtF5+fj7jxo3DwsKCrl27kpX16pNnBgQESKMMXFxcePDgAQ8fPnzqNiYmJlhbF065sbW1\nJT4+ntTUVFJTU2nfvj2AtM+i/e7bt48HDx4AhYGbtLQ0GjQoDGZt3779qe9XPJkggBCCiIgIunfv\njoODA3v27AGQEgh6enqybNmyFzoPz6tjx46869Mjn1ZV5k3wZP4Pmex1tGrVKh49evTM9YryCclk\nsmd7WSMW1gMXXtK+ZTKZ7KXrX7cmwW0tSO5kTXBbCzmo8BwaNGhArVq1iIyMxNvbm0GDBknL2rRp\nQ9OmTenduzejRo0iLCyMVatWoaurS1xcHMnJyeTm5uLh4YG3tzedO3cmPz+f77///qnvuXDhQlxc\nXLh48SIDBgwgISFBWlb05P/ixYsYGBhIQ/pfBxoaGhQUFEivi48oeLI8YV5e3lP3ZWFhwRdffEGH\nDh1QqVR88skneHp64u7ujq2trTRF4mnKSib4yy+/sGHDBtavX4+VlRWJif/sietn8kUAACAASURB\nVPmz+i8rqaKqyqSmpkqjhPz8/OjZs+e/7ptM9rZ43sCCTCZ7fhUeWFAoFIOBVOBMRe9bJpPJZK+3\nQYMG8d1335GWloZSqSx3PQcHBymxobW1NXXq1MHLywtjY2P09fXx8/OjY8eOnD179qnvFxAQwODB\ngwH44IMPqFGjhrSsrCf/r5qzs7P0pN/Pzw9DQ0OqV6+OsbExoaGhAISGhnLjxo2n7qd4+UGgRPnB\nHTt2sHz5ctTV1aX8DatXr0ZPTw8DAwOmTJmCn58fHh4ehIaGEhoaSpMmTbC0tGTmzJkkJyczatQo\nbt++TX5+Pj/88APz58/H2NgYv0d55C7/iXiHDizb4UWjlpZcufL3k/Pyqkl4eHgwYcIEHB0d+fTT\nT8nMzGT06NE4ODhgY2MjVUHIyspi8ODBmJub07dv30oZVfK6qaiqMsUDC/90u6KAxIsGh8oaLVTe\nZ0Ume9kyMzPp0aMHKpUKS0tLFi5cSFJSEp06daJTp05s2bKF6dOnS+v/+OOPzJgxo9R+li5dir29\nPUqlkgULFrzKQ5DJ3ggVGlhQKBTVgS+BTypyvzKZTCZ7MwwYMIA9e/YwcODAp6735FN5Gxsb6tSp\nQ0hICMOHD6dVq1ZUrVpVWqf4E/6n5Qt42ntUxpNzT09PQkJCUCqVzJ49W5qW0L9/f1JSUrCwsGDd\nunW0aNHimfsqq/zgxYsXWbRoET4+PkRERLB69WqmTJnCqFGjiIyMZNiwYUydOlXaR3JyMgEBASXy\nW+zevRtXV1fCw8OJiIiQgjGP8gtYcC2RG1ERZPueRP+Hn3nkuRy/3/+Q9jd+/HjWrl1LSEgIy5Yt\nY9KkSdKyW7duce7cOVasWMHXX3+Ni4sL58+fx9fXl1mzZpGZmcn333/Pb7/9xs6dO1m4cCEhISH/\n/qS/4Wa5mqKjqV6iTUdTnVmupi+0n9mzZ3P9+nWsra2ZNWsWGRkZDBgwADMzM4YNGyZ9hkJCQujQ\noQO2tra4urpy9epVNmzYQMeOHVm3bh0BAQGsXr2ae/fu0b9/f+zt7bG3tycwMLDc9y5rtNDTPisy\n2ct04sQJ6tevT0REBNHR0UyfPl3Kg+Pr68vAgQNLVOHZunUro0ePLrGPU6dOERsby/nz5wkPDyck\nJOSZgW+Z7F1T0VUhvgI2CyFuPS3Zk0KhGA+MB3jvvfcquAsymUwme9mKSg4aGxuXqLxQp06dUjfw\nHh4e9OrVi1atWrFt2zb8/Py4cOGCtJ8PR/fg+vVTDBn6mLNnC/jkP658PPl76Yan6H1CQkLo1q1b\niSkNTk5O7N27l88++4xTp07x119/vexDfy7FR0ccPny41HIdHR1OnTpV5rbFz2dR1QiA+AYmaH6/\nm8ScXHy0NFn4yWx89u0qVREiKCiIgwcPAoW5GD799FNpH3369EFNTY2WLVty584dAOzt7Rk9ejS5\nubn06dNHCiyk5eWDEDyODEOrXScU2jrkAMLRGXh6NQkAd3d31NULb5BPnTrF0aNHpdwM2dnZJCQk\ncPbsWYyMjABQKpVPHeXyrqioqjJLliwhOjqa8PBw/Pz8cHNz4+LFi9SvXx8nJycCAwNxdHRkypQp\nHDlyhNq1a+Pt7c3gwYNJTk4mPj4eXV1drK2tCQoKYuHChTg6OnL+/Hlu3rxJhw4deO+998jIyMDQ\n0JBt27bx6NEj3NzcpNFCsbGxBAYGolQqn/pZedf4+fmxbNkyqRKM7OWysrLiP//5D5999hk9e/bE\n2dm5xHI9PT1cXFw4fvw45ubm5ObmYmVlVWKdU6dOcerUKWxsbIDC619sbKyU90Ymk1VgYEGhUFgD\n7wM2z1pXCLEJ2ARgZ2dXVrl4mUwmk71FatWqhZOTE5aWlujo6FCnTh2gsOb9X3/9Tm1DdRYuTEdd\nPR+33p9Sq1YNqlatyoQJEwBYsGABY8aMYd68eVLixqL2IUOGsHPnTtq0aUPdunWpVq2aFPh4Wxy4\nncLMKzfJKij8k3krJ5eZV27i8jCTFykCVnwUR9ET6/bt23P27Fn+7//+Dw8PDz755BNGjhxJnij9\n5zn/dhIPfj0CdlYUFBSgqalJnz59qFmzJhs3bkRTU5PBgwejra2Nuro6o0ePJjo6mkuXLklPqbOy\nsvjwww/p168fqampGBgY/Ktz8zbqY9OgwivJPDn9KD4+HgMDA6Kjo+nSpQtQOIWhQYMG6OrqYmho\nSJ8+fViwYAEXL16kVatWnDt3jhYtWqCrq0tiYiI+Pj6YmJjg7e3NF198wZYtW6hWrZo0pWXr1q3Y\n29uTkpIiVR6RyV61Fi1aEBoayi+//MLcuXPp3LlzqXXGjh3LN998g5mZGR9++GGp5UII5syZw0cf\nffQquiyTvZEqcsRCR8AYSPjfaAU9QF2hULQUQrSqwPeRyWQy2T+Ql5eHhkZFD1R7frt37y7VFnd9\nGVOmFN5Yun5QTWrX1qqPk9MW6bWzszNXr14ttb2+vj4nT55EQ0ODoKAgLly4gJaWVqmRFMWf/L+J\nFsclS0GFIlkFgt8bm5P75Sw++eQTatWqJZXy3LNnDyNGjGDXrl2lns496c8//6Rhw4aMGzeOnJwc\nQkNDGTlyJBr/G3lYRdmKh98toOrQ0RRkPYL/JTyrXr06NWvW5OLFiwQGBhIXF8eVK1do3Lgx06dP\n5+DBg/Tr148tW7bwySef8PnnnzNy5Eg2bdpEVlYWMTExzJw5kxUrVgCFIzUiIyNfwtmTQdlTg4QQ\nWFhYlCjvGh8fLyV61NHRQaFQ0LBhQ/Ly8nBwcGDMmDFYW1vTtm1b+vbtCxQGJOrVKyzHO2jQIL76\n6ivy8/Px9vZm5MiRCCGkyiPu7u4IIYiMjESlUr3CM1BSfHw83bp1o127dpw7d44GDRpw5MgRvLy8\n2LRpE48fP6ZZs2bs3LkTXV1dPDw80NHRISwsjLt377JlyxZ27NhBUFAQjo6ObNu2DSh8sr1gwQJy\ncnJo2rQpW7duRU9PjxMnTjB9+nR0dXVp165dpR33uygpKYmaNWsyfPhwDAwM+Omnn6hWrRrp6enS\naC9HR0du3rxJaGhomdchV1dX5s2bx7Bhw9DT0yMxMRFNTU1pxJVMJqvYHAubgKaA9f/+2wj8H+Ba\nge8hk8lk7zwvLy8cHBywtrbmo48+Ij8/v0RJrP379+Ph4QGUTqKXkpJCnz59UCqVtG7dWvoC5enp\nyYgRI2jTpg3Nmzfnxx9/lPb3MhNWZeckv1D7kxISErC3t0elUjF16lSp34fDEnFa4oPJ7P/DaYkP\nh8P+WUWD10ViTm6Z7SkNGpeqCLF27Vq2bt2KUqlk586drF69+qn79vPzQ6VSYWNjg7e3N9OmTQNA\nX0MdbYUCzRbmaHXsyoNxg8j4bgE6On8nERw6dChhYWGkp6djZGTEl19+KQWvIiIiWLJkCdbW1pw+\nfZq8vDxatWqFp6enNA3jq6++Ql9fH3d3d+bPn4+trW1FnC4ZSDdOT2Nqasq9e/ekwEJubm6pAF7R\nTbCNjQ3h4eFSQMLY2Jjw8HDCw8OJioqSpvZ069aNjIwMjh8/jq2trZQrpazKI5WtrFwQ/fr148KF\nC0RERGBubs7mzZul9f/66y+CgoJYuXIlvXv3ZsaMGVy8eJGoqCjCw8O5f/8+ixYt4vTp04SGhmJn\nZ8eKFSvIzs5m3LhxHDt2jJCQEG7fvl2JR/3uiYqKkv5mLly4kLlz5zJ+/Hg++OADOnXqJK03cOBA\nnJycSiQBLtK1a1eGDh1KmzZtsLKyYsCAAc/8/ZLJ3jUV9uhKCPEIkOq2KBSKDCBbCHGvot5DJpPJ\n3nUxMTF4e3sTGBiIpqYmkyZNKlEhoCxFSfTU1dWZMmUKNjY2HD58GB8fH0aOHCkNT46MjOT3338n\nMzMTGxsbevToQXR0tJSwSghB7969OXv2bIXNK9XWqkd2TlKZ7c+jefPmhIWFlWg7HJbInINRZOXm\nA5CYmsWcg1EAFT68/FVpoKXJrTKCCw20NBk1ahSjRo0q0e7j41Nq3aInqkWKpouUtT3A3ZsJHLid\nwuK4ZBKHj8VszETGaxewavggaQSIrq4uw4cPZ968eZw9e5Zjx45hb29PVFQUjo6O7N69G1PTkkkH\n+/TpIyWUfHz6NPXz8vAUYJ2ahtHcuejb2T3/iZGVq7zpR8VVqVKF/fv3M3XqVNLS0sjLy2Ps2LEl\nnuSeOHECKKwWkZaWxvjx46lRowbZ2dkEBQXRpk0bKSBhYWGBqakp48ePZ+LEiWzevJlu3bpJ71e0\nr9dFWZVjoqOjmTt3LqmpqWRkZODq+vfzsV69eqFQKLCysqJOnTrSPHwLCwvi4+O5desWly5dwsnJ\nCYDHjx/Tpk0bLl++jImJCc2bNwdg+PDhbNq06RUf7bvL1dW1xM8RwM7OjilTppRoCwgIKFUNIiMj\ng8jISM6cOUNaWhqjR4+mc+fOcj4YmawML21MrBDC82XtWyZ72Q4fPkyLFi1o2bJlZXdFJivhzJkz\nhISEYG9vDxSW63vWUMziSfQCAgKk5IcuLi48ePCAhw8fAuDm5oaOjg46Ojp06tSJ8+fPExAQ8FIT\nVjVpOpPLl7+goODvMoNqajo0afrPpy4sPXlFCioUycrNZ+nJK29sYGFOk3olciwA6KgpmNPk+QIw\n/1T/ujXpX7em9Do3N5fP797lwYMH6Onpcfz4cbp27crNmzfp1KkT7dq1Y8+ePdIN2dq1a1m7di0K\nhYKwsDBsbGxo3749u3fvxjYzk99mzuJKRgbUqkVeUhLJ8+YDoN+r10s9rndFWdOPANatWyf929ra\nulR2+wsXLhAZGclPP/0ktS1fvhwPDw88PT3x8PAgPDy8REBi+vTpWFhYADBs2DAOHTpE165dAcgM\nu8vDk/Hkp+agbqBFdVdjqtpU/hDyJ6eHZGVl4eHhweHDh1GpVFKy2SfXV1NTK7GtmpoaeXl5qKur\n06VLF37++ecS7yPnlni9paam4uDggEqlKpV/ITIyskTFiLS0NI4dOwYgBxdksidU3mRbmew1dvjw\nYXr27PlCgYXKnr8uezcIIRg1ahSLFy8u0b58+XLp30+WYyxetvFpnqzmo1AoXnrCqnp13YDCXAvZ\nOcloa9WjSdOZUvs/kZSa9ULtb4Kim/vFcckk5uTSQEuTOU3qlbjpfxU0NTWZP38+Dg4ONGjQADMz\nM/Lz8xk+fDhpaWkIIZg6dSoGBgbMmzeP6dOno1QqKSgowMTEhOPHjzNx4kQ+/PBDWg0eTBM1NVpq\na0v7F9nZ3F25Sg4sVLLiAQk9PT0OhyUyd3codzWM+PH2exiEJdLHpnRAokhAQAAffvgh6urqZIbd\nJfVgLCK3sFxsfmoOqQdjAV6L4MKT0tPTqVevHrm5uezatYsGDZ4/GNm6dWsmT57MtWvXaNasGZmZ\nmSQmJmJmZkZ8fDzXr1+nadOmpQIPssplYGBQZg4fKAzmFwUViuTm5nLmzBk5sCCTPUG+C5K9NZYu\nXYqWlhZTp05lxowZRERE4OPjg4+PD5s3b2bUqFFlJlSaPXs2R48eRUNDg65du9KvXz+OHj3Kb7/9\nxqJFi6Snu5MnT+bevXvo6ury448/YmZmhoeHB9ra2oSFheHk5ET16tVJSEggLi6OhIQEpk+fXqKG\nvEz2b3Xu3Bk3NzdmzJiBkZERKSkppKenU6dOHWJiYjA1NeXQoUNUq1atzO2dnZ3ZtWsX8+bNw8/P\nD0NDQ6pXrw7AkSNHmDNnDpmZmfj5+bFkyRJ0dHReesKqenXd/lUg4Un1DXRILCOIUN9Ap4y13xxP\njh6oLFOnTn2u65qOjg4//PBDme179uwhxrwllFF5Ii/5+fJryF6N/ALBnINR/JVRWB7yaVOLIiMj\nGTZsGHfv3uXjjz8mMjKS2iezpaBCEZFbwMOT8a9lYOGrr77C0dGR2rVr4+jo+ELz6GvXrs22bdsY\nMmSIVE5z0aJFtGjRgk2bNtGjRw90dXVxdnaW5+e/IdLS0l6oXSZ7l8mBBdlbw9nZmeXLlzN16lSC\ng4PJyckhNzcXf39/lEqllFCpatWqfPvtt6xYsYLJkydz6NAhLl++jEKhkEqf9e7dm549ezJgwACg\n8GZu48aNNG/enD/++INJkyZJc5iLz1/39PTk8uXL+Pr6kp6ejqmpKRMnTkRTU7MyT43sLdKyZUsW\nLVpE165dpXJ/69evZ8mSJfTs2ZPatWtjZ2dXbrlFT09PRo8ejVKpRFdXl+3bt0vLlEolnTp14v79\n+8ybN4/69etTv359YmJiaNOmDVD49NLLy+u1zoQ9y9W0RI4FAB1NdWa5mj5lK9m/VVRNoHg1jrIU\n5W1YWqMWdVPul1quUe/lTu+QvZjH+QVk5eajqKJLwePCgF1ZU4uKhoz3798fKKwUcezYMZwym9OM\n0j/T/NScV3MA5Xha5ZiJEyeWWr94jpInty2+zMXFhQsXLpTYNu3YMZquXMUhhRoaBjUwev999J+R\nVFX2etDX1y8ziKCvr18JvZHJXm9yYEH21rC1tSUkJISHDx+ipaVFq1atCA4Oxt/fn969e5eZUElf\nXx9tbW3GjBlDz549pRJbxWVkZHDu3Dnc3d2ltqInEVBy/jpAjx490NLSQktLCyMjI+7cuSPVDpfJ\nKsKgQYMYNGhQqfaiQFhxTybsq1mzJocPHy5zv0qlkh07dpRqnzZtmlQp4E1QdLOz9OQVklKzqG+g\nwyxX0zc2v8Lb5MDtFClXxE9ug5i560e0Hz+Wliu0tTGaMb0Seyh7UtGgkiq1jUGhRtKWj9Gzeh+F\nfZ8S65U3ZDy4ShzNsksHFtQNtEq1vY3Sjh0jed58xP+mqMm5RN4snTt3LpFjAQqnhD2Zi0Emk8mB\nBdlbRFNTExMTE7Zt20bbtm1RKpX4+vpy7do1TExMykyoBHD+/HnOnDnD/v37WbduXals6gUFBRgY\nGJSbfOnJ+etl1QqXyd5UMf6++O/ZQfqD+1SrZYjz4JGYO3d69oaVrI9NAzmQUIni4uLo378/Q4cO\nJSgoiEePHnH9+nXSHZxhbOE0iuPp6fzf3XvUeJiGi44Os1UqztnbEeHry4pevVi9ejWrV68mLi6O\nuLg4RowYQWBgIMbGxowaNUr6sr9v3z7MzMwq+YjfTpGRkVjM/Jn0AlCoa1B3yDfSsienFpU3NDyD\nbBSaaiWmQyg01ajuavxS+vy6ubtylRRUKCLnEnlzFOVRKKoKoa+vL1eFkMnKoVbZHZDJKpKzszPL\nli2jffv2ODs7s3HjRmxsbGjdujWBgYFcu3YNgMzMTK5evUpGRgZpaWl0796dlStXEhERAZSs/129\nenVMTEzYt28fUJg8r2g9mext4enpWWIoMBQGFU5tWkf6/XsgBOn373Fq0zpi/H0rqZeyN8GVK1fo\n378/27Zto3bt2oSHh+Pt7U1UVBT3Tv9K/t3b5N+/S8aPa6jyvRePjv6G13tNuDh1Cq4zZuDv7w+A\nv78/tWrVIjExEX9//xKVSAwNDQkNDWXixIksW7assg71rVY0tcFaLQF1SlZZKWtqUXlDw/X19THo\n11waoaBuoIVBv+avZX6F+Ph4zM3NGTduHBYWFnTt2pWsrCzCw8Np3bo1SqWSvn378tdff3H37l1s\nbW0BiIiIQKFQkJCQAEDTpk159KiwAnt5OUPkXCJvDqVSyYwZM/D09GTGjBlyUEEmK4ccWJC9VZyd\nnUlOTqZNmzbUqVMHbW1tnJ2dSyRUUiqVUl3p9PR0evbsiVKppF27dqxYsQKAwYMHs3TpUmxsbLh+\n/Tq7du1i8+bNqFQqLCwsOHLkSCUfaeXS09N75jpr1qzB3NycYcOG4efnx7lz515Bz2QVyX/PDvIe\nl5wHnfc4B/89padLyGQA9+7dw83NjV27dqFSqYDCocRF0870mjQj/04yuVcuUkVli5pBTRTqGtT7\noCdnz56lbt26ZGRkkJ6ezs2bNxk6dChnz57F398fZ2dn6X369esHFE6Bi4+Pr4xDfesVTW1oqpFC\nW414qpIDCKqp5bK4n1WpEUGdO3culU+oaMh4VRsj6s12oOESZ+rNdngtgwpFYmNjmTx5MhcvXsTA\nwIADBw4wcuRIvv32WyIjI7GysmLhwoUYGRmRnZ3Nw4cP8ff3x87ODn9/f/7880+MjIzQ1dUFys8Z\nIucSkclkbxt5KoTsrdK5c+cS8+CKlw8qK6ESFE6FeJKTkxOXLl0q0XbixIlS6z05f93T07PE62cl\nMXubbdiwgdOnT9OwYUM8PT3R09Ojbdu2ld2tf6zoGJ58qv82S39QOrHe09plMn19fd577z0CAgKk\ncr3Fp4c109MlsSCf4gPDddQUdKttALdSAWjbti1bt27F1NQUZ2dntmzZQlBQUImSqkX7lKebvTzF\npzY01UihqUaK9LqPTZ9S678tQ8ZNTEywtrYGCgNX169fJzU1lQ4dOgAwatQoKedS27ZtCQwM5OzZ\ns3z++eecOHECIUSJIJjRjOklciyAnEtEJpO9neTAgkxWQQ6HJb6TyeKWLl3K3r17ycnJoW/fvixc\nuJAJEyYQFxdHt27dGD16NBs3bkRdXR0vLy/Wrl1b4kuX7PVVrZZh4TSIMtplsrJUqVKFQ4cO4erq\nWubIpnpamvR+z4iDGs2IXvsddbMy+FxlyqavjjJlyhSgcOTZ/PnzmT9/PjY2Nvj6+qKjoyNnYX/F\n/kk2fKVS+cYFEp70ZJ6k1NTUctdt3769NErBzc2Nb7/9FoVCQY8ePaR1ivIo3F25irzkZDTq1cNo\nxnQ5v4JMJnvryFMhZLIKcDgskTkHo0hMzULwd53vw2GJld21l+rUqVPExsZy/vx5wsPDCQkJ4ezZ\ns2zcuJH69evj6+vLjBkzmDBhAjNmzCA8PPyNCSrs2LEDpVKJSqVixIgRJZb9+OOP2Nvbo1Kp6N+/\nvzSXdt++fVhaWqJSqaT54BcvXsTBwQFra2uUSiWxsbGv/Fj+KefBI9GoUjJzu0YVLZwHj6ykHsne\nBFWrVuX48eOsXLmShw8fllreoWZ1Inp3xGvVCvI/m8iXrp2wtbXFzc0NKAws3Lx5k/bt26Ourk6j\nRo1o167dqz6Md97TpjY8y6pVq6TrIkD37t2lG/SigFN8fDyWlpYV2OOXQ19fnxo1aki5P3bu3CmN\nXnB2dsbLy4vmzZujpqZGzZo1+eWXX0p9XvV79aK5zxnMYy7R3OeMHFSQyWRvJXnEgkxWAZaevEJW\nbsnkVmXV+X7bnDp1ilOnTmFjYwMUluaMjY0tkWTtTXTx4kUWLVrEuXPnMDQ0JCUlhTVr1kjL+/Xr\nx7hx4wCYO3cumzdvZsqUKXz55ZecPHmSBg0aSF+iN27cyLRp0xg2bBiPHz8mPz+/zPd8HRVVf3gT\nq0LIXj1jY2Np+peBgUGZU8+OHz8u/XvIkCEMGTKk1DpNmzZFFNU4pPA6UyQyMpJp06axbt06aai9\nn59fBR6FrMi/mdqwatUqhg8fLuUZ+OWXX565TceOHVm2bBl2dnYYGxsTHByMoeHrMTpq+/btTJgw\ngUePHtGkSRO2bt0KFH7mhRDS37x27dpx69YtatSoUZndlclkskohBxZksgqQlJr1Qu1vCyEEc+bM\n4aOPPqrsrlQoHx8f3N3dpS+1NWvWLLE8OjqauXPnkpqaSkZGBq6urkBhbg4PDw8GDhwoJZdr06YN\nX3/9Nbdu3aJfv340b9781R7Mv2Tu3EkOJMheC0VVCory6KSlpXHs2DGAN374/evqeaY2ZGZmMnDg\nQG7dukV+fj7u7u4kJSXRqVMnDA0N8fX1xdjYmAsXLlCrVq1X1PN/pnhwDCiRU+f3338vc5voDRu4\nu3IVMStX4V6vHpO//vql91Mmk8leR/JUCJmsAjxZz/tZ7W8LV1dXtmzZQkZGBgCJiYncvXu31HrF\ny3e+DTw8PFi3bh1RUVEsWLCA7P8l5dq4cSOLFi3i5s2b2Nra8uDBA4YOHcrRo0fR0dGhe/fu+Pj4\nVHLvZbI3U1GVguJyc3M5c+ZMJfXo7fDVV19hampKu3btGDJkCMuWLeP69et88MEH2Nra4uzszOXL\nl4HCa9/UqVNp27YtTZo0Yf/+/Zw4cYL69eszfPhwdHR02Lt3L7q6uvj6+kpJOO/fvy9NccnJycHO\nzo6uXbuW+feiuPnz57Nq1Srp9RdffMHq1atf6vl4EWnHjpE8bz55SUkgBHlJSSTPm0/a/wJeL2Lb\ntm0kJSU9c72OHTsSHBxc5vYff/wxUPi3aMeO8qv3eHp6/qsyrcXfSyaTyYrIgQWZrALMcjVFR1O9\nRFtZdb7fNl27dmXo0KG0adMGKysrBgwYUGYAoVevXhw6dAhra2tpnurrzMXFhX379vHgwQMAUlJS\nSixPT0+nXr165ObmsmvXLqn9+vXrODo68uWXX1K7dm1u3rxJXFwcTZo0YerUqbi5uREZGflKj0Um\ne1uUlUjwae2yZ7tw4QIHDhwgIiKCX3/9VbphHT9+PGvXriUkJIRly5YxadIkaZvk5GQCAgI4fvw4\ns2fPxsrKiqNHj+Ll5cXy5cuJiori8ePHUonh2NhYqlWrRkBAAI0bN6ZKlSoEBwfz66+/kpmZ+dRr\n4ujRo6Ub5IKCAvbs2cPw4cNf4hl5MXdXripR7QFAZGdzd+WqcrYo3/MGFp7HhAkTGDlSzoUjk8le\nLXkqhExWAYryKLwrVSGKRigATJs2jWnTppVap3ht+RYtWrxRN9QWFhZ88cUXdOjQAXV1dWxsbDA2\nNpaWf/XVVzg6OlK7dm0cHR2lYMqsWbOIjY1FCEHnzp1RqVR8++237Ny5E01NTerWrcvnn39eSUcl\nk73Z/kmVAtnTBQYG4ubmhra2Ntra2vTq1Yvs7GzOnTsnlVQEyMnJkf7dp08f1NTUaNmyJXfu3KFF\nixa4u7vj7e1N9+7dqVatGrm5ucTFxaFUKmncuHGJnBl5eXm0atWKR48eawdMHwAAIABJREFUkZOT\nw6VLl8qdbmFsbEytWrUICwvjzp072NjYvFbTKfKSk5/Z7uXlxZo1a3j8+DGOjo5s2LCBMWPGEBwc\njEKhYPTo0TRq1Ijg4GCGDRuGjo4OQUFBLF26lGPHjpGVlUXbtm354YcfUCgUQGECybFjx5KXl8eW\nLVtwcHAo8f7FyyOvWbOGjRs3oqGhQcuWLdmzZw8Aly5domPHjiQkJDB9+nSmTp36/+zdeUBUVfvA\n8e+woygIKIJaYioi++qCKLihuQeavrhlaq6ovVrukumbJW+5JmkqWfaTQtPQQhMlQU0FGTb3ZXKD\nXAgUBIRhfn/wcmN0UFRk0fP5B+bMvXfOvTMM9z73nOcpt7/a2tps3ryZTz75BBMTE5ycnNSqZwiC\nIIAILAhCpRno0uSlDSQ8rdzEm9zdq0CZVYC2iT71/ZpT16VRdXfrqYwaNYpRo0ZpfG7ixIlMnDjx\nkfYdO3ZIvycnJ7NixQry8/MZO3ZsraznLgg1Sbdu3dRyLEDFqxQIFVdcXIyJiQlyuVzj82UvKFUq\nFTdu3EBbW5slS5bQpEkTvv76ay5evChV+ahbt64UjL58+bI0fSU7OxsXFxdpKll5xo4dS1hYGBkZ\nGYwZM6aS9rJy6FhalkyD0NAOcPr0acLDwzl8+DC6urpMmjSJJUuWcP36dSmXQ1ZWFiYmJqxZs0ZK\nXgkwZcoUFi5cCMCIESPYvXs3/f5XTeL+/fvI5XIOHTrEmDFj1PJCPGzZsmVcvnwZfX19tdKZZ86c\n4eDBg5iamvLRRx8xYMAAxo0bh76+PmvXruXWrVvs3r2brVu3UrduXebMmUNKSgrGxsa0bNmSZs2a\nVc5BFAThpSGmQgiCUKlyE2+SteM8yqySO1zKrAKydpwnN/Hxc2lfJqVJ5krvrpYmmatNozYEoaZx\ndHSkX79+0ggFY2Nj+vXrJwJ2z8HLy4vIyEjy8/PJyclh9+7d1KlTB2tra3788UegJHiQlJRU7jZS\nUlL4+eefef/991m4cCHz589nyJAhdO/enaFDh6ote/fuXWQyGcbGxty6datCuXcGDRpEVFQUJ06c\nkBLl1hSNZkxHZmCg1iYzMKDRjOlASV6QhIQEPDw8cHZ2Jjo6mszMTC5dusTUqVOJioqifv36Grd9\n8OBB2rVrh4ODAwcOHCAtLU16rrSaSufOnbl7965awOBhjo6OBAYG8t1336Gj88/9xD59+qCvr49M\nJqNRo0Zoa2vTv39/EhIS8Pf3Z+TIkURHR3Pp0iV+/PFHmjRpQsOGDdHT08POzu6Zj5kgCC8vEVgQ\nBKFS3d2rQFVYrNamKizm7l5F9XSoGogkc0JVat68Obdv3yYrK4svv/xSao+JiaFv374v9LUVCgX2\n9vYv9DXKcnR0ZMaMGQQHBzNjxgwRVHhOHh4e9O/fH0dHR3r37o2DgwPGxsZs3bqVjRs34uTkhJ2d\nHbt27Sp3G35+fly+fJn//Oc/FBYW8s477/DLL7+wb98+adi9QqHA3NwcJ9lZRrjVp01DXWYH+tK/\ni+sT+6inp4evry9DhgxBW1v7ictXJeN+/bD8eDE6VlYgk6FjZYXlx4sx/t/IApVKxahRo5DL5cjl\ncs6ePcvKlStJSkrCx8eH0NBQxo4d+8h28/PzmTRpEhEREaSkpDBu3Di1kR2lUyLKe1zWnj17mDx5\nMidPnsTDw4OioiJAfeSJtrY2CoWCpUuXSjksZDIZhoaGGBoaEhUVxenTpzXmSSov0acgCK8eMRVC\nEIRKVTpSoaLtLyORZE6oDqWBhbKJ9gThSWbOnElwcDD379+nc+fOuLm5YW1tTVRU1CPLhoWFqT2u\nSL4daZh+8g8QGUTYm8WAUUmb7hVwrQOUBMJKlc3RU1xczB9//CGNoKhpjPv1kwIJD+vWrRsDBgxg\nxowZNGrUiMzMTO7du0eDBg3w9/fHxsZGupAvWz2pNIhgbm5OTk4OERERBAQESNsNDw/H19eXuLg4\njI2Ny80zUlxczNWrV/H19aVTp05s27ZN7T17WN26dfnpp5+YOXMm586dY/Hixdy7d4+bN2+yadMm\noqOjqV+/PqdOnaJp06ZASaLP0NBQWrVqxbFjx5g0aZKofiQIrygxYkEQhEqlbaI5oVN57S+j8k7y\nRJK5l0PpCIHqMHDgQNzc3LCzs2P9+vVqz82ePZuLFy/i7OzMrFmzgJILv4CAANq0aUNgYKCURC86\nOhoXFxccHBwYM2aMlJyv7L7Fx8fj4+MDwK1bt+jRowd2dnaMHTuW119/XVpOqVQybtw47Ozs6Nmz\nJ3l5eVVxKIRKMn78eJydnXF1dcXf3x9X1yePIngm0Yuh8KHPRmFeSbsG2ZGR/NquPa8bGOCamUmj\nWngnvG3btixZsoSePXvi6OhIjx49UCgU+Pj44OzszPDhw/nkk0+AklKeEyZMwNnZGX19fcaNG4e9\nvT1+fn54eHiobdfAwAAXFxcmTJjAxo0by319pVLJ8OHDcXBwwMXFhaCgIExMTMpd3sDAgCVLlhAS\nEsK2bdvo0aMH6enp1KtXj549e9KhQwe8vLwwNzcHSr5fShN9Ojs7895775FeTkJLQRBefrKymXqr\ng7u7u0pTPV5BEGqn0hwLZadDyHS1MHmrVa1L4PisSnMsPJxkTswHfzk0b96c+Ph46eS6KmVmZmJq\nakpeXh4eHh78/vvvuLm5ER8fT05ODn379pXuEMfExDBgwADS0tKwsrLCy8uL5cuX4+7uTqtWrYiO\njqZ169aMHDkSV1dXpk+frrZv8fHxzJw5k5iYGKZMmUKTJk2YM2cOUVFR9O7dm1u3bpGTk0PLli2J\nj4/H2dmZIUOG0L9//xpVElCoIYJNAE3nnDIIVs8RkB0ZSfqChWqlHGUGBmrTDITKYWRkRE5ODgqF\nQvr+CAsLIz4+njVr1gDqVSbKPh4/fjw2NjYimCAILzmZTJagUqncn7ScGLEgCEKlquvSCJO3Wkkj\nFLRN9F+poAKIJHMvk9zcXPr06YOTkxP29vaEh4cDsHr1alxdXXFwcJDmFOfm5jJmzBg8PT1xcXF5\n7Lz0Z7Vq1SqcnJxo3749V69e5fz5849d3tPTk6ZNm6KlpYWzszMKhYKzZ89ibW1N69atgZIKKIcO\nHXrsduLi4qREfL169aJBgwbSc9bW1jg7OwPg5uamNoxdECTGTSvcfvOLFWpBBQBVfj43v1jxInr2\nynjzzTfJysrSmI+lbMWNstMyAFT8yalTq4g+0JLDh725l1PynVe/fv1HEn1+/fXXHDlypIr2SBCE\nmkTkWBAEodLVdWn0SgUSNHF0dBSBhJdAVFQUVlZW7NmzByjJk/Hhhx9ibm7OyZMn+fLLLwkJCeHr\nr79m6dKldO3alU2bNpGVlYWnpyfdu3enbt26ldKXmJgY9u/fz9GjR6lTpw4+Pj5PLNX3cIK20sRt\n5dHR0aG4uGS00ZO2Xd5riKkQgkbdFkJkkPp0CF3DkvaHFJVzB7y8dqFifvnlF6Akh8Xj8rH4+vqy\nbNkynJ2dmTCxB2+8Ece3W/7i0CGYMuU+t2+fpW5dQwC2bt3KxIkTWbJkCYWFhVhYWNCnTx86duxY\nZfslCELNIEYsCIIgCEI5HBwc+O233/jwww+JjY2VRqG89dZbgPod+n379kkn46UX/VeuXKm0vmRn\nZ9OgQQPq1KnDmTNn+OOPP9Sef/guY1lGRkbS7zY2NigUCi5cuADAt99+S5cuXYCSaR4JCQkAbN++\nXVrHy8uLH374QdrPv//+u9L2S3hFOA6BfqvAuBkgK/nZb1VJ+0N0LC01bqK8dqHE8uXLWbVqFQAz\nZsyga9euABw4cIDAwEAph0rZfCwTJ04EShI9tmnThjZt2jB16lSOHz+OXC6nID+KxYuvoEJFy1Z6\n2LQxYOTIemxY/3/cvn0ba2trlixZQoMGDfjll184ffo0X3zxhcYKEoIgvNxEYEEQBEEQytG6dWtO\nnjyJg4MD8+fPZ/HikkRzpXfpy44CUKlUbN++XSotd+XKFWxtbSutL7169aKoqAhbW1tmz55N+/bt\n1Z43MzPDy8sLe3t7KXmjJgYGBmzevJnBgwfj4OCAlpYWEyZMAGDRokVMmzYNd3d3tdJ+ixYtYt++\nfdjb2/Pjjz/SuHFj6tWrV2n79jyetuRlTEyMGKpdXRyHwIzUkpwKM1I1BhUAGs2YjszAQK1NZmBA\noxnTq6KXtZa3t7d0MV+ad6WwsJDY2Fg6d+4sLbds2TLeeOMN5HI5y5cvByAxMZEVK1Zw6tQpLl26\nxOHDh8nPz2fp0tMsmN+Ir79uhlIJkZF3AVCplOxT7KNnRE+G7h5K8q1k0orTmDBhAjNmzEAul+Pt\n7V31B0EQhGojpkIIgiAIQjlu3LiBqakpw4cPx8TEhK+//rrcZf38/Fi9ejWrV69GJpORmJiIi4vL\nc/chNzeXIUOGcO3aNZRKJcHBwXz44YdSksXSUnQxMTGsX7+eqVOnEhUVxd69e1m0aJG0HWNjY774\n4gtCQ0PZtWsXiYmJj7yWt7c3586de6Td2NiYvXv3oqOjw9GjRzlx4gT6+vo0b978n3KCICV3q8li\nYmIwMjISQ7VrsNIEjTe/WEFRejo6lpY0mjFdJG58Ajc3NxISErh79y76+vq4uroSHx9PbGwsq1at\nkipQaFKajwWQ8rHUq1cPK6u6NG2mB0DPnvX4eVc2/v7GgBafnfgMZR0lAAXKAoKPBNPq71a4Gr2g\nyiKCINRoYsSCIAiCIJQjJSUFT09PnJ2d+eijj5g/f365yy5YsIDCwkIcHR2xs7NjwYIFldKH0jwP\nSUlJpKam0qtXr3KX/fjjjzE2NiYlJYXk5GRpKHRubi7t27cnKSmJzp07s2HDhqfqw5UrV/Dw8MDJ\nyYmgoCA2bNjAnkt76BnRE8dvHOkZ0ZM9l/Y8134+j6KiIgIDA7G1tSUgIID79+9rLJ2pUCgIDQ0V\nQ7VrAeN+/Wh1IBrb06dodSBaBBUqQFdXF2tra8LCwujYsSPe3t4cPHiQCxcuPHH0VHn5WAwMmqKl\nZai2rJaWIfkyGQVFJWVqi/9XBSpfmc+x9GOVuUuCINQiIrAgCIIgCOXw8/MjOTkZuVzOiRMncHd3\nR6FQSKUm3d3diYmJYXtGJt6Jl/h56ET0v9rG4uhYdu/eXSl9KC/Pgyb79+9n8uTJ0uPS6g16enr0\n7dsXeLbKDa1atSIxMZGkpCROnDjBTbObBB8JJj03HRUq0nPTCT4SXG3BhbNnzzJp0iROnz5N/fr1\n1TLel9W8efMaOVRbU5b+0vdLEJ6Gt7c3ISEhdO7cGW9vb0JDQ3FxcUEmk0nLPC4fS1k2NjbcuHEP\nff0pGOhbsf+3HFxdLWjTZilFpjrkKUoScd6Nvyutc1/rfoW2LQjCy0cEFgRBEAThOWzPyGTm2atc\nKyhEBVwrKGTm2atsz8islO1ryvPwtNUbdHV1pQuLilSHeJKVJ1eSr1R/3XxlPitPrqzwNspORZg1\naxZ2dnaPzQ3xOM2aNcPLywuA4cOHExcX90zbqS4PBxae1/O+v0Lt5e3tTXp6Oh06dMDCwgIDA4NH\nAmhPm49l8qSvmDAhiyZNAvjss9NYNh6A7VBb0remcyH4gtrVRIuOLfjpp5/EiCBBeAWJHAuCIAhC\ntVEoFPTt21eapx8SEkJOTg6mpqaEhoaio6ND27Zt2bZtG7m5uUydOpXU1FQKCwsJDg5mwIAB1bwH\n8MmldPKKVWptecUqPrmUjn9j0+fevqY8D6XVG3r37q1WvaFHjx6sXbuWFStWAPD3339LoxYqU0Zu\nxlO1a1I2geL69evJzMxUSxj5NMrejS19/CylM6vK559/zqZNmwAYO3Ysf/zxh5Slv0ePHvTp04ec\nnBwCAgJITU3Fzc2N7777DplMRkJCAu+//z45OTmYm5sTFhaGpaUlPj4+ODs7ExcXx7Bhw3jttdf4\n6KOP0NbWxtjYmEOHDlXzXgtVoVu3bhQWFkqPy+ZMKTtS6fvvv1dbz8fHR/p9zZo1atvTlI8lODCY\n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\njpOTE+Hh4cqfLzc3twpfd3EUr6Gfnx8W5r8hk71UuT8/P5OkxECaNPm+yJiurl27qjS8qlu3LhYW\nFvz8888MHToUmUxGbGwsdnZ2JCYm4uTkhJOTE0ePHuXevXukpqbSokULpk6dyt27d4mNjX0nAwt5\njx5Rq0DQRkMCufky5lyN4/ClS9jZ2REUFKTSi+F1oys1NTXLtOeMUDUUHL38NkTTOKGmK25879Kl\nSzl27BgbNmxg165dfPfddwBqA+cymYz/jv4KC+2iUzA0DP4eSX3r1i1+/vlnpFIpUqmUjRs3IpFI\n2LJlCz///DO1a9cmJyenyDEyMzMxNTXl+PHj7Ny5k/DwcKKjozE1lT/f48ePGTt2LKdOncLCwoJn\nz5699etSVb11KYRMJkuXyWT+MplMKpPJ8mUy2SHgNtDx7ZcnCOVPKpXSrl07xo4di5WVFb169SIz\nM1Mltf7JkyeYm5sDEBQUxMCBA+nZsyfm5uasWbOG5cuX4+DggLOzs8obxvfff6+21mvMmDF07twZ\nBwcH9u/frzyup6cnPXr0wMPDgwcPHuDg4ICenh5WVlaEhIRgZWX11h9Eqqo9D58x68Y9fs+Wv2ln\n/36Hm+79WRx2WtlN/dKlS+zZs4fLly9z9OjRIqUPubm5XLx4kZUrV7Jo0SJq1arF4sWLGTZsGDEx\nMQwbNozAwEDWrl1LTEwMp0+fLjZte190MvP2XiE5JRMZkJySyby9V9gXnVyur8Pbunr1KgEBAZw4\ncYLLly/z7bffMmXKFHx9fZWpflOnTn3tcaKjo1m5ciXXrl0jKSmJs2fPMnXqVBo3bkx4eDjh4fLx\nsenp6Tg5OXH58mW6du2qfHxxKdxPnz7ll19+4erVq8TGxjJ//vxyey1e505yMrPnfcbikUPQraXN\nzdR0DsRLWbVuPbGxsdjY2LBo0SLl/oV/vsqbTCYjPz+/xI/LyflT7fasbHk5Q+ExXRMnTiyyb3Bw\nMFu2bMHOzg4rKyvl+9Ts2bOxsbHB2tqaLl26YGdnx65du7C2tsbe3p64uDhGj343y940GxZtAgaQ\nDqUup6qonjOCIAhVUXHje/Pz8xk8eDABAQHKEcEAO3fuBODMmTMYGhpiaGhI7969+eH3X0FLHnSI\n+0P+HtrNsjM77oSQm5sLQLNmzZRZY5aWljg4OFC7dm2cnJxISEhQvg8XVqtWLU6ePMmcOXNo0KAB\n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\nrQo9LNRJS0tT28xQXTPFP/74g/v37+Pu7o6JiQnh4eFlto4rV64we/ZsNDQ00NbWZv369aSmpjJ0\n6FBl88YJEyYUeVzh8cyKPgthYWHo6enh5ubG77//jpubfBqNj48PAwYMwMbGBkdHx2JHLDZo0ICg\noCCGDx9Odrb8qntAQICyNKO6UZR5HDp0SG2JR3x8PBYWFrRq1QqAkSNHKr/Qv4mybpr23XffYWxs\nTGZmJp06dWLw4MEq9yckJLBt2zZl6YqgXvsW7VhyYh3/ObkeD8suGOrW4caT24zY/W+0Ty0gLy8P\nMzN5r4i4uDjmz59PSkoKaWlp9O7du5JXLwjC69S8T15CpalKtciCIFRdbm5uBAcHs2DBAk6ePImJ\niQl169Yt1bHy8/O5d+8e7u7udO3alR07dpCWlvbOdRpv06YNSUlJSKVSzM3N2blzZ2UvqVQUzQzr\n1q3LkydPcHZ2xtPTU9lM8fDhw4D8Sr+hoSHLly8nPDwcExOTMl1H79691X6RiY6OLrItKChI+d/a\n2tqcOHFC5f4lS5awZMkSABo3bkzBMd8mJiacP39e7RoKdukHeXbPpUuX3vgcqjJFALG4Eg9FaVSp\nj1/GfXVWrVrFL7/8AsC9e/dISEhQub9gPwyheA4ju3FU8h0nbpzjm9P/xbVZB1o3sODUwRNF/m38\n/PzYt28fdnZ2BAUFqZ0sIQhC1SICC4IgCEKF8vf3Z8yYMdja2qKvr8+2bdtKfay8vDxGjhxJamoq\nMpmMqVOnvnNBBQA9PT3WrVtHnz59qF27Np06darsJZWKTCZT28ywcDNFxRX/d8XN3x7WyIxAZ2dn\nJk+ezK1bt2jZsiXp6ekkJyfTtm1bpFIpiYmJWFpalqq3RFn11Tl58iShoaGcP38efX19unfvruyD\noXyuQplWgnqpjXIxG2LF0JP1qatjwPdX9pMiSSc2KxEXGpKTk8PNmzexsrLixYsXmJmZkZOTQ3Bw\nME2aqJ8gJAhC1SECC4IgCEKFUPREANi3b1+R+/39/VVu+/n54efnp/bxfn5+DKpfH2nvPmx++gwt\nMzMazpiO4V89GGqaN5kz7+7uTnx8PDKZjMmTJ+Po6AgUfV0LXwmvSoprZli4maKHhwcLFy6s7OVW\niJu/PSQ8OF450jntWTbhwfEA1T648KoSj02bNtGvXz/09fVxc3NT6V1RkVJTU6lXrx76+vrEx8dz\n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\nH374IcOGDeO+++6r6L9u3TpmzZrF66+/zi9/+Uv69u3L8uXLqVu3Lm+++SalpaVcd911TJ06lUWL\nFjFy5EjuuOOOKF6hJKk2Soh2AZIkSSo3a9YshgwZQtOmTQE46qijWL58OUOHDiU/P5/du3fTpk2b\niv7nnHMOiYmJdOrUiT179jBgwAAAOnXqRF5eHh9//DG5ubmcddZZAOzZs4fU1NTqvzBJUq1msCBJ\nknQEu+6667jppps477zzmDNnDjk5ORW3JSUlARAXF0diYiJBEFR8XVZWRhiGdOjQgXfffTcapUuS\nYoRTISRJko4QZ5xxBi+99BJffvklAFu3bqWwsJCWLVsCMGnSpMM634knnsiWLVsqgoXS0lJWrFhR\nuUVLkmKeIxYkSZKOEB06dOCOO+6gd+/exMfH06VLF3JychgyZAhNmjThjDPO4JNPPjnk89WpU4ep\nU6dy/fXXU1hYSFlZGTfccAMdOnSowquQJMWaIAzDqBaQnZ0dLly4MKo1SJIk1UZvrn+T8YvHU7Cz\ngBb1WzA6azQD0wZGuyxJUg0RBMGiMAyzD9bPEQuSJEm10Jvr3yRnQQ7Fe4oByN+ZT86CHADDBUlS\npXKNBUmSpFpo/OLxFaHCPsV7ihm/eHyUKpIk1VYGC5IkSbVQwc6Cw2qXJClSBguSJEm1UIv6LQ6r\nXZKkSBksSJIk1UKjs0aTHJ+8X1tyfDKjs0ZHqSJJUm3l4o2SJEm10L4FGt0VQpJU1QwWJEmSaqmB\naQMNEiRJVc6pEJIkSZIkKWIGC5IkSZIkKWIGC5IkSZIkKWIGC5IkSZIkKWIGC5IkSZIkKWIGC5Ik\nSZIkKWIGC5IkSZIkKWIGC5IkSZIkKWIGC5IkSZIkKWIGC5IkSZIkKWIGC5IkSZIkKWIGC5IkSZIk\nKWIGC5IkSZIkKWIGC5IkSZIkKWIGC5IkSZIkKWIGC5IkSZIkKWIGC5IkSZIkKWIGC5IkSZIkKWIG\nC5IkSZIkKWIGC5IkSZIkKWIGC5IkSZIkKWIGC5IkSZIkKWIGC5IkSZIkKWIGC5IkSZIkKWIGC5Ik\nSZIkKWIGC5IkSZIkKWIGC5IkSZIkKWIGC5IkSZIkKWIGC5IkSZIkKWIGC5IkSZIkKWIGC5IkSZIk\nKWIGC5IkSZIkKWIGC5IkSZIkKWIGC5IkSZIkKWIGC5IkSZIkKWIGC5IkSZIkKWIGC5IkSZIkKWIG\nC5IkSZIkKWIGC5IkSZIkKWIGC5IkSZIkKWIGC5IkSZIkKWIGC5IkSZIkKWIGC5IkSZIkKWJBGIbR\nLSAItgD/L6pFHJqmwBfRLkJR4/0vHwOxzfs/tnn/y8dAbPP+Vyw/Bo4Pw7DZwTpFPVioKYIgWBiG\nYXa061B0eP/Lx0Bs8/6Pbd7/8jEQ27z/5WPg4JwKIUmSJEmSImawIEmSJEmSImawcOgmRrsARZX3\nv3wMxDbv/9jm/S8fA7HN+18+Bg7CNRYkSZIkSVLEHLEgSZIkSZIiZrAgSZIkSZIiZrBwGIIgaB0E\nwf8GQfBVEAQFQRA8HARBQrTrUvUKgmBYEAQrgyDYGQTBuiAIekW7JlWvIAjaBkFQHATBs9GuRdUj\nCIKkIAj+HATB/wuCYEcQBEuCIDgn2nWpagVBcFQQBK988/v+/wVB8Ito16Tq4/Ne+/i6H9t8739o\nDBYOz6PAZiAV6Az0Bq6OakWqVkEQnAX8EbgcaAicDqyPalGKhkeAD6JdhKpVAvAZ5b/3U4A7gReD\nIGgdxZpU9R4BdgPNgeHAfwdB0CG6Jaka+bzXPr7uxyjf+x86g4XD0wZ4MQzD4jAMC4C/Ab7BiC2/\nA+4Nw/C9MAz3hmG4IQzDDdEuStUnCIJhwDZgZrRrUfUJw3BnGIY5YRjmffPcfwP4BOga7dpUNYIg\nqA9cBNwVhmFRGIbvAK8Dl0S3MlUXn/cCX/fle/9DZbBweP4LGBYEQb0gCFoC51AeLigGBEEQD2QD\nzYIgWBsEweffTIepG+3aVD2CIGgE3AvcFO1aFF1BEDQH2gErol2Lqkw7oCwMw9XfaluK/1CIWT7v\nY4+v+7HN9/6Hx2Dh8Myl/A3FduBzYCHwalQrUnVqDiQCg4FelE+H6UL50EjFhn8D/hyG4efRLkTR\nEwRBIjAZmBSG4apo16Mq04Dy1/tvK6R8KKxijM/7mOXrfmzzvf9hMFj4RhAEc4IgCL/n450gCOIo\nH53wF6A+0BRoQvmcG9UCB3sMAF9/0/WhMAzzwzD8AngA+JfoVa3Kcgi/AzoD/YAHo12rKt8hPP/3\n9YsDnqF83v21UStY1aEIaPRPbY2AHVGoRVHk8z42+bovfO9/WNzR4BthGPb5oduDIGgKHAc8HIZh\nCVASBMGTwFjg1qqvUFXtYI8BgCAIPgfCbx9WZQWpWh3C74AbgNbAp0EQQPl/M+ODIGgfhmFWlReo\nKnWIz/8A+DPl/8H4lzAMS6u6LkXVaiAhCIK2YRiu+aYtE4fBxxSf9zGtD77ux7QwDL/yvf+hC8LQ\nn82hCoJgPTARGEf5L5cnga/DMHT7qRgRBMG9lK+tMRAopXwhrzlhGN4V1cJU5YIgqMf+/728mfI3\nHKPCMNwSlaJUrYIg+BPlwyD7hWFYFO16VPWCIHiB8jeR/0r5ff+/wGlhGBouxAif97HL132B7/0P\nh1MhDs/PgAHAFmAt5Q+uG6Nakarbv1G+3dBqYCXwIfD7qFakahGG4a4wDAv2fVA+TLrYNxexIQiC\n44ErKf8DoyAIgqJvPoZHuTRVrauBupRvNf085X9QGCrECJ/3sc3XfX3D9/6HyBELkiRJkiQpYo5Y\nkCRJkiRJETNYkCRJkiRJETNYkCRJkiRJETNYkCRJkiRJETNYkCRJkiRJETNYkCRJkiRJETNYkCRJ\nkiRJETNYkCRJkiRJETNYkCRJkiRJEfv/C0/2wo7nVNYAAAAASUVORK5CYII=\n",
|
||
"text/plain": [
|
||
"<matplotlib.figure.Figure at 0x7f43d408fa20>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"from sklearn.manifold import TSNE\n",
|
||
"\n",
|
||
"tsne = TSNE(perplexity=30, n_components=2, init='pca', n_iter=5000)\n",
|
||
"plot_only = 500\n",
|
||
"low_dim_embs = tsne.fit_transform(final_embeddings[:plot_only,:])\n",
|
||
"labels = [vocabulary[i] for i in range(plot_only)]\n",
|
||
"plot_with_labels(low_dim_embs, labels)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Machine Translation"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"The `basic_rnn_seq2seq()` function creates a simple Encoder/Decoder model: it first runs an RNN to encode `encoder_inputs` into a state vector, then runs a decoder initialized with the last encoder state on `decoder_inputs`. Encoder and decoder use the same RNN cell type but they don't share parameters."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 112,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import tensorflow as tf\n",
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"n_steps = 50\n",
|
||
"n_neurons = 200\n",
|
||
"n_layers = 3\n",
|
||
"num_encoder_symbols = 20000\n",
|
||
"num_decoder_symbols = 20000\n",
|
||
"embedding_size = 150\n",
|
||
"learning_rate = 0.01\n",
|
||
"\n",
|
||
"X = tf.placeholder(tf.int32, [None, n_steps]) # English sentences\n",
|
||
"Y = tf.placeholder(tf.int32, [None, n_steps]) # French translations\n",
|
||
"W = tf.placeholder(tf.float32, [None, n_steps - 1, 1])\n",
|
||
"Y_input = Y[:, :-1]\n",
|
||
"Y_target = Y[:, 1:]\n",
|
||
"\n",
|
||
"encoder_inputs = tf.unstack(tf.transpose(X)) # list of 1D tensors\n",
|
||
"decoder_inputs = tf.unstack(tf.transpose(Y_input)) # list of 1D tensors\n",
|
||
"\n",
|
||
"lstm_cells = [tf.contrib.rnn.BasicLSTMCell(num_units=n_neurons)\n",
|
||
" for layer in range(n_layers)]\n",
|
||
"cell = tf.contrib.rnn.MultiRNNCell(lstm_cells)\n",
|
||
"\n",
|
||
"output_seqs, states = tf.contrib.legacy_seq2seq.embedding_rnn_seq2seq(\n",
|
||
" encoder_inputs,\n",
|
||
" decoder_inputs,\n",
|
||
" cell,\n",
|
||
" num_encoder_symbols,\n",
|
||
" num_decoder_symbols,\n",
|
||
" embedding_size)\n",
|
||
"\n",
|
||
"logits = tf.transpose(tf.unstack(output_seqs), perm=[1, 0, 2])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 113,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"logits_flat = tf.reshape(logits, [-1, num_decoder_symbols])\n",
|
||
"Y_target_flat = tf.reshape(Y_target, [-1])\n",
|
||
"W_flat = tf.reshape(W, [-1])\n",
|
||
"xentropy = W_flat * tf.nn.sparse_softmax_cross_entropy_with_logits(labels=Y_target_flat, logits=logits_flat)\n",
|
||
"loss = tf.reduce_mean(xentropy)\n",
|
||
"optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)\n",
|
||
"training_op = optimizer.minimize(loss)\n",
|
||
"\n",
|
||
"init = tf.global_variables_initializer()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"source": [
|
||
"# Exercise solutions"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 1. to 6."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"See Appendix A."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 7. Embedded Reber Grammars"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"First we need to build a function that generates strings based on a grammar. The grammar will be represented as a list of possible transitions for each state. A transition specifies the string to output (or a grammar to generate it) and the next state."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 114,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"from random import choice, seed\n",
|
||
"\n",
|
||
"# to make this notebook's output stable across runs\n",
|
||
"seed(42)\n",
|
||
"np.random.seed(42)\n",
|
||
"\n",
|
||
"default_reber_grammar = [\n",
|
||
" [(\"B\", 1)], # (state 0) =B=>(state 1)\n",
|
||
" [(\"T\", 2), (\"P\", 3)], # (state 1) =T=>(state 2) or =P=>(state 3)\n",
|
||
" [(\"S\", 2), (\"X\", 4)], # (state 2) =S=>(state 2) or =X=>(state 4)\n",
|
||
" [(\"T\", 3), (\"V\", 5)], # and so on...\n",
|
||
" [(\"X\", 3), (\"S\", 6)],\n",
|
||
" [(\"P\", 4), (\"V\", 6)],\n",
|
||
" [(\"E\", None)]] # (state 6) =E=>(terminal state)\n",
|
||
"\n",
|
||
"embedded_reber_grammar = [\n",
|
||
" [(\"B\", 1)],\n",
|
||
" [(\"T\", 2), (\"P\", 3)],\n",
|
||
" [(default_reber_grammar, 4)],\n",
|
||
" [(default_reber_grammar, 5)],\n",
|
||
" [(\"T\", 6)],\n",
|
||
" [(\"P\", 6)],\n",
|
||
" [(\"E\", None)]]\n",
|
||
"\n",
|
||
"def generate_string(grammar):\n",
|
||
" state = 0\n",
|
||
" output = []\n",
|
||
" while state is not None:\n",
|
||
" production, state = choice(grammar[state])\n",
|
||
" if isinstance(production, list):\n",
|
||
" production = generate_string(grammar=production)\n",
|
||
" output.append(production)\n",
|
||
" return \"\".join(output)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Let's generate a few strings based on the default Reber grammar:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 115,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"BTXXTTTTVPXTTTTTVPSE BTXSE BTXXTVPSE BTXXVPSE BTSSXXTTVVE BTXSE BTSSSXSE BPTTTVVE BTXXVVE BPTTVVE BTSXXTTTTVPSE BPTTVVE BPTVPSE BPTTVPXVVE BPVPXTTTVPXTVPSE BTXSE BPTTTTVPXTTTTTTTVPXVVE BPTVVE BTXSE BPTTTVVE BTSXXVPSE BTXXTTTTTVVE BPTTVPSE BPVVE BPTTTVPXVPXTTTTTVPXTTVVE "
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"for _ in range(25):\n",
|
||
" print(generate_string(default_reber_grammar), end=\" \")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Looks good. Now let's generate a few strings based on the embedded Reber grammar:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 116,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"BPBPTVVEPE BTBPTVPXVVETE BPBPTTTVVEPE BPBTXSEPE BPBPTTTTTVPSEPE BTBTSXSETE BPBPVPSEPE BPBPVVEPE BPBTXSEPE BPBTSXSEPE BTBPTTVVETE BPBPVVEPE BTBTXSETE BPBPTTVVEPE BTBTSXXVVETE BTBTXXTVPXTVPSETE BTBPTVVETE BPBPVPXTTVPXTVVEPE BTBTXSETE BPBTXSEPE BPBTSXXTVPSEPE BPBPVVEPE BPBPTTTTTTTTTTVPXVVEPE BPBPVVEPE BPBPVVEPE "
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"for _ in range(25):\n",
|
||
" print(generate_string(embedded_reber_grammar), end=\" \")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Okay, now we need a function to generate strings that do not respect the grammar. We could generate a random string, but the task would be a bit too easy, so instead we will generate a string that respects the grammar, and we will corrupt it by changing just one character:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 117,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"def generate_corrupted_string(grammar, chars=\"BEPSTVX\"):\n",
|
||
" good_string = generate_string(grammar)\n",
|
||
" index = np.random.randint(len(good_string))\n",
|
||
" good_char = good_string[index]\n",
|
||
" bad_char = choice(list(set(chars) - set(good_char)))\n",
|
||
" return good_string[:index] + bad_char + good_string[index + 1:]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Let's look at a few corrupted strings:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 118,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"BPBPVPPEPE BPBPXSEPE BPBPTVVPPE BTBPTPSETE BTBPVVBTE BPBTSSXXTPTVVEPE BPPTSXXTVPSEPE BPBTXSSPE BTBPTTTVPSPTE BPBTSXXTTTSTTVVEPE BPBBXXVPXTVPXTTVVEPE BPBPTTVBEPE BPBPVVETE BPEPTTVVEPE BPBPVTSEPE BPBTXXXVVEPE BXBPTTTVPXVVETE BPBTSSXBEPE BPBPVBEPE BSBTXSEPE BTBPTVPXVPXVVETB TPBTSXXTVPXVPSEPE BPBTSXXTTTVXSEPE BPBPVPXVVSPE BTBTSBSETE "
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"for _ in range(25):\n",
|
||
" print(generate_corrupted_string(embedded_reber_grammar), end=\" \")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"It's not possible to feed a string directly to an RNN: we need to convert it to a sequence of vectors, first. Each vector will represent a single letter, using a one-hot encoding. For example, the letter \"B\" will be represented as the vector `[1, 0, 0, 0, 0, 0, 0]`, the letter E will be represented as `[0, 1, 0, 0, 0, 0, 0]` and so on. Let's write a function that converts a string to a sequence of such one-hot vectors. Note that if the string is shorted than `n_steps`, it will be padded with zero vectors (later, we will tell TensorFlow how long each string actually is using the `sequence_length` parameter)."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 119,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"def string_to_one_hot_vectors(string, n_steps, chars=\"BEPSTVX\"):\n",
|
||
" char_to_index = {char: index for index, char in enumerate(chars)}\n",
|
||
" output = np.zeros((n_steps, len(chars)), dtype=np.int32)\n",
|
||
" for index, char in enumerate(string):\n",
|
||
" output[index, char_to_index[char]] = 1.\n",
|
||
" return output"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 120,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"array([[1, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 1, 0, 0],\n",
|
||
" [1, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 1, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 1],\n",
|
||
" [0, 0, 0, 1, 0, 0, 0],\n",
|
||
" [0, 1, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 1, 0, 0],\n",
|
||
" [0, 1, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0]], dtype=int32)"
|
||
]
|
||
},
|
||
"execution_count": 120,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"string_to_one_hot_vectors(\"BTBTXSETE\", 12)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"We can now generate the dataset, with 50% good strings, and 50% bad strings:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 121,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"def generate_dataset(size):\n",
|
||
" good_strings = [generate_string(embedded_reber_grammar)\n",
|
||
" for _ in range(size // 2)]\n",
|
||
" bad_strings = [generate_corrupted_string(embedded_reber_grammar)\n",
|
||
" for _ in range(size - size // 2)]\n",
|
||
" all_strings = good_strings + bad_strings\n",
|
||
" n_steps = max([len(string) for string in all_strings])\n",
|
||
" X = np.array([string_to_one_hot_vectors(string, n_steps)\n",
|
||
" for string in all_strings])\n",
|
||
" seq_length = np.array([len(string) for string in all_strings])\n",
|
||
" y = np.array([[1] for _ in range(len(good_strings))] +\n",
|
||
" [[0] for _ in range(len(bad_strings))])\n",
|
||
" rnd_idx = np.random.permutation(size)\n",
|
||
" return X[rnd_idx], seq_length[rnd_idx], y[rnd_idx]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 122,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"X_train, l_train, y_train = generate_dataset(10000)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Let's take a look at the first training instances:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 123,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"array([[1, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 1, 0, 0],\n",
|
||
" [1, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 1, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 1, 0, 0],\n",
|
||
" [0, 0, 0, 0, 1, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 1, 0],\n",
|
||
" [0, 0, 1, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 1],\n",
|
||
" [0, 0, 0, 0, 0, 1, 0],\n",
|
||
" [0, 0, 1, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 1],\n",
|
||
" [0, 0, 0, 0, 0, 1, 0],\n",
|
||
" [0, 0, 1, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 1],\n",
|
||
" [0, 0, 1, 0, 0, 0, 0],\n",
|
||
" [0, 0, 1, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 1],\n",
|
||
" [0, 0, 0, 0, 0, 1, 0],\n",
|
||
" [0, 0, 0, 0, 0, 1, 0],\n",
|
||
" [0, 1, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 1, 0, 0],\n",
|
||
" [0, 1, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0],\n",
|
||
" [0, 0, 0, 0, 0, 0, 0]], dtype=int32)"
|
||
]
|
||
},
|
||
"execution_count": 123,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"X_train[0]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"It's padded with a lot of zeros because the longest string in the dataset is that long. How long is this particular string?"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 124,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"23"
|
||
]
|
||
},
|
||
"execution_count": 124,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"l_train[0]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"What class is it?"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 125,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"array([0])"
|
||
]
|
||
},
|
||
"execution_count": 125,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"y_train[0]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Perfect! We are ready to create the RNN to identify good strings. We build a sequence classifier very similar to the one we built earlier to classify MNIST images, with two main differences:\n",
|
||
"* First, the input strings have variable length, so we need to specify the `sequence_length` when calling the `dynamic_rnn()` function.\n",
|
||
"* Second, this is a binary classifier, so we only need one output neuron that will output, for each input string, the estimated log probability that it is a good string. For multiclass classification, we used `sparse_softmax_cross_entropy_with_logits()` but for binary classification we use `sigmoid_cross_entropy_with_logits()`.\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 126,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"reset_graph()\n",
|
||
"\n",
|
||
"possible_chars = \"BEPSTVX\"\n",
|
||
"n_inputs = len(possible_chars)\n",
|
||
"n_neurons = 30\n",
|
||
"n_outputs = 1\n",
|
||
"\n",
|
||
"learning_rate = 0.02\n",
|
||
"momentum = 0.95\n",
|
||
"\n",
|
||
"X = tf.placeholder(tf.float32, [None, None, n_inputs], name=\"X\")\n",
|
||
"seq_length = tf.placeholder(tf.int32, [None], name=\"seq_length\")\n",
|
||
"y = tf.placeholder(tf.float32, [None, 1], name=\"y\")\n",
|
||
"\n",
|
||
"gru_cell = tf.contrib.rnn.GRUCell(num_units=n_neurons)\n",
|
||
"outputs, states = tf.nn.dynamic_rnn(gru_cell, X, dtype=tf.float32,\n",
|
||
" sequence_length=seq_length)\n",
|
||
"\n",
|
||
"logits = tf.layers.dense(states, n_outputs, name=\"logits\")\n",
|
||
"y_pred = tf.cast(tf.greater(logits, 0.), tf.float32, name=\"y_pred\")\n",
|
||
"y_proba = tf.nn.sigmoid(logits, name=\"y_proba\")\n",
|
||
"\n",
|
||
"xentropy = tf.nn.sigmoid_cross_entropy_with_logits(labels=y, logits=logits)\n",
|
||
"loss = tf.reduce_mean(xentropy, name=\"loss\")\n",
|
||
"optimizer = tf.train.MomentumOptimizer(learning_rate=learning_rate,\n",
|
||
" momentum=momentum,\n",
|
||
" use_nesterov=True)\n",
|
||
"training_op = optimizer.minimize(loss)\n",
|
||
"\n",
|
||
"correct = tf.equal(y_pred, y, name=\"correct\")\n",
|
||
"accuracy = tf.reduce_mean(tf.cast(correct, tf.float32), name=\"accuracy\")\n",
|
||
"\n",
|
||
"init = tf.global_variables_initializer()\n",
|
||
"saver = tf.train.Saver()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Now let's generate a validation set so we can track progress during training:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 127,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"X_val, l_val, y_val = generate_dataset(5000)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 128,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
" 0 Train loss: 0.6869, accuracy: 54.00% Validation accuracy: 58.86%\n",
|
||
" 1 Train loss: 0.6651, accuracy: 54.00% Validation accuracy: 59.56%\n",
|
||
" 2 Train loss: 0.6379, accuracy: 72.00% Validation accuracy: 71.92%\n",
|
||
" 3 Train loss: 0.5612, accuracy: 66.00% Validation accuracy: 72.88%\n",
|
||
" 4 Train loss: 0.4574, accuracy: 82.00% Validation accuracy: 78.56%\n",
|
||
" 5 Train loss: 0.3446, accuracy: 84.00% Validation accuracy: 85.80%\n",
|
||
" 6 Train loss: 0.3048, accuracy: 88.00% Validation accuracy: 87.96%\n",
|
||
" 7 Train loss: 0.3263, accuracy: 90.00% Validation accuracy: 91.28%\n",
|
||
" 8 Train loss: 0.2017, accuracy: 94.00% Validation accuracy: 94.92%\n",
|
||
" 9 Train loss: 0.1600, accuracy: 98.00% Validation accuracy: 95.06%\n",
|
||
" 10 Train loss: 0.1414, accuracy: 98.00% Validation accuracy: 96.20%\n",
|
||
" 11 Train loss: 0.0723, accuracy: 98.00% Validation accuracy: 98.26%\n",
|
||
" 12 Train loss: 0.0181, accuracy: 100.00% Validation accuracy: 98.70%\n",
|
||
" 13 Train loss: 0.0769, accuracy: 100.00% Validation accuracy: 97.64%\n",
|
||
" 14 Train loss: 0.0111, accuracy: 100.00% Validation accuracy: 99.56%\n",
|
||
" 15 Train loss: 0.0987, accuracy: 100.00% Validation accuracy: 97.46%\n",
|
||
" 16 Train loss: 0.0080, accuracy: 100.00% Validation accuracy: 99.66%\n",
|
||
" 17 Train loss: 0.0061, accuracy: 100.00% Validation accuracy: 99.76%\n",
|
||
" 18 Train loss: 0.0025, accuracy: 100.00% Validation accuracy: 99.84%\n",
|
||
" 19 Train loss: 0.0405, accuracy: 100.00% Validation accuracy: 98.42%\n",
|
||
" 20 Train loss: 0.0058, accuracy: 100.00% Validation accuracy: 99.78%\n",
|
||
" 21 Train loss: 0.0072, accuracy: 100.00% Validation accuracy: 99.30%\n",
|
||
" 22 Train loss: 0.0015, accuracy: 100.00% Validation accuracy: 99.96%\n",
|
||
" 23 Train loss: 0.0013, accuracy: 100.00% Validation accuracy: 99.90%\n",
|
||
" 24 Train loss: 0.0013, accuracy: 100.00% Validation accuracy: 99.94%\n",
|
||
" 25 Train loss: 0.0007, accuracy: 100.00% Validation accuracy: 100.00%\n",
|
||
" 26 Train loss: 0.0006, accuracy: 100.00% Validation accuracy: 100.00%\n",
|
||
" 27 Train loss: 0.0005, accuracy: 100.00% Validation accuracy: 100.00%\n",
|
||
" 28 Train loss: 0.0004, accuracy: 100.00% Validation accuracy: 100.00%\n",
|
||
" 29 Train loss: 0.0004, accuracy: 100.00% Validation accuracy: 100.00%\n",
|
||
" 30 Train loss: 0.0003, accuracy: 100.00% Validation accuracy: 100.00%\n",
|
||
" 31 Train loss: 0.0003, accuracy: 100.00% Validation accuracy: 100.00%\n",
|
||
" 32 Train loss: 0.0003, accuracy: 100.00% Validation accuracy: 100.00%\n",
|
||
" 33 Train loss: 0.0003, accuracy: 100.00% Validation accuracy: 100.00%\n",
|
||
" 34 Train loss: 0.0002, accuracy: 100.00% Validation accuracy: 100.00%\n",
|
||
" 35 Train loss: 0.0002, accuracy: 100.00% Validation accuracy: 100.00%\n",
|
||
" 36 Train loss: 0.0002, accuracy: 100.00% Validation accuracy: 100.00%\n",
|
||
" 37 Train loss: 0.0002, accuracy: 100.00% Validation accuracy: 100.00%\n",
|
||
" 38 Train loss: 0.0002, accuracy: 100.00% Validation accuracy: 100.00%\n",
|
||
" 39 Train loss: 0.0002, accuracy: 100.00% Validation accuracy: 100.00%\n",
|
||
" 40 Train loss: 0.0002, accuracy: 100.00% Validation accuracy: 100.00%\n",
|
||
" 41 Train loss: 0.0002, accuracy: 100.00% Validation accuracy: 100.00%\n",
|
||
" 42 Train loss: 0.0002, accuracy: 100.00% Validation accuracy: 100.00%\n",
|
||
" 43 Train loss: 0.0002, accuracy: 100.00% Validation accuracy: 100.00%\n",
|
||
" 44 Train loss: 0.0002, accuracy: 100.00% Validation accuracy: 100.00%\n",
|
||
" 45 Train loss: 0.0002, accuracy: 100.00% Validation accuracy: 100.00%\n",
|
||
" 46 Train loss: 0.0001, accuracy: 100.00% Validation accuracy: 100.00%\n",
|
||
" 47 Train loss: 0.0001, accuracy: 100.00% Validation accuracy: 100.00%\n",
|
||
" 48 Train loss: 0.0001, accuracy: 100.00% Validation accuracy: 100.00%\n",
|
||
" 49 Train loss: 0.0001, accuracy: 100.00% Validation accuracy: 100.00%\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"n_epochs = 50\n",
|
||
"batch_size = 50\n",
|
||
"\n",
|
||
"with tf.Session() as sess:\n",
|
||
" init.run()\n",
|
||
" for epoch in range(n_epochs):\n",
|
||
" X_batches = np.array_split(X_train, len(X_train) // batch_size)\n",
|
||
" l_batches = np.array_split(l_train, len(l_train) // batch_size)\n",
|
||
" y_batches = np.array_split(y_train, len(y_train) // batch_size)\n",
|
||
" for X_batch, l_batch, y_batch in zip(X_batches, l_batches, y_batches):\n",
|
||
" loss_val, _ = sess.run(\n",
|
||
" [loss, training_op],\n",
|
||
" feed_dict={X: X_batch, seq_length: l_batch, y: y_batch})\n",
|
||
" acc_train = accuracy.eval(feed_dict={X: X_batch, seq_length: l_batch, y: y_batch})\n",
|
||
" acc_val = accuracy.eval(feed_dict={X: X_val, seq_length: l_val, y: y_val})\n",
|
||
" print(\"{:4d} Train loss: {:.4f}, accuracy: {:.2f}% Validation accuracy: {:.2f}%\".format(\n",
|
||
" epoch, loss_val, 100 * acc_train, 100 * acc_val))\n",
|
||
" saver.save(sess, \"my_reber_classifier\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Now let's test our RNN on two tricky strings: the first one is bad while the second one is good. They only differ by the second to last character. If the RNN gets this right, it shows that it managed to notice the pattern that the second letter should always be equal to the second to last letter. That requires a fairly long short-term memory (which is the reason why we used a GRU cell)."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 129,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"INFO:tensorflow:Restoring parameters from my_reber_classifier\n",
|
||
"\n",
|
||
"Estimated probability that these are Reber strings:\n",
|
||
"BPBTSSSSSSSSSSSSXXTTTTTVPXTTVPXTTTTTTTVPXVPXVPXTTTVVETE: 0.00%\n",
|
||
"BPBTSSSSSSSSSSSSXXTTTTTVPXTTVPXTTTTTTTVPXVPXVPXTTTVVEPE: 1.00%\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"test_strings = [\n",
|
||
" \"BPBTSSSSSSSSSSSSXXTTTTTVPXTTVPXTTTTTTTVPXVPXVPXTTTVVETE\",\n",
|
||
" \"BPBTSSSSSSSSSSSSXXTTTTTVPXTTVPXTTTTTTTVPXVPXVPXTTTVVEPE\"]\n",
|
||
"l_test = np.array([len(s) for s in test_strings])\n",
|
||
"max_length = l_test.max()\n",
|
||
"X_test = [string_to_one_hot_vectors(s, n_steps=max_length)\n",
|
||
" for s in test_strings]\n",
|
||
"\n",
|
||
"with tf.Session() as sess:\n",
|
||
" saver.restore(sess, \"my_reber_classifier\")\n",
|
||
" y_proba_val = y_proba.eval(feed_dict={X: X_test, seq_length: l_test})\n",
|
||
"\n",
|
||
"print()\n",
|
||
"print(\"Estimated probability that these are Reber strings:\")\n",
|
||
"for index, string in enumerate(test_strings):\n",
|
||
" print(\"{}: {:.2f}%\".format(string, y_proba_val[index][0]))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Ta-da! It worked fine. The RNN found the correct answers with absolute confidence. :)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 8. and 9."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Coming soon..."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {
|
||
"collapsed": true
|
||
},
|
||
"outputs": [],
|
||
"source": []
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.5.2"
|
||
},
|
||
"nav_menu": {},
|
||
"toc": {
|
||
"navigate_menu": true,
|
||
"number_sections": true,
|
||
"sideBar": true,
|
||
"threshold": 6,
|
||
"toc_cell": false,
|
||
"toc_section_display": "block",
|
||
"toc_window_display": false
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 1
|
||
}
|