{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "### Rewrite dlnd_project2 in kur\n", "- [original project_2 code](http://nbviewer.jupyter.org/github/EmbraceLife/image_classification_dlnd2/blob/master/cnn_cifar10.ipynb#annotations:5YK7tv1dEealzwMjXZx4WQ) in tensorflow\n", "- [detailed outline](https://github.com/EmbraceLife/image_classification_dlnd2/blob/master/outline.md) of the original code\n", "- kur code to replicate the original code is below" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Kur, by Deepgram -- deep learning made easy\r\n", "Version: 0.3.0\r\n", "Homepage: https://kur.deepgram.com\r\n" ] } ], "source": [ "!kur --version" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Overwriting dlnd_p2.yml\n" ] } ], "source": [ "%%writefile dlnd_p2.yml\n", "\n", "---\n", "settings:\n", "\n", " # Where to get the data\n", " cifar: &cifar\n", " url: \"https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz\"\n", " checksum: \"6d958be074577803d12ecdefd02955f39262c83c16fe9348329d7fe0b5c001ce\"\n", " path: \"~/kur\" \n", " # I am tempting to read supplier source code to understand better how to use \n", " # each supplier (I see a few available, csv, pickle), do you think \n", " # it is a good idea to spend time on? #################################################\n", "\n", " \n", " # Backend to use \n", " backend:\n", " name: keras # how many backend does kur have, and what different do they make? ##################### \n", " # some complaint about keras performance, do you think it is an issue? #################\n", "\n", " # Hyperparameters\n", " cnn:\n", " kernels: 20\n", " size: [5, 5]\n", " strides: [2, 2] \n", "\n", " pool:\n", " size: [2,2]\n", " strides: [2,2]\n", " type: \"max\" \n", "\n", "model:\n", " - input: images \n", " - convolution: \n", " kernels: \"{{cnn.kernels}}\"\n", " size: \"{{cnn.size}}\"\n", " strides: \"{{ cnn.strides }}\"\n", " - activation: relu\n", " - pool:\n", " size: \"{{pool.size}}\"\n", " strides: \"{{pool.strides}}\"\n", " type: \"{{pool.type}}\" \n", " - flatten:\n", " - dense: 15 \n", " - dense: 10\n", " - activation: softmax\n", " name: labels\n", "\n", "train:\n", " data:\n", " - cifar:\n", " <<: *cifar\n", " parts: [1] # only use dataset part 1 to train\n", " provider:\n", " batch_size: 128\n", " num_batches: 1000 # the entire part 1 will be used\n", " log: t3/cifar-log \n", " epochs: 20\n", " weights:\n", " initial: t3/cifar.best.valid.w # do you think is it essential to implement weight visualization? #############\n", " best: t3/cifar.best.train.w # visualizing weights on different layers is used in explaining cnn on image###\n", " last: t3/cifar.last.w # or is it not important for help experimenting on models #####################\n", "\n", " optimizer:\n", " name: adam\n", " learning_rate: 0.001\n", "\n", "validate:\n", " data:\n", " - cifar:\n", " <<: *cifar\n", " parts: 5 # only use dataset part 5 as validation set\n", " provider:\n", " num_batches: 50 # the project 2 only used 5000 data points as validation set\n", " weights: t3/cifar.best.valid.w\n", "\n", "test: &test\n", " data:\n", " - cifar:\n", " <<: *cifar\n", " parts: test\n", " weights: t3/cifar.best.valid.w\n", " provider:\n", " num_batches: 1000 # the entire part test will be used\n", "\n", "evaluate:\n", " <<: *test\n", " destination: t3/cifar.results.pkl\n", "\n", "loss:\n", " - target: labels # in the project: training loss and valid_accuracy are printed #############\n", " name: categorical_crossentropy # this should be a matter of personal taste, won't really affect anything##\n", "...\n" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'/Users/Natsume/Downloads/kur_road'" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%pwd" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Kur_Road.ipynb dlnd_p2_dropout.yml \u001b[34mt1\u001b[m\u001b[m/\r\n", "\u001b[34mcifar-log\u001b[m\u001b[m/ dlnd_p2_kur.ipynb \u001b[34mt2\u001b[m\u001b[m/\r\n", "dlnd_p2.yml \u001b[34mkur\u001b[m\u001b[m/ \u001b[34mt3\u001b[m\u001b[m/\r\n" ] } ], "source": [ "%ls" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1;37m[INFO 2017-02-28 22:28:48,972 kur.kurfile:638]\u001b[0m Parsing source: dlnd_p2.yml, included by top-level.\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:28:48,989 kur.kurfile:79]\u001b[0m Parsing Kurfile...\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:28:49,038 kur.loggers.binary_logger:87]\u001b[0m Log does not exist. Creating path: t3/cifar-log\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:28:56,014 kur.providers.batch_provider:54]\u001b[0m Batch size set to: 128\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:28:56,014 kur.providers.batch_provider:60]\u001b[0m Maximum number of batches set to: 1000\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:02,413 kur.providers.batch_provider:54]\u001b[0m Batch size set to: 32\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:02,413 kur.providers.batch_provider:60]\u001b[0m Maximum number of batches set to: 50\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:02,414 kur.backend.backend:80]\u001b[0m Creating backend: keras\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:02,414 kur.backend.backend:83]\u001b[0m Backend variants: none\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:02,414 kur.backend.keras_backend:122]\u001b[0m No particular backend for Keras has been requested.\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:03,578 kur.backend.keras_backend:191]\u001b[0m Keras is loaded. The backend is: theano\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:03,579 kur.model.model:260]\u001b[0m Enumerating the model containers.\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:03,579 kur.model.model:265]\u001b[0m Assembling the model dependency graph.\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:03,579 kur.model.model:280]\u001b[0m Connecting the model graph.\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:04,579 kur.model.model:284]\u001b[0m Model inputs: images\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:04,579 kur.model.model:285]\u001b[0m Model outputs: labels\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:04,580 kur.kurfile:310]\u001b[0m Ignoring missing initial weights: t3/cifar.best.valid.w. If this is undesireable, set \"must_exist\" to \"yes\" in the approriate \"weights\" section.\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:05,910 kur.providers.batch_provider:54]\u001b[0m Batch size set to: 2\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:05,910 kur.providers.batch_provider:60]\u001b[0m Maximum number of batches set to: 1\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:05,913 kur.backend.keras_backend:654]\u001b[0m Waiting for model to finish compiling...\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:05,956 kur.model.executor:256]\u001b[0m No historical training loss available from logs.\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:05,956 kur.model.executor:264]\u001b[0m No historical validation loss available from logs.\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:05,956 kur.model.executor:270]\u001b[0m No previous epochs.\u001b[0m\n", "\n", "Epoch 1/20, loss=2.035: 100%|██████| 10000/10000 [00:02<00:00, 3344.74samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:08,954 kur.model.executor:390]\u001b[0m Training loss: 2.035\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:08,954 kur.model.executor:397]\u001b[0m Saving best historical training weights: t3/cifar.best.train.w\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:09,202 kur.providers.batch_provider:54]\u001b[0m Batch size set to: 2\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:09,203 kur.providers.batch_provider:60]\u001b[0m Maximum number of batches set to: 1\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:09,208 kur.backend.keras_backend:654]\u001b[0m Waiting for model to finish compiling...\u001b[0m\n", "Validating, loss=1.854: 100%|████████| 1600/1600 [00:00<00:00, 4341.85samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:09,585 kur.model.executor:175]\u001b[0m Validation loss: 1.854\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:09,585 kur.model.executor:422]\u001b[0m Saving best historical validation weights: t3/cifar.best.valid.w\u001b[0m\n", "\n", "Epoch 2/20, loss=1.693: 100%|██████| 10000/10000 [00:02<00:00, 4339.70samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:11,897 kur.model.executor:390]\u001b[0m Training loss: 1.693\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:11,897 kur.model.executor:397]\u001b[0m Saving best historical training weights: t3/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.641: 100%|████████| 1600/1600 [00:00<00:00, 7412.35samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:12,117 kur.model.executor:175]\u001b[0m Validation loss: 1.641\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:12,118 kur.model.executor:422]\u001b[0m Saving best historical validation weights: t3/cifar.best.valid.w\u001b[0m\n", "\n", "Epoch 3/20, loss=1.541: 100%|██████| 10000/10000 [00:02<00:00, 4452.24samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:14,370 kur.model.executor:390]\u001b[0m Training loss: 1.541\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:14,371 kur.model.executor:397]\u001b[0m Saving best historical training weights: t3/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.548: 100%|████████| 1600/1600 [00:00<00:00, 8700.24samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:14,562 kur.model.executor:175]\u001b[0m Validation loss: 1.548\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:14,562 kur.model.executor:422]\u001b[0m Saving best historical validation weights: t3/cifar.best.valid.w\u001b[0m\n", "\n", "Epoch 4/20, loss=1.444: 100%|██████| 10000/10000 [00:01<00:00, 5273.62samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:16,462 kur.model.executor:390]\u001b[0m Training loss: 1.444\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:16,462 kur.model.executor:397]\u001b[0m Saving best historical training weights: t3/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.510: 100%|████████| 1600/1600 [00:00<00:00, 8556.89samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:16,654 kur.model.executor:175]\u001b[0m Validation loss: 1.510\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:16,654 kur.model.executor:422]\u001b[0m Saving best historical validation weights: t3/cifar.best.valid.w\u001b[0m\n", "\n", "Epoch 5/20, loss=1.376: 100%|██████| 10000/10000 [00:02<00:00, 4149.76samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:19,075 kur.model.executor:390]\u001b[0m Training loss: 1.376\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:19,075 kur.model.executor:397]\u001b[0m Saving best historical training weights: t3/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.431: 100%|████████| 1600/1600 [00:00<00:00, 4356.86samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:19,448 kur.model.executor:175]\u001b[0m Validation loss: 1.431\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:19,448 kur.model.executor:422]\u001b[0m Saving best historical validation weights: t3/cifar.best.valid.w\u001b[0m\n", "\n", "Epoch 6/20, loss=1.319: 100%|██████| 10000/10000 [00:02<00:00, 3406.46samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:22,388 kur.model.executor:390]\u001b[0m Training loss: 1.319\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:22,388 kur.model.executor:397]\u001b[0m Saving best historical training weights: t3/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.411: 100%|████████| 1600/1600 [00:00<00:00, 4413.76samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:22,758 kur.model.executor:175]\u001b[0m Validation loss: 1.411\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:22,758 kur.model.executor:422]\u001b[0m Saving best historical validation weights: t3/cifar.best.valid.w\u001b[0m\n", "\n", "Epoch 7/20, loss=1.265: 100%|██████| 10000/10000 [00:02<00:00, 4796.83samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:24,846 kur.model.executor:390]\u001b[0m Training loss: 1.265\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:24,847 kur.model.executor:397]\u001b[0m Saving best historical training weights: t3/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.365: 100%|████████| 1600/1600 [00:00<00:00, 5337.14samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:25,151 kur.model.executor:175]\u001b[0m Validation loss: 1.365\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:25,151 kur.model.executor:422]\u001b[0m Saving best historical validation weights: t3/cifar.best.valid.w\u001b[0m\n", "\n", "Epoch 8/20, loss=1.226: 100%|██████| 10000/10000 [00:02<00:00, 4854.19samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:27,215 kur.model.executor:390]\u001b[0m Training loss: 1.226\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:27,215 kur.model.executor:397]\u001b[0m Saving best historical training weights: t3/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.401: 100%|████████| 1600/1600 [00:00<00:00, 6717.13samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:27,459 kur.model.executor:175]\u001b[0m Validation loss: 1.401\u001b[0m\n", "\n", "Epoch 9/20, loss=1.189: 100%|██████| 10000/10000 [00:02<00:00, 4833.21samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:29,530 kur.model.executor:390]\u001b[0m Training loss: 1.189\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:29,530 kur.model.executor:397]\u001b[0m Saving best historical training weights: t3/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.325: 100%|████████| 1600/1600 [00:00<00:00, 6882.16samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:29,768 kur.model.executor:175]\u001b[0m Validation loss: 1.325\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:29,769 kur.model.executor:422]\u001b[0m Saving best historical validation weights: t3/cifar.best.valid.w\u001b[0m\n", "\n", "Epoch 10/20, loss=1.155: 100%|█████| 10000/10000 [00:02<00:00, 4126.60samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:32,198 kur.model.executor:390]\u001b[0m Training loss: 1.155\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:32,198 kur.model.executor:397]\u001b[0m Saving best historical training weights: t3/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.275: 100%|████████| 1600/1600 [00:00<00:00, 6558.35samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:32,449 kur.model.executor:175]\u001b[0m Validation loss: 1.275\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:32,449 kur.model.executor:422]\u001b[0m Saving best historical validation weights: t3/cifar.best.valid.w\u001b[0m\n", "\n", "Epoch 11/20, loss=1.124: 100%|█████| 10000/10000 [00:02<00:00, 4612.79samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:34,624 kur.model.executor:390]\u001b[0m Training loss: 1.124\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:34,624 kur.model.executor:397]\u001b[0m Saving best historical training weights: t3/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.297: 100%|████████| 1600/1600 [00:00<00:00, 7161.01samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:34,852 kur.model.executor:175]\u001b[0m Validation loss: 1.297\u001b[0m\n", "\n", "Epoch 12/20, loss=1.093: 100%|█████| 10000/10000 [00:02<00:00, 4749.13samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:36,960 kur.model.executor:390]\u001b[0m Training loss: 1.093\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:36,961 kur.model.executor:397]\u001b[0m Saving best historical training weights: t3/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.298: 100%|████████| 1600/1600 [00:00<00:00, 6370.80samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:37,220 kur.model.executor:175]\u001b[0m Validation loss: 1.298\u001b[0m\n", "\n", "Epoch 13/20, loss=1.064: 100%|█████| 10000/10000 [00:02<00:00, 3999.67samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:39,723 kur.model.executor:390]\u001b[0m Training loss: 1.064\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:39,723 kur.model.executor:397]\u001b[0m Saving best historical training weights: t3/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.282: 100%|████████| 1600/1600 [00:00<00:00, 6927.25samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:39,959 kur.model.executor:175]\u001b[0m Validation loss: 1.282\u001b[0m\n", "\n", "Epoch 14/20, loss=1.049: 100%|█████| 10000/10000 [00:02<00:00, 4225.23samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:42,327 kur.model.executor:390]\u001b[0m Training loss: 1.049\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:42,328 kur.model.executor:397]\u001b[0m Saving best historical training weights: t3/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.285: 100%|████████| 1600/1600 [00:00<00:00, 4020.90samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:42,737 kur.model.executor:175]\u001b[0m Validation loss: 1.285\u001b[0m\n", "\n", "Epoch 15/20, loss=1.029: 100%|█████| 10000/10000 [00:03<00:00, 3258.72samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:45,808 kur.model.executor:390]\u001b[0m Training loss: 1.029\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:45,808 kur.model.executor:397]\u001b[0m Saving best historical training weights: t3/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.313: 100%|████████| 1600/1600 [00:00<00:00, 3002.92samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:46,346 kur.model.executor:175]\u001b[0m Validation loss: 1.313\u001b[0m\n", "\n", "Epoch 16/20, loss=1.000: 100%|█████| 10000/10000 [00:02<00:00, 3371.96samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:49,314 kur.model.executor:390]\u001b[0m Training loss: 1.000\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:49,314 kur.model.executor:397]\u001b[0m Saving best historical training weights: t3/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.244: 100%|████████| 1600/1600 [00:00<00:00, 4174.28samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:49,705 kur.model.executor:175]\u001b[0m Validation loss: 1.244\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:49,706 kur.model.executor:422]\u001b[0m Saving best historical validation weights: t3/cifar.best.valid.w\u001b[0m\n", "\n", "Epoch 17/20, loss=0.986: 100%|█████| 10000/10000 [00:02<00:00, 4469.39samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:51,949 kur.model.executor:390]\u001b[0m Training loss: 0.986\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:51,949 kur.model.executor:397]\u001b[0m Saving best historical training weights: t3/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.294: 100%|████████| 1600/1600 [00:00<00:00, 8014.51samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:52,154 kur.model.executor:175]\u001b[0m Validation loss: 1.294\u001b[0m\n", "\n", "Epoch 18/20, loss=0.968: 100%|█████| 10000/10000 [00:02<00:00, 4853.69samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:54,217 kur.model.executor:390]\u001b[0m Training loss: 0.968\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:54,217 kur.model.executor:397]\u001b[0m Saving best historical training weights: t3/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.352: 100%|████████| 1600/1600 [00:00<00:00, 7541.86samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:54,435 kur.model.executor:175]\u001b[0m Validation loss: 1.352\u001b[0m\n", "\n", "Epoch 19/20, loss=0.963: 100%|█████| 10000/10000 [00:02<00:00, 4310.08samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:56,757 kur.model.executor:390]\u001b[0m Training loss: 0.963\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:56,757 kur.model.executor:397]\u001b[0m Saving best historical training weights: t3/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.215: 100%|████████| 1600/1600 [00:00<00:00, 5476.13samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:57,060 kur.model.executor:175]\u001b[0m Validation loss: 1.215\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:57,060 kur.model.executor:422]\u001b[0m Saving best historical validation weights: t3/cifar.best.valid.w\u001b[0m\n", "\n", "Epoch 20/20, loss=0.930: 100%|█████| 10000/10000 [00:02<00:00, 4897.10samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:59,109 kur.model.executor:390]\u001b[0m Training loss: 0.930\u001b[0m\n", "\u001b[1;37m[INFO 2017-02-28 22:29:59,109 kur.model.executor:397]\u001b[0m Saving best historical training weights: t3/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.259: 100%|████████| 1600/1600 [00:00<00:00, 8264.63samples/s]\n", "\u001b[1;37m[INFO 2017-02-28 22:29:59,308 kur.model.executor:175]\u001b[0m Validation loss: 1.259\u001b[0m\n", "Completed 20 epochs.\n", "\u001b[1;37m[INFO 2017-02-28 22:29:59,309 kur.model.executor:210]\u001b[0m Saving most recent weights: t3/cifar.last.w\u001b[0m\n" ] } ], "source": [ "!kur -v train dlnd_p2.yml" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "training_loss_labels validation_loss_labels\r\n", "training_loss_total validation_loss_total\r\n" ] } ], "source": [ "# %cd t3/\n", "!ls cifar-log" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 2.0347259 , 1.6929394 , 1.54147506, 1.44420362, 1.3758949 ,\n", " 1.31863678, 1.26508343, 1.2262063 , 1.18933189, 1.15463436,\n", " 1.12429321, 1.09335482, 1.06431651, 1.04932415, 1.02948546,\n", " 0.99968618, 0.98606402, 0.9677121 , 0.96266526, 0.93041307], dtype=float32)" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from kur.loggers import BinaryLogger\n", "training_loss = BinaryLogger.load_column('cifar-log', 'training_loss_total') \n", "validation_loss = BinaryLogger.load_column('cifar-log', 'validation_loss_total') \n", " \n", "training_loss" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "plt.xlabel('Epoch')\n", "plt.ylabel('Loss')\n", "epoch = list(range(1, 1+len(training_loss)))\n", "t_line, = plt.plot(epoch, training_loss, 'co-', label='Training Loss')\n", "v_line, = plt.plot(epoch, validation_loss, 'mo-', label='Validation Loss')\n", "plt.legend(handles=[t_line, v_line])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Overwriting dlnd_p2_dropout.yml\n" ] } ], "source": [ "%%writefile dlnd_p2_dropout.yml\n", "\n", "---\n", "settings:\n", "\n", " # Where to get the data\n", " cifar: &cifar\n", " url: \"https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz\"\n", " checksum: \"6d958be074577803d12ecdefd02955f39262c83c16fe9348329d7fe0b5c001ce\"\n", " path: \"~/kur\" # if kur does not have normalization or one-hot-encoding, ##################\n", " # without normalization and one-hot-encoding, the performance will be hurt, right? ####\n", " # Backend to use \n", " backend:\n", " name: keras\n", "\n", " # Hyperparameters\n", " cnn:\n", " kernels: 20\n", " size: [5, 5]\n", " strides: [2, 2] \n", "\n", " pool:\n", " size: [2,2]\n", " strides: [2,2]\n", " type: max # must use a string here, {max} won't work, doc didn't say it #############\n", "\n", "model:\n", " - input: images # images are normalized from 0 to 1, labels are one-hot-encoding ##########\n", " - convolution: # does kur do normalize and one-hot-encoding under the hood? ##############\n", " kernels: \"{{cnn.kernels}}\"\n", " size: \"{{cnn.size}}\"\n", " strides: \"{{ cnn.strides }}\"\n", " - activation: relu\n", " - pool:\n", " size: \"{{pool.size}}\"\n", " strides: \"{{pool.strides}}\"\n", " type: \"{{pool.type}}\" \n", " - flatten:\n", " - dense: 15 # p2 want a dropout applied here, but kur does not have yet?? ############\n", " - dropout: 0.25\n", " - dense: 10\n", " - activation: softmax\n", " name: labels\n", "\n", "train:\n", " data:\n", " - cifar:\n", " <<: *cifar\n", " parts: [1] # only use dataset part 1 to train\n", " provider:\n", " batch_size: 128\n", " num_batches: 1000 # the entire part 1 will be used\n", " log: t1_dp0.25/cifar-log \n", " epochs: 20\n", " weights:\n", " initial: t1_dp0.25/cifar.best.valid.w \n", " best: t1_dp0.25/cifar.best.train.w\n", " last: t1_dp0.25/cifar.last.w\n", "\n", " optimizer:\n", " name: adam\n", " learning_rate: 0.001\n", "\n", "validate:\n", " data:\n", " - cifar:\n", " <<: *cifar\n", " parts: 5 # only use dataset part 5 as validation set\n", " provider:\n", " batch_size: 128\n", " num_batches: 50 # the project 2 only used 5000 data points as validation set\n", " weights: t1_dp0.25/cifar.best.valid.w\n", "\n", "test: &test\n", " data:\n", " - cifar:\n", " <<: *cifar\n", " parts: test\n", " weights: t1_dp0.25/cifar.best.valid.w\n", " provider:\n", " batch_size: 128\n", " num_batches: 1000 # the entire part test will be used\n", "\n", "evaluate:\n", " <<: *test\n", " destination: t1_dp0.25/cifar.results.pkl\n", "\n", "loss:\n", " - target: labels # in the project: training loss and valid_accuracy are printed #############\n", " name: categorical_crossentropy # this should be a matter of personal taste, won't really affect anything##\n", "...\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1;37m[INFO 2017-03-01 07:34:45,517 kur.kurfile:699]\u001b[0m Parsing source: dlnd_p2_dropout.yml, included by top-level.\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:34:45,533 kur.kurfile:82]\u001b[0m Parsing Kurfile...\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:34:45,558 kur.loggers.binary_logger:107]\u001b[0m Log does not exist. Creating path: t1_dp0.25/cifar-log\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:34:58,394 kur.backend.backend:80]\u001b[0m Creating backend: keras\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:34:58,394 kur.backend.backend:83]\u001b[0m Backend variants: none\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:34:58,394 kur.backend.keras_backend:122]\u001b[0m No particular backend for Keras has been requested.\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:34:59,341 kur.backend.keras_backend:195]\u001b[0m Keras is loaded. The backend is: theano\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:34:59,341 kur.model.model:260]\u001b[0m Enumerating the model containers.\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:34:59,342 kur.model.model:265]\u001b[0m Assembling the model dependency graph.\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:34:59,342 kur.model.model:280]\u001b[0m Connecting the model graph.\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:00,404 kur.model.model:284]\u001b[0m Model inputs: images\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:00,404 kur.model.model:285]\u001b[0m Model outputs: labels\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:00,404 kur.kurfile:357]\u001b[0m Ignoring missing initial weights: t1_dp0.25/cifar.best.valid.w. If this is undesireable, set \"must_exist\" to \"yes\" in the approriate \"weights\" section.\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:00,404 kur.model.executor:315]\u001b[0m No historical training loss available from logs.\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:00,404 kur.model.executor:323]\u001b[0m No historical validation loss available from logs.\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:00,404 kur.model.executor:329]\u001b[0m No previous epochs.\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:01,829 kur.backend.keras_backend:666]\u001b[0m Waiting for model to finish compiling...\u001b[0m\n", "\n", "Epoch 1/20, loss=2.080: 100%|██████| 10000/10000 [00:02<00:00, 3728.18samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:04,562 kur.model.executor:464]\u001b[0m Training loss: 2.080\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:04,562 kur.model.executor:471]\u001b[0m Saving best historical training weights: t1_dp0.25/cifar.best.train.w\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:04,953 kur.backend.keras_backend:666]\u001b[0m Waiting for model to finish compiling...\u001b[0m\n", "Validating, loss=1.874: 100%|███████| 6400/6400 [00:00<00:00, 10436.54samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:05,569 kur.model.executor:197]\u001b[0m Validation loss: 1.874\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:05,570 kur.model.executor:413]\u001b[0m Saving best historical validation weights: t1_dp0.25/cifar.best.valid.w\u001b[0m\n", "\n", "Epoch 2/20, loss=1.801: 100%|██████| 10000/10000 [00:02<00:00, 4985.77samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:07,580 kur.model.executor:464]\u001b[0m Training loss: 1.801\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:07,580 kur.model.executor:471]\u001b[0m Saving best historical training weights: t1_dp0.25/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.672: 100%|███████| 6400/6400 [00:00<00:00, 10588.70samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:08,196 kur.model.executor:197]\u001b[0m Validation loss: 1.672\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:08,196 kur.model.executor:413]\u001b[0m Saving best historical validation weights: t1_dp0.25/cifar.best.valid.w\u001b[0m\n", "\n", "Epoch 3/20, loss=1.646: 100%|██████| 10000/10000 [00:02<00:00, 4988.95samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:10,206 kur.model.executor:464]\u001b[0m Training loss: 1.646\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:10,206 kur.model.executor:471]\u001b[0m Saving best historical training weights: t1_dp0.25/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.578: 100%|███████| 6400/6400 [00:00<00:00, 11537.31samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:10,768 kur.model.executor:197]\u001b[0m Validation loss: 1.578\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:10,768 kur.model.executor:413]\u001b[0m Saving best historical validation weights: t1_dp0.25/cifar.best.valid.w\u001b[0m\n", "\n", "Epoch 4/20, loss=1.537: 100%|██████| 10000/10000 [00:02<00:00, 4735.37samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:12,886 kur.model.executor:464]\u001b[0m Training loss: 1.537\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:12,887 kur.model.executor:471]\u001b[0m Saving best historical training weights: t1_dp0.25/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.490: 100%|███████| 6400/6400 [00:00<00:00, 10859.18samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:13,486 kur.model.executor:197]\u001b[0m Validation loss: 1.490\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:13,486 kur.model.executor:413]\u001b[0m Saving best historical validation weights: t1_dp0.25/cifar.best.valid.w\u001b[0m\n", "\n", "Epoch 5/20, loss=1.470: 100%|██████| 10000/10000 [00:02<00:00, 4768.44samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:15,588 kur.model.executor:464]\u001b[0m Training loss: 1.470\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:15,588 kur.model.executor:471]\u001b[0m Saving best historical training weights: t1_dp0.25/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.411: 100%|███████| 6400/6400 [00:00<00:00, 10774.77samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:16,189 kur.model.executor:197]\u001b[0m Validation loss: 1.411\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:16,190 kur.model.executor:413]\u001b[0m Saving best historical validation weights: t1_dp0.25/cifar.best.valid.w\u001b[0m\n", "\n", "Epoch 6/20, loss=1.406: 100%|██████| 10000/10000 [00:02<00:00, 4293.21samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:18,523 kur.model.executor:464]\u001b[0m Training loss: 1.406\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:18,524 kur.model.executor:471]\u001b[0m Saving best historical training weights: t1_dp0.25/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.384: 100%|███████| 6400/6400 [00:00<00:00, 10308.95samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:19,153 kur.model.executor:197]\u001b[0m Validation loss: 1.384\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:19,154 kur.model.executor:413]\u001b[0m Saving best historical validation weights: t1_dp0.25/cifar.best.valid.w\u001b[0m\n", "\n", "Epoch 7/20, loss=1.371: 100%|██████| 10000/10000 [00:02<00:00, 4549.75samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:21,358 kur.model.executor:464]\u001b[0m Training loss: 1.371\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:21,358 kur.model.executor:471]\u001b[0m Saving best historical training weights: t1_dp0.25/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.368: 100%|████████| 6400/6400 [00:00<00:00, 4923.30samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:21,993 kur.model.executor:197]\u001b[0m Validation loss: 1.368\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:21,994 kur.model.executor:413]\u001b[0m Saving best historical validation weights: t1_dp0.25/cifar.best.valid.w\u001b[0m\n", "\n", "Epoch 8/20, loss=1.330: 100%|██████| 10000/10000 [00:02<00:00, 4738.82samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:24,111 kur.model.executor:464]\u001b[0m Training loss: 1.330\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:24,111 kur.model.executor:471]\u001b[0m Saving best historical training weights: t1_dp0.25/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.328: 100%|███████| 6400/6400 [00:00<00:00, 10351.03samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:24,737 kur.model.executor:197]\u001b[0m Validation loss: 1.328\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:24,738 kur.model.executor:413]\u001b[0m Saving best historical validation weights: t1_dp0.25/cifar.best.valid.w\u001b[0m\n", "\n", "Epoch 9/20, loss=1.303: 100%|██████| 10000/10000 [00:02<00:00, 4794.48samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:26,830 kur.model.executor:464]\u001b[0m Training loss: 1.303\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:26,830 kur.model.executor:471]\u001b[0m Saving best historical training weights: t1_dp0.25/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.339: 100%|███████| 6400/6400 [00:00<00:00, 11131.73samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:27,412 kur.model.executor:197]\u001b[0m Validation loss: 1.339\u001b[0m\n", "\n", "Epoch 10/20, loss=1.294: 100%|█████| 10000/10000 [00:02<00:00, 4693.60samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:29,546 kur.model.executor:464]\u001b[0m Training loss: 1.294\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:29,546 kur.model.executor:471]\u001b[0m Saving best historical training weights: t1_dp0.25/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.310: 100%|███████| 6400/6400 [00:00<00:00, 11321.00samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:30,118 kur.model.executor:197]\u001b[0m Validation loss: 1.310\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:30,119 kur.model.executor:413]\u001b[0m Saving best historical validation weights: t1_dp0.25/cifar.best.valid.w\u001b[0m\n", "\n", "Epoch 11/20, loss=1.253: 100%|█████| 10000/10000 [00:02<00:00, 4719.59samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:32,243 kur.model.executor:464]\u001b[0m Training loss: 1.253\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:32,243 kur.model.executor:471]\u001b[0m Saving best historical training weights: t1_dp0.25/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.293: 100%|███████| 6400/6400 [00:00<00:00, 10417.43samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:32,866 kur.model.executor:197]\u001b[0m Validation loss: 1.293\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:32,867 kur.model.executor:413]\u001b[0m Saving best historical validation weights: t1_dp0.25/cifar.best.valid.w\u001b[0m\n", "\n", "Epoch 12/20, loss=1.233: 100%|█████| 10000/10000 [00:02<00:00, 4647.94samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:35,024 kur.model.executor:464]\u001b[0m Training loss: 1.233\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:35,024 kur.model.executor:471]\u001b[0m Saving best historical training weights: t1_dp0.25/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.268: 100%|████████| 6400/6400 [00:00<00:00, 9125.34samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:35,748 kur.model.executor:197]\u001b[0m Validation loss: 1.268\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:35,748 kur.model.executor:413]\u001b[0m Saving best historical validation weights: t1_dp0.25/cifar.best.valid.w\u001b[0m\n", "\n", "Epoch 13/20, loss=1.213: 100%|█████| 10000/10000 [00:02<00:00, 4052.58samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:38,221 kur.model.executor:464]\u001b[0m Training loss: 1.213\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:38,221 kur.model.executor:471]\u001b[0m Saving best historical training weights: t1_dp0.25/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.263: 100%|███████| 6400/6400 [00:00<00:00, 10334.80samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:38,848 kur.model.executor:197]\u001b[0m Validation loss: 1.263\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:38,848 kur.model.executor:413]\u001b[0m Saving best historical validation weights: t1_dp0.25/cifar.best.valid.w\u001b[0m\n", "\n", "Epoch 14/20, loss=1.192: 100%|█████| 10000/10000 [00:02<00:00, 4059.79samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:41,316 kur.model.executor:464]\u001b[0m Training loss: 1.192\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:41,316 kur.model.executor:471]\u001b[0m Saving best historical training weights: t1_dp0.25/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.267: 100%|███████| 6400/6400 [00:00<00:00, 10624.42samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:41,927 kur.model.executor:197]\u001b[0m Validation loss: 1.267\u001b[0m\n", "\n", "Epoch 15/20, loss=1.179: 100%|█████| 10000/10000 [00:03<00:00, 3174.28samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:45,081 kur.model.executor:464]\u001b[0m Training loss: 1.179\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:45,081 kur.model.executor:471]\u001b[0m Saving best historical training weights: t1_dp0.25/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.250: 100%|███████| 6400/6400 [00:00<00:00, 10746.89samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:45,686 kur.model.executor:197]\u001b[0m Validation loss: 1.250\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:45,686 kur.model.executor:413]\u001b[0m Saving best historical validation weights: t1_dp0.25/cifar.best.valid.w\u001b[0m\n", "\n", "Epoch 16/20, loss=1.155: 100%|█████| 10000/10000 [00:02<00:00, 3838.08samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:48,298 kur.model.executor:464]\u001b[0m Training loss: 1.155\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:48,298 kur.model.executor:471]\u001b[0m Saving best historical training weights: t1_dp0.25/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.249: 100%|███████| 6400/6400 [00:00<00:00, 10454.68samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:48,938 kur.model.executor:197]\u001b[0m Validation loss: 1.249\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:48,939 kur.model.executor:413]\u001b[0m Saving best historical validation weights: t1_dp0.25/cifar.best.valid.w\u001b[0m\n", "\n", "Epoch 17/20, loss=1.141: 100%|█████| 10000/10000 [00:02<00:00, 3516.54samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:51,791 kur.model.executor:464]\u001b[0m Training loss: 1.141\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:51,791 kur.model.executor:471]\u001b[0m Saving best historical training weights: t1_dp0.25/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.235: 100%|███████| 6400/6400 [00:00<00:00, 10439.16samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:52,412 kur.model.executor:197]\u001b[0m Validation loss: 1.235\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:52,412 kur.model.executor:413]\u001b[0m Saving best historical validation weights: t1_dp0.25/cifar.best.valid.w\u001b[0m\n", "\n", "Epoch 18/20, loss=1.123: 100%|█████| 10000/10000 [00:03<00:00, 3276.45samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:55,469 kur.model.executor:464]\u001b[0m Training loss: 1.123\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:55,470 kur.model.executor:471]\u001b[0m Saving best historical training weights: t1_dp0.25/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.238: 100%|████████| 6400/6400 [00:00<00:00, 7017.06samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:56,390 kur.model.executor:197]\u001b[0m Validation loss: 1.238\u001b[0m\n", "\n", "Epoch 19/20, loss=1.121: 100%|█████| 10000/10000 [00:02<00:00, 4330.83samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:58,703 kur.model.executor:464]\u001b[0m Training loss: 1.121\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:58,704 kur.model.executor:471]\u001b[0m Saving best historical training weights: t1_dp0.25/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.224: 100%|███████| 6400/6400 [00:00<00:00, 11403.63samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:35:59,272 kur.model.executor:197]\u001b[0m Validation loss: 1.224\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:35:59,272 kur.model.executor:413]\u001b[0m Saving best historical validation weights: t1_dp0.25/cifar.best.valid.w\u001b[0m\n", "\n", "Epoch 20/20, loss=1.107: 100%|█████| 10000/10000 [00:02<00:00, 4730.36samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:36:01,393 kur.model.executor:464]\u001b[0m Training loss: 1.107\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 07:36:01,394 kur.model.executor:471]\u001b[0m Saving best historical training weights: t1_dp0.25/cifar.best.train.w\u001b[0m\n", "Validating, loss=1.234: 100%|███████| 6400/6400 [00:00<00:00, 11209.60samples/s]\n", "\u001b[1;37m[INFO 2017-03-01 07:36:01,972 kur.model.executor:197]\u001b[0m Validation loss: 1.234\u001b[0m\n", "Completed 20 epochs.\n", "\u001b[1;37m[INFO 2017-03-01 07:36:01,976 kur.model.executor:235]\u001b[0m Saving most recent weights: t1_dp0.25/cifar.last.w\u001b[0m\n" ] } ], "source": [ "!kur -v train dlnd_p2_dropout.yml" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "batch_loss_batch training_loss_batch validation_loss_labels\r\n", "batch_loss_labels training_loss_labels validation_loss_total\r\n", "batch_loss_total training_loss_total\r\n", "summary.yml validation_loss_batch\r\n" ] } ], "source": [ "# %cd t1_dp0.25/\n", "!ls cifar-log" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "ERROR:root:Cell magic `%%pycat` not found (But line magic `%pycat` exists, did you mean that instead?).\n" ] } ], "source": [ "%pycat summary.yml" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 2.08002758, 1.80103576, 1.64649773, 1.53694201, 1.47005808,\n", " 1.4060986 , 1.37083662, 1.32995439, 1.3027122 , 1.29357958,\n", " 1.25282907, 1.23259354, 1.21278262, 1.19201612, 1.17865086,\n", " 1.15514135, 1.14136755, 1.1234889 , 1.1214298 , 1.10675633], dtype=float32)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from kur.loggers import BinaryLogger\n", "training_loss = BinaryLogger.load_column('cifar-log', 'training_loss_total') \n", "validation_loss = BinaryLogger.load_column('cifar-log', 'validation_loss_total') \n", " \n", "training_loss" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "plt.xlabel('Epoch')\n", "plt.ylabel('Loss')\n", "epoch = list(range(1, 1+len(training_loss)))\n", "t_line, = plt.plot(epoch, training_loss, 'co-', label='Training Loss')\n", "v_line, = plt.plot(epoch, validation_loss, 'mo-', label='Validation Loss')\n", "plt.legend(handles=[t_line, v_line])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Learning Tasks on Kur\n", "\n", "**Task1: Split kurfile**\n", "- split kurfile into fluid and default parts\n", "- default part remain constant\n", "- fluid part will be easy to change constantly for experimenting\n", "\n", "**Solution1: Split kurfile**\n", "- layer parameters will keep changing\n", "- file path will keep changing\n", "- data parts for train and validate will change\n", "- batch_size and num_batches will change\n", "- hyperparameters like learning rate will change\n", "\n", "**Create a dlnd_p2_defaults.yml**" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Overwriting dlnd_p2_defaults.yml\n" ] } ], "source": [ "%%writefile dlnd_p2_defaults.yml\n", "\n", "---\n", "settings:\n", "\n", " # Where to get the data\n", " cifar: &cifar\n", " url: \"https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz\"\n", " checksum: \"6d958be074577803d12ecdefd02955f39262c83c16fe9348329d7fe0b5c001ce\"\n", " path: \"~/kur\" \n", " \n", " # Backend to use \n", " backend:\n", " name: keras \n", " \n", "model: # there should be loop design for model structure flexibility\n", " - input: images \n", " - convolution: \n", " kernels: \"{{cnn.kernels}}\"\n", " size: \"{{cnn.size}}\"\n", " strides: \"{{ cnn.strides }}\"\n", " - activation: relu\n", " - pool:\n", " size: \"{{pool.size}}\"\n", " strides: \"{{pool.strides}}\"\n", " type: \"{{pool.type}}\" \n", " - flatten:\n", " - dense: \"{{dense.out1}}\" # 15 \n", " - dense: \"{{dense.out2}}\" # 10\n", " - activation: softmax\n", " name: labels \n", " \n", "\n", " \n", "train:\n", " data:\n", " - cifar:\n", " <<: *cifar\n", " parts: \"{{part.train}}\" # only use dataset part 1 to train\n", " provider:\n", " batch_size: \"{{batch_size.train}}\" # 128\n", " num_batches: \"{{num_batches.train}}\" # total batch is less than 100, so use 1000 is to select all ##### \n", " randomize: True # Importance: when train on small sample we still want weights to have \n", " # generalize power. model overfit by memorizing the same data points#### \n", "\n", " log: \"{{path.log}}\" # t1_dp0.25/cifar-log \n", " epochs: \"{{num_epochs}}\" # 20\n", " weights:\n", " initial: \"{{path.initial_w}}\" # t1_dp0.25/cifar.best.valid.w \n", " best: \"{{path.best_train_w}}\" # t1_dp0.25/cifar.best.train.w\n", " last: \"{{path.last_w}}\" # t1_dp0.25/cifar.last.w\n", "\n", " optimizer:\n", " name: adam\n", " learning_rate: \"{{learning_rate}}\" # 0.001 \n", "\n", "\n", "validate:\n", " data:\n", " - cifar:\n", " <<: *cifar\n", " parts: \"{{part.valid}}\" # only use dataset part 5 as validation set\n", " provider:\n", " batch_size: \"{{batch_size.valid}}\" # same as training, 128\n", " num_batches: \"{{num_batches.valid}}\" # the project 2 only used 5000 data points as validation set, so 50 \n", " weights: \"{{path.best_valid_w}}\" # t1_dp0.25/cifar.best.valid.w\n", "\n", "test: &test\n", " data:\n", " - cifar:\n", " <<: *cifar\n", " parts: test\n", " weights: \"{{path.best_valid_w}}\" # t1_dp0.25/cifar.best.valid.w\n", " provider:\n", " batch_size: \"{{batch_size.test}}\" # same as training, 128\n", " num_batches: \"{{num_batches.test}}\" # the entire part test will be used, set it 1000\n", "\n", "evaluate:\n", " <<: *test\n", " destination: \"{{path.result}}\" # t1_dp0.25/cifar.results.pkl\n", "\n", "loss:\n", " - target: labels \n", " name: categorical_crossentropy \n", "\n", "...\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Create dlnd_p2_fluid.yml**" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Overwriting dlnd_p2_fluid.yml\n" ] } ], "source": [ "%%writefile dlnd_p2_fluid.yml\n", "\n", "---\n", "settings: \n", " cnn: \n", " kernels: 20 # why cannot use [20]? what if there are 2 conv layers [20, 30]\n", " size: [5,5] \n", " strides: [2,2]\n", " pool: \n", " size: [2,2]\n", " strides: [2,2]\n", " type: \"max\" \n", " dense: \n", " out1: 15\n", " out2: 10\n", " part: \n", " train: 1\n", " valid: 5\n", " test: test\n", " batch_size: \n", " train: 128\n", " valid: 128\n", " test: 128\n", " num_batches: \n", " train: # 1000 and nothing here both refer to all the batches? ###########################\n", " valid: 50\n", " test: \n", " path: \n", " log: t1_dp0.25/cifar-log\n", " initial_w: t1_dp0.25/cifar.best.valid.w\n", " best_train_w: t1_dp0.25/cifar.best.train.w\n", " last_w: t1_dp0.25/cifar.last.w\n", " best_valid_w: t1_dp0.25/cifar.best.valid.w\n", " result: t1_dp0.25/cifar.results.pkl\n", " learning_rate: 0.001\n", " num_epochs: 1\n", "\n", "\n", "include: dlnd_p2_defaults.yml # to define default setting\n", "..." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- is grid search or random search for best parameters or hyperparameter is a feature kur want to implement?\n", "- automatically searching for best parameters like gradient descent search for local or gloabl optimal is a nice thing to have right? " ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[1;37m[INFO 2017-03-01 15:24:19,985 kur.kurfile:699]\u001b[0m Parsing source: dlnd_p2_fluid.yml, included by top-level.\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 15:24:19,996 kur.kurfile:699]\u001b[0m Parsing source: dlnd_p2_defaults.yml, included by dlnd_p2_fluid.yml.\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 15:24:20,010 kur.kurfile:82]\u001b[0m Parsing Kurfile...\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:20,010 kur.kurfile:784]\u001b[0m Parsing Kurfile section: settings\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:20,016 kur.kurfile:784]\u001b[0m Parsing Kurfile section: train\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:20,023 kur.kurfile:784]\u001b[0m Parsing Kurfile section: validate\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:20,028 kur.kurfile:784]\u001b[0m Parsing Kurfile section: test\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:20,033 kur.kurfile:784]\u001b[0m Parsing Kurfile section: evaluate\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:20,039 kur.containers.layers.placeholder:63]\u001b[0m Using short-hand name for placeholder: images\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:20,040 kur.containers.layers.placeholder:97]\u001b[0m Placeholder \"images\" has a deferred shape.\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:20,050 kur.kurfile:784]\u001b[0m Parsing Kurfile section: loss\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 15:24:20,052 kur.loggers.binary_logger:107]\u001b[0m Log does not exist. Creating path: t1_dp0.25/cifar-log\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:20,980 kur.utils.package:233]\u001b[0m File exists and passed checksum: /Users/Natsume/kur/cifar-10-python.tar.gz\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:27,155 kur.providers.batch_provider:57]\u001b[0m Batch size set to: 128\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:27,863 kur.utils.package:233]\u001b[0m File exists and passed checksum: /Users/Natsume/kur/cifar-10-python.tar.gz\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:33,548 kur.providers.batch_provider:57]\u001b[0m Batch size set to: 128\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:33,548 kur.providers.batch_provider:102]\u001b[0m Maximum number of batches set to: 50\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:33,548 kur.backend.backend:187]\u001b[0m Using backend: keras\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 15:24:33,549 kur.backend.backend:80]\u001b[0m Creating backend: keras\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 15:24:33,549 kur.backend.backend:83]\u001b[0m Backend variants: none\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 15:24:33,549 kur.backend.keras_backend:122]\u001b[0m No particular backend for Keras has been requested.\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:33,549 kur.backend.keras_backend:124]\u001b[0m Using the system-default Keras backend.\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:33,549 kur.backend.keras_backend:189]\u001b[0m Overriding environmental variables: {'TF_CPP_MIN_LOG_LEVEL': '1', 'KERAS_BACKEND': None, 'THEANO_FLAGS': None}\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 15:24:34,503 kur.backend.keras_backend:195]\u001b[0m Keras is loaded. The backend is: theano\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 15:24:34,503 kur.model.model:260]\u001b[0m Enumerating the model containers.\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 15:24:34,503 kur.model.model:265]\u001b[0m Assembling the model dependency graph.\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,503 kur.model.model:272]\u001b[0m Assembled Node: images\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,503 kur.model.model:274]\u001b[0m Uses: \u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,503 kur.model.model:276]\u001b[0m Used by: ..convolution.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,503 kur.model.model:277]\u001b[0m Aliases: images\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,503 kur.model.model:272]\u001b[0m Assembled Node: ..convolution.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,503 kur.model.model:274]\u001b[0m Uses: images\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,503 kur.model.model:276]\u001b[0m Used by: ..activation.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,503 kur.model.model:277]\u001b[0m Aliases: ..convolution.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,504 kur.model.model:272]\u001b[0m Assembled Node: ..activation.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,504 kur.model.model:274]\u001b[0m Uses: ..convolution.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,504 kur.model.model:276]\u001b[0m Used by: ..pool.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,504 kur.model.model:277]\u001b[0m Aliases: ..activation.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,504 kur.model.model:272]\u001b[0m Assembled Node: ..pool.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,504 kur.model.model:274]\u001b[0m Uses: ..activation.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,504 kur.model.model:276]\u001b[0m Used by: ..flatten.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,504 kur.model.model:277]\u001b[0m Aliases: ..pool.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,504 kur.model.model:272]\u001b[0m Assembled Node: ..flatten.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,504 kur.model.model:274]\u001b[0m Uses: ..pool.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,504 kur.model.model:276]\u001b[0m Used by: ..dense.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,504 kur.model.model:277]\u001b[0m Aliases: ..flatten.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,504 kur.model.model:272]\u001b[0m Assembled Node: ..dense.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,504 kur.model.model:274]\u001b[0m Uses: ..flatten.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,504 kur.model.model:276]\u001b[0m Used by: ..dense.1\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,504 kur.model.model:277]\u001b[0m Aliases: ..dense.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,504 kur.model.model:272]\u001b[0m Assembled Node: ..dense.1\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,504 kur.model.model:274]\u001b[0m Uses: ..dense.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,504 kur.model.model:276]\u001b[0m Used by: labels\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,504 kur.model.model:277]\u001b[0m Aliases: ..dense.1\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,504 kur.model.model:272]\u001b[0m Assembled Node: labels\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,505 kur.model.model:274]\u001b[0m Uses: ..dense.1\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,505 kur.model.model:276]\u001b[0m Used by: \u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,505 kur.model.model:277]\u001b[0m Aliases: labels\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 15:24:34,505 kur.model.model:280]\u001b[0m Connecting the model graph.\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,505 kur.model.model:311]\u001b[0m Building node: images\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,505 kur.model.model:312]\u001b[0m Aliases: images\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,505 kur.model.model:313]\u001b[0m Inputs:\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,505 kur.containers.layers.placeholder:117]\u001b[0m Creating placeholder for \"images\" with data type \"float32\".\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,505 kur.model.model:125]\u001b[0m Trying to infer shape for input \"images\"\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,505 kur.model.model:143]\u001b[0m Inferred shape for input \"images\": (32, 32, 3)\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,505 kur.containers.layers.placeholder:127]\u001b[0m Inferred shape: (32, 32, 3)\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,510 kur.model.model:382]\u001b[0m Value: images\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,510 kur.model.model:311]\u001b[0m Building node: ..convolution.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,510 kur.model.model:312]\u001b[0m Aliases: ..convolution.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,510 kur.model.model:313]\u001b[0m Inputs:\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:34,510 kur.model.model:315]\u001b[0m - images: images\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,577 kur.model.model:382]\u001b[0m Value: Elemwise{add,no_inplace}.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,577 kur.model.model:311]\u001b[0m Building node: ..activation.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,577 kur.model.model:312]\u001b[0m Aliases: ..activation.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,577 kur.model.model:313]\u001b[0m Inputs:\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,577 kur.model.model:315]\u001b[0m - ..convolution.0: Elemwise{add,no_inplace}.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,612 kur.model.model:382]\u001b[0m Value: Elemwise{mul,no_inplace}.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,612 kur.model.model:311]\u001b[0m Building node: ..pool.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,612 kur.model.model:312]\u001b[0m Aliases: ..pool.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,612 kur.model.model:313]\u001b[0m Inputs:\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,612 kur.model.model:315]\u001b[0m - ..activation.0: Elemwise{mul,no_inplace}.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,615 kur.model.model:382]\u001b[0m Value: DimShuffle{0,2,3,1}.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,615 kur.model.model:311]\u001b[0m Building node: ..flatten.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,615 kur.model.model:312]\u001b[0m Aliases: ..flatten.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,615 kur.model.model:313]\u001b[0m Inputs:\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,615 kur.model.model:315]\u001b[0m - ..pool.0: DimShuffle{0,2,3,1}.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,622 kur.model.model:382]\u001b[0m Value: Reshape{2}.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,622 kur.model.model:311]\u001b[0m Building node: ..dense.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,622 kur.model.model:312]\u001b[0m Aliases: ..dense.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,622 kur.model.model:313]\u001b[0m Inputs:\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,622 kur.model.model:315]\u001b[0m - ..flatten.0: Reshape{2}.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,624 kur.model.model:382]\u001b[0m Value: Elemwise{add,no_inplace}.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,624 kur.model.model:311]\u001b[0m Building node: ..dense.1\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,624 kur.model.model:312]\u001b[0m Aliases: ..dense.1\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,624 kur.model.model:313]\u001b[0m Inputs:\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,624 kur.model.model:315]\u001b[0m - ..dense.0: Elemwise{add,no_inplace}.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,625 kur.model.model:382]\u001b[0m Value: Elemwise{add,no_inplace}.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,625 kur.model.model:311]\u001b[0m Building node: labels\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,625 kur.model.model:312]\u001b[0m Aliases: labels\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,625 kur.model.model:313]\u001b[0m Inputs:\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,625 kur.model.model:315]\u001b[0m - ..dense.1: Elemwise{add,no_inplace}.0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,625 kur.model.model:382]\u001b[0m Value: Softmax.0\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 15:24:35,625 kur.model.model:284]\u001b[0m Model inputs: images\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 15:24:35,625 kur.model.model:285]\u001b[0m Model outputs: labels\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 15:24:35,625 kur.kurfile:357]\u001b[0m Ignoring missing initial weights: t1_dp0.25/cifar.best.valid.w. If this is undesireable, set \"must_exist\" to \"yes\" in the approriate \"weights\" section.\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 15:24:35,625 kur.model.executor:315]\u001b[0m No historical training loss available from logs.\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 15:24:35,626 kur.model.executor:323]\u001b[0m No historical validation loss available from logs.\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 15:24:35,626 kur.model.executor:329]\u001b[0m No previous epochs.\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,626 kur.model.executor:353]\u001b[0m Epoch handling mode: additional\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,626 kur.model.executor:101]\u001b[0m Recompiling the model.\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,626 kur.backend.keras_backend:527]\u001b[0m Instantiating a Keras model.\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,825 kur.backend.keras_backend:538]\u001b[0m ____________________________________________________________________________________________________\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,825 kur.backend.keras_backend:538]\u001b[0m Layer (type) Output Shape Param # Connected to \u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,825 kur.backend.keras_backend:538]\u001b[0m ====================================================================================================\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,825 kur.backend.keras_backend:538]\u001b[0m images (InputLayer) (None, 32, 32, 3) 0 \u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,825 kur.backend.keras_backend:538]\u001b[0m ____________________________________________________________________________________________________\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,825 kur.backend.keras_backend:538]\u001b[0m ..convolution.0 (Convolution2D) (None, 16, 16, 20) 1520 images[0][0] \u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,825 kur.backend.keras_backend:538]\u001b[0m ____________________________________________________________________________________________________\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,826 kur.backend.keras_backend:538]\u001b[0m ..activation.0 (Activation) (None, 16, 16, 20) 0 ..convolution.0[0][0] \u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,826 kur.backend.keras_backend:538]\u001b[0m ____________________________________________________________________________________________________\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,826 kur.backend.keras_backend:538]\u001b[0m ..pool.0 (MaxPooling2D) (None, 8, 8, 20) 0 ..activation.0[0][0] \u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,826 kur.backend.keras_backend:538]\u001b[0m ____________________________________________________________________________________________________\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,826 kur.backend.keras_backend:538]\u001b[0m ..flatten.0 (Flatten) (None, 1280) 0 ..pool.0[0][0] \u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,826 kur.backend.keras_backend:538]\u001b[0m ____________________________________________________________________________________________________\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,826 kur.backend.keras_backend:538]\u001b[0m ..dense.0 (Dense) (None, 15) 19215 ..flatten.0[0][0] \u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,826 kur.backend.keras_backend:538]\u001b[0m ____________________________________________________________________________________________________\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,826 kur.backend.keras_backend:538]\u001b[0m ..dense.1 (Dense) (None, 10) 160 ..dense.0[0][0] \u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,826 kur.backend.keras_backend:538]\u001b[0m ____________________________________________________________________________________________________\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,826 kur.backend.keras_backend:538]\u001b[0m labels (Activation) (None, 10) 0 ..dense.1[0][0] \u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,826 kur.backend.keras_backend:538]\u001b[0m ====================================================================================================\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,826 kur.backend.keras_backend:538]\u001b[0m Total params: 20,895\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,826 kur.backend.keras_backend:538]\u001b[0m Trainable params: 20,895\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,826 kur.backend.keras_backend:538]\u001b[0m Non-trainable params: 0\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,826 kur.backend.keras_backend:538]\u001b[0m ____________________________________________________________________________________________________\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,826 kur.backend.keras_backend:538]\u001b[0m \u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,826 kur.backend.keras_backend:576]\u001b[0m Assembling a training function from the model.\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:35,831 kur.backend.keras_backend:509]\u001b[0m Adding additional inputs: labels\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:37,417 kur.backend.keras_backend:599]\u001b[0m Additional inputs for log functions: labels\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:37,417 kur.backend.keras_backend:616]\u001b[0m Expected input shapes: images=(None, 32, 32, 3), labels=(None, None)\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:37,417 kur.backend.keras_backend:634]\u001b[0m Compiled model: {'names': {'output': ['labels', 'labels'], 'input': ['images', 'labels']}, 'func': , 'shapes': {'input': [(None, 32, 32, 3), (None, None)]}}\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:37,417 kur.providers.batch_provider:57]\u001b[0m Batch size set to: 2\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:37,417 kur.providers.batch_provider:102]\u001b[0m Maximum number of batches set to: 1\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 15:24:37,420 kur.backend.keras_backend:666]\u001b[0m Waiting for model to finish compiling...\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:37,420 kur.providers.batch_provider:139]\u001b[0m Preparing next batch of data...\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:37,420 kur.providers.batch_provider:204]\u001b[0m Next batch of data has been prepared.\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:37,469 kur.providers.provider:144]\u001b[0m Data source \"labels\": entries=10000, shape=(10,)\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:37,470 kur.providers.provider:144]\u001b[0m Data source \"images\": entries=10000, shape=(32, 32, 3)\u001b[0m\n", "\n", "Epoch 1/1, loss=N/A: 0%| | 0/10000 [00:00, 'shapes': {'input': [(None, 32, 32, 3), (None, None)]}}\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:40,707 kur.providers.batch_provider:57]\u001b[0m Batch size set to: 2\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:40,708 kur.providers.batch_provider:102]\u001b[0m Maximum number of batches set to: 1\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-01 15:24:40,713 kur.backend.keras_backend:666]\u001b[0m Waiting for model to finish compiling...\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:40,713 kur.providers.batch_provider:139]\u001b[0m Preparing next batch of data...\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-01 15:24:40,713 kur.providers.batch_provider:204]\u001b[0m Next batch of data has been prepared.\u001b[0m\n", "Validating, loss=N/A: 0%| | 0/6400 [00:00}\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-02 20:31:21,493 kur.providers.batch_provider:57]\u001b[0m Batch size set to: 2\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-02 20:31:21,493 kur.providers.batch_provider:102]\u001b[0m Maximum number of batches set to: 1\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-02 20:31:21,497 kur.backend.keras_backend:666]\u001b[0m Waiting for model to finish compiling...\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-02 20:31:21,497 kur.providers.batch_provider:139]\u001b[0m Preparing next batch of data...\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-02 20:31:21,497 kur.providers.batch_provider:204]\u001b[0m Next batch of data has been prepared.\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-02 20:31:21,551 kur.providers.provider:144]\u001b[0m Data source \"images\": entries=10000, shape=(32, 32, 3)\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-02 20:31:21,551 kur.providers.provider:144]\u001b[0m Data source \"labels\": entries=10000, shape=(10,)\u001b[0m\n", "\n", "Epoch 1/1, loss=N/A: 0%| | 0/384 [00:00}\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-02 20:31:22,340 kur.providers.batch_provider:57]\u001b[0m Batch size set to: 2\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-02 20:31:22,341 kur.providers.batch_provider:102]\u001b[0m Maximum number of batches set to: 1\u001b[0m\n", "\u001b[1;37m[INFO 2017-03-02 20:31:22,343 kur.backend.keras_backend:666]\u001b[0m Waiting for model to finish compiling...\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-02 20:31:22,343 kur.providers.batch_provider:139]\u001b[0m Preparing next batch of data...\u001b[0m\n", "\u001b[1;34m[DEBUG 2017-03-02 20:31:22,343 kur.providers.batch_provider:204]\u001b[0m Next batch of data has been prepared.\u001b[0m\n", "Validating, loss=N/A: 0%| | 0/256 [00:00" ] }, "execution_count": 22, "metadata": { "image/png": { "height": 218, "width": 285 } }, "output_type": "execute_result" } ], "source": [ "Image(width = 500, height=200, retina= True, filename='t1_dp0.25/loss1.png')" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "image/png": "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\nogxZ/h9ikaDOA3hLlAAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "execution_count": 24, "metadata": { "image/png": { "height": 218, "width": 285 } }, "output_type": "execute_result" } ], "source": [ "Image(width = 500, height=200, retina= True, filename='t1_dp0.25/loss2.png')" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj8AAAG0CAYAAADdM0axAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzsnXmcHGWd/9/fSWaSycmZBALhvuWMcgnYoALuRrxYVhFE\nEXXFAxddlUVxVxEFD0BEEXUFdQV9AT9dURQ8ChAQNUZREDUg4UyAQO5rMvn+/qiqmZpO90wfz1Nd\nT9f3/Xr1q6e7a6qf6u56nk99T1FVDMMwDMMwykJPpwdgGIZhGIaRJyZ+DMMwDMMoFSZ+DMMwDMMo\nFSZ+DMMwDMMoFSZ+DMMwDMMoFSZ+DMMwDMMoFSZ+DMMwDMMoFSZ+DMMwDMMoFSZ+DMMwDMMoFSZ+\nDMMwDMMoFSZ+DMMwDMMoFeM7PYAiICICbA+s7PRYDMMwDMNoiqnAk9pEs9KOih8ReSfwTmDn5Kn7\ngY+r6i3J6xOBzwGvByYAPwXOVtUlmX3MAb4MHAusAq4FzlPVjU0MZXvg8bYOxjAMwzCMTrED8ESj\nG3fa8vM48GFgYfL4DOAHInKwqt4PXAr8M/AvwHLgi8BNwIsBRGQc8CNgMXAksB3wTWAA+M8mxpFa\nfHbArD+GYRiGEQpTibVEU2u3NGElygUReQ74D+AG4BngVFW9IXltb+AvwBGq+msReQVwM7B9ag0S\nkX8DLga2VdUNDb7nNGJxNV1VV7g+JsMwDMMw3NPq+l2YgGcRGScirwcmA/cAc4Fe4GfpNqr6IPAo\ncETy1BHAn7JuMGLX2DRgvzzGbRiGYRhGWHTa7YWI7E8sdiYSx+y8RlUfEJGDgA2quqzqX5YAs5K/\nZyWPq18ns02t95xAHEOUMrXF4RuGYRiGERhFsPz8FTgIOJw4cPlaEdl3lO0FaMRXN9o25xGbydKb\nBTsbhmEYRknouOUnictJA55/JyIvAs4Bvgv0icgWVdafGQxbdxYDh1btcmZyX20RyvIp4POZx2nA\nVF3mz5/fB+wEjBttO8PoEjYBT82dO9cSAAzD6Do6Ln5q0EPskppPnLX1UuBGABHZE5hD7CYjuT9f\nRGao6tPJcy8HVgAP1HsDVV0PrE8fx2V+6jN//vwdenp6burp6dmW2PJkGN2OqurA/PnzvwlcNHfu\n3E2dHpBhGIYrOl3n5yLgFuAxYuvLqUAFOEFVl4vI14HPJxlgK4ArgHtU9dfJLm4lFjnfEpEPEsf5\nXAhcmQictpk/f36PiPx3f3//nB122GFpT09PsdLjDMMDqiqrV6+etHjx4ncODAxAfF4ZhmF0BZ22\n/MwEvkVcn2c5cB+x8Lktef3fic3vN5Ipcpj+s6oOisg84lihe4DVxEUOL3A4xm16enpeMnPmzBVT\npkxZ63C/hlFoJk+evBbY+sknn3zT/PnzLzcXmGEY3UJHxY+qvnWM19cB70pu9bZZBPyT46Fl2UJE\nxvf19a3y+B6GUUgmT568RkQmEV+gmPgxDKMrKEK2V9HpgbHjggyjGxERJY5zs7nCMIyuodNuL8Mw\nDKMgSBSNA44mtvQ9BdyplcpgZ0dlGO6xqzmjabbZZpsDL7nkkm0b3f6GG26YJiJz16xZ03HzWbNj\nz5sifVZGuZAoei3wCPBL4DvJ/SPJ84bRVZj4yYmNqty8dOnUrzz55FY3L106daPHnmoiMne027nn\nnrt9O/u/77777j/77LOfbXT7efPmrVy0aNEfJ02a5O2g582bt+tox7zLLrtYu5Mqii4EjfxIBM4N\nwOyql2YDN5gAMroNc3vlwLWLF2/xoYcemrNkYKA3fW5mb+/Axbvt9ugZs2ZVt+9om0WLFv1x6L2v\nvXarSy65ZPv777//z+lz06dP36xmy6ZNmxgcHKS3t7f6pc3YfvvtNzYznokTJ+qcOXOa+p9mufba\naxetXr36UYB169b17LXXXvtfddVV/3jFK16xAmjouOqxfv16mTBhgpU4MLqSxNV1efqw+mXiavmX\nSRT9wFxgRrdglh/PXLt48RZvfvDB3bLCB2DJwEDvmx98cLdrFy/ewvV7zpkzZ2N6mz59+mCN5zal\n7pWbbrpp2t57771vX1/fIXfcccfkBQsWTDzuuON232qrrQ6cPHnywQceeODeN99884jeZ1mLwZo1\na0RE5l5xxRVbH3vssbv39/cfvPPOO7/ge9/73rR0+2pXziWXXLLtNttsc+B11103feedd37B5MmT\nDz722GN3f/LJJ4fE+Lp16+SNb3zjnClTphy85ZZbHnjOOedsP2/evF3nzZu3a61j3nrrrQfT49th\nhx0GkueGjnm77bYbEl+rVq3qec1rXrPzpEmTDp49e/b+X/jCF7ZOX1uwYMFEEZn7jW98Y8u5c+fu\n1dfXd8i11167BcDVV1+95a677rpfb2/vIbNnz97/wgsvnJH+X/o53HDDDdOy45owYcIhV1999Zbp\n41tuuWXKnnvuue+ECRMOOeCAA/a+5pprthCRuQsWLJiY/b9f/vKXk/fZZ599+/v7D37hC1+41/33\n3z/Ui+7ss8+efeCBB+79yU9+csaMGTMO6O/vP/ikk07a5fnnnx86nw888MC9zz777BFX8UcfffQe\np5566pz09aVLl47/0Ic+NEdE5k6YMOGQWp+rUQqOBnagfgFXAXZMtjOMrsDET5NsUmXFxo09jdye\nGxjo+eBDD80ZbX8ffOihOc8NDDS0v00eXGUf/ehHZ3/mM5957A9/+MP9Bx544LqVK1f2zJs3b9lP\nf/rTv95zzz0PHHHEEatOOeWU3RctWjSq6eTTn/709qeffvrS3/72tw8ceeSRK84666xdn3vuubq/\nr5UrV4770pe+NOPb3/72w7fccstfH3744Ynve9/7hhbrD33oQ9vdcsstW1599dUP//znP//rU089\n1Xv77bdPq7e/ZrjiiitmHXXUUat+85vfPPCGN7zh2XPPPXenBx98sC+7zcc+9rHZ55577uL77rvv\nzyeeeOLK2267bfI73/nOXV//+tcvnT9//v3vf//7n/rEJz6xQ1bYjMUzzzwz7pRTTtn9oIMOWn3P\nPfc8cN555z11wQUX7FBr2wsuuGD2ZZdd9uidd975l4GBATnrrLN2yr6+cOHC/ltuuWX6D3/4w79/\n73vfWzh//vwp73jHO3ZsdCy33nrr37fccsuN559//uOLFi3648KFC+9r9H+NrmM7x9sZRuExt1eT\nrBoc7Jn+q18d7Gp/Tw8M9G59110N7W/5UUctmDZ+vNM2Ax//+MefeOUrXzlUv+WYY45Zc8wxx6xJ\nH1911VWP//jHP97ixhtvnH7uuefWjfM57bTTnjnzzDOfB7j00kufuO6667a9++67J8+bN69mbZgN\nGzbINddc88huu+02APCWt7zlma9+9atDlpRvfOMbMz784Q8/ceqppy4H+Na3vvXojjvuOL39I4YT\nTjhh2fvf//5nAS6++OKnvvKVr8y89dZbp+69995L023e8573LH7jG9+4PH38tre9baeXvOQlyy+6\n6KLFAAcccMD6++67r//yyy+f9fa3v/35Rt73y1/+8tb9/f2bvvWtbz06YcIEPeSQQ9b94x//6Dv/\n/PM3E8if+tSnHj/++ONXA5x77rmL3/rWt+62ceNGxo+PT9mBgQH57ne/+4/Zs2dvBFi2bNljb3nL\nW3ZdsmTJ4zNnzhzTNTFz5szBnp4epk2btsm3S9IoPE853i4XLDPNaAez/JScF7/4xauzj5cuXTru\nzDPP3HGXXXbZb+rUqQdNmjTp4CeeeGLCo48+2ldvHwAHHnjgUPXrmTNnDvb29urixYvriuvp06cP\npsIHYLvttht47rnnxgM89thj41euXDnuiCOOGBrbhAkTdJ999llTa1/Nsv/++w+Nddy4cWy99dYb\nn3766RFjPfzww0e818KFCyceccQRIwpdvvjFL1718MMPj3BXjcZf//rXifvss8+abPxQ9hizvOhF\nLxoa4+zZswcGBwdZsmTJ0Bh33HHH9anwAahUKqsGBwfl/vvvb3g8hpFwJ3Fj53qmZSVuQXRnbiMa\nA1+ZaRJF4ySKKhJFb0jurZF1l2KWnyaZMm7cpuVHHbWgkW1/+txzU0554IE9xtrue/vu+/cTttpq\nzArSU8aNc95cctq0aSP2+fa3v33H+fPnT/nEJz7x+F577bV+0qRJm0466aTdN2zYMGrqdV9f34iJ\nU0TYtKn+cMePH1+9vW7atEkANHHv9fSM1Oaq6iT9u7e3t+57p0yZMmXE4FU1Lfg34rmUdKzZYx4c\nHGRwcHDE9tXFMusdU1Ygpf+T3Vc90jH29PSMGB/Axo0bLX3e2AytVAYlis4hzvZKi1oOvZzcv68o\nVpVMZlo1aWbayVqp3NTifi8njn9KeVyi6JxW9mcUG7P8NEmPCNPGj9/UyO012267YmZv78Bo+5vZ\n27vhNdtuu6KR/fXkUGX6d7/73ZTTTz/9mdNPP33ZoYceunbWrFkbFy9ePKrVxzVz5szZOHXq1MG7\n7757cvrc+vXr5cEHH+zPcxxZ9thjj3V33333iMDvu+++e8puu+22DuKMtilTpgw++eSTQ7FR8+fP\n7x8cHBz60vbee+91DzzwwKT169cPPXfvvfdOamU8jz322IRsgPjtt98+Zdy4cey7777rAbbaaquB\nxYsXD41l/fr1snDhwhFWod7e3k2NCCqj+0kW95OBZ6peehxoSUz4oIHMNIgz05qy2Fiqf/kw8eOR\n8SJcvNtuj9Z7XYCLd9vtsfEFap2x8847r/v+97+/1b333tt/11139b/uda/bpdoCkwdvectbnv7s\nZz+7/fXXXz99wYIFE88444w5a9eu7am2vuTFf/zHfyy+/fbbp59//vmz/vSnP034/Oc/v8111123\n7Xvf+97F6TaHH374yi9/+csz77nnnv5f/OIXk9/znvfsmP3s3vGOdyxdu3ZtzxlnnDFnwYIFE6+/\n/vrpX/nKV2YC9PT0NHVcvb29+oY3vGHne++9t/9HP/rRlPPOO2+HV7/61UvTeJ9KpbLytttu2/LG\nG2+c9vvf/37iqaeeutO6detGfJGzZ8/ecMcdd0x95JFHehcvXmzm/ZKTCJzXZJ56BbBLUYRPgvPM\nNF+Cyig2Jn48c8asWcuu2Xvvh6otQDN7ezd8Y++9H/JR56cdrrzyyscmTpy4qVKp7H3KKafsftJJ\nJy3bbbfdcu9mf/HFFz91wgknPH/WWWftetxxx+01c+bMgUMPPXRlp+rtvOxlL1v95S9/+eHrrrtu\n60MOOWS/z33uc9t99KMffTwb7PylL33psa233nrjcccdt/dZZ52183nnnfdU1r03c+bMweuvv37h\n/Pnzpxx22GH7XnTRRdt98IMffBKgv7+/qePafffd177sZS9bMW/evD1OPvnkPQ466KDVV1999ZDQ\n/sAHPvDMvHnznjvzzDN3Pf744/c64IAD1hx00EEj4osuvPDCJxYuXNi/55577r/TTjsd2PqnY3QR\nWXfvb4vi6srgIzPNUv1LiFTHBZQREZkGLAemq+qK7Gvz58/fe/z48T/ZY489Vk2aNGldq++xUZWf\nPPfc1CfWr++dPWHCwIlbbbWySBaforNx40Z22mmn/U877bRnLr744sVj/0cYXHrppducd955c5Yv\nX76gUWF39tlnz77rrrum/vGPf3zQ9/jWrFkz8e9///uUjRs3njh37lzv72d0Fomiw4F7koc7aKXy\nRCfHU41EUYU4uHksjtVKJWpwn28gDpoei1O1UrmukX0a+THa+j0aFvCcE+NFmLf11jXTvo3Nuf/+\n+yfcdtttU1760peuWrNmTc9nPvOZmc8++2zvm970pobSyovKZZddtvW+++67bs6cOQO//vWvJ110\n0UXbv+pVr1pqFaSNAlLEzME0M202tS01mrzeTGZakKn+RnuY+DEKiYjoNddcs+1HPvKROSKie+65\n59qbb775r/vtt9/6To+tHZ544om+iy++ePulS5f2zpgxY+C1r33tc5deemmhrq4NI6Fw4sdTZpoP\nQWUUHHN7kY/byzBCxNxe5aLK7fVCrVTmd3I89aiTlv4YsfBpNc09TZ+vJagKk/FmjKRVt5cFPBuG\nYRi1KJzlJyURIjsDdyVPfZc2MtMyqf7VVthCpfob7jDxMzabgM0KxhlGGUiKMCojs4CMctCxulqN\nkLi20pY0z7SbmZYRVN9PnrqX4qX6G44w8TM2y1R144YNG3It9GcYRWD16tWTVHUAC/YsI4W1/NTA\nyVgTAZVaf9YVMNXfcIQFPI/Ns5s2bbp9yZIl/9zb2zvQbDE6wwgRVZXVq1dPWrx4cd/g4ODX586d\na5mK5SMk8TPBwz4Lbfky2sPEzxjMnTt30/z58y9Yu3bt/g899NC21C+EZRjdhKrqwODg4NeBizo9\nGKMjhCR+fIy1pdYzRhiY+GmAuXPnPjF//vyjNm3aNAf7zIxysAl4yiw+pcbEj9G12ELeIHPnzt0A\nLOz0OAzDMHIiJPHjw+1l4qeLMfFTYpJGfUcT98F5CrjTAvwMw0gISfyY5cdoCsv2KilJUa9HiPvk\nfCe5fyR53jAMo+zixwKeuxgTPyUkU810dtVLs4EbTAAZhkFY4seH26tXoqjXw36NAmBur5KRuLou\nTx9Wv0xc0O4yiaIfmAvMMJqjy1zJIYkfX2PtBwY87dvoIGb5KR9HE/fDqZeyL8COyXaGYTRIF7qS\nTfxY3E/XYuKnfGzneDvDKD1d6koOSfz4cHuBxf10LSZ+ykejbQqsnYFhNEADrmSIXcnj8huVE0Ja\n+M3yYzSFiZ/ycSdxp+J6bToUeCzZzjCMselWV3JIlh8TP0ZTmPgpGUnw5Tnpw+qXk/v3BRykaRh5\n062u5JDEzwSJIh+th0z8dCkmfkqIVio3AScDT1e99DhwcvK6YRiN0a2u5JDEjwA+0tJN/HQpJn5K\nSiJwXpF56rXALiZ8DKNputWVHJL4ASt0aDSBiZ9ysynz9+/N1WUYzdPFruTQxI/19zIaxsSPkRLa\nRGcYhSHjSl5c9VLIruTQ5gTr72U0jIkfI8XMu4bRBonAOSzz1BmE7Uo28WPip2ux9hZGSmgTXeno\nstYJ3UrWlfynwL+f0OYEH24vuyjsUszyY6TYSV5gurB1QhkITTxUE9r4zfJjNIyJHyMltImuNHRp\n64Qy4KvlQl6ENieY+DEaxsSPkWKWnwLSxa0TykBo4qGaiZ4KB/rCsr2MhjHxY6SEPlF3K93aOqEM\nhH5O9eCncKAvzPJjNIyJHyPFLD/FpFtbJ5SB0MUPhHUMVuTQaBgTP0ZKSJNcmejW1glloBvOqZCO\nwdxeRsOY+DFS7AqnmHRr64QyEJJwqEdIx2BuL6NhTPwYKSFNcqWhi1snlIFuOKdCOgaz/BgNY+LH\nSDHLT0HJtE54ruqlkFsnlIHQU90hLPFjMT9Gw3RU/IjIeSLyWxFZKSJPi8j3RWSvqm0iEdGq21VV\n28wRkR+JyJpkP58REate3RwhTXKlIxE4b08eDgLHEnbrhDLQDedUSMdgbq8mkSgaJ1FUkSh6Q3Jf\nmpIZnbb8vAS4EjgceDlxWuWtIjK5aruvEmezpLcPpi+IyDjgR0AfcCRxP503Ax/3PPZuI6RJrqyk\nrRPGAb8yV1fh6YZzKqRjMLdXE5S9anxHxY+qnqiq16jq/ar6R2LRMgeYW7XpGlVdnLmtyLx2PLAv\ncJqq/kFVbwE+CrxLRPryOI4uwcy7YWHfV/EJSTjUI6RjMMtPg1jV+M5bfqqZntxXxza8UUSeFZE/\ni8inRCT7gzwC+JOqLsk891NgGrBfrTcRkQkiMi29AVNdHUDAhDTJGSZ+QqAbzqmQjsHETwNY1fiY\nwogfEekBLgPuUtU/Z176DnAacYzDp4DTgW9nXp8FZIUPmcez6rzdecDyzO3xtgbfHdhiGhZdNyl3\nISEJh3qEdAw+3F59XSgCrGo8UKSg4CuBFwBHZZ9U1aszD/8kIk8BPxeR3VT1oTH2Wa82yqeAz2ce\nT6XDAig5wY4mjml6Crgz55iOkCY5o2RitQDnRyt0wzkV0u/M1+fdD6zytO9OYFXjKYjlR0S+CMwD\njlXVsUTIvcn97sn9YmBm1Tbp42qLEACqul5VV6Q3YGULw3ZGQQLPQprkjBJ9XwU5P1rBUt3zxddY\nu83KalXj6XyquyTC5zXAcar6jwb+7aDkPv1i7gH2F5EZmW1eDqwAHnA2WE8UKPAspEnOKIn4KdD5\n0QrdcE6FdAy+xGa3iR+rGk/nLT9XEsfznAqsFJFZya0fQER2E5GPishcEdlZRE4Cvgncoar3Jfu4\nlVjkfEtEDhSRE4ALgStVdX3+h9Q4BQs8K8Vi2kV0/fdVsPOjFUISDvUI6Rh8ur26hqqq8Zu9nNx3\nfdX4ToufdxJneEXElpz09q/J6xuAlxELnAeBzwE3Aq9Md6Cqg8Qus0FiK9C3iQXSBXkcQJsUKfAs\npEnO6LIJuQ5FOj9aoRvOqZCOwdxeDZKpGr+i6qXSVI3vaMCzqtab1NLXHyMuhDjWfhYB/+RqXDlS\npMCzMiym3UQZvq8inR+tEJJwqEdIx2BurybQSuUmiaL9iAsCLwFeTxiJBE4oUrZXGSlS4FlIk5xR\nDvFTpPOjFbrhnArpGMzy0zypm0u1Uok6OZC86bTbq+wUKfCsDItpN1GG76tI50crhCQc6hHSMZj4\naZ3qllJdj4mfDlIVeFY9wecdeBbSJGeUQPwU7PxoBUt1zxdfn3fXn2vAZImiUcNQug0TPx0mE3j2\nRNVLeQeejZcoMjdoOJRhQs6eH9Utb0IIzAxJONQjpGMwy0/r9NAdYr1hTPwUgGQC3xn4YfLU34Bd\nOjCxhzTRlZ1SiB8YOj/emTwcJG5104nzo1lCPJ+qr/5DOgYTP+1RKteXiZ+CkJju08DN8R0y5Yc0\n0ZWd0oifhE3J/TjgVwV2dWWZ2AWuhJDmBMv2ag8TP0bHmT72Jl4o24IaMmX+rkI59h7Cz6gN5bMG\ns/y0i4kfo+NM79AVY0hXeWUnpEXJNSEtRqGfUyGNf7ynat9lOddM/BgdZzydOeHKcpJ3A2X+rkz8\n5EfRx199kejD9RXS760dTPwYhWCLDrxn0Sc6Y5gyi5+Qjj30DJrQ5gQX400F1brk3sRPF2Lip7h0\nIu4npEWl7JT5uwppMQpNPFQT2vhdjndtch/S760dTPwYhaAT4ie0ia7MlFn8hHTsoZ9ToY3fpaVt\nTXIf0u+tHUz8GIWgE26vspzk3UCZv6uQrsRDEw/VhDZ+l+NNxU9Iv7d2KJX4aToNU0QmAIcBOxH/\nKJ4BFqjqPxyPreyY5ccYDRM/YRDqOTUA9BLe+E38tI6Jn1qIyIuJ++y8kvikWE7sE90KmCAiDwNX\nA1ep6koPYy0bFvNjjEaZv6uQjj008ZCylnienyBRJFqp1GsuWzRcur0s5qeLacjtJSI/AL4LPAIc\nD0xV1a1VdQdVnQTsAVwIvBT4m4i83NN4y4RlexmjUZYJuRYhHXuo59S6zN8hZayZ5ad1SiV+GrX8\n3AKcrKoDtV5U1YeBh4FrRWQfYHtH4ysz5vYyRiMk64drQjr2kIRDlqz4mVj1uMj4ED8h/d7awcRP\nNap6VaM7VNW/AH9peURGirm9jNEo83dV5CvxkBuDZtlI3E+th7COwUe2V5F/by4plfixbK/iYm4v\nYzT6PJXyD4GQFqNQzyll2NoTktA2t1frlEr8NGT5EZHniU+GMVHVrdoakZFilh9jLCYCqzs9iA4Q\n0u80VPEDsfiZhINjSIT60cB2wFPAnVqpDLa73xr4KHI4UaKoRyuVTQ73XURM/NTgfZm/twY+AvwU\nuCd57gjgBOAT7oZWeizmxxiLfsopfkK6Eg/5nEotP20dg0TRa4HLgR0yTz8uUXSOVio3tbPvGvhw\ne0H8Gaypt2GXMKXTA8iTRmN+rk3/FpEbgQtU9YuZTb4gIu8GXgZc6naIpcUsP8ZYlPX7Cum4Sy1+\nEuFzQ42XZgM3SBSd7FgA+bD8QCy4u138lMry00rMzwnAT2o8/xNi8WO4IY+Yn24JziwrIYkAl5jl\nJx/aEj+Jq+vy9GH1y8n9ZY5j11x+3psoV3NTEz9jsBR4VY3nX5W8ZrjBLD/GWJT1+wrpuENNdYf2\nLT9HE7u6qoVPigA7Jtu1Sxo/5PrzLlOhw1KJn6bbWwAfA74mIhXgXuJA6MOBE4G3uRta6ZnWgSC7\nkK9Sy0hIIsAlIS1EIZ9T7Yqf7RxvNxrriBdv15/3GmBLwvrNtUqpxE/Tlh9VvQZ4MbACeC1wcvL3\nUclrhhsEmJrze5Z1MQ2Vsn5fIS1EIYufoWynFv//KcfbjYaT4OwalKnQYanETyuWH1T1XuCNjsdi\nbM504h5qeRHyRF0Gqt0HZZiQaxHScYd8TrUrKO4EHicObq7l+tLk9Ttb3H+W9cm9a7dXmWr9jJco\n6tNKZUOnB5IHLYkfEekBdgdmUGU9UtU7HIzLiMk77iekRcUo7/cV0kJUWvGjlcqgRNE5xNleykgB\nlNaNe5+jej++LD9livmB2PpTCvHTtNtLRA4HFhK3sLgDiDK3X7obmkH+VZ5DnqjLSFnFT0jHHfI5\n1bagSNLYTwaerXrpccBlmns6VrP8tEdpXF+tZHtdBfwOeAGwFXEwWHqz6s5uMcuPMRpl/b5CWoi6\nQfy09TtLBE42TOJ4YBfH9X1St5fF/LRHacRPK26vPYg7vC90PRhjM/IWPyFP1GWkLBNyNSZ+8sGl\nKymbtTrfQ2sL3wHPIf3m2qE04qcVy8+9xPE+hn/M7WWMRlnFT79EUb3aMUWjzHV+6uFDSJjbyw2l\nET+tWH6uAD4nIrOAPwED2RdV9T4XAzMAc3sZo1PI7yuHJpY9QB/Dro4iE/IFRUjix5fbq4wBz6Wg\nFfFzY3L/P5nn0kh+BVyWKi87eYmfAaAX6CtJ9+JuoXDiJ8cmlv2Y+PFNSOLH3F6tUW1BNfEzCrs4\nH4VRTSpG8hI/a5P3g3J0L+4WCiV+cm5iOQlY5mhfPjHxszkhur0Kda55pDTip5UKz4tGu/kYZAlJ\nCxvmFfN/AygMAAAgAElEQVSzLvN3yJN12SjMhNyBJpahXImHfD75Ej8+Fljf2V6h/N7axcTPaIjI\nbiJyhYj8TERuE5EviMhurgdXYtIr2rwsPxuTGxRoQTXGpEjfVZ5NLKFYxz4aJn42JyS3l8X8dCmt\nFDk8AXgAOBS4D/gzcBhwv4i83O3wSktq+ckz4NnX5GH4o0gTsu8mltWiqkjHPhohn0/t9vaqR4hu\nr1B+b+1SGvHTSszPp4FLVfXD2SdF5NPAxcBtLgZWcvJ2e0E80U0hnCtqo1jfVZ5NLKFYxz4afRJF\nopWKjr1p4QjJ8mNFDt1QGvHTittrH+DrNZ7/H2Df9oZjJJjlx2iEIk3IaRPLeou8Ao/hpoklhHUl\nHmqtn5Bifizbyw0mfkbhGeCgGs8fBDzd3nBKT2razzvmB4ZN3EVaUI3RKcx3ldTxOSd9WP1ycu+q\niSUU6NgbINQLipAsP0NuL8cFME38dCmtiJ+vAleLyIdE5GgROUpEPgx8Bbja7fBKS2r5mSxR1Dvq\nlu4wy094FEoAZJpYPlH1kusmllD8xWiA4ZYOoZ5TTnp71cCn2wviApiusIDnLqWVmJ9PACuB9wOf\nSp57Evgv4AtuhlV6lmf+ngYszeE9fU10hj8K911ppXKTRNEPgMXANsRzwrkeejkVfTFS4gW5n/DF\nT0iWH4jH66oApnfLTw4V0RthPbF7dkrO79sxWqnzo6p6qaruQOyWma6qO6jq5aoaYlBfERlg+KTL\ns9AhhDtRl4lCC9Vk4k4Xnyc9TeSFPPYqQremhiR+NmT+dhlj5TXgOSkM+gjwS+A7yf0jyfN5sjq5\nL43lp5VU911EZA8AVV2pqiuT5/cQkZ3dDq/UdKrQYagTdZkIKT7L1xVz0S0/EP45FVLAc2ppA7fj\n9Wb5yVREn131UloRPU8BZOKnAa4Bjqzx/GHJa4Yb8s74CmlBLTshfVe+JtMQjt1X7Zm8CMnyA37G\nOxTz4zKQugMV0cfCxE8DHAzcVeP5X1M7C8xojbwzvkK/Si0TQ+LHcWaLD8zyE+45lY5/vERRK/Gh\n9fAtfny4vcDt95h3RfSxMPHTAApMrfH8dJrs6C4i54nIb0VkpYg8LSLfF5G9qraZKCJXishSEVkl\nIjeKyMyqbeaIyI9EZE2yn8+IiMuTtROY5ceox9rM321N9BJF4ySKKhJFb0juXV9pmvgJX/yAW0Hh\n67vz4fbKnmsu50bfFdGbxcRPA9wBnCciQ5Nk8vd5wK+a3NdLgCuBw4GXE3cWv1VEsl/ApcArgX9J\ntt8eGEqZTd77R8TpjUcCZwBvBj7e5FiKhsX8GPXIXo22PCHnFGxpbq9wzylfDY99/Sacf95aqWxk\nOJjapWjLuyL6WJj4aYAPAccBfxWRb4jIN4C/AscA/9HMjlT1RFW9RlXvV9U/EouWOcBcABGZDrwV\nOFdVf6Gq84G3AEeKyOHJbo4nrix9mqr+QVVvAT4KvEtEXNZ7yJu83V5m+QmHASDNoGrp+8ox2LLM\nlh9fLRdyIcnSG0geujyGkNxe4CfoOe+K6GORip8+xy7OwtJKqvsDwAHA94AZxC6wbwJ7q+qf2xxP\nutA/l9zPJbYG/Szz/g8CjwJHJE8dAfxJVZdk9vNT4vo4+9V6ExGZICLT0hu13XidJm+3V+hXqWWj\nZbGac7Clr4UuBJHeDeeUj2MIye0FHgoddqAi+liszvxdCutPSwpPVZ8E/tPlQESkB7gMuCsjomYB\nG1R1WdXmS5LX0m2W1HidzDbVnAd8rL0Reydvt5dZfsKinUa0abBlPbLBllEL+8/iayJteyHKobhc\nt4ifqYQhfoLq75UUBD2Z+EIkez4+Tix8XFZEH4v1xBXJe4jP2eWjbx4+rbi9SNpafFtE7haR2clz\np4vIUW2M5UrgBcDrGxkC9c2FWept8ymSAo3JbbSFoFOY5ccYjXbEap7BloV0e+UU7xR6qjv4Kajp\n2/Ljy+3l/MIwETg7E/fMhDiedZechQ/Ea2Wp4n5aKXL4OmK30lrgEIZ/aNNp0RokIl8E5gHHqurj\nmZcWA30iUm39mMGwdWcxMLPq9fRxtUUIAFVdr6or0htxu46iYTE/xmi0833lGWxZOLdXjvFO3XBB\n4eMYJnsq0RCU5SelqiL62g60tkgx8TMGHwH+TVXfxnAwHMS1fw5pZkcS80XgNcBxqvqPqk3mJ+/x\n0sz/7EkcFH1P8tQ9wP4iMiPzfy8HVgAPNDOegmHZXsZotCN+8gy2dD2Rps1CW1qIco536oZzyscx\n9OC2+WiKr887z+amW+bwHvUw8TMGexGnu1eznOYX6iuB04BTgZUiMiu59QOo6nLg68DnReRYEZlL\nXEX6HlX9dbKPW4lFzrdE5EAROQG4ELhSVV01t+sEnXJ7meUnDFoWPzkHW7peMNq1UOZZXM7ET318\ndnYPIdurHiZ+cqIV8bMY2L3G80cBDze5r3cSL+4RsYk9vf1rZpt/B24GbiQWXYuBIbO0qg4Su8wG\nia1A3ybOPrugybEUjU65vUKeqMtEWyIgiSk4GXii6qXHgZMdxhw4bQtA+wtRnvFOQae6J4Qkfny7\nvfK4MNwqh/eoR6nETyvZXl8FLheRM4mvErcXkSOAz9JkYUFVHXNSVNV1wLuSW71tFgH/1Mx7B4C5\nvYzRaDtGK8k2+QHwA+Cfgd8DhzqOOeghvhJfN9aGDdKu+Mkz3qkbzikTP2b56Upasfx8mjg74ufE\nqbZ3AF8DvqKqX3Q4trKTip8+iaI8Jk8LeA4LJ99XInTShX6Dp2BLl4vGkIVSoqiV+SvPeCcTP/Xx\nscB2hdurg/36SiV+mrb8qKoCnxSRzxC7v6YAD6jqKteDKzkriCdiIXZ9ubpyroezSS6H+imGnyBM\nnzV5nhtzq8aobjS5pt6GtdBKZVCi6BzibK/0/Bp6Obl3Fe/UTanuZbb85Bnw3Et8HnZiPS2V+Gmp\nzg+Aqm5Iqj0vAeYkRQoNR2ilsonhFPw84n6cWBJyqp9i+LHU+Zr0XO637UaTOcY7dYPlx1UsYLU1\nIyTxk6flBzrn+jLxUwsROVNEzq167mriIOc/AX8WkR0dj6/s5Bn30/bEkWP9FC/k0OHcJSGJH5eL\nxiAOGk1misulQmcB7ovLhSh+qkVKSJaf4Ioc1sHETw40Y615O/B8+kBETiRuMvom4EXE2UlFbxkR\nGnlmfLW1mOZcP8U5AVqsyip+wNFilLi2UuuPq3in7G8/RPFTTUgxP91i+elUxpeJnzrsAfwu8/hV\nwA9U9X9V9ffE1Z1fWvM/jVbJs9bP0MTRYsBdnvVTnBKoxcqL+PEUbOl6Mg0l3slS3esTktsrz5gf\nMMtPLjQjfvqJg3BTjmRkscOHqd9I1GiNPN1e2ViKVszGedZPcUbAFisf4kfws1D7svwUXfx0k+XH\ntcvH1XeXPWe7IdsLOid+0iBrEz9VLALmAojINsB+xC0tUmZRgk6wOZOn2yubTdbKZJ1n/RSXhGqx\n8lWawMfEV7Qqz7Uw8VObMlp+0rkgzf4rW8zPlA69f640k+p+LXCliOwHHAc8qKrzM68fCfzZ5eCM\nXN1eA8R9k3qIT/Jlo2++GWn9lNnUFhKavN52/RTHqfRBWqzwK36e9bBPl4Rm+bFU980psvipxmJ+\nupBmLD+XEFd3fi3xj+xfql5/MXCdo3EZMbm5vbRSUdqYPPLqF+UhMDlUi1WZLT8+rsRdt+EAs/yM\nRkhFDi3mpwtpRvzsrKoXqOrBqvoKVf1L9kVV/RdV/brj8ZWdoJqb+q6f4ikwOc+Kvy4ps/jxsRj5\niHcKWfyk54NZfsoT82Pipw73icifReQiETnU24iMLME1N83UT1maPHUVDuqn+ApMrrJYbfZycu+q\n4q9Lii5+st9RCG4vcD/OkMVPSojiJ/SAZ3N75UAz4mcb4DxgBvB/IvKUiHxVRF4pIiGf3EWmU5af\ntr7PRCikheiediQcvAUmZyxWK6pecl3xt12yx1508ZMlhIBncH/slupeH59FDkPu6g5m+cmFhsWP\nqq5T1R+q6lnEwZ+vI766vxh4VkS+n1SB3tbTWMtI3p3dfSwqUx3tx2tgciJwPps8fAY4FvcVf13i\na0IOQfyEZvkZJ1HUdB/FghBSzI93t1dOTUdN/ORASydk0tz07uT2YRHZAzgJeDPwZRE5V1WvdDbK\n8pK328vH5OFK/OQRmJy6uUQrlaiN/eRBKNYPH/sM5diry0eE2PzZVW+vakJye6WfQQ/Qx7CFyRed\ndntNlCga58rVX9RG106akarq31X1c6p6DLA9cKuL/Rq5u718LCrTHO0nz8DkEK58QhEAEI7lx/X+\nsotkqOnu5vYa/r1BPnE/W0gUdaJR+OrM306Os8htg5r+gEXkDBH558zjS0RkmYjcLSI7qepSVf27\n22GWliHxk5O5tbCWn7xS6RP6C1jRuZqQxE8pA56T3+JA8jDUuJ+QxI8XN6NWKgPAxuRhHnE/Pbiz\nmI9FdRxhOpe2fS4UvW1QK+ryP0kmXhE5Ang38EHiwmiXuhuawbDbaxx+FqVqQVXkmB/vqfRVFN36\nk35X4ySKeh3ut6iWn1CDvUPP+ApF/GTrlIFlfDVNUustPc62zoUQ2ga1In52BBYmf78auEFVrybO\nBCtaC4DQWQOkloxcm5s63KfTK5hMKn3KxfgJTA5F/EDx2zyE4vYy8bM5vnp7+SxyCOE1N60WCKEH\nPRe+bVAr4mcVsHXy9/HAz5K/15FfKmC3ozCkxDvR3LSIMT9ZNmX+ftxT8FzR+9usZ9hE3e735bMm\nj499hmT5CT3dfUi8OXK9e7OgJPNA6p6yQoet4Ur8FL5tUCvi5zbgayLyNWBP4EfJ8/sRBzYZbulE\nc9PCWn5y3H+hxU9VOxKz/LghpKrDeZGOXwAX7lXfaeOhFzpMxUenM77anQcK3zaolaCwdwEXEpus\nXqeqaSXfuVhvLx/kmfFV6JifOvgSKW3vN4cUz7XE31VZxU8Ilp9uET8QH8OGehs2SPrdjSMWU+3u\nr5r1xOduqIUOnyf+HYZu+cmt0XWrNG35UdVlqvpuVX2Vqv4k8/zHVPWTbodnkK/by8dEPUGiqM/h\n/qrxJa7aDfjLI8XTh1gNye0VUsxPqKnuruNonKdTVxF6f6/nkvugxU/O2bkt0VItARE5WkS+naS3\nz06eO11EjnI7vNJRSyHnafnxFdzo0/pTOMtPjimeoYiffsd1S1wuRL7jnYK2/CTuVZdxS9m08ZDE\nZl6d3Z9P7kN3e+Wdnds0rdT5eR3wU+IfwyEM/8imE6fBG27JM+bHVzXX0oifnFM8fUzIvrLcXP6m\nQgp4Dlr8JLg+Bp9WFN+FDvMSP0FbflIy2bnpfk+jIG2DWrka+wjwb6r6NoYLeAHcRSyGDLd0wvIT\nkvgpmtsrzxTPUCw/rvdrqe754vqiyKeQ8O32yiPmB7pE/MBmWXi/KUJrC2hN/OwF3FHj+eXk14Cz\nTOQR85P6YH1dUZfG8kO+KZ4+vi9fV7Yu9+trIQrJEpEnrgVFusCG1N8r75if4N1eRacV8bMY2L3G\n80cBD7c3HKMGoae6g59aPylFS3XPM8UzJMuPy0UjPe4+x93SzfJTG19ur5DqKuUd89M1lp+i0or4\n+SpwuYgcRmwx2F5E3gh8FviSy8EZQPip7hCO5cdF8GueDVhDEj8+3F5Q/GM38bM5Ibu9ul38rEru\nTfzU4NPEqbs/J1547gC+BnxFVb/ocGxGTOip7hBmzE9LoirnFE8f4qfXca+wFJeLRrb2TCjiJ9RU\nd3CfBZqH+And7dVpy0+hi7y6oJU6P5rU89kKeAFwOLCtqn7U9eAMoDPZXi4muawVxafbq2gxP9kU\nz8VVL7lO8Qwh6ykVfM4WjST9OpRMN7P8bE7I2V55BTxP71DTT3N7jYWqblDVB1T1N6q6auz/MFrE\nsr1GZ5KnSaLdIl83AUdmnjoH9ymeIYgfX/EdoQR7m/jZnDwCnkN3e0FnEohKI36aDhYUkcnAh4GX\nAjOoElCququboRkJoTc2Bf8tLiYDKxzv04VFKduAdaGHFM9QxM9k3C0aqSVpDbH12Sw//gkp4Dn0\nIocDxHE3U4hdX0tH39w5Jn5G4WvAS4BvEWes1AvsNNyQur2mShSN81wjIUTLD8QTRRHFj8/9QRji\nZzWwLWE0N53o8BxL50VLdd+ckN1eeXR1f554vsgz3T39vZr4GYVXAP+sqne5HoxRk+WZv6cyLIZ8\n4GsxdR3zU11A0Ie4MvHjhpDcXhAvbisd7s8sP5sTcraX75gfiMXPjnQm6Lk04qeVmJ/nGY5INzyj\nlcp6hq9mfLu+hiYOiaJ6FYpbIcTO7q5Pfh9BxCF0N/e10IVS5dnEz+ZYttfodDLjy8TPKHwU+LiI\n5PEjMGLyCnpOr6Z7AJfpzr7Fj1l+3OLa7QXuF40Qjh26K9U9hIDn0IscQmebm5ZG/DTk9hKRBYyM\n7dkdWCIijzCyvxeqav293LOMOLjct/jJ1k+ZCGxwtN8QLT8mftzgy+3l60rc9f66wfLjq7dXSAHm\necf8QGctP5Mkinq0Utk06tYB02jMz/e9jsIYi7wsP+szf/fjLojYZ50f8COuJkgUjddKZePYmzZE\n2cWPub3CJSS3VzqHmdurNVZn/u6vetxVNCR+VPW/fQ/EGJVc0t21UlGJonXEk5zLyTpEyw/EC+Hy\nMbdqjLKKH3N7xZRd/GRjCC3geXQ66fbKto6ZjDvx4zKG1AlNx/yIyIuSvl7Vzx8mIi90MyyjitCb\nm4YY8wNuBUtZxU9obi/X47RU980JucjheE/tX7J0zO2VuLnSecWHW7IwpXFaCXi+kjgNr5rZyWuG\ne0JvbjrZc6l2n5YfV5RV/JjlJ6YbxI/r3l4+u7r7KnII5env1dVBz62In32B39d4fkHymuGebmhu\n6rNRXuH6e3neV4prAZDGN5U55scCnjcnpJgfX5/3BoYrtufV4qITbi8w8VOX9cDMGs9vx/Dkabgl\n1OamWUrT2T1D1s8dgvjxMen5dnuFYvmxVPdhghM/STPdvJubmuXHI62In1uBT4nI0EIsIlsAFwG3\nuRqYMQJrbjo6Zvlxg8tJLxV+vt1eRY/5McvP5oSY7QX5ZXyZ2ysHWhE/HyCO+VkkIr8UkV8C/wBm\nAe93OThjCGtu2pl9hxLz09dmTFW1UCmz28ub+HFcNT1PLOA5Jq9Ch6nlZ7JEUZ/n96qFiZ9aqOoT\nwAHAB4EHgPnAOcD+qvqY2+EZCaFne4HfWj9lt/yAG7EaktsrtIBngE4sZC7wZfkZ72Fx9yl+8rL8\nZMtrWIsLT7SS6n4MsF5Vr1bVd6nqB1T1m4AmrzW1LxH5oYg8KSIqIq+uev2a5Pns7SdV22wlIv8r\nIitEZJmIfF1EfAbXdoKQs73SEylEy4/L39FkD1f+IYgfX1f5rheiNAXX9TizhUNDdX35Ej/g7/MO\nze01NDdopTLI8Jxv4scTrbi9fkntKPTpyWvNMBn4I/DuUbb5CXEwdXp7Q9Xr/wvsB7wcmAccA1zd\n5DiKTsjZXmmV6BBjflye/ONwPCEnNTnSFiRFFT/pgjHBcbkDVyI9XXR8WaiyLWJM/MQMAIPJ3yFl\n1+VZ6LAIVZ5N/FQh1C5UtDVNVoNU1VtU9SOqetMom61X1cWZW+oPRUT2AU4EzlLVe1X1V8B7gNeL\nyPbNjKXghJzttTK5D8HyU22ZKVt/L5/iB9wudK6vwl0d+4jfUJIlFHrQs9PeXsln4ssimH7WfRJF\nraxvo5GH2ytdW625qWca7e2FiKQCRYFrRCRrzh1HHAd0t8OxpVRE5GniH8MvgI+o6tLktSOAZar6\nu8z2PyOux3AY8P9q7VBEJjDyKtx3BeJ2SS0//RJFvVqpDIy6dXu4nqhT8VP2mJ90f8863udaYlFc\nVPFTXRxuZb0Nm6So4qcWacuYUNPdfYi3NcRzgq+K2hDHWK2rt2ELdKKzeycsP6uS+64WP80o4+XJ\nTYgnsOWZ22JiV9Npjsf3E+BNwEuBDwEvAW4RkdR8Pgt4OvsPqrqR2GQ4a5T9nsfI8T/udtjOyTYY\nzauze0iWnxDcXlBOy0+2PorLRaPIaf7VhG75GapV5DBuzZcVJSt2Qu7sXgS3V7fFzo6gYcuPqr4F\nQEQeAT6rqt67varq9ZmHfxKR+4CHgArw81H+tZ5rLuVTwOczj6dSYAGklcpGiaLVxBPzFri3HmRx\nauImn5ifXomiCVqprB9706Yoq9trokTRuCTw0gVriBeMIqfQm/ipT1ZQTKA9a0o6L/sSEgPJewjW\n3LRVSuH2aiXV/b/zED513vth4oV/9+SpxcCM7DYiMp5YLS8ZZT/rVXVFesOdKd4necX9+HJ7hdTZ\nPa1UXlbxA24XJR/xHUPH7cgaEVzV4RzJih3X/b2cft5JPJGvjK88LT+ddHuVQvw0bPnJIiInA6cA\nc6iqXaGqhzgYV7333YE4sPqp5Kl7gC1EZK6qzk+eO45Y1N3raxwdYjlx81jf4sd1Fk0eMT8Qi6ul\nY27VGKuILWxlc3utY/iqeTLFjc/J7nMc0MvIrKpW8Dnhh97ZfSNxHGUP4RQ6nIj7zzvPmJ8iuL26\nWvy0UufnvcA3iC0rBwO/IV50dgVuaXJfU0TkIBE5KHlql+TxnOS1z4jI4SKys4i8FPgBsBD4KYCq\n/oU4LuirInKoiLwY+CJwvao+2eyxFZy80t1Ds/ykzQZdCos04K9olp9aFg6X4iebhVO0QofVx+46\ni8zcXnXwlLHms7O7r35qnbD8mNvLE62kAp4NvF1V30N8tXWJqr4c+ALNWyVeSNwNfkHy+PPJ3x8n\nrgNxAPB/wN+ArxNXkz5aVbOxHW8EHiSOAfox8Cvg7c0fVuHJy+3lOpDUd8yPD3FVVPFTixACf31c\n5Q8wLHyLGuydErT4SQixv1fIAc95ub1qXVCVQvy04vaaw3BK+1qGF51vAb9m9IKFI1DViNoffsoJ\nDezjOeDURt8zYPKq8hyC5Sf7m1lF/Jm4FBa+sh18iB/XQZhB9PfSSkUlitYQf6YuLT/jJYr6tFJp\n142WxTq7b06IMVZW5LCLaMXys5g47gbgUeDw5O9dGF3IGO2Rl9vLV5FDXzE/Pi0/ZYv5geK6vWoR\nQrA3mOWnFnmIH9disxN1fszt5YlWxM8vgFcmf38DuFREbgO+S52igoYTLNurNj5cVL7cXj4mkxDE\nTwj9vbItF7x1dne83zwJqbO7ub3aoxTipxW319tJRJOqXikiS4EjiWNzvuJwbMZI8nJ7eYv5kSiS\nJHjSJam48uH26nNcUbuMlh9fRQ5xvN802NtH1WEnwiHpjXY0cY/Dp4A7HdZiGnqbOs+7rv+VR8Bz\nyOIndXtNkCjq10pl7ahbu2VoDvA0ZxeCVur8bEqqKKePr1fV96rqFarq0k9eZmr92ELP9urBz6SR\nWml8uL3A7eRcRvEDYbi9wN8Vb9uWCImi1wKPEDeP/k5y/0jyfB4U1e1VS6z5zvbKI+ZnJcOWyLxd\nX+l54LJQZOFCYtpq/CYik0XkTBF5l4js4WpQRk1CzfbKxlL4cH35sPxsIHaDtLtf341SIQwBEILb\nC/yJn7aEQyJwbiCu85VlNnBDTgKoqOKnFsG7vRJrSzrn5+36ys7Zrs+FwliRGhY/Se2d20VkpYjc\nJiJzgN8DXwOuAP4gIsf4GqgRbLbXJvzG/fiw/GT361KwlFX8+Fo0Qjh2aOOcSlxdl6cPq19O7i9L\ntvNJSDE/7Y41/VyrF+o8A56hQxlfiSs1FZBdG/fTjOXns8TVnN9JPJn9FPg7sf95JnGNnf9yPL6y\nMZppMG/x49K0m4f4cS0sfCyERRc/2ficENxerkWV72abrbhhjgZ2oP7cIMCOyXY+cT0vWJHDsbGM\nL480E/B8DHCSqv5GRH5M3GPrTFVdAiAiFzJ6s1GjPfJOdXdpMvaZ7u5LWJnlxx2+rvJDOHZozxKx\nnePtGqXa6mFur86Jn05lfG1FF4ufZiw/2wKLYKiw4BpGNg9dTGe+pLIwFPPjqJFjPdJJbrxEUUu9\n32oQouXHxI87Qsj2gmKKn6fG3qSp7VolJPHjO9ur1+HcOBpW6NAjzYgfYeTVQGECl0pCavnpxW+9\nkGxKpav38dniwpew8lHluezix8U+s/NOGcTPncDj1J9vFXgs2c4nIYofX0UOIZ+ML3N7eaRZ9fpx\nEUl/tH3A+SKSLsp5mQLLyiqGO25vwcgT0SXrMn9PZGTad6uEbPkJJeanyAKg7G6vlt0wWqkMShSd\nQ5ztlZ7/Qy8n9+/zUO+nmpACnn25vbJz4ySG5zVfdNrtBV0sfpqx/NwB7EXcyf1g4v5eu2Ye75Vs\nY3hAK5VN5BD0nLxPWq8phBYXLlPdq3uGudpvykQP5vIQBEBobq9CtbfQSuUm4GTgmaqXHgdOTl73\nTdG7umctY17cXkn6eScKHZr48UDDE7GqVjyOw2iM5cRWH1fip17s0Dpiy14ILS58pbq7dHttYvhC\nYzLDItYFLsRP9ndQdLdXFtfCz9c4216MtVK5SaLoaYbdWx8BPp2DxSfF3F4xa4jHnKfby8SPB9oq\ncmjkTqjNTfOI+Smy22s9kFZFdz3OECw/VuQwpl3hsCnz99M5Ch/wJ37GSxT1Otpnii+3F3Smv5fF\n/HigIfEjIh8WkYa+bBE5TET+ub1hGXWw5qabM+SekihyKeZdur0Uf53iQxA/odT58S1+XFoiZjjc\nVyP46u0FBXMzjkEnOrt3wvLja74qDI0uFvsBi0TkSyJyoohsk74gIuNF5AAROVtE7ibu7u47EKys\nhNjcVMkn5gfcTkiuY358ZI9BZlFyVALBp/hxfZXv+ndadMtPlrzFj+tj2MBw76oQxGZK2WJ+fCRp\nFIKGxI+qng68jDjN+jpgiYhsEJGVxCbGBcCZwDeBvVXVAp/9EGqLC5+Wn7UMBzu62r+PhdBXVprr\n0iYdNa4AACAASURBVAQ+3V7gdtFwsRD5jncCEz+b4Tl4uOvcXp5ru9Wi691ezQQ8/xF4m4i8AzgA\n2In4iutZ4A+q+qyfIRoZUreXxfwMk7qUpuJWWLgWK3mIn37aL4EwFJ8jUSTJItUuGxgO+nYZ8O0r\n4DmExTg08VNr8V5DfN6G5PbKs7N7Kn7GEc8beXpUul78NB0joaqbVPUPqvoDVb1eVX9mwic3fFl+\nfJey92n58bX/IMSPVioDDLsPXEzI6aQnjvbn8yo/tJifbhA/Lhf9IvZSG4s8Y37WMFx2pFOd3U38\nGIUg1OamPmN+wI+wCMXtBW4tINlA1HaOvfpK30fGl4mf/PBxDL6yAEN0e21mGUsuGjqV8WXixygU\nebu9QrD8ZAOqy+j2AofiJ0mfThe6omd8hZDpBiP75Y1rYz/ZBXKbNvfVLD7ET2HrKo2C75ifait8\npzK+TPwYhSKkgOfsRO065qf6KslHocNSip+EUKo8h2b5AXeumB7ytQb4FD++LD8+s73yiPmBzmV8\nmfgxCkWIqe4wbJnpkyjyMSH5sPy4SPX03S4jxfWEHEqhw6HfqeM0/0mOs2vWZ/4O1fUVkvgJ2fJT\njbm9PNG0+BGR/xGRza6wRWSyiPyPm2EZdcirwrOvgGcIp8WF6yJfZvnxt09w81tN9yeO9geAViob\nGa7wbeJnmBDFT54Bz5Cf26va3WbipwZnUHuS7Qfe1N5wjDHIq8Kz08U0mfzTCSmUFhepWOmVKOpz\nuL+yix8flh9wm+kGBersPgqhix/fAc8TPNTHydvy0y1ur7zrFI1Jw+JHRKaJyHTig5iaPE5vWwL/\nBDzta6AGMGz5mea4lUM1PiY6n7V+fFh+sguhC8FSdvHjfKFLRPWAq/0mwd7pwhlCEG6e4if9jY2X\nKGq4PtwY+A547qGJWnYNUjq3l2MB6aJumBOaWUCXEatQBf5G/KWkt2eB/wGudD1AYwSp+OnBb9lx\n14sp5NTfy9UOk/o5aY0NF5Ozz145IYifsvX38l07Czpj+QF3gcS+3V7g3vWVd8Bzp7O9xgEuLN+F\noxlVfCyx1ecXwOsYNsdBvEgsUtUnHY7N2Jy1xFe6vcSurxWjb94yPibqPPp7uRZWq4ivuFyIKpe9\ncqoX1pDEj+uFbi3xueDy2LfCLD/VVAdtr663YRP4zvaCWKi5rIycd8xPp91eEJ8L6+ttGCoNW35U\n9XZVjYBdgO8nj9PbPSZ8/JMUvcoj48uH5ScPt5dra5jL/Ybg9kpFVRBurwTXC2hIVYdzEz+JSzB1\nMbYj4LLC3ctnrZXKJtyMtRalcHsllu/0M+zKoOdW/KE7ATuJ1HYDWlNT7ywHtsGv+PFp+Qkl4Bnc\nioAQxE9KSG6vEI4dwrf8QHwMvbg7Bp8ZRa7HmtIp8dOpzu5bYOJniKjGc1k1n2fV0TKSR5XnUGN+\nfLi9oH3BkjZfdbGvWoQgAHwtGkWN+ammW8TPVIrfSBZiN81U3Bc6LEuRQ+hy8dNKxtCWVbcZwInA\nb4Hj3Q3NqEMebq9QY37M7eUGly6qaldaWcWPy1T39DMNvb+XT/Hjq9ZPpyw/W3jO8K1FV9f6aaWr\n+/Kq27OqehvwIeAS90M0qrCYn81xZfmp14zTqdvLQ+0R10GY5vYqtuXn2eR+mkSRj0J+9TDx07ki\nh4L/+m7VmPhpkCXAXg73Z9QmD7eXxfzE+LD89OBvQi6yAAjN7VXEqsOpaF7OcDDqtm3sr1lczwu+\nPmvw198rV8uPVirrM+8ZeqHDQtF0zI+IHFD9FLAdseXnjy4GZYyKub02p+gxPzCyFcMURlYnbpcQ\nxI+vhc71sYfQaVyJC8rOBmYCjznYZyP4svz4CngGf26vCRJF45IsON88T3zemPhxSCuWnz8AC5L7\n9O8fEyvst7obmlGHUN1eeVh++hy1okhxJn6SSTKdOF1bqEIQP2UrcliN61T3tJp+yC0uQnR7ue4n\n1wgdr/Kc8/vmQivZXrtUPd4EPKOq62ptbDgnj+amobW3qG5F8Vy9DRvEV72bVcQTfZnFT6sLXb04\nqaKJn3rjdH1OmfgZHV9ur+w6Nwk3xR7HolMZXz6r0necVgKeF1XdHjPhkyt5NDcNyvKjlcoGhltR\n+Ghu6mqfvjK+QhA/obi9Qgh4hs6In/SzDkH8eLH8JAUU0313e60fl1XpC0dLAc8i8lIRuVlEHhKR\nhcnfL3M9OKMmecb89DlMr/QZ85Pdv4mf5vGZ5ZYSmtvLV8uFkMWPr4DnXomiXkf7TPFRUTulm6o8\nj5Z52tVur6YXNhE5G/gJ8WJzOfAFYpfGj0XkXW6HZ9QgD7dXNhjX1UTnM+YH/HZ2d3Xy+5pMQrB+\nDC0YjlP9yxjwDN0hfrLxM0UXm1nK1ty0K8VPKzE//wn8u6p+MfPcF0TkruQ16+zulzzcXtVdkdfU\n27AB0vgZnzE/UA7LTz3REIL4SffZQ9wl2lWjxKLF/NTDxM/mbCCOGe0h/v6Wj755U/gKeIb8LT+d\nbm7aleKnFZfGFsSWn2puJf8iTGXEu9tLK5WNwMbkoasFNRUnkySKfLRA8WH5cS1Wiur2qiad9MY7\nzJ7LCugiBlL7bOoK3SV+nPzOkkbNITWSTelUoUPL9nJIK+Ln/4DX1Hj+VcDN7Q3HaIBU/EyRKGrF\nctcorifrlZm/Qyl06CPbC8IRP+Do2JMu0amgdrlohGD1Akt1r4cv8ZOH26ssAc8mfhIeAM4XkR+J\nyEeS283A+cCfReS96c3tUI2ErGnYV/AwuF9U1jO8+LkUP+kVexEtP773lzL0XbmIp0mESlpBuGgZ\nX1r1uPRuLw/tUurhQ/yE8nlnMbdXF9CK5eCtxEp03+SWsoyRRQ6VOBjacIhWKhskitYSi5LptF/T\nph5OJw+tVFSiaAWx6dZ1Dy4oR8xPPdLJuAfoZTjtvx18dHReQ/ybdbnPIjd1zeK6wvMzyd+9xJ/p\nsvqbOyMky08e2V55Bzyb28shTYsfVa0ucmjkz3KGxY8vXKdPQyxQXIifWni1/EgUSRKj4GR/be6n\nmmx2Xj/FFj/gdqFzvU9f2V5O3TBaqayVKFpJ/HufgYmfany6vToV82OWH4e4bGxquGOsRTb05qY+\n+3v5iPkZR5yh1C6+xM8Ghn8zRY598WFV8WX5meg4MN9lY9OUvON+QhI/3ej2muqhHtJouJwD8nLN\nNkwrdX7GichbReQ7IvIzEflF9tbkvo4RkR+KyJMioiLy6qrXRUQ+LiJPicja5P32qNpmKxH5XxFZ\nISLLROTrIhJqRcpGfyChNzcNLeC53f1WxyU5/X0mFqkQAn99WFV8xfy43Cf4OZ+6Qfz4djN2Q5HD\nrFXP5wVvNT7mgHat585oxfJzeXIbB/yZuJN79tYMk5P/eXed1z8IvBd4J3AY8ZfxUxHJnnz/C+wH\nvByYBxwDXN3kOEIj1OamPmv9OHd7JSn/6STqQrD4svxAWOKnyG6vtQxP0C6P3cRPbYJwM1bhI+an\n7oVvMg+lF3d5ur662u3VSsDz64FTVPXH7b65qt4C3AIgMvK7l/iJ9wEXqur3k+feBCwBXg1cLyL7\nACcCL1LV3yXbvIe42vQHVPXJdsdYUEJtbhqa5QfiCWAibiaAsosfn26vPomicVqpDLazsyQwfw3x\ncfuw/Li0ROQtflz39oIw3V55x/xA7PqaSmfET69EUW+SBdo1tGL52QAsdD2QGuwCzAJ+lj6hqsuB\ne4EjkqeOAJalwifhZ8RVQw+rt2MRmSAi09Ib/qoO+yL05qY+Y35cf5cuBUvRxU/WJB2a2wuK3eLC\nLD+1CTnby4f4qecW6kTGl/N6X0WiFfHzOeAcqTbVuGdWcr+k6vklmddmMTwBAKCqG4lV8izqcx6x\n9SS9Pd7uYHPGYn7q79u1sHApWHyakYvW46rW/OBj0ci2Yimy1cvET21CzPbKO+YHOpPxtQFILald\nJ34acnuJyE1VTx0HvEJE7me4GBoAqvpaR2OrOxxiy85Y24wWWPUp4POZx1MJSwDl2dy0tDE/CS4X\nwqJbfrIE4fbSSmWTRNE64kWuyIUOhxZjR2UToDvEjxU5bIzcCx0mLuDVxJb6coofNm849/9cD6QG\ni5P7mcBTmednAH/IbDPixBeR8cQ/kGqL0RCqup5MY0X/Rizn5NnctEyWn1o/hDK5vbKE4vZK91t0\n8ZOeT4K7QpSdEj8uL4hCdnvlVeQQOlvrp7ziR1Xf4nsgNfgHsbh5KYnYSeJzDgO+nGxzD7CFiMxV\n1fnJc8cRu/PuzXe4uRJqtpfF/MRMlCgan2RxuMJ1EGYo2V4QhvDLuucmErb4aeWCqN4VZohur04E\nPFuVZ8d0tMihiEwRkYNE5KDkqV2Sx3NUVYHLgI+IyEkisj/wTeBJ4PsAqvoX4g7zXxWRQ0XkxcAX\ngeu7ONMLwo358en2GrL8OO515MPt5Wp/WUIQAL5quviq9eNynOszf7vu77W15ybHKSHF/Jjbyw1d\nK36aPmFEZAG142mU+Ae3ELhGVX/ZwO5eCGS3S+NwrgXeDFxC/KFfTRzf8ivgRFXNXkW9kVjw/Jw4\nFuhG4tpA3UweFZ59Wn58xvwI8ZjXjLLtWGR/3y4tPxuIm7uOT/ZX7U5uhxDEjy+3V9GCvTcjiZ9Y\nT+yGadcVk/4+lyZ/C7ANw6ECvhgSFA7jlqzIYWNYiwvHtGL5+QmwK/GH8ksgIl4gdgN+C2wH/ExE\nXjXWjlQ1UlWpcXtz8rqq6gWqOktVJ6rqy1T1b1X7eE5VT1XVqao6XVXPVNVVNd+wewjV8uNT/GTF\nTiE7uyeLhffO7o72Z5afggfhJjWNnk0e5uH6qo5bcoEVOWwMc3s5phXxsw3wOVU9WlXfr6rnquox\nwGeByap6PHAh8FGXAzVGYDE/VWilsgk/wiKUzu4hiB9fV8ylFD8Jecb9VMctuaDd766eizsda69E\nkevwjk4VOYT8LT/pfGXiBzgFuK7G89cnr5G8vlergzLGJHV7TZQo8mHWhfBifsBP0HM7C6Hv7LEs\nIYmforu9fImfdq0RtX5PrsXPaPFyPuKWfMf8gHvXVxndXqH2y6xLK+JnHXBkjeePZPgH18PIE8Vw\ny8rM376sPz7SWn0FJW+2f4f7NMtPe9SqGh2K5SeEINzcLD+J29b1MfjO9oLmxzrW3DTk9vJgVaqH\nub0c08oXdwVwlYhcLiKnicgbReRy4vTzLyTbnAAscDVIYySJrz9d6H2JHx99fNIx9+DnqsmH5cfE\njztCSXX3ZaEKWvwktHsM1UHSvoTmRoaL4boaa0o2vtBHTFEtUvHT79HaXwsTPymqeiHwNuBQYrFz\nRfL321T1k8lmVwGvdDVIoya+M758VXNNJxQftX58WH5cn/y+zMghiR8fRQ7BYn5cUm/h92X5cfpZ\nJ1aq1PrjWiyszfydV9Dzcoa/E+vs7oCWTHaq+r+qeoSqbpXcjlDV72ReX1uVjm64x3fQs/OA52RC\nyiPd3Sw/7RNStlcIxw7d0dndl/jplShqJ4OslljzUusnsbynRSpziftJEjrSC95ONDc18WMUBt/i\nx1eRsKK3uKjGhVipVTeoSEG/tWIc0klvgkTRuNaGtBlDFhrHMV9m+Qm3xUXWheTaitJthQ47EfRs\n4idFRDaJyGC9m49BGjVx0dx0tAXIR6o75NPioshur9AsP+Du2H0tdCZ+wrX8rGf44sBX0HO3FDrs\nRLp714qfVkqiv6bqcS9wMHAG8LG2R2Q0iu/mpq4muWpztAvLT1a01bKqmNurfdYxXD14MsNlCtoh\nK34m0V4V7iy+rF4h9JsKWvxkOodPIQyxmVKWQoddK35aCXj+QdXtBlU9H/ggcJL7IRp1CC7mJyGX\n/l4O9zkkVhy5anyJH6eTcRKf5XTiS2IlUgHgUli4uArPiugQs70mSxTlsUBZf6+YTjY3NcuPA1zG\n/PwaeJnD/Rmjk1vMj+P4jFADnntwYz4PxfID4WR8hRbw7NKaujKz323b3G8jhCR+zO3VPq7OBR91\n3drCifgRkX7iZqKPu9if0RAuU91rZUpk0zlbmTzq/dh9xvz4sPxkXTMu9lt28ePDpVTamJ/EQteJ\nFhchiJ9uDXgO2e3lohmuE1oJeH5eRJ7L3J4nXnTOBP7D+QiNeuRl+YFwmps6t/wkrppUWJj4aR8f\ni4Yv8TNeoqjP0T7BX6fx0MVPSBW1UyzbK3BaCXh+X9XjTcAzwL2q+nyN7Q0/+BY/A8TfbQ/xgrps\n9M0bJrSYH4gFS7+j/Zr4cb9Pn5lukxiu6dIuvhbj0MWP787uPt1eeQY8+3R71bPImPhJUdVrfQzE\naBqvFZ6TLIx1xJN/aS0/CauJ4ylcTAC+xU+vRNG4xGLVLPVaD5TN7TUADALjiI/dlfBvVzjUcyXn\nKX58tL0J0e1VtoDnCW3MK4WkpZgfEdlCRN4vIl8Tka+KyL+LiC8LhFEb35Yf8NvctIgxP/UWF5eC\nxbf4gWIH/hbe8uMj0y3BR6o7dI/lJyTxU7aYH+gy608rMT8vBB4C/p34S9gGOBd4SEQOcTs8YxTy\nED8+m5v6tPz4cHu52q+v3l7ZGK0QxE+zi8Zo2SI+FiIfx25ur9pYtldjdCLbK633BWUXP8ClwP8B\nO6vqa1X1NcAuwM3AZS4HZ4zKkNvLcSp6Fh8TXR4xPz7cXuDY7eXye0t6/6STfZHFTwhuLzDxUw+f\nAc+Fz67L0Mkih1t6nPNH4NEK2nFaET8vBC5W1Y3pE8nflySvGfmQWn7G4e/qw0cQbR6Wn4kSRa0E\n86dUx774cHsJ7idl13EIobm9xrXZHDNLuyItt0abdEb8FLk9SUq3xvz05fy+Jn4SVgBzajy/I8ML\nm+Gf1cRBmVD8FhdZ8ujtBcVoblrr6sxF3aB6mRkhFPvzmerucr8+LT+W6j4Sc3s1VgRwFZAaHSzd\nvU1aET/fBb4uIv8qIjuKyA4i8nrga8B1bodn1CMxR6YupJBaXHhze2mlsp44Uwf8iJ+2T/4kWyKd\nOIue7l5Et1ct4bch87zrbuMhub22lShyWbW/FiGJn64KeE7mfNcZX42ILhM/CR8AbgK+CTwCLAKu\nAW4APuRqYEZDeE13x6/lx4fbC/yku7sOUg6l1k8Qbq9kUQihyrOvZsHPJPfj8TcXpIQofkKw/KSM\nVQG5G6o8F4JWGptuUNVziJXnQcQd3bdS1X9X1fWj/7fhmBCbm6bip1eiyMek5LW5aUH3lxKS+HG9\naIQQ7+Ql1V0rlQ0MXwj5dn2FFPDsq7QAdCbgGTqT8eXM8l0kmhI/IjJeRDaKyAtUdY2q/klV71PV\nNWP/t+GB3JqbOtxnNi7HZ9yPj+amrmJ0yix+fLUycL0YtXrso7kRfLph8or7CdHy0y0Bz9DZQoeu\n56uO0pT4SbK6HiXOMDI6j2+3l3PLj1YqGxme7EJpceFaBJRZ/PhqZeDL7eVycTPxUxtzezWOub0c\n0UrMzyeBi0Qkzw/fqE2Ilh8Ir9BhUdxeYwUnhiR+fLm9yhjwDPmJn5DaW+Th9spb/HTC7dWV4qeV\nWijvBnYHnhSRRYwsf42qWpXn/Agx5gdi8TOTcAodFkX8jEWRxE89oebb7VXkmB+floiQLT8hd3XP\nO+bHOrs7ohXx833nozBaJcRsL8in1o+5vdonJLdXCMeenk99EkU9SVXuZhjN8hey+PH1m/ApNjsd\n82NurzZppav7f/sYiNESebm9XF/d+GxxUcSA52p8BRCGIAB8uQtCsvxAvCCvrbdhC3SD+AnS7SVR\nJEm5hTwwy48jWi6IJSJ9SYHDOdmby8EZY5KX2yukmB9LdXcvfiY5LJ4XmtvL5TizpUBCbXERkvjJ\nw+0l+LEs1cNifhzRSlf3PUXkTuKJdhHwj+T2SHJvtE5q1m70KiJ0t1er4mc0879Py49rt1corh+X\n+yyz22sjkLq6Qhc/ExwK4vQ30ddmT75q8nB7QWf6e5nbq01a+fF+g/gEngfMBQ5Jbgcn90Z+hBzw\nDG5ifqqFos9Ud1ed2H1ZfloNwqx3TNn6Xa1OfNXfT7rPCRJFLktmuLYe+KpEHXpz02rXnQuyItuH\npc255UcrlQGGW+l0pLN7ju9p4ifhIOAdqnqLqv5BVf+YvbkeoDEqoaa6hxrzI7iZ6IJweyUBuek+\nXU18PqxJEIblB/yLny0livoc7ztLVvw0cwyjXTSsZ1gkh1JXCToT9Dzk9sqhj1uKi3PBxUWjU1r5\n8B4AtnE9EKMlUrdXqJafUGJ+XFhAsgQhfhJci4Ds4lmEQOqxUvKLmIFUyy3+PDCY/O1zfnbuuvPU\nmw1Guuh8LL6dqPWTWn568NcfsRqX50JegeFj0pD4EZFp6Y24eeklIlIRka2zryWvG/mRWn6meboK\ncHHlVOvHHlSRw8QC4rITe2nFT5U1yeWi0e5CVP07Dcryk3yuaYNTb64vj647H0IidXsJ0Otwvymd\n6Oy+luHjysv1VWq31zJixfk8cBtwOPBzYlNr+ny6jZEfqfgR/AiJdhbT0a60fNb58SWsXAqW0oqf\nqn26XDR8Zrq5tBp0Q5XnUMRPqy66RilLc9OuFD+NRtYf63UURktopbJOomgD0Efs+lo+xr80S8gx\nP60Ii7GyyGa0uN9a+8LRvrK0KwBqWel8CBUfGV++Ap6F+PfvqiaPz9ozIYifem4PHwtstrRAtxU6\n3A4TP23RkPhR1dtF5ALgs9bBvXAsI57stiBuOuuSkGN+XO/b5QRQVPFTixCECvhN85+MO/HTDZaf\nIPp7aaWimYvDburvlXe6e3ou9LdYmbyQNBMn8jG6rKV9l+Az4yvo9hZtuCtqXZ22IljqvX9I4icU\nt5fThUgrlUGGLQfW3HQkobi9IJ9Ch93e3NRXKYKO0oz4KVyqmgH4FT8hWn5SYTEOtxOej5ifCRJF\nLgMxQxE/PqxJPlwQPltcmPgZiW/x48Pt1WnLT17iJ2v17BrXV7MZQoVJUzOG8FnleWiScxz06TPm\nJ3uV4qPFRSsnf71Molb3V49QBICPRcNH8KkPC5V1dq+Nr7gSnzFWvi4OxyJXt1dVtmtpxc/fROS5\n0W5eRmmMRh6Wnx7cpoqmlp9+x+XsU3dFeqK6FFcum5FuIK6X4mp/KaFYfgrv9qraZ1EsP2NdgOQt\nfnzElpnba2ysv5cDml14Pob7jCKjPfKI+YF48tjgaL8rM39PxX2JhJXEE1Ihm5smgZiriK11PsTP\nBIeBiaG5vYou/MztVRtzezVOp1pcbEuJxc/1qvr02JsZOeLT7VXdhXpFvQ2bQSuV9RJFA8TWJB/i\nZxUwk+K4vertbwuH+4ORvvmJjKxM3Sqhub2K7vLLJdVdokiSgoQ+CEn8+Py8Oy1+rLlpGzTj9rJ4\nn2LizfJTVc3VtV/bZ9yPj4Bql24v8JPxlRU/Re5x5bXIocP4tFAtP/34XaRCEj95uL26vcghuL/4\n6ziW7RU+oTY3DarFhYd9+mjDsZHhWKIiix+ftYME993GiyZ+al6IaqWymuHPwafrK8SA524rcggW\n89MWDYsfVe0xl1chCb25aSgtLny4vaD4tX5CcXtlrV6u9usz28tXp/E84n7M8hNTRrdX19T689EM\n0xki8l8iolW3BzOvTxSRK0VkqYisEpEbRWRmJ8fcAVLLj4+YHyhfi4t6hOD2gv/f3rnHS1ZU9/67\nZuShPFXegoIP1ESjkfAwZpxG1HtjfKCiImrEa0TNGBVUDJj4gERBeSrEa3wrXN4KMX5MfMDGI5q5\nahJFVFB0lIERGBBB5TlT+aOq5lTvs7v33t2rus/us76fz/n06e7dtat27V31q7VWVXVD/KiLCtfr\n3Yu+1SvnbK8clggw8VNmFsVPdHttJ0WxfELnXLqWnylyFX4fk/j3Z8l3pwLPAV4ErAR2Az436QxO\nmdxury4vdJjD8mPiZ3xyrRmi3RktVrfXMEz89JPT7TVtyw/ka/fLzJz4UV1jJRP3Oed+Vf5QRLYD\nXg0c5py7NHz2KuBHInKAc+4/JpzPaWExP4PTzhLzE0ZbBwKvCOe4ArgSeCrwUOA6oMCLdYD7SVEs\nD2sQLUgPQIpiC+Bk4JF4AfNDYAPwdWAjsAvwjPCb7SrSi3RJ/AzsNMI1XoG/hutoFnN4J96NupjL\nPgvipxN7ewVyXm/NZ61xTK3r9e6Vovgd/r58EPOWoJyY+JkCjxKRG/A38beAY5xzvwT2wU+V/mo8\n0Dn3YxH5JfBkYKD4EZEt6B8J5OiAaxmxgS+zYKp7RbpzAzrKJtQ+4FXna5DuJPb3ymH52Qk/8krT\nfkHF8e9I/t8KWCdF8deu17uwlN7WUhQXA88r/f7gIXl5ArBGiuJNrtcrWzq7IH42ub2C6DsNeFb4\n7Dp8u/RE+p/Re8Prk6QojgI+FFxdKYvB8hOt6culKHosfPZyTr2G7lp+cnWuXXN7NZ1VfSv+WtnO\n7iOy2MXPauBw4Gp8x/ouYE5EHocfCd/jnLut9Jsbw3fDOCaklZ0KYXAF8BTgucDL8QtHRcqNeROi\n5ecBYZ+o5wCnA7snx9wmRfFa1+udH/JzEHBU6ZhBpFtcLMe7F3t4oXYr3tLxslI5bma+QRjkWh0p\n5ifk4anJR1Xpb7L8lK7/jeH4lcxbaC4FLm8gDuPDX3dvDWJH4AIpive7Xu/tzIufV+HXJGrL7sBF\nUhQvLAmgBeKn4hqAL8dO+M5y2Pn7Gr3S/fNA4NvAW/DWqb/Bi7btmLdE7idF8aPS9Y2dxh/Sv5Am\n+HqpIq4wvj3eQnaSFMUHwrUsp6se8ByEzG74a3ZzeI0Bp7fir+vewJHhs82By4C1JZGaPk89dAYo\nKV0VP5vqbshgquqzWAePGWANnUW3F/gB2B6Y+BmZRS1+nHNfSt5+X0RWA78AXkz/7I4UoV49vw84\nJXm/DbB21HwOQoriBSwUIo7BFp7YwK8CTmx4mnThwZcCn6o4ZnvgPCmKT+PrvFzve0hRfN71yUgk\nIwAAIABJREFUes+v+G28zk8BPgg8uEGeUiH0tWDxKFsoWru9BlzPH0hRvLGUfhQWjwbWMFzkvQO4\nS4rie8AO4bMDpCieRr8o0lgwEOBoKYpvM9+YjBugf5YUxTZJPvvEjxTFIcA/0V8ng/ijis82NXoh\nrbPo70j2w9+vg/g48H4piiOSOorXchyrn+CvJYkAKpd9C/xzvi++s7gW//zthq9rh+9AwNf5ZiVr\nUszns4FDRszn7sCFUhSHhPJH4fAUvDiKxHvwPOCMCqtWUyrFT4Wr9lf4gdPu+E2Ad8Rft0eFn+wq\nRXF/1+tVtbNlAbcb/j7eAW+RvxPvrj0DL4oPxAtkgB0rrjPMX+sHsfCZvQ8/aFk25LO3Ay+rsIbG\nvD5ZiuJDwM+AH9Dvor4UuDwctxJ/vwDsNcS9nOZ5WuIHgvhTtvZXsUD8hMH2KuAR+GfrI8DrQj62\nwg+MLsUL1VhPB0hRrFXO20gsavFTxjl3m4hcg4+L+AqwuYhsX7L+7MT86HZQOneTrF4sor+EUeio\nL6r6qsHP95CiuNj1esNcH8AC/++JNekPG6kdLEXxH67XO6D0eWw8/rouLwPYmWoLRWPxEx7sY4Hj\nKr7ejf7OJU37TxvmcUtg/+T9vsDXgFuSTrtKGIzKx6i+N0bh/sDfAe8J79MR9Hn4gUJTXhGEVCqC\nY6O3HLhgxDw+mP57YNSOvYq3SFH8XehM07JfgreuNuVZwJ1SFCcnYuoPw+u4Fg4BTgt5elL4bPPS\nMfEe3B9v1foiXri17cQWiJ/QFn2KdlbWbYDfS1GsHtImPBNvaa7iYLyFbiP+3onsgRd6Jw2w2j2Y\nhYPXqn6q6rMqa+iK8PpU+i3GKe/Ax9cJ/QLrcOA5JeGeMq1FDiFZ62fAoHCtFMWRwHp0BFHZAnwi\nXtCmdXtq6TfPxF/bjcxf13NZaA2dCl2Y7bUJEdkarzLXAd/FN6IHJd/vjVfz35pKBmM+fGf9z2Mm\n87wwcm1CdH2N6pKJ7B8a6JSyW2JUzilNy9wU8yNFsVyKoidFcZgUxZvDay98fgi+vquED8yLvdOS\n9LWsNLHTfgHzo0ENtgMOVUzv6KTscaR+Bu2ET+TgEIMU+d3AI9vzkZDPTyimuZx5y1Ms+ydoJ3zS\ntI6Wojgx5POVCvmL7IG3KrypwbHL8KLiMnxsV4wpazJw6hM/4bcXMnr82/5SFOX4ySeE17r2Sejv\nHCPLCNc5+Sy1MI07Gv1IaDtOpH928DCWU90fpm1AmU2LHEpRSNKOvTS2XyPkvSkxyPkp+PotW7d3\nxw9WLgP+HwvvpdhPPSy83a0mv6kF+ETgaKrrtorydX0IfsBadU0nxqIWPyJykoisFJE9ReRPgc/j\nFfo5zrnf4E3qp4jIgSKyD350861FMNNrJc3cQ3Wc3PA4zc1mnytF8YHk/WOU0t0ceHryPrrrHo43\nc18GnI0fPZwd3v8a/wDXuWwE37nEUd5eKjme5zT86EUTTVP5A5gve7xWZctCG54nRfGi8L9muXfA\nD1Yeq5gm+AERzAf9jzvL7y34uLYdao5ry9No7+pr21FE8bOjFMX98G3iuGJifymK6EpcDrx2zPQi\nbwuuE5gXVBrE++wtdQe24FMV4iAOspbjl1tZwxCxUUUQTE9j3p20X0PRFC0/L6B5/UYX7MelKE7F\nDyqjwD+4Jr+p5eetDc83iKoB68RZ1OIHX1nn4AOezwduAQ5wzt0cvj8S+Fe8C+HreD/2VNVk4Hil\ndJ7Z8Lhy0Pe4HCVFsVm4MR+nmG56XaLl5/H4Br6KtqPVmI5257oH+RaR1GLXUF/7KaX3yZDe3yml\nFzkK/a1yrg2N9v61RzZD2+oTGcV6uKmjAP44/L/VkE5jfXhdBvwDejMeY3zSSvRmaArw0fD/04cd\nOAJvpbllognb4GOXUlIL87ksbMcWCNeSdejv8SEaX2Ne/HwcuLGB2I3ip63LTYD/A7yZhYPK6Das\nOncUP3ujoxvKA9aJs6jFj3PuUOfcbs65LZxzu4f31ybf3+WcW+Wce5Bzbivn3Auq1gSaJGEkU/aR\nj8qeDZWxpuUH/H2xCn9jas7oSJdjT90pWp3hk8Or9ogd5tfsWaysYz7QUIOt8I39UUrpRbRnpzjg\nw/iYB020rYcwurUvdhQnhfd7MmCUHmKfoktkWCB6W/YJbVFPMU2AQ0ObqekGhvlAdk1eUXp/L94T\nESm3Y30WjlBfa5i3Dh1HtYdgmKstknNtn09W9DuxvdYeBE6tXV3U4qejrELvum6GH2nVoS1+wLsS\nymvPjMuVyf+PVE47JceCj3fUHzI1bsPPqNhNOd3D0V+H6bvK6V2AF71Nlm1oQ851YTQY5g6Lri/N\nRT7vR55R+hb4NrPJbMQ2/Lb+kNb0PQuu13PAPeHtoAFcFK7H4mNzBlm5qxjmFvr1gM812Jb+dcpg\nXvxoW23XKafXGBM/+jyi/pBWPK3BMdpuL4Cf4zs/TQ5L/s+5QZ62ULkT+KxietrxQ6eHWRzaa7to\nWTBTLkav/Pfi76kco0f1pS/QFX7D4iZybUC9Kz68QBvtNhN8qIT2c1bFPfWHAD5AGNqJh2FuoZzi\nB/wsyvS+GrS0zDjcTrMFcbNg4kefa+sPacVfNDgmWn6arg7aFE0T5/WlNUNyrKodZ/ldp5zueXhT\n9X11BzbkVOZjMzS4Orxqd3qaU9IjO6A3g+ywIPpyjB5vQNdScwd+cURNBsVN5BI/68gjKPTXGvHr\nwV1We1Q7rq/4rKko2JrRyjlI2Ofe0mJb+u+rx2c4x79Pc70fEz/6nEm/H3hcHt0g7ieKH81GRDvm\noRxAmmNtjNgJao8mzgoPqYao+obr9d6KDzjUIpZbO97tMvQtIDuhL3zn0BcW3wT+v2J6H6Bm/bEx\nKHeQOcTPdfjrPO6inFXp5liaZD26SypA9cA2twgZJOxzW36g/77KEUow7nIwY2HiR5kQcHi+YpL3\np97XniPm52fK6ZWtUk3NxW2I93PVCG0cdgoCdNx1lMCvkg3emqRB7JRycDF+QUYtNqJr8fpYsgJv\noZguzG9Fo8HtwHvRF6eRcgeZQ/x8NJOV7Sj0n1fwQvMG5TSvrPhM0zpYZphbaBLiJ63rX2RIv+ki\ntFkw8ZOHLyinVxfToB3zczvVD/o4lEeMOWIH4gquc+ia5+NMKg1r1UeDkGq6+FodRyWmY+1R+YPR\nnS68DN2ZeNsxPyHgx4rpRi5VSieH0I9sZKFIyyF+fhpe59C1dqzPkCZ44TOH7sCwKig7RyxMZJhb\nKEecZ8ot9Auvy9EPq3ijrfMzewxa8n1U6kz62gG+X0Z/9kXZ5J87GFHLBRgbAa2g2thha6WXrmmk\nPSrPEUtzE7ouql541RbTO+MbfI37dAe8eNYWp+Db8KeUPsshftLnd7OBR7Vn19DBn6aYZioINTvX\nKrdlTsvP/x30RbhmOSz+kdNT4RX+155B92BsnZ/ZIWzH8FLlZOuCzR5W831bvol+x1e+13J0BEV4\nXYme+PleBnN/TzG9tyWjpyvQG53dhBd92qLiV8BVymmCvpheF+pdy033PPJN651EzE9kJboxW1FQ\nvBe9WMkoCFeQd1Yp5N3UtG6XgFyur43ACRM6n63zMwuETuifMiT98JrvtR/Am/Edn6bSP6L0Xrsj\nuJ35nZl7iunG5ebn0N3nag6dxn4b/BoiAH+Lnug7O3T+OSx0mo1oEV41xXQUfqBnVT0cL04176HI\nJGJ+4vUtr3I8Llru3zK7or/uVdU9lmOmWuSMGrdQrmDrKmsiTObenRgmfnRZgb67COqnz2vPnNox\ndHw/rT2yOf+r9CBrBZNGtkV/UUbwI8eV4XqsUUqzCOlpiYA3hVVyNWeQxZgCbQvdzugFaK9nXvBq\nNqKrEpO/Vhu5Pb5D+Y5SepENTCbmJ15fbStzjPtYga6Lah36615V3WM5XU87MdwtlDPoucoio+nu\ndOSdrFGLiR9dcpjwHH76/DC017WJ21BoCpTyuhFVI4txiQu+Fcrpxh2aH6qQ1nrg8pCe1vTRB+NX\nyX1Q3YEtWBXymCOO6Ax03HOfSETKFehYqW7Hb6AcLbmaz/SuwDcU0wMvGMrP0m3oLreRBr9qz/qJ\ncR+aVppoudMUgTEwu4z2rNgyw+4/jdmng+h77ks7wGsgwJttnZ/ZIYcJ717qG/Vc09I1d0WG/gc5\nh1CMC75djv4CfSvQiXV4bXjgV6I7ktJeJTeOOjXdn9cBc2E5CA0LyEsTa+JT0GnPUpGuvbfdOvKs\nZtwnHMK2C5prCn0w6aS0Fw4E3xZoWmnODPnVnupeRQ5XUEplnxLu+1xbBFVZZLTbq/XAJYrptcbE\njy7acSEAm1O/v5f2aLIAcL3e3ei5eqD/Qc4W/Bkavi8pplkwvljbALzI9XqfC+97Y6ZXRntlcZgv\ns1YQdTrS06ifdHVjTTEd3aeaad6EX8zvRYppRqp2RNechZS2L5fjrWOarEN3BuBPwusceot0xhl7\nZbTdgCnD3EIr8Pui5eC8CotMT/kcg67nxDDxo0+Oa9qr+V7ThfQbQhxFGF1ozpZI13iZI8800Siq\n/lMpvRhXMu5I+njX612okJ8y0Xd+JvoBkHF9Iw2L1zsT4Qd6dR8FiqaYPjyDy+9s4PXoxrVEnlsR\nGKv5bD07/hM6xR8oph07eM1YyXWwKa9fVky3TwyHa/4sxfTLfHSIWyjnLKm/nND6O1Ob6QUmfrTR\nWgivTF09ad5EaRzFCnQXpftwfKjCObS3JEhHSlqumtcq+aXLJuNCIc3Im4MrSWutlDQYcdx7K6b1\n3tLnWp1zuqXJLUppbo/+vf8v5HF5QfV6KZpuryPj7vHh+X2cYtrRGqgVn1NenE9TBJbF8ArybPsQ\nGWbNzTlLqirQOkdsznMzpNkYEz+65FKydY265oPwL8n/2uXZgeDCyxBMCnBOIlTGnaJ8HfDCxFox\n7qynsnn8csZvmNcDhyR5PAG9qelvVljfKLrLqgIbNdzD6ZR0bXbDb0A7LqmQzOGajJSfJU3rjGN+\nMsEKfFyURpqpG1grPuf00r2mtQxI1b2W23IxLA5qDrg747k3lS3U+19lOMeLwyzVqWDiR5dcarxu\nFDcH3KVwnvIDnqM8vfC6Ah/PpIWjPwB2XMvP4SU3zbjXoi9uJjTQo+7vdQfwTmCXUh41gn5vol9Q\nzTH6UvprS2mlaIzIV5WslHWLwrVhJ2B3hXTSWS3amx6nlO9PTctPunu8Vod/UckNrGG5+w2JhTG0\nBVrLX6yqEPC516ips4bdl/HcadlWoPMslFmGn6U6FUz86BID7LT3QBk6KgoP5WqF85Qf8By7ZUe0\nR01pAw3jW37Klp45xhudVk0R/o+WadyCFz0PdL3e8RWN8bjX9CZg91SshHN8fIS03gnsNUD4wPji\n5/2lzlPrfoqWGi03zKnxGgTX5MlK6aZUbYAZ8/+f6E3C2BW9Dv/D6Ztwn427QOwnS8/ESnQEcfle\ni2jvHVbm2UO+WwFslem85UDrnBauXK7gWkz8KBIevDfFtxpJ0nwhqHHN3OeWH/BMu2XH9HIv9T+u\n5acvf+FajDP1v2qKcJs8HgnsPED0RMa9pmeEDrrMiS3SiO7CYfmE8Trkd7le7+2lzzTup01uOvTc\nMKkbmZBvrWD8SNUGmFH8bIfeYGwdOjOo0sUpU74yZrrlAUZvzPSg+l4DNrUJmnuSlRnmFsopSMpu\n6pwWrpyu4KGY+FEmjPIOAa4fN6nw2nQhqCeNca7bgZcP+E5zt+w7mG/0co2a4oM6quVnmOA8j+qO\npK5zGdTYNxU/9wIfanAfjNsxDVrRe9i1LJd9mLUnZRTLT6ybf6z4TqNTTt10GlbcQfeR1m7xkaqB\nTxQ/j2D8GZubnonSAG9UBk0iKAvi81umq72y9aB7LUUj3GAQyxnsFsolSN5d8fxqLSBaJrqCp4KJ\nnwyEm2dP/D44hwHvGiGZYfESfYTRwQEjnAN8w/aqIR1rMWK6VXwgnie8floxbehf6n8Uy89QwRkW\nj0vT/Qq+jl9ck+6gxr6cx0Ed7XVNBLBCxzSoQb2bwY3fWuCaUh6aUBY/xzM85qOubsYp+z/i63GT\ncEvSq9q7ydFMFA0auGh3mH9VMTVZa0PWBdc9XKMvjpjei1u4Qtta38rHFy1/X2bYVPMYU1RpFVJk\nkFtIcw2jlKo1nLQWEC1z8gBL80Qw8ZMJ1+ttcL1e4Xq9c1yvdxzwo4Y/PZ5SQ9yAVYy2wd511Aus\ny9EJrFvPwunO2vEP6VL/o4ifJoIzTfcnoY4vBF7IwsaoPGNsWFowuPNvE3B8Ce3ra6h7NYi+dFT+\nUbyoPxDYi9Hiwsqj/Dl8nNVBwAUsbIRr6yZ8d82g7wewHu/aKModXUjvHRW/WYu37r6Q6jpbz/B6\nT2fptI37qiKNdYvsrZAuDL7uVyX/f5lmCx+e7Hq9C4Z8XxY/D2mQZqRqNtbljBdEXbe34Ur8sgg5\nqXQLKVngqqhaMDOHi+2cQe7ESXG/aZ58qSBFcSLw2JrDHL6hec8I68q0CRq7Dj9aWce8GXtwpnq9\nDVIU1wKPbpmnMp+oOFcOt1d8UMuumtsZPEX3MBpeD/o77U2jf9frfU6K4hLmZ8Q0Sa8sfl4d8hl/\nP8pWAito/1wLcFSDGJ242OG1rtc7Z9OPi2IUcVzu6Fw4/6XApcm06qbXMnI98x3/ucAPgeOGHF+3\njtO/0e/6OJLEBRnqfCXz8SUFcHlNmqnlR8tCU+6gxtnn7SZ8OW9g8HVPy3AN8BEgxgxWDcQudr3e\nW2vOW74n2lg2zq4QrxukKI4ALmqRTkqda6k3YrpNGeoWCm3OOnTFyUopiuUTiPn5QoY0W2HiJzPB\nJdU0UHbUjd7aBI0tA85veZ4bGE/8OOBtUhSrSyNIrYUIU+KDWrYsnIIfCS4QFmlH3oCBeR4hQLyc\n1gbX6xWwyaQe2bqiQRrEqA1hXSdcKfoCm/IlRdGjmVBZIH763owebH9n8v/3XK93ghTFVcDp9E/X\nvQ7/vNVZV8v30X+nZUsFW4s8psKhhy/7KJbblHIHNU6H9foG1yUtgwsd8SEsvM6/Bl7ner0m8Tvl\ne+JCvHWjiYfiX6o+DPm6goWr4G8ckm4ciNZNNBm3zupo4hZai6742Qo4Fu+BiEQX20PQK3PuZQJq\nMbdXflbRbEn7T7Vwc5U5k+YBaQ8B1sQVWxuSNnTvxrsl2hAfmNPSTj10HFrTcPtcN67Xu4/+jnBj\ndENSatRaLuWeCpZxZ9FUCqlQN2uSj/ameZ2N2qjUNaCVAcohT2nHchnN8lqud60ZSQvyWRGD18at\nXM6nRuBn+jxtzXgdyiCX5RxwT8u06tx1KX3iBwZe5x0bCh/of17BB/o3cY3XzYhN3VcnhXy9hOrY\nrTYTTdq45dpybkO3kPaWNgBvqminj0RP+ORcnLQxJn7y09QlNbIICKODT7b4yUOAC1sIoLRR+gHw\nUtrPhCmvwxMZZVZW0wZrgVCpEBbQTgxqWqsWBDyHfFzIwoa1aZ2NumdanWhaYPlJ8lreYLE2r+Ge\nTd1lWrNJ0ns1dUumMXgL4nuGkEOkaQU8D+yow/vvDfmdw0/EOD78HcTCRTOHoX2dY2zZ70ufHQ1c\nPOxn1AuV9Hp/PYnTq5qV22iiifICilU0dQv9OsO5q7ZL0XLPQoWLchqY+MlPU5fUuOsdvLPFsZWW\nmCGUTdzjBNuVLQyp+Gka+V9+EAc1WGnaGsIChrt/WuF6vXvoL/MyvNsAFo6yGtVZqJsrBn1f9ROa\nrSXVV+6Qh9MHHNv0/ko7uhyWH400c1t+xuFWhnfUUfyU8xyfl+Ncr/fO8Hdpyw5pgeVHiQX153q9\n5+NnVJYD/5tM2IAB20CMaRFcwXhxVXUM29oiJYf4gYXttKZrrdJFOWlM/OSnyZL2GusdlBuGupkK\ngywxVSwY5bn59YzaUrYwpALl6w3TiA1VXYNVtqyMJSwGpDkuaXp/gI+XGGReblpnTWcWtjHxl0VA\nXPJ+nLyqCckEzY0swYvT9Npoi5+yq6cNh9Z01HHdm9jOf4P2M0kHMTHxAxBmie3AaEJlYF7HsFTl\n3ter6ZpFOdxeMHoMWZPnQ3PD4JGxgOfMuF7vXimKk4Gjhxx2isJ6B3fi3QixTq8GHtngd00e4srG\nIwQTpsfdjL+xB62NUhVEmE6RLbtPBrFjwyDlVFjtyfD9adLOuhhynGbMT0zvgeH/Bw47MKGuztIO\n9Qzgm/h74Qj6r8FamgX9wkKh0rTxH3Zc2tFldXuNiuv1nBTF75ifKahR56kl4iuMvrt13TUrd6Br\nYkC9AhMVPzBWEHyODUBzB+w2XeMoh+WnKiYnBj0PakMdvv3/LPUTfE6Rovj8tF1fZvmZACFw7f1D\nDnlpywDkqnM4+qeON40havIQN+1QXjfgmGEWhlSgaOYZ+oVK01Vu6zp1rQDtqvSaNmR15U/r65ow\nqj2e0U385Xy6BnloktcuuL2gv+zalp+fMLxtGEZ5/7kyZfGjKVJyrWys/XxBHqGWa9/DNlsaQR7x\ns2AT15pQh3hNVwF/2SD9ph6HrJj4mRA1kfttA5AHkbq+rmN4UHKbh6xRQ5e4wtoEEabi50aaBVI3\nNZveMeD/YdRZy3JYfiJXolNn6sGoVC9KOG5ec7i9xnEjDUI7n33PU2gbThohnToBOinxMxHLzxio\n5zU8O2dppJUmG17bLHmi7fY6yVVv4hrb96pFI+Oin+uBHRueJ7fbsBYTPxOiJpakbQDyIFLLz0YG\nb7La9iGr7EzLeQ1r0bQNIkxFSZMplQ5vNm1ynVJh8TOaLZr2mpq0c4ofrTpTdf0E+gRAaSQ4al7N\n8jMfPH4o7fJ7C/UiWHuvq5QuiZ8cbi/QD9y9hYZbGiVoWn7Odb3e22qOSa1df09/+95G0NzYNnPa\nmPiZHHVmvjYByINIxY8b0RJTxYKGbtiU8ZYWhjTmZyP1UyrbXKeysPjnBr9pE6SrQZ+YUqqz7OIH\nRrb0pSz6mJ9ATvED9cHjVZzeQASb5ceTK6+a+2s5/L17ScvfaYmf9Qze3DolfRb+vdS+T33hwjaY\n+JkcuzU8bhxzYNnyM+50zkhfh6I0ZTzSNx0dnUDaQWnXzYBrknZOy8+wxeLa1FluATCfuN4Cgot1\ntlc5TW23V5t7PrIROKHBcbfQn98uiJ+uxPw0jYNpyqiD33HdXnHNp7ptXiLDntm5Fvmpi1fLjs32\nmgBBDJzW8PBx1HMa89MX68F4OxynjYcwfMq4w7vvLmn4MKUCZSM6gbSRsrDQSDvnVPdNjFlnE7H8\nbHozel7N7eVp+8wvw6+qXQw7yPV690lR3EKeqcVdsvzkcnvFGa9zLBQtG2m2sn+ZtkK4bPmpm3Fb\nzlebGZ8w5Flwfi+10xi+l15k6lYis/xkJrGS1DVAbaP8q+hze42RTpm0M9VaiyZSFj8agbRVaTul\ntLNbfhSYqPgZgy66vbSnum9B/X1ZRdNOMnV9dcHy0yW3V+Sa5P/34OMWR43dbCsKfk//QqlfZXjb\nfArjeQHqBgLvpTooOqLRz6lg4icjpVVw64J4YfSNTSO5xE/aeDRd1bRp45zG/GgF0kbK8TQaaWeN\n+VFKc2JuL8U0F7PbK6flZ4ua+3IQTTvJSYifzRTTzS1+cpA+b19m9GDe9bQUBWGJk9TV9PRhh+MD\n6+dGnPEJNc9CSO8I5t1p5fPD+P2cCiZ+8tI0kPFm2kf5V1Hp9lIgfbiHqfqUpo1z2fKjEUhblTZK\naee0/GjRBesH5OnoulD2dKS+JQy9L8u0HTnnmvGVXuemi5M2IYd4TS1tOSw/aZ43MLpLZwdG2y8s\ndX0Nm2quMammdiCg2H5nxcRPXppaP45UuiEmYfn5AXpuKagQP6AWqF0pVMZMO2fMz1ISANCdmB9V\n91wYrUc2Tz6P92Xcp09j5JzL8pPuGK8pfnLcZ7ndXmXxM4obE+bjJdu6zNrO+BpnUk0jK6hS+50V\nC3jOS9MRQNOlzOtYMNtLibTxiCb6C/EPa2rVGqVx7nN7pV8oBGqXY3400tZunJey5UfbnQTdcHul\n9AmHcF8eL0VxFd5lPup2JJEs4ids+xHf5rL8dMXt1Sd+QuDvoDZyGE232CnTdsbXOMHGjZ8FhfY7\nK2b5yYtm8G4TJuH20lw/CAZYfpTIYVXpQsBz7hlPWuR2e42zYGhKDuEX2bLqQ8WRc86FDiOLXfzk\ndnul99wGaOXGrGKcGV83kbe/yfksTBSz/GSkZgSQI/hrEm6vTWvRSFFcgh+l7IofTcyNUJauiZ+7\n8Q3cYu5YuyIAcruo7q+U5sQsPylKI+dcbq+USgE3Ijksd5N2e/kTLWwjdwZObZBeW8tMKn5OAd5H\nvv4m57MwUUz8ZCY8AIegY8KuYxJT3edPoNM4D3RNKaCedmmX7y64vbRG5V1xe6Wj/BziZyKWH0W6\nLH5yuL3arKLdlErxA/1tZIjleQt+MdhB6/Cspb1lJhU/l+ItTrn6m5kRP+b2mgATDP7K5fbK1ni4\nXu8e5jusLlh+yulqppWjsdfqmLqwcnI5mLjTlh8luub2yiE0U0GsOS0/MlD8pCgv45GSxvxszNzf\nzIz4McvPhJhQ8FeugOfUkrD5wKNG5w58A6r9MN0Z0lxGHvGzKC0/pWBUFfHjer2NUhR34gXFYnZ7\npeQQfl0WP7ksP4s95ifHYCClkfiBbJ6A1PITwxJy9TczI37M8jNDBCtKfNBzWX5yNB7RPaX6MAUr\nQA630mK3/KRo1lds+Baz2yulC26v3OLnduanpXdN/GiRTsvPMXhbEPA8jAyWmVT85BYkJn6MxUfw\nKccHca8R1osYRNpo/rFiujHP8SHaI0PaseF7pEbaIY1oMdXIb9rYP0ExjxHNcseGfW+lekpF9b4Z\nyv4wpXymndv+46ZZ+v12mvd8mTAAiNafR0pR9DJc5wcplkH9nqC/n1N5xkqked6vSfpKitibAAAM\n3UlEQVSu19sQVlgedaXllDTcYZ+c9xPKz8I0mRnxIyKrRGSNiNwlIqtFZL9p52mShD3E1gAPDB+9\nBljTcof1YelGjtVIt5T2I8JHL8+QdtxT7c3jpp2k+Ufho8PGSTP87qrkow8q5jHyEsU0407MRyml\neXny0VmK+YwcpJTml5KPLhgnzYo87jxuHhucL9bb04HLxj1fRRn2HDfNJN1vJB/luCeOGTfNivT/\nNfnofM30G57//OSjj+U6f0jzC8lHYz0L00ac6/RUfQBE5CXAZ4DXAavxHd2LgEc752oD/kRkW3y8\nzHbOudvrjl9sJJunQvX0xpGWFM+VbhfT1k6zC3m0NBd/nTc8X3mSwqK5JjnTzX29J12f0zz/tMs6\njFH771kRP6uBbzvn3hDeL8Mv5vQh59wJDX7fWfETzI5rqJ8+uVcb02qudLuYtnaaXcijpbn463zS\n5+tSW5P7ek+6Pqd5/mmXtY5R++/Ou71EZHNgH+Cr8TPn3Mbw/skDfrOFiGwb/4BtJpLZPNRtnjrq\nZna50u1i2tppdiGPlubir/NJn69LbU3u6z3p+pzm+add1ix0XvzgYzqWAzeWPr8R2GXAb47BK8X4\ntzZb7vLTdCn0tkum50q3i2lrp9mFPFqai/u4aZyvS21N7us96fqc5vmnXdYszIL4GYQweGrn+4Dt\nkr/dBxzXBZouhd52yfRc6XYxbe00u5BHS3NxHzeN83Wprcl9vSddn9M8/7TLmoVZED/r8VNwdy59\nvhMLrUEAOOfuds7dHv/o3waha+TaPDXnpqxdS1s7zS7k0dJc/HU+6fN1qa3Jfb0nXZ/TPP+0y5qF\nzosf59w9wHfx01qBTQHPBwHfmla+JkWuJdMzLsXeubS10+xCHi3NxV/nkz5fl9qa3Nd70vU5zfNP\nu6y56Lz4CZwCHCEirxSRxwIfBrYCPjndbE2GMMXwEOD60ldrGWMKYq50u5i2dppdyKOlufjrfNLn\n61Jbk/t6T7o+p3n+aZc1BzMx1R1ARN4AvA0f5PzfwBudc6sb/razU91TwpTEFfjAs3XAnOK0WfV0\nu5i2dppdyKOlufjrfNLn61Jbk/t6T7o+p3n+aZe1Mk9LeZ2fcZkV8WMYhmEYS4klu86PYRiGYRhG\nG0z8GIZhGIaxpDDxYxiGYRjGksLEj2EYhmEYSwoTP4ZhGIZhLClM/BiGYRiGsaQw8WMYhmEYxpLC\nxI9hGIZhGEsKEz+GYRiGYSwp7jftDCwythGRaefBMAzDMIxmbDPKj0z8eOLFWzvVXBiGYRiGMQrb\nALa3VxvEm3t2A+5QTnobvKDaPUPai4FZLx/MfhlnvXww+2W08nWfWS9j7vJtA9zgWggas/wA4YJd\nr51u4kK7YxY3TJ318sHsl3HWywezX0YrX/eZ9TJOoHyt07SAZ8MwDMMwlhQmfgzDMAzDWFKY+MnL\n3cB7wussMuvlg9kv46yXD2a/jFa+7jPrZVx05bOAZ8MwDMMwlhRm+TEMwzAMY0lh4scwDMMwjCWF\niR/DMAzDMJYUJn4MwzAMw1hSmPjJiIisEpE1InKXiKwWkf2mnadREJGnisgXROQGEXEicnDpexGR\n40RknYjcKSJfFZFHTSu/bRGRY0Tk2yJyh4jcJCIXi8ijS8dsKSJnisgtIvJbEblIRHaeVp7bIiKv\nF5Hvi8jt4e9bIvLnyfedLl+ZUKdORE5LPutsGUXk3aE86d+Pk+87W7YUEXmIiJwVynGniFwpIn+S\nfN/Ztib0BeU6dCJyZvi+03UoIstF5HgR+Xmom2tF5O8lWeFwMdWfiZ9MiMhLgFPw0/ueBHwP+HcR\n2WmqGRuNrfD5f8OA748G3gi8Htgf+B2+rFtOJntjsxI4EzgAeAawGfBlEdkqOeZU4DnAi8LxuwGf\nm3A+x2Et8LfAn4S/S4FLROQPw/ddL98mRGRf4Ajg+6Wvul7Gq4Bdk78/S77retkQkQcCVwD3An8O\n/AHwFuDXyWFdbmv2pb/+nhE+vyC8dr0O346vlzcAjw3vjwb+Jjlm8dSfc87+MvwBq4EzkvfL8Fto\n/O208zZmuRxwcPJegHXAW5PPtgPuAg6ddn5HLOOOoZxPTcpzD3BIcsxjwjEHTDu/Y5TzVuDVs1Q+\nYGvgGuDpQAGcNgt1CLwb+O8B33W6bEmeTwDmhnw/U20NcBrw01Cuztch8K/Ax0ufXQSctRjrzyw/\nGRCRzYF9gK/Gz5xzG8P7J08rX5nYC9iF/rL+Bi/+ulrW7cLrreF1H7w1KC3jj4Ff0sEyBvP0oXiL\n3reYrfKdCXzROffV0uezUMZHBdfzz0TkbBF5aPh8FsoG8FzgOyJyQXA//5eIvCb5fmbamtBHvBz4\nhPMqYBbq8JvAQSKyN4CIPAFvnfxS+H5R1Z9tbJqHHYDlwI2lz2/Eq/lZYpfwWlXWXegYIrIMPyK7\nwjn3g/DxLsA9zrnbSod3qowi8ni82NkS+C3wfOfcD0XkicxG+Q7Fu5j3rfi663W4GjgcuBrvMnkX\nMCcij6P7ZYs8HO8OOQV4L7Af8EERuds59xlmq605GNge+FR4Pwt1eAKwLfBjEdmA7wPf4Zw7O3y/\nqOrPxM9kEbwZcykgwMZpZ2IEzgQeR388xSC6Vp9XA0/EN7ovBD4tIiuHHN+Z8onIHsDpwDOdc3e1\n+SkdKKNz7kvJ2++LyGrgF8CLgTsH/KwTZUtYBnzHOXdseP9fISbt9cBnhvyui23Nq4EvOeduqDmu\nS3X4YuBlwGH4+LQnAqeJyA3OuU8P+d1U6s/cXnlYD2wAypH6O7FQ9XadX4XXzpdVRM4Ang0c6Jxb\nm3z1K2BzEdm+9JNOldE5d49z7qfOue84547BB7G/idko3z74/H5XRO4TkfvwQaNvDP/fSPfLuIlg\nIbgGeCSzUX/g40F+WPrsR0B0781EWyMiD8PHpH0s+XgW6vADwAnOuXOdc1c65z6LD+I+Jny/qOrP\nxE8GnHP3AN8FDoqfBXfKQXi3wyzxc/xNnZZ1W3wkfyfKGqZfngE8H3iac+7npUO+i5+BkpZxb3yj\n3IkyDmAZsAWzUb6vAY/Hjzbj33eAs5P/u17GTYjI1sAj8IJhFuoP/EyvR5c+2xtv4YIZaGsCrwJu\nAr6YfDYLdfgAFlpwNjCvMxZX/U07QnxW/4CX4HewfSV+2t9H8FM2d5523kYoy9bMdygOODL8/9Dw\n/dtD2Z6L74AuBn4GbDntvDcs3z8Bt+EtBbskf/dPjvkwvhE+EG9l+CbwzWnnvUUZ3wusAPYMdfQ+\nfEP1jFko34AyF4TZXl0vI3BSuD/3BP4U+ApwM7Bj18uWlHFfvAA4Fm/ROgw/FfplyTFdb2uWhXo6\noeK7TtchPn5pLfAX4T59frhHT1yM9Tf1CzbLf/j1Dn4RRNBqYP9p52nEcvSC6Cn/fSp8L8BxeFV/\nFz6af+9p57tF+arK5oDDk2O2xMcD3Roa5M8Bu0w77y3K+HFgTbgXbwp19IxZKd+AMpfFT2fLCJwL\n3BDqb214/4hZKFupnM8GrgztyI+A15S+73pb88zQtizIc9frENgGP1nkF/g4tGuBfwA2X4z1JyFD\nhmEYhmEYSwKL+TEMwzAMY0lh4scwDMMwjCWFiR/DMAzDMJYUJn4MwzAMw1hSmPgxDMMwDGNJYeLH\nMAzDMIwlhYkfwzAMwzCWFCZ+DMPoNCLSExFXsS+SYRhGJSZ+DMNYtARRM+zv3fhtAHYFfjPd3BqG\n0RVshWfDMBYtIrJL8vYl+KXx080vf+uc++1kc2UYRtcxy49hGIsW59yv4h/esuPSz5xzvy27vUTk\ncBG5TUSeLSJXi8jvReRCEXmAiLxSRNaIyK9F5IMisjyeS0S2EJGTROR6EfmdiKwWkd6Uim4YRkbu\nN+0MGIZhZOABwBuBQ/EbLn4O+DxwG/As4OHARcAVwHnhN2cAfxB+cwN+V+p/E5HHO+d+MtHcG4aR\nFRM/hmHMIpsBr3fOXQsgIhcCrwB2Dm6yH4rIZcCBwHki8lDgVcBDnXM3hDROEpH/HT4/duIlMAwj\nGyZ+DMOYRX4fhU/gRmBNKT7oRmCn8P/jgeXANSKSprMFcEvOjBqGMXlM/BiGMYvcW3rvBnwW4x63\nBjYA+4TXFAuoNowZw8SPYRgG/Bfe8rOTc25u2pkxDCMvNtvLMIwlj3PuGuBs4DMi8gIR2UtE9hOR\nY0TkL6adP8MwdDHxYxiG4XkV8BngZOBq4BJgX+CX08yUYRj62CKHhmEYhmEsKczyYxiGYRjGksLE\nj2EYhmEYSwoTP4ZhGIZhLClM/BiGYRiGsaQw8WMYhmEYxpLCxI9hGIZhGEsKEz+GYRiGYSwpTPwY\nhmEYhrGkMPFjGIZhGMaSwsSPYRiGYRhLChM/hmEYhmEsKUz8GIZhGIaxpPgfNAGu/CBI1WEAAAAA\nSUVORK5CYII=\n", "text/plain": [ "" ] }, "execution_count": 27, "metadata": { "image/png": { "height": 218, "width": 287 } }, "output_type": "execute_result" } ], "source": [ "Image(width = 500, height=500, retina= True, filename = 't1_dp0.25/loss3.png')" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{\r\n", " \"evaluate\": {\r\n", " \"data\": [\r\n", " {\r\n", " \"cifar\": {\r\n", " \"checksum\": \"6d958be074577803d12ecdefd02955f39262c83c16fe9348329d7fe0b5c001ce\",\r\n", " \"parts\": \"test\",\r\n", " \"path\": \"~/kur\",\r\n", " \"url\": \"https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz\"\r\n", " }\r\n", " }\r\n", " ],\r\n", " \"destination\": \"t1_dp0.25/cifar.results.pkl\",\r\n", " \"provider\": {\r\n", " \"batch_size\": 128,\r\n", " \"num_batches\": 1000,\r\n", " \"randomize\": false\r\n", " },\r\n", " \"weights\": \"t1_dp0.25/cifar.best.valid.w\"\r\n", " },\r\n", " \"evaluation\": {\r\n", " \"data\": [\r\n", " {\r\n", " \"cifar\": {\r\n", " \"checksum\": \"6d958be074577803d12ecdefd02955f39262c83c16fe9348329d7fe0b5c001ce\",\r\n", " \"parts\": \"test\",\r\n", " \"path\": \"~/kur\",\r\n", " \"url\": \"https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz\"\r\n", " }\r\n", " }\r\n", " ],\r\n", " \"destination\": \"t1_dp0.25/cifar.results.pkl\",\r\n", " \"provider\": {\r\n", " \"batch_size\": 128,\r\n", " \"num_batches\": 1000,\r\n", " \"randomize\": false\r\n", " },\r\n", " \"weights\": \"t1_dp0.25/cifar.best.valid.w\"\r\n", " },\r\n", " \"loss\": [\r\n", " {\r\n", " \"name\": \"categorical_crossentropy\",\r\n", " \"target\": \"labels\"\r\n", " }\r\n", " ],\r\n", " \"model\": [\r\n", " {\r\n", " \"input\": \"images\"\r\n", " },\r\n", " {\r\n", " \"convolution\": {\r\n", " \"kernels\": 20,\r\n", " \"size\": [\r\n", " 5,\r\n", " 5\r\n", " ],\r\n", " \"strides\": [\r\n", " 2,\r\n", " 2\r\n", " ]\r\n", " }\r\n", " },\r\n", " {\r\n", " \"activation\": \"relu\"\r\n", " },\r\n", " {\r\n", " \"pool\": {\r\n", " \"size\": [\r\n", " 2,\r\n", " 2\r\n", " ],\r\n", " \"strides\": [\r\n", " 2,\r\n", " 2\r\n", " ],\r\n", " \"type\": \"max\"\r\n", " }\r\n", " },\r\n", " {\r\n", " \"flatten\": null\r\n", " },\r\n", " {\r\n", " \"dense\": 15\r\n", " },\r\n", " {\r\n", " \"dropout\": 0.25\r\n", " },\r\n", " {\r\n", " \"dense\": 10\r\n", " },\r\n", " {\r\n", " \"activation\": \"softmax\",\r\n", " \"name\": \"labels\"\r\n", " }\r\n", " ],\r\n", " \"settings\": {\r\n", " \"backend\": {\r\n", " \"name\": \"keras\"\r\n", " },\r\n", " \"cifar\": {\r\n", " \"checksum\": \"6d958be074577803d12ecdefd02955f39262c83c16fe9348329d7fe0b5c001ce\",\r\n", " \"path\": \"~/kur\",\r\n", " \"url\": \"https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz\"\r\n", " }\r\n", " },\r\n", " \"test\": {\r\n", " \"data\": [\r\n", " {\r\n", " \"cifar\": {\r\n", " \"checksum\": \"6d958be074577803d12ecdefd02955f39262c83c16fe9348329d7fe0b5c001ce\",\r\n", " \"parts\": \"test\",\r\n", " \"path\": \"~/kur\",\r\n", " \"url\": \"https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz\"\r\n", " }\r\n", " }\r\n", " ],\r\n", " \"provider\": {\r\n", " \"batch_size\": 128,\r\n", " \"num_batches\": 1000,\r\n", " \"randomize\": false\r\n", " },\r\n", " \"weights\": \"t1_dp0.25/cifar.best.valid.w\"\r\n", " },\r\n", " \"testing\": {\r\n", " \"data\": [\r\n", " {\r\n", " \"cifar\": {\r\n", " \"checksum\": \"6d958be074577803d12ecdefd02955f39262c83c16fe9348329d7fe0b5c001ce\",\r\n", " \"parts\": \"test\",\r\n", " \"path\": \"~/kur\",\r\n", " \"url\": \"https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz\"\r\n", " }\r\n", " }\r\n", " ],\r\n", " \"provider\": {\r\n", " \"batch_size\": 128,\r\n", " \"num_batches\": 1000,\r\n", " \"randomize\": false\r\n", " },\r\n", " \"weights\": \"t1_dp0.25/cifar.best.valid.w\"\r\n", " },\r\n", " \"train\": {\r\n", " \"data\": [\r\n", " {\r\n", " \"cifar\": {\r\n", " \"checksum\": \"6d958be074577803d12ecdefd02955f39262c83c16fe9348329d7fe0b5c001ce\",\r\n", " \"parts\": [\r\n", " 1\r\n", " ],\r\n", " \"path\": \"~/kur\",\r\n", " \"url\": \"https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz\"\r\n", " }\r\n", " }\r\n", " ],\r\n", " \"epochs\": 20,\r\n", " \"hooks\": [\r\n", " {\r\n", " \"plot\": {\r\n", " \"loss_per_batch\": \"t1_dp0.25/loss1.png\",\r\n", " \"loss_per_time\": \"t1_dp0.25/loss2.png\",\r\n", " \"throughput_per_time\": \"t1_dp0.25/loss3.png\"\r\n", " }\r\n", " }\r\n", " ],\r\n", " \"log\": \"t1_dp0.25/cifar-log\",\r\n", " \"optimizer\": {\r\n", " \"learning_rate\": 0.001,\r\n", " \"name\": \"adam\"\r\n", " },\r\n", " \"provider\": {\r\n", " \"batch_size\": 128,\r\n", " \"num_batches\": 1000,\r\n", " \"randomize\": true\r\n", " },\r\n", " \"weights\": {\r\n", " \"best\": \"t1_dp0.25/cifar.best.train.w\",\r\n", " \"initial\": \"t1_dp0.25/cifar.best.valid.w\",\r\n", " \"last\": \"t1_dp0.25/cifar.last.w\"\r\n", " }\r\n", " },\r\n", " \"training\": {\r\n", " \"data\": [\r\n", " {\r\n", " \"cifar\": {\r\n", " \"checksum\": \"6d958be074577803d12ecdefd02955f39262c83c16fe9348329d7fe0b5c001ce\",\r\n", " \"parts\": [\r\n", " 1\r\n", " ],\r\n", " \"path\": \"~/kur\",\r\n", " \"url\": \"https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz\"\r\n", " }\r\n", " }\r\n", " ],\r\n", " \"epochs\": 20,\r\n", " \"hooks\": [\r\n", " {\r\n", " \"plot\": {\r\n", " \"loss_per_batch\": \"t1_dp0.25/loss1.png\",\r\n", " \"loss_per_time\": \"t1_dp0.25/loss2.png\",\r\n", " \"throughput_per_time\": \"t1_dp0.25/loss3.png\"\r\n", " }\r\n", " }\r\n", " ],\r\n", " \"log\": \"t1_dp0.25/cifar-log\",\r\n", " \"optimizer\": {\r\n", " \"learning_rate\": 0.001,\r\n", " \"name\": \"adam\"\r\n", " },\r\n", " \"provider\": {\r\n", " \"batch_size\": 128,\r\n", " \"num_batches\": 1000,\r\n", " \"randomize\": true\r\n", " },\r\n", " \"weights\": {\r\n", " \"best\": \"t1_dp0.25/cifar.best.train.w\",\r\n", " \"initial\": \"t1_dp0.25/cifar.best.valid.w\",\r\n", " \"last\": \"t1_dp0.25/cifar.last.w\"\r\n", " }\r\n", " },\r\n", " \"validate\": {\r\n", " \"data\": [\r\n", " {\r\n", " \"cifar\": {\r\n", " \"checksum\": \"6d958be074577803d12ecdefd02955f39262c83c16fe9348329d7fe0b5c001ce\",\r\n", " \"parts\": 5,\r\n", " \"path\": \"~/kur\",\r\n", " \"url\": \"https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz\"\r\n", " }\r\n", " }\r\n", " ],\r\n", " \"provider\": {\r\n", " \"batch_size\": 128,\r\n", " \"num_batches\": 50,\r\n", " \"randomize\": true\r\n", " },\r\n", " \"weights\": \"t1_dp0.25/cifar.best.valid.w\"\r\n", " },\r\n", " \"validation\": {\r\n", " \"data\": [\r\n", " {\r\n", " \"cifar\": {\r\n", " \"checksum\": \"6d958be074577803d12ecdefd02955f39262c83c16fe9348329d7fe0b5c001ce\",\r\n", " \"parts\": 5,\r\n", " \"path\": \"~/kur\",\r\n", " \"url\": \"https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz\"\r\n", " }\r\n", " }\r\n", " ],\r\n", " \"provider\": {\r\n", " \"batch_size\": 128,\r\n", " \"num_batches\": 50,\r\n", " \"randomize\": true\r\n", " },\r\n", " \"weights\": \"t1_dp0.25/cifar.best.valid.w\"\r\n", " }\r\n", "}\r\n" ] } ], "source": [ "!kur dump dlnd_p2_dropout.yml" ] }, { "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.3" } }, "nbformat": 4, "nbformat_minor": 1 }