From 09735df0d3cf47194264c4496a074fc42719d87d Mon Sep 17 00:00:00 2001 From: AntreasAntoniou Date: Mon, 25 Sep 2017 13:16:28 +0100 Subject: [PATCH 1/3] Remove redundant files --- environment-set-up.md | 441 ------------------------------------------ quota-issue.md | 29 --- 2 files changed, 470 deletions(-) delete mode 100644 environment-set-up.md delete mode 100644 quota-issue.md diff --git a/environment-set-up.md b/environment-set-up.md deleted file mode 100644 index 99d8e83..0000000 --- a/environment-set-up.md +++ /dev/null @@ -1,441 +0,0 @@ -# Environment set up - -*The instructions below are intentionally verbose as they try to explain the reasoning behind our choice of environment set up and to explain what each command we are asking you to run does. If you are already confident using bash, Conda environments and Git you may wish to instead use the much shorter [minimal set-up instructions](#minimal-set-up-instructions-for-dice) at the end which skip the explanations.* - -In this course we will be using [Python 3](https://www.python.org/) for all the labs and coursework assignments. In particular we will be making heavy use of the numerical computing libraries [NumPy](http://www.numpy.org/) and [SciPy](http://www.scipy.org/), and the interactive notebook application [Jupyter](http://jupyter.org/). - -A common headache in software projects is ensuring the correct versions of all dependencies are available on the current development system. Often you may be working on several distinct projects simultaneously each with its own potentially conflicting dependencies on external libraries. Additionally you may be working across multiple different machines (for example a personal laptop and University computers) with possibly different operating systems. Further, as is the case in Informatics on DICE, you may not have root-level access to a system you are working on and so not be able to install software at a system-wide level and system updates may cause library versions to be changed to incompatible versions. - -One way of overcoming these issues is to use project-specific *virtual environments*. In this context a virtual environment is an isolated development environment where the external dependencies of a project can be installed and managed independent of the system-wide versions (and those of the environments of other projects). - -There are several virtual environment solutions available in the Python eco-system, including the native [pyvenv](https://docs.python.org/3/library/venv.html) in Python 3 and the popular [virtualenv](https://virtualenv.pypa.io/en/stable/). Also related is [pip](https://pip.pypa.io/en/stable/) a Python package manager natively included in Python 2.7.9 and above. - -Here we will instead use the environment capabilities of the [Conda](http://conda.pydata.org/docs/) package management system. Unlike pip and virtualenv/pyvenv, Conda is not limited to managing Python packages but is a language and platform agnostic package manager. Both NumPy and SciPy have many non-Python external dependencies and their performance is very dependent on correctly linking to optimised linear algebra libraries. - -Conda can handle installation of the Python libraries we will be using and all their external dependencies, in particular allowing easy installation of [optimised numerical computing libraries](https://docs.continuum.io/mkl-optimizations/). Further Conda can easily be installed on Linux, OSX and Windows systems meaning if you wish to set up an environment on a personal machine as well this should be easy to do whatever your operating system of choice is. - -There are several options available for installing Conda on a system. Here we will use the Python 3 version of [Miniconda](http://conda.pydata.org/miniconda.html), which installs just Conda and its dependencies. An alternative is to install the [Anaconda Python distribution](https://docs.continuum.io/anaconda/), which installs Conda and a large selection of popular Python packages. As we will require only a small subset of these packages we will use the more barebones Miniconda to avoid eating into your DICE disk quota too much, however if installing on a personal machine you may wish to consider Anaconda if you want to explore other Python packages. - -## Installing Miniconda - -We provide instructions here for getting an environment with all the required dependencies running on computers running -the School of Informatics [DICE desktop](http://computing.help.inf.ed.ac.uk/dice-platform). The same instructions -should be able to used on other Linux distributions such as Ubuntu and Linux Mint with minimal adjustments. - -For those wishing to install on a personal Windows or OSX machine, the initial instructions for setting up Conda will -differ slightly - you should instead select the relevant installer for your system from [here](http://conda.pydata.org/miniconda.html) and following the corresponding installation instructions from [here](http://conda.pydata.org/docs/install/quick.html). After Conda is installed the [remaining instructions](#creating-the-conda-environment) should be broadly the same across different systems. - -*Note: Although we are happy for you to additionally set up an environment on a personal machine, you should still set up a DICE environment now as this will make sure you are able to use shared computing resources later in the course. Also although we have tried to note when the required commands will differ on non-DICE systems, these instructions have only been tested on DICE and we will not be able to offer any support in labs on getting set up on a non-DICE system.* - ---- - -Open a bash terminal (`Applications > Terminal` on DICE). - -We first need to download the latest 64-bit Python 3 Miniconda install script: - -``` -wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -``` - -This uses `wget` a command-line tool for downloading files. - -Now run the install script: - -``` -bash Miniconda3-latest-Linux-x86_64.sh -``` - -You will first be asked to review the software license agreement. Assuming you choose to agree, you will then be asked -to choose an install location for Miniconda. The default is to install in the root of your home directory -`~/miniconda3`. We recommend going with this default unless you have a particular reason to do otherwise. - -You will then be asked whether to prepend the Miniconda binaries directory to the `PATH` system environment variable -definition in `.bashrc`. As the DICE bash start-up mechanism differs from the standard set up -([details here](http://computing.help.inf.ed.ac.uk/dice-bash)), on DICE you should respond `no` here as we will set up the addition to `PATH` manually in the next step. On other Linux distributions you may choose to accept the default. - -On DICE, append the Miniconda binaries directory to `PATH` in manually in `~/.benv` using - -``` -echo "export PATH=\""\$PATH":$HOME/miniconda3/bin\"" >> ~/.benv -``` - -For those who this appears a bit opaque to and want to know what is going on see here [1](#f1). - -We now need to `source` the updated `~/.benv` so that the `PATH` variable in the current terminal session is updated: - -``` -source ~/.benv -``` - -From the next time you log in all future terminal sessions should have the updated `PATH` loaded by default. - -## Creating the Conda environment - -You should now have a working Conda installation. If you run - -``` -conda --help -``` -from a terminal you should see the Conda help page displayed. If you get a `No command 'conda' found` error you should check you have set up your `PATH` variable correctly (you can get a demonstrator to help you do this). - -Assuming Conda is working, we will now create our Conda environment: - -``` -conda create -n mlp python=3 -``` - -This bootstraps a new Conda environment named `mlp` with a minimal Python 3 install. You will be presented with a 'package plan' listing the packages to be installed and asked whether to proceed: type `y` then enter. - -We will now *activate* our created environment: - -``` -source activate mlp -``` - -or on Windows only - -``` -activate mlp -``` - -When a environment is activated its name will be prepended on to the prompt which should now look something like `(mlp) [machine-name]:~$` on DICE. - -**You need to run this `source activate mlp` command every time you wish to activate the `mlp` environment in a terminal (for example at the beginning of each lab)**. When the environment is activated, the environment will be searched first when running commands so that e.g. `python` will launch the Python interpreter installed locally in the `mlp` environment rather than a system-wide version. - -If you wish to deactivate an environment loaded in the current terminal e.g. to launch the system Python interpreter, you can run `source deactivate` (just `deactivate` on Windows). - -We will now install the dependencies for the course into the new environment: - -``` -conda install numpy scipy matplotlib jupyter -``` - -Again you will be given a list of the packages to be installed and asked to confirm whether to proceed. Enter `y` then wait for the packages to install (this should take around five minutes). In addition to Jupyter, NumPy and SciPy which we have already mentioned, we are also installing [matplotlib](http://matplotlib.org/) a plotting and visualisation library. - -Once the installation is finished, to recover some disk space we can clear the package tarballs Conda just downloaded: - -``` -conda clean -t -``` - -These tarballs are usually cached to allow quicker installation into additional environments however we will only be using a single environment here so there is no need to keep them on disk. - -## Getting the course code and a short introduction to Git - -The next step in getting our environment set up will be to download the course code. This is available in a Git repository on Github: - -https://github.com/CSTR-Edinburgh/mlpractical - -[Git](https://git-scm.com/) is a distributed version control system and [Github](https://github.com) a popular site for hosting Git repositories. We will be using Git to distribute the code for all the labs and assignments. We will explain all the necessary `git` commands as we go, though those new to Git may find [this concise guide by Roger Dudler](http://rogerdudler.github.io/git-guide/) or [this slightly longer one from Atlassian](https://www.atlassian.com/git/tutorials/) useful. - ---- - -***Non-DICE systems only:*** - -Git is installed by default on DICE desktops. If you are running a system which does not have Git installed, you can use Conda to install it in your environment using: - -``` -conda install git -``` - ---- - -We will now go over the process of [cloning](https://www.atlassian.com/git/tutorials/setting-up-a-repository/git-clone) a local copy of the `mlpractical` repository. - ---- -**Confident Git users only:** - -For those who have their own Github account and are confident Git users, you may wish to consider instead [creating a private fork](http://stackoverflow.com/a/30352360) of the `CSTR-Edinburgh/mlpractical` repository on Github. This is not required for the course, however it will allow you to push your local commits to Github making it easier to for example sync your work between DICE computers and a personal machine. - -**Note you should NOT create a public fork using the default forking mechanism on Github as this will make any commits you push to the fork publicly available which creates a risk of plagiarism.** - -If you are already familiar with Git you may wish to skip over the explanatory sections below, though you should read [the section on how we will use branches to separate the code for different labs](#branching-explanation). - ---- - -By default we will assume here you are cloning to your home directory however if you have an existing system for organising your workspace feel free to keep to that. **If you clone the repository to a path other than `~/mlpractical` however you will need to adjust all references to `~/mlpractical` in the commands below accordingly.** - - -To clone the `mlpractical` repository to the home directory run - -``` -git clone https://github.com/CSTR-Edinburgh/mlpractical.git ~/mlpractical -``` - -This will create a new `mlpractical` subdirectory with a local copy of the repository in it. Enter the directory and list all its contents, including hidden files, by running: - -``` -cd ~/mlpractical -ls -a # Windows equivalent: dir /a -``` - -For the most part this will look much like any other directory, with there being the following three non-hidden sub-directories: - - * `data`: Data files used in the labs and assignments. - * `mlp`: The custom Python package we will use in this course. - * `notebooks`: The Jupyter notebook files for each lab and coursework. - -Additionally there exists a hidden `.git` subdirectory (on Unix systems by default files and directories prepended with a period '.' are hidden). This directory contains the repository history database and various configuration files and references. Unless you are sure you know what you are doing you generally should not edit any of the files in this directory directly. Generally most configuration options can be enacted more safely using a `git config` command. - - -For instance to globally set the user name and email used in commits you can run: - -``` -git config --global user.name "[your name]" -git config --global user.email "[matric-number]@sms.ed.ac.uk" -``` - -*Note this is meant as an example of a `git config` command - you do not need to run this command though there is no harm in doing so.* - -From the `~/mlpractical` directory if you now run: - -`git status` - -a status message containing information about your local clone of the repository should be displayed. - -Providing you have not made any changes yet, all that will be displayed is the name of the current *branch* (we will explain what a branch is to those new to Git in a little while), a message that the branch is up to date with the remote repository and that there is nothing to commit in the working directory. - -The two key concepts you will need to know about Git for this course are *commits* and *branches*. - -A *commit* in Git is a snapshot of the state of the project. The snapshots are recorded in the repository history and allow us to track changes to the code over time and rollback changes if necessary. In Git there is a three stage process to creating a new commit. - - 1. The relevant edits are made to files in the working directory and any new files created. - - 2. The files with changes to be committed (including any new files) are added to the *staging area* by running: - - ``` - git add file1 file2 ... - ``` - - 3. Finally the *staged changes* are used to create a new commit by running - - ``` - git commit -m "A commit message describing the changes." - ``` - -This writes the staged changes as a new commit in the repository history. We can see a log of the details of previous commits by running: - -``` -git log -``` - -Although it is not a requirement of the course for you to make regular commits of your work, we strongly recommend you do as it is a good habit to get into and will make recovery from accidental deletions etc. much easier. - -The other key Git concept you will need to know about are *branches*. A branch in Git represents an independent line of development of a project. When a repository is first created it will contain a single branch, named `master` by default. Commits to this branch form a linear series of snapshots of the project. - -A new branch is created from a commit on an existing branch. Any commits made to this new branch then evolve as an independent and parallel line of changes - that is commits to the new branch will not affect the old branch and vice versa. - -A typical Git workflow in a software development setting would be to create a new branch whenever making changes to a project, for example to fix a bug or implement a new feature. These changes are then isolated from the main code base allowing regular commits without worrying about making unstable changes to the main code base. Key to this workflow is the ability to *merge* commits from a branch into another branch, e.g. when it is decided a new feature is sufficiently developed to be added to the main code base. Although merging branches is key aspect of using Git in many projects, as dealing with merge conflicts when two branches both make changes to same parts of files can be a somewhat tricky process, we will here generally try to avoid the need for merges. - -

We will therefore use branches here in a slightly non-standard way. The code for each week's lab and for each of the assignments will be maintained in a separate branch. This will allow us to stage the release of the notebooks and code for each lab and assignment while allowing you to commit the changes you make to the code each week without having to merge those changes when new code is released. Similarly this structure will allow us to release updated notebooks from previous labs with proposed solutions without overwriting your own work.

- -To list the branches present in the local repository, run: - -``` -git branch -``` - -This will display a list of branches with a `*` next to the current branch. To switch to a different existing branch in the local repository run - -``` -git checkout branch-name -``` - -This will change the code in the working directory to the current state of the checked out branch. Any files added to the staging area and committed will then create a new commit on this branch. - -You should make sure you are on the first lab branch now by running: - -``` -git checkout mlp2017-8/lab1 -``` - -## Installing the `mlp` Python package - -In your local repository we noted above the presence of a `mlp` subdirectory. This contains the custom Python package implementing the NumPy based neural network framework we will be using in this course. - -In order to make the modules in this package available in your environment we need install it. A [setuptools](https://setuptools.readthedocs.io/en/latest/) `setup.py` script is provided in the root of the `mlpractical` directory for this purpose. - -The standard way to install a Python package using a `setup.py` script is to run `python setup.py install`. This creates a copy of the package in the `site-packages` directory of the currently active Python environment. - -As we will be updating the code in the `mlp` package during the course of the labs this would require you to re-run `python setup.py install` every time a change is made to the package. Instead therefore you should install the package in development mode by running: - -``` -python setup.py develop -``` - -Instead of copying the package, this will instead create a symbolic link to the copy in the local repository. This means any changes made will be immediately available without the need to reinstall the package. - ---- - -**Aside on importing/reloading Python modules:** - -Note that after the first time a Python module is loaded into an interpreter instance, using for example: - -``` -import mlp -``` - -Running the `import` statement any further times will have no effect even if the underlying module code has been changed. To reload an already imported module we instead need to use the [`reload`](https://docs.python.org/2.7/library/functions.html#reload) function, e.g. - -``` -reload(mlp) -``` - -**Note: To be clear as this has caused some confusion in previous labs the above `import ...` / `reload(...)` statements should NOT be run directly in a bash terminal. They are examples Python statements - you could run them in a terminal by first loading a Python interpreter using:** - -``` -python -``` - -**however you do not need to do so now. This is meant as information to help you later when importing modules as there was some confusion last year about the difference between `import` and `reload`.** - ---- - -## Adding a data directory variable to the environment - -We observed previously the presence of a `data` subdirectory in the local repository. This directory holds the data files that will be used in the course. To enable the data loaders in the `mlp` package to locate these data files we need to set a `MLP_DATA_DIR` environment variable pointing to this directory. - -Assuming you used the recommended Miniconda install location and cloned the `mlpractical` repository to your home directory, this variable can be automatically defined when activating the environment by running the following commands (on non-Windows systems): - -``` -cd ~/miniconda3/envs/mlp -mkdir -p ./etc/conda/activate.d -mkdir -p ./etc/conda/deactivate.d -echo -e '#!/bin/sh\n' >> ./etc/conda/activate.d/env_vars.sh -echo "export MLP_DATA_DIR=$HOME/mlpractical/data" >> ./etc/conda/activate.d/env_vars.sh -echo -e '#!/bin/sh\n' >> ./etc/conda/deactivate.d/env_vars.sh -echo 'unset MLP_DATA_DIR' >> ./etc/conda/deactivate.d/env_vars.sh -export MLP_DATA_DIR=$HOME/mlpractical/data -``` - -And on Windows systems (replacing the `[]` placeholders with the relevant paths): - -``` -cd [path-to-conda-root]\envs\mlp -mkdir .\etc\conda\activate.d -mkdir .\etc\conda\deactivate.d -@echo "set MLP_DATA_DIR=[path-to-local-repository]\data" >> .\etc\conda\activate.d\env_vars.bat -@echo "set MLP_DATA_DIR=" >> .\etc\conda\deactivate.d\env_vars.bat -set MLP_DATA_DIR=[path-to-local-repository]\data -``` - -## Loading the first lab notebook - -Your environment is now all set up so you can move on to the introductory exercises in the first lab notebook. - -One of the dependencies you installed in your environment earlier was Jupyter. Jupyter notebooks allow combining formatted text with runnable code cells and visualisation of the code output in an intuitive web application interface. Although originally specific to Python (under the previous moniker IPython notebooks) the notebook interface has now been abstracted making them available to a wide range of languages. - -There will be a Jupyter notebook available for each lab and assignment in this course, with a combination of explanatory sections for you to read through which will complement the material covered in lectures, as well as series of practical coding exercises to be written and run in the notebook interface. The first lab notebook will cover some of the basics of the notebook interface. - -To open a notebook, you first need to launch a Jupyter notebook server instance. From within the `mlpractical` directory containing your local copy of the repository (and with the `mlp` environment activated) run: - -``` -jupyter notebook -``` - -This will start a notebook server instance in the current terminal (with a series of status messages being streamed to the terminal output) and launch a browser window which will load the notebook application interface. - -By default the notebook interface will show a list of the files in the directory the notebook server was launched from when first loaded. If you click on the `notebooks` directory in this file list, a list of files in this directory should then be displayed. Click the `01_Introduction.ipynb` entry to load the first notebook. - -# Minimal set-up instructions for DICE - -Below are instructions for setting up the environment without additional explanation. These are intentionally terse and if you do not understand what a particular command is doing you might be better following the more detailed instructions above which explain each step. - ---- - -Start a new bash terminal. Download the latest 64-bit Python 2.7 Miniconda install script: - -``` -wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -``` - -Run the install script: - -``` -bash Miniconda3-latest-Linux-x86_64.sh -``` - -Review the software license agreement and choose whether to accept. Assuming you accept, you be asked to choose an install location for Miniconda. The default is to install in the root of your home directory `~/miniconda3`. We will assume below you have used this default. **If you use a different path you will need to adjust the paths in the commands below to suit.** - -You will then be asked whether to prepend the Miniconda binaries directory to the `PATH` system environment variable definition in `.bashrc`. You should respond `no` here as we will set up the addition to `PATH` manually in the next step. - -Append the Miniconda binaries directory to `PATH` in manually in `~/.benv`: -``` -echo "export PATH=\""\$PATH":$HOME/miniconda3/bin\"" >> ~/.benv -``` - -`source` the updated `~/.benv`: - -``` -source ~/.benv -``` - -Create a new `mlp` Conda environment: - -``` -conda create -n mlp python=3 -``` - -Activate our created environment: - -``` -source activate mlp -``` - -Install the dependencies for the course into the new environment: - -``` -conda install numpy scipy matplotlib jupyter -``` - -Clear the package tarballs Conda just downloaded: - -``` -conda clean -t -``` - -Clone the course repository to your home directory: - -``` -git clone https://github.com/CSTR-Edinburgh/mlpractical.git ~/mlpractical -``` - -Make sure we are on the first lab branch - -``` -cd ~/mlpractical -git checkout mlp2017-8/lab1 -``` - -Install the `mlp` package in the environment in develop mode - -``` -python ~/mlpractical/setup.py develop -``` - -Add an `MLP_DATA_DIR` variable to the environment - -``` -cd ~/miniconda3/envs/mlp -mkdir -p ./etc/conda/activate.d -mkdir -p ./etc/conda/deactivate.d -echo -e '#!/bin/sh\n' >> ./etc/conda/activate.d/env_vars.sh -echo "export MLP_DATA_DIR=$HOME/mlpractical/data" >> ./etc/conda/activate.d/env_vars.sh -echo -e '#!/bin/sh\n' >> ./etc/conda/deactivate.d/env_vars.sh -echo 'unset MLP_DATA_DIR' >> ./etc/conda/deactivate.d/env_vars.sh -export MLP_DATA_DIR=$HOME/mlpractical/data -``` - -Environment is now set up. Load the notebook server from `mlpractical` directory - -``` -cd ~/mlpractical -jupyter notebook -``` - -and then open the first lab notebook from the `notebooks` directory. - - ---- - -[1] The `echo` command causes the following text to be streamed to an output (standard terminal output by default). Here we use the append redirection operator `>>` to redirect the `echo` output to a file `~/.benv`, with it being appended to the end of the current file. The text actually added is `export PATH="$PATH:[your-home-directory]/miniconda/bin"` with the `\"` being used to escape the quote characters. The `export` command defines system-wide environment variables (more rigorously those inherited by child shells) with `PATH` being the environment variable defining where `bash` searches for executables as a colon-seperated list of directories. Here we add the Miniconda binary directory to the end of the current `PATH` definition. [↩](#a1) diff --git a/quota-issue.md b/quota-issue.md deleted file mode 100644 index db09687..0000000 --- a/quota-issue.md +++ /dev/null @@ -1,29 +0,0 @@ -# Exceeded quota problems on DICE - -Apologies to those who may have issues with having insufficient quota space on DICE in the labs on Monday (25th September). - -This was caused by the [dynamic AFS quota system](http://computing.help.inf.ed.ac.uk/dynamic-afs-quotas) which only initially allocates users a subset of their maximum quota and then checks hourly to increase this quota as needed. Unfortunately the amount of disk space needed to store the temporary files used in installing the course dependencies exceeded the current dynamic quota for some people. This meant when running the `conda install ...` command it exited with a quota exceeded error. - -Those who experienced that issue should now have sufficient quota space available. From any DICE computer, If you run in a terminal - -``` -source activate mlp -conda remove -y numpy scipy matplotlib jupyter -conda install -y numpy scipy matplotlib jupyter -conda clean -t -y -``` - -this should clean out the old partially installed packages and reinstall them from scratch which should now run to completion without a quota exceeded error. - -Your homespace can be accessed from any Informatics computer running DICE (e.g. any of the computers in the [Forrest Hill labs](http://web.inf.ed.ac.uk/infweb/student-services/ito/students/year2/student-support/facilities/computer-labs) which are open-access outside of booked lab sessions or for those who know how to use SSH you can [log in remotely](http://computing.help.inf.ed.ac.uk/external-login)). You can therefore finish your environment set up prior to the next lab if you want though it is also fine to wait till the beginning of the next lab (it will take around 5 minutes to complete the installation). - -At this point assuming you ran through the rest of the instructions to clone the Git repository to your homespace and install the `mlp` package (i.e. the instructions from [here](https://github.com/CSTR-Edinburgh/mlpractical/blob/mlp2016-7/lab1/environment-set-up.md#getting-the-course-code-and-a-short-introduction-to-git) on-wards), you should have a fully working environment. - -Once your environment is set up in all future labs you will only need to activate it to get started. So at the beginning of each subsequent lab we will ask you to do something like the following - -``` -source activate mlp # Activate the mlp environment -cd ~/mlpractical # Change the current directory to mlpractical repository -git checkout mlp2017-8/lab[...] # Checkout the branch for this week's lab -jupyter notebook # Launch the notebook server -``` From c400f60d6623142021e08227660e2af7c23cf365 Mon Sep 17 00:00:00 2001 From: Cong Chen Date: Tue, 26 Sep 2017 08:33:48 +0100 Subject: [PATCH 2/3] Fix read.md link error --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 45e7c2e..9ceee7e 100644 --- a/README.md +++ b/README.md @@ -11,4 +11,4 @@ The code in this repository is split into: ## Getting set up -Detailed instructions for setting up a development environment for the course are given in [this file](environment-set-up.md). Students doing the course will spend part of the first lab getting their own environment set up. +Detailed instructions for setting up a development environment for the course are given in [this file](notes/environment-set-up.md). Students doing the course will spend part of the first lab getting their own environment set up. From 78668638a5da0a0bb2b4ab576b0262d35b67e142 Mon Sep 17 00:00:00 2001 From: AntreasAntoniou Date: Fri, 29 Sep 2017 17:54:05 +0100 Subject: [PATCH 3/3] lab2 init commit --- data/ccpp_data.npz | Bin 0 -> 350007 bytes mlp/data_providers.py | 97 ++- mlp/errors.py | 44 ++ mlp/initialisers.py | 65 ++ mlp/layers.py | 139 +++++ mlp/learning_rules.py | 162 +++++ mlp/models.py | 67 ++ mlp/optimisers.py | 134 ++++ notebooks/01_Introduction.ipynb | 34 +- notebooks/02_Single_layer_models.ipynb | 833 +++++++++++++++++++++++++ 10 files changed, 1547 insertions(+), 28 deletions(-) create mode 100644 data/ccpp_data.npz create mode 100644 mlp/errors.py create mode 100644 mlp/initialisers.py create mode 100644 mlp/layers.py create mode 100644 mlp/learning_rules.py create mode 100644 mlp/models.py create mode 100644 mlp/optimisers.py create mode 100644 notebooks/02_Single_layer_models.ipynb diff --git a/data/ccpp_data.npz b/data/ccpp_data.npz new file mode 100644 index 0000000000000000000000000000000000000000..a507ba238370543bb52ad9a169bfc681b84e19d9 GIT binary patch literal 350007 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 MY1%cPmzgfj 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%0Dxj9ZCe_|LKqz8|hT^o^|&S2OPz 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

Z?5bxjcWo` zxsoqi-CTm8&o7->*4lAcXI(Lv;)f|@&UglsV_+%<(ehjL^0o*%&7?v#IKcWEGIa{E$1c^&#bwotDWSp=3F zU!J_5n+7_Uo9^svB^ch!t9!+228JHKGJZ}MKZ!|2)b?hbDo z;OtWo@gu){(6Qu710Oeo+`)jWVR1(ranBtlrcvfj^d+eF{_GopcooTp8-;^-C-MZF zJ#!ki%NoYh&o_c?%(SGh{T!rf&jtw$g@fa~a0lr<8GSw*ZKMC!05A3xMUZND}m3c6SG?>bokjyVB(eM|B1oooKpKFtMu&S?GY0+3)~yK?i`(`I~e z=G@5r%Y%49OQPoXX1|=TBqNhwF)Z>P5x;9egi=1K&vV;GFq2*)+1GFdPI|@^sR#^0 zw&S`&{?r0|Gz_=WDrtm=;i;a54;xYOrBK`M!5O%`crpD!MK>yp5Bdy!nZ?}waW11Y> zkOv%dkiMvQ_QcZ`Xc10Y5%p+*=moxP$;=tZc(Y3)pn4EwqOXtfj!yyQk5SeqV=6G4 z`^Rv7pui57N2C4Q7zwm);vvAmukhgth3VzwG69>MGU=MG9*6LUXBv-fX^&MKkCeg4d_MJr# ztW+GY`F9ST(<{I7y(j{C`t2!aUFT7jxp9XpaTS59)=5UcAB=eUj~{I(gSpSuSlv&9 z7(L$o+2jG@`$+Ssf8Qo>viZbJ=_eo5K9}f!@f4HXIVFw7dZTJ=d&~Ug+{Qf0NhR2w z`fm>S8~94L`ozP>^Dcf4oeTu2$22Ahbw)x^@%ORola(kCCt{ea)B`c9tM~N18=;;$ z)l2t(gq`<4SO5FR?b(zc{}?RIYGhvzxZ>v~-G`w!=wc?wL2%DGEP^#MiV#Zu-~D!x*B(xgnJ z!P?cl(ON|+%Cra_{x>rLPK?yI;&u_BlUTIv<2QD~M!(8=Ce}@E{~@*~Q>y{kQ(ih5 z?q9$T=Kmz;*Mo4c=~UQ{;C7G`TBF|cod+`Ylfoi-7%Cl0lmapru&QXk8rs)GZ^Rb| zvThe9x9GG~ykCYIWrc0qlPFlkpJnJ6+K9sCFYjqxTg4TrQK8J-47mEX<()T)3`xY< zHx#i66xt=c@ttWFa%T*zTO3BQL5-A4%3)HPV;J&2kva<8FH-GRGnR1N{Xf(6=Y9BB zj&IyodX7e<5-ieYmO2-omxm_T+g3uS_|#be?VN z6m5a845w=MKb^)iqUSX^-Z2r5WX}!#?|)q3S*243)C4&G$MFK)l~q_sSAR95(g0fX zlZzKl&A~zQg$3t;Ul5a&^?|#v1!!Z5YJ9olxZ-x~<5rh3xLDoNxU+={b@?#|tv=6! z;rqvWe`70fr@Sq*ugyF@EMT<>i)J7k{L`GgGdB%4Je=-r%*~_seO8g5Ykkl=cT)Y% z&knfaDPkx5dj#hSLT+_iRe?TH^y>3Rv+#b~MJMr;7A$V}k2CZsfQjhn?*;-3@aK|H zZ|cwxI98?_Fl)}>3zgYOt(H-={=j!M?CcVRSme9Z6 zykYNr%_cA1clSA253gSe=x#}C1~!(GrK#veXiun4KCsDEAA6rhG00MIq>iz{@fjWA z+tm1Z{w-wG7rmiguRaCFmjVrc*i-P<&<;0Ko-RC*B47NgW0M;%Te1~C9E6&bg}aA< z0v8m|4tmK<;Tg%uEv+VXn3opfVPP@>UT0_Z#3LA#qD^(Wt~PBaWLePO*gh%2$B|a_ zojmRM+k7I8GBXRpGjc_C2XaxM@{PZ2(KMJ{IbPSxvVx~7@_9Tb=n0}6r&7%$>6Etn z6;_+itU$f3Z2aivzK$KcF3Vj#2W)>M_vNq;!Mnu^YCqX~a3#@&>3P%_@GM(+8gZV2 z^jk<&UbZrG$M|pK^%9r3~?G=6HcX41Mb=WcZzd=w@tUT?!zaLB1 zZ|#-0Zij_!H_tu|rlJF{>Lj!NB#2!1+dbhybg#vdYm=Kfoo(e`g}k$ z%Gny2e0Lu{;={cR~a5}qXp%DY<+;>QfhZMvKM!L(n;ZdGIe^{adKJ-hc~^FGgfvnm_~8GVLh zRXJ2BV2kt9Nt}hSWxJ~v$=G_lW>B@lR=Pxm0=Js)ovnC0g#tBv z|7u>)5yt$z9?6YUFz%0^k+WFJ+&aOh_IHVr=nNE?sCb0` zH;cl(53Vw}O@RBE<@Vewizty1TA}#55#^F1p4R14Q2t?BA1SRJ>q~%1=fP%OugEy~ z@y`LP7Q^dphAj~KAH%Lm!4dc@e46#MKpuS6@>qRdF^N?y`s+-eTVYNW6?IcGpkPg8 z+od195U^D7sM)g&9r?Fyb-7K$p^=xj?Ye1LK&g#s>7#)8vGAFi5faQ67;4t;Bg2jN z#vMAXWc*fe^rUIn6lCl^X@*Az;kNN-ZoBkpbUgDf-*1qDS=RYp^GDx6U61pqjv)y` zD{P`_bjaA(ndn&A+yQzeEr|@;W4NfEGHEP1i6QI~uBAqUkajoJdYjKbFkC#~am}$2 zElxP@<*Z-9KBredjHAY|W$N;@g6ky2tnU0?DZGkD_xu@qWHgLVL|Bpv|I$FOR_j|@ z&^U@KoV0)Vr5CJIPR9DFRv=kehw-rIA|7h>dABTEi)LgLDB!mo za^c?uDn?usT&5O5gG-u>#?&bK>U3oOu$c#*xwE^Ceh*_lA*s@lZxIw(9@i6tSCD0* z_E+AY0%*?G|EXd#izk=3c=xz8prw(q-Op!a__yfT5m-Y(+J*K47wIl=_jYiJUTVg; z#gdNiZyIp!MpYC2P8wj=b?tMhh0vQi)eu*_05$iG_ni)&1NX}^KeTxU(VOG=%zv-f zA#;D3h*@zuZgFO!NHg?-DBDNApFxvA|DkG>IyH;BP1XM?71g7TXb|u5-P1@8nfXXG zm`92G))^5#p&0#kFzM-=RlNUD#m6tA0Dp68=I7jOMCxnG!-hwl_`A`3F8=Zmybw)d zyoA5uNZcv~3-voiEZr09vG!qE zd=g_k-gdmz8y`s7^yGg|m-AY2i%C|S9dQC`FVqA*e%=AMWy~#N8GgZ?guzZ`1JMSgJv;bu0z0iWgOo8;<$I$W)#|U7*_2^ z=21U-*1dO=a}MP_7k8T)Le4k!!FF`>;5_p0k!5fX9^7Evq5qjqN$$V>><-pl_}Kci z=0l5BAaiLRsC}IUGM=f$bGKID?z(5ft?n-1;drOKRM&x5R0dA^Um8Z)w+yGgkm(3| z+Cw*goSp)y*U>NbIgcZ=^o`bLW(Go*ZPCn@oi%vwmaplsPd7ZseEA~WYy#PJ12q_Y z7zw{)ypI!dh_LM2H{(Jsh2~Q>!ynA&@yrSU+6UfcPv$G%PuM5VghW6u9P#0_NzfLe+G@)Y`=!dPpLwFUIrqOUD zlO`%T2V=Kd`OG%+{ei#8hXYJgpfh>&KuvEC&RWXYN!lj z-0{V5azhdH`m?`^Kdy=;YWvr(Hs=DLl-#M*uQOoDsv4g7cMR9~Sgq!zsF1H8p1RaA z13Ub`?%eyn1too4>&!0IKujHX<@wEhtRJs0(bgluv)_{4pB|@yVDnYuXWoNA`AeM0 z(&al5u>Dcv35-fjP zk2owtfvrF8d97&AV*rhF*Ilj&I1n^O`gV8@L$}^2VYlA&FUv52>&sO9D6aSLsLCMJ z`fvXf_TVp6wK#acTj*QylwQ&V0tV4ILL; zq*qX~z;DRcKZzEUQZB6cBFzOlh*Jy-D;F6iSRQ$LBb;!BHtw6d4kWLJ-+n)P$NDU`g+oN zc?ni8wNvR{IK%8xNwbIGW}f}H&T}nh1O5IEdc;2^VMo!;{w-QlKs=WneN=u3E^+UM z=c_b`Ft40Tlx+iBvu#1$KI?cwBkaNbfO$Cb>gCA|>t%V;v-oHgNC3v^NQzpTHn!04@a%5Ec_$Sb4ynQ_xkWW$1X*DjM_ zM3JZO!z>9)yVfsvX>HakqkWI$_d&>weVebVx_~)*{%(87mI{Qk%l_25Nfd13;i2i! zQ0r}=w)eGu4EvWWaGgd4lEI6H=eK7u#UuLZO2GtNP+9Cz(^$b>J$d(O>MNjiQXzEw z*%-vvl*%8FSVotK*9u(RV;I|%owMgc4oII%8`*KPAJerxw1)U+!C}vvKUJ=M7%iAh zDtSY%6tS<4y(Fp+7)68&XC`N%`ikF6*8JZvIPgjPkZdz5k8!apZIpxOb;h*)t^UP%C{2@V z=6CHt9sLFQLlR zxmu@C0|8POK4tF9hRY+iUh;V>a8Kd89eu+Xsy>tK6?n9nBan3NQ(e7P)2xJ<1 zG4as{?wZH)85_sS#%Zt(QCUiUS&T{wi;h3z>6DaBncq15w}7RiM9pU55oGDTr=FSD z3L&CZ+y9fF#+idh25hztLrG+ao6HIYT3R;tC~Nn?qAI^qd+Z_}3*1Y%`<(*GJOwSb zMFYU}CidX*$PDD&{q7A{UO#@mx4+z?HDA~9dBB<0-02dm&i*CsMQnwu2O^FKd?lk! z{iFWGD?Mzk3zb8cs*7{_8|z-GUz2H0Y)v(x6k{ zJdAFwxOe2u3Vu!x8YNBkLY6e^D{34K8N}b$$(`+jl!;+>o(sk=#>bvi}aF6!U2u=@2TPApj3BILTIrSrxP^8 z%ZAxs^9n)wYXSvI%mj>sD>!OZ7BEw*mkiaR9pD6ss z;Ts_}9n=#m@;TP~!DXu`MXYTRy;vQSDC-l*YVv3Q`sgtHYj9-i*D5MW67?{x)0-2+@M?P zBF87;{e!wa$+HyL!yDfdc7_N#T6#UC+Z3$&Q@BO{#3FQM953mVE5>bCWB1Q`cLNi* zXxAIQ2Drl!b8qoh8+@telTGED#N?n3p7ixm$TG;-pUvC}+x#7qd|29HI}eZi%~urc zyrnHDev<+!33C~Amloker^e#6XghWeOUwGp4}zTpJNM6zOW60YEaJ}c0GjBviJOY| zKykzMBh23QkVePH*?zYj!med?pQP17?N2U!;wIY$ z@GPCDKGGV%OL^DbPl|UzO{A%hPHZ)5qpMs;UJ0B(g-=C-s31cBXvtr12xYYo7Teek zV0_Bk?X)rm!o?Kpp3h?4=yIG!jQHLMuSgO@Sf;4Vbdl;7DqrBfM*CKS%e`}%0I_j)_J|65dfoTGb=k;d;aeIZ9Rl)Ht98d}9_ajh1pth>kTP6k0k4+w% zx-ySHwpv`0+Q`QL@BND-59D87J~)ZrQEbNVX(PVm|JF=-N&~^2tdq$nY52D7L(B1n z5qNy<4_S3`0NI$+bY+e$Vo1)w>(RntP%7PRscck^=Vc0o33()psxB2-?xiCikSx$SZM(+YHSX&7}VoCfs= z7DJaaDIl}O&G|al0FsIdsM94>_}OOT;eDwCe74w6Gp&=s`9zmx>v|&^>v(g-^9|yp zdB#nCMlu?F58?ED(*!P@KZNB(LcvAx+<&VkoAoYz>go8oAqY89nsTXp9_PL3_jag+ z;mX{WsG@T#7-4$Xu9-FkAI_NaJnD^x5S!L2&>-kb3;pKlDS0 z$hNu>r$O-k%WJZP41|*}mHAv(>mg)GVt16sEbPntY?2VQ2LE+9^oF?(q%KQ{k`1ug(>}PUTGC^Ix9=lh1GV_jRG>Z{!hd`l7N+ z_CXDV#2f0Yt}Nqh^#}dqb}JZv>3N4QOEaGHikCDvP!6^f-TQN0-5~H*e98Q8Dw18M z-UBXRZ%WJVaIQ{Z)!&eK*W3&-!l}v(s$_85D=KubvPHtF9*8sv0zZ*P(9>SO?(Gw;%2*3Rf|Bq zpuPE+eIov;Wz`}6WKe2oTrluvtA`fe%N-~0H-oR^S^J<(KWR?7HZ0Mb3un&Pj6GIq z1XlrhPDkD;=;66}>EM+Gu>E!S^2RBIe{%V+&05^h@$}$eC;teL4)gjElxH!$CQ-q* zfR#W~=&g-p%Y`HBhGzF#rttRR>K9#)C}{s#d%mM65eAdC%hO`|K~&|Bn_^8Ja>Z;P zEa=L__5Jq(&v`K^xmp#(89brjc$!)LnDG#1-=<2v-sFr^LY!Xva|_UEkB1tqy%KxA z1QCqhks!g&dHky}0le8o_YTTZVE6OaDrxZ)JgAZ^$&-~2KBM+K=F*n2ws8JoH+=>C z+%Ks(dVd-TA)*0~=4vsE`{H-E)fJ>oN!DJCY=g>QK?l?pT5*0QwN&Rw zgWi3rt_4&oFgEA-oV6Opr%AOj6GFpqwfc@$c3?lG2}#7TsZwFDdx{jxg%;eo(KXfq zO;F2RL#jXA3BOCfDNAjgf&FE%JSGPzP^xa|Az|MKO{FU5a`yhl!!~PfpFVbiq4m_( z@sbg6KbU{!!%`A_5FP0u^o^k9?VkpeKff@{=#lkbnHh)|Ikczwza|v2-9E)+zJSNa z9psD-f^*FmIXf%Yu%|zyiT~~@9tr(D^TO62D!t0CB@+gK81YKGM{|=Cza&1k zqE2Jf2ZsyKdRUaqesa?>71f~nwG4Mn(P@ZW4t7a8O~QL@;c<$5BzW^PK5dGFhN52I z?-Yd%;^NL!T6gOVJY~$9>r1Drz)+hYGtphJ}V_?!1sI4*sOyN<6504w^!Zgg;~-`UTy#G~ropY@#+Y8sUhsMl@KdUD3~edi%`4}|Ky{1ct}($r zFetxz&-2wFmNb0aT|31{i2J=`ZH8I_D`I&}f&o-qKmBR_OV%s|m|HGAWh7x&!uWky0#srq3pDGCY@;&V9-X{dhRD|@TW0D4+Q(~^^xuwyjx$ItfzD4

    4+?W8@#Nt%O`Sg&3Eq+w1`2Idyv$HY(7#iLhi>?6vt=d1 z;f06U@>WZj#rym9#YQ6PpU_em?`Q@aTJXbf(sMv6%nOYBvAOP;xCe0_3lRTpU-aF& z0id}v-Kvgn$L5?v;+;xMFj%gj?w-~OFXhhGhi>h_*Ji)>(aSYqr{u@AKCyA+KU*O6 zh*SwB5>BJbv&ry5*kRA8b^T_4%}{E;^q}v-53yy9c^K^RwV+$-AGYah|GE5P3ihTF zyftrj;Th(!jeBu4xcls)?1o4?O0(KOJbY*l32dB|cQ^BkC1d-673>B5!n~KA9gAp> zBK>nRRd7LS&x+m1ALK3&V^Ey!!b2Yp2F9?|qpY!tOK?#)a!IZ9rAN$xJ_j-W5@{G1 zx8~)3dpQm(<-wPGSLZ?KpZede9Sit8ry=TKR6j0@XzB^tv_aa-=eAK%&2V_lw)w}o zc`%#Tbf_HZgf5AtIp?u?XlgmXc298$%2&G0Em@m!haz+89-jdSdd>3JHJ1Vx>6psx z^rrD4e8UqDH}m}h02{(=pE^HNSLbDSNVtwRwD9fNudJZ&V z9Jd4G<(VREt>w+*-{frw`4)GvsSNHf?PT-+QHBDMFF6ML2S7sXnf3A0E6By{V{@Qs z45IJX>C=7d2UH*4_W8kgtdI2*8W(SYiwT@6L7N;pG|;xM(~|}sq79F8={jK1*|l|a zFbR}%P#)vr0NL5hcSVUsiMvJF)9XS%oL}4NKU+zIdp((2RZj{by|zf$ za_l#z5Z{Vl+&T}seR`oM&UM0r3xE7af6hbZ7@w-;-z6|LRPA)tXaZ)hRi$t_5{le; zA@cHVA$)l7?aQh#4Sr>KD1}MUFg1PmMprQr>ISEy>JK!4eQf!2zpYdl1Vyg%&Sd2I z;xKxjZ2%+d1y}a&Siq6LHk{tNWN1had9QGj02T*W)-vKJU_CSPgjOmA5;TrRaXC(d zO3&{D%z5J&t?9PP+dBr_w?ddCs2ixWZXjjS`4`>9Z(mg@9!A6AqV~*3Jum^iMDOiX zkSnYozM9boI!+w#x7$v_!Fz}P(_om!Xky04gHMT&BtqM-o<~E6I=g>N9s^*N;k$?W zeiesR#NVab{6@ERPh*-U3FxLjGu_dp!g_nlSYu!jHpw?E*l@N%ZJtTh`9T^QE;JnF zZ6$)tj;G_{6-40mXC>_u8b(K9mTvzyz2JSn`hEWj0jhio-nlE+K``Gg$|2!dD1D}N zV{Typn8us3wU~#2_q1}M#NQ6w^Q*@4Iv)dJ`RQ4sqdkpS=j425d%_}&v`TO|wfDdj zTf5^%Rtvb;*c~w4PXQN^19XgR17IQlovy-q1}9sh3Q744O0t!)7u7V$0N(3%`}0Zo z_Y$eOZk&;zrqBId4w}Jpj{SD9A_c`~R`wolUWH^Sbhpm!fYmcOyyxU*anD90{l)<% zLUD^ldB}-z7=Ot+`$_wM-zyJ4H&id_coMWNN z8Y7U!sw?%Xd>ts^?jDtYo8Woa=aZTrNciNB1NC%r4LG$xqWBqsn}^@ob4>bK#0wh zewE=niTY&omv;yx2o1Rt*7%_os!Dgz!Y}lpPKk5kqX05`FFxWCG;X|{ zgQ)v#;ZeKWFvB$<{J)FSAX`2V?Q)U`;&r46M&VJk>aVg{Sg6ImJv74Q7iExZ+T#4> zKobm|Ymp;`P9ph~_G;8|61erK)1B;_hIWE$tTx*QS_%2^WFZkcZ*qR$edz~;=9u|x zY+FRFOrE2ravK;QxR_gS)`GTMG$eZRyKvYfTZ>_|304{Ww|(^*!(ORy(TjJf;CfK^ zv_B&OOO?8pQl|&8f$lpy>+lFj*L*fU!Sowll8Ok<(1rUL5*1B@M?hotm2#~Y5zBIi z>iM~sVB}ja!+pVIluGPqF)b%TtmjmR4b1@##63LkWZHsJRp7^&Gnn71lpkN zb=qTAl{t)L^L>4aZV(8@BV3;hAA_-?NrF%y894l!R6oC126}G(2EEo{_&0UC)U8c;~WSP8Duwt|a^? z+Jfy5J}RysVkFqa6@#= z?DD;+7huwb2giwt3>(uJvs+We;>0K#ij$btHu;0N*u}Kpe+0^w%Xu6<>Veq15MZ7- zgaTp=zR^2ZpjLD)jrCkVyyli}iVFD)T7rESl%*@7c*g9<>!~(ORf*rlu|xvW@8l0< zO8>xdK*C_wmx4Cwj~2S;C_v{_^UL113Crd8{xRG1+_TgB_N`9#gMsLERrSmBK=7?5 zpQx)v2KyT|&tML$Mv943&Q-8Y?BB@Z&N*04@@5iM9LKjVXYXHaUj(|tl6lD{%P7>= zlcumG5AJ=YsP0>#!YwPwlU+C3F}sJ3dZ4TyGQuA`b>7nj&hO(X-V`$aiV08K+E2zv zUwf7~nZ`|?>#ir7Ho~DpC-kl|wZlx_0=5^#Y z+H_ba{!YHff3J1`KV}lPt6W@wGcSf#R2LI)-z33u=pha4>}phtHFQy&wto6u1|8ww zVZNC2Sw$!^bpM?7r7~2%d!12bgoLzv z;6j6gjSq*x_IrUhX=M^Or1^!;92kM)FQ$wtyc^;6z4JcyjLpcCktlsIXp={bO2gu| zRf1=OOZQFEG#H8Lyb)TfMZVu&$^67#_!w74KX_;zawlyqJ3JdupMPYl<5vodDlyAE zs0qMTm0We%I}`X;mgm1I(@bz(+^rk2nY(pqjMQgV<7n{RDOgsr3`TCJN#rxqDQz(E zF#1<+`sktBtUG*kN{amod)3sk;5L!*$dmsTu=4EWWkF&WkSZ?AJeb|UWScmRLzEV1 zzhuyRo_-81znfg9cb|d^JE>7C9}+^K2U~94=G@C#dr&<52Cj`gFRJ=Mh8_Rz2<;Cb z;*KW;ZI>A+ki+#Mj?|h64_%`Ziy}s0?(N+5^@|hOOjEEPaGQX=CtlbMnT~X+z^$Z0i7Ihdp%AGR}f82Nh~&T_Ojd5VTYcEUf6 z57ff^70$%S`37*o(*u-S*KqWu7@l0wSlY64VdyR)>-uLI`}jX7wx}Mg^JQ_1a|Kcuod-BR5NbC zxXK{a3g>0m!OPZ46efbk!aey5zbLpXUsFqR9~ts<+0P304^}OMFw0{uqxY&L@ zWiO#INIhg{PbR(e+zDua%zwYw=(^F{m3Cu5`Zix{6TL!We0N>Y!l|hz?-%JP z5c<}TMTOXkA&+ujm&$B(z&_Us*ddmVE|p_lFgl#17$b1L1zi%>nSb&22Fh zJB4v7U!U?AQQ>5rW&F3kDahV+-0E8FH0BU5%Ue90MS}}>;}}BwaZ5_v;_(*@gnvDJ zOIae-NZe_=w@IfDEo#MRF29q}wRS-*_#Y7-t=yr6J5#ZKoX0DBcnp$BIZfZhn=tj2 z@_JnJ8mvx}3UXXc@QnZo2m}-m*)1blG^5vlP_H z8A*$<{rr@6s9_0K_nI&LzS#lACa5JM-Gwu2FPs=nsAv*oa>h`t7k`+Moz-4#u1`#6 z@2tWmf324tqj#N!d3_f{VtyO;oXSX+KRbbne~gTj1Sudbrfj>>nTc}px^C+7vv5&9 zP39+I9*X%BPTszkx>=8DX4xLq= zj?6T`wv*TOwDZZZWW!ZzwM0+YK{cn7f3|>b((>ttV#gu)=R32k!$lY}pY=koZu7jG zVFwruz$oGDKKkS}e3Z@0$hcgJQPHY9MpGtWgj-`TQE&opFzmE99GXDd&8_=ozmS1n z%Ff$Nx(NQd>IMuX&4D8uuVTvjDD1TFSoyJ8zv*QH_PX55m=WpUwAH%-3m+I~-G~@P zRYjRXUJ4ECKSiD?c)biR1apbL)eiXim7Fu}H;N8^e=Mwm7BDJ#XXr^e|Wz9f?bN;~G2oJuxeU&Y(AL%+&FO(xjsRL&?mb8)id zXmo@0r1)(Sty$a_b1mH`ZXC{9OW(Ks#z62FpDD_qAHd0vSw8V?G|bq36yr?#a6v!2 zk!89J4W16@FWb(;@dO%Q6?X$V+#g%~Nu)r zJ(yUiGX^*CP~et`Dijjw(>!yA44y~+y-e9tjT#jl6`sps1#!Od7j_yJ1;Mzz*@Hw_W-#nC4AE$MmSc%YaiDUgca*JQ14 za}HpcCnw_xYBL^j^i6Z_pTsL$>Oa2P(u;2gfsJ8q5T88z;_aC<56n)l+?F--VYSui z{FN3dWM;mt-_0`(g+;cv|k4chH?c$rB3Jhh#Kd{)txHCde) z@Yq1ZL>56UKx{}(iVO-bV$5E+RzvlB?`y{_s^DxKv+o(j1vuX)F?i%-J;bHR^lf!t zLhd`y{_rGprYQbruA}DAObRFF}3qZ%xKl_dNxo z;s#(SnT}BM>zXEm^(b1O;)qq`{)^uZ&hd}>4#B*T^!*h336yh8IJ|Lo5mpazM;@oo zf{hnPx7-*TfW{JjwK%O+Xtv6_QoXAcG*dDz+!CYW7cpb=_m>z6>7|xH6br$ew_~<$ zUl#CMW=w_De_v71W&Dep+c4ZJx?_9z)~0VAQ6F3XyMVW3^1raMjlt>k@FTS!YtWXh z_u>=BW!!uBt?#o<&bAo~+c@bxhOFmbR^1aCK*I<#55d0_n9)x8K5F(CtX>m2&YSgs zPHoZnN>B|X-96m%L}wibnCX4{r&{r_r$OdTY9Fv3V11z3P63XHy(_{ORzUiZZ{s*i z5A0qRPAR!R2h6?_XJ^C8G47?YLX}c38U>uQ+8($JzAyF6O!Vi_wAt8j_3aos#a&>C zscy$HKgGlW7+5I zGl8mL&03Sx2BJRm8cBY0K>xh$Hu>TV2uO6kVTMiq?HSiO)H(wJiWw|t3@9L$bVee@ zdJNrPdt5QQKMQR2O5=50n|$CdtEM5>4H8Fo|4YCxh;SR5 z8VMT5LDuCc2&BLr8?B>TH+j}Zx>hC9r~&0I2l`w+$KeT)ntx!1jL8~mLfEtjnG!As zI;DCcXnj||u+u84v6YD3HKk(V(jgOjsW#vq<4?MxNJdJ3`jMsQlW<3Fz(Ne#+0Y8P}qh0f?&(j0oDDoEtK3)Jt!)e=x-}=CxT|i6Sdlb<1 z2;sRT5!sS${^Oo6#fSW+8fLGj;oV+c?lR9Y^bFhfx<$Sk=J=bWj;JDxe{p!~jmqkeU2ZeXqT4AdF+@h}FGnsbcr20_~vRY zhMbKf)3W~pEtA2s;q4GO`|@9L4V38!g&|h&q7}x=%Ls z!<`ts>oh}yPwlJ6m|k843S03BrejlJH~X98WmOyg)>+9f{<@0cpM4nLW>;Wcdp(-) zmEje3d%}gYG)TPVw0}Xm8uuIS68N^sQ>5o3*Hd|kQ0xr14in3vNG-|A(qaYQ^+`;g z=9|X4(w%ub?v4PBt(mf=nh4L>)%z+kDfnn4u|50pJe;05e_ljj0E7=nee3s`!M!If zzObZ{@rx)(d%w7YYByqD(mf%;@HaoxLz3-a#4dGU`{`bcqYUy(h^@l0HeKc|!ln3j zq&d~UVH`>H=Opg#D8}g>t{FF&x*?jb$$9d|1Z?VEYA-) z*f!QZndaJ$Z!%&R_?jpnbdDkEs7N1<9M#$2HX?((p1bspw=^(r6F1^8N(A*^*KH;l zEAi5p++#YC73gburBm{07TTY&ie*pbK){KDq`cK-_;Z9eg!XV2E*xS1cvpE01Oxin z1$(F{Govw2FFAqx934G7o^TK(cNbikZ3Jzqb7sH96EPv_#lCjo-?+o~^sn@*O&HFunefE6AIvHx%q;rJkfwZWUUhS? z&D5H+6e?G6UtPL)>){D>skurj8~q2t+^^mA&aGf)f|EtEOznY|7c+OsUKuI zjG~lJ(Gy;=NIhya9zx&i@|hns=JB{fR({=wY4jY~R=&1ZyvyXu$!XyJW1{6}(g1-upG){$ z22ndKWc^Dz6?B4r8N6101wP(Rrh~_-u=tT*Q<|-=dm>69vjBF z+`?|Kx?`%KE!YT3>HG_yO~&z-6szg>x@zd1IPJ_`F$}|cXHRU&TE`pC@40mPS23Y< zWTfnB0oLBUpf3749|oK%y%Vxa@K3M2*zOx;XuBG`Ox_rSi;vP)%;l+ITfEUT(Md)Z zy?s?Tmg@2M;EynEs|Lt*P$klRTZRug-lxMfs_?3QSE0Cn9b`4%U1?_CKq(!=UD266 zXhXWkGVyA2ed5D`8|{Ozb!h#Qz;;HZyevPTRpwzVjC&%pmB>iAMWxY=sLx=}yH>p) zo5y=|&S5nTi+Jc)-XFd{6W}}eOmtwR8hGlDk@%_q@DqFHZp+)9;P7kjA&xCfN^bVm zvmWv7z|d-B`u7VJCqF!5;8CJiayb02{M^?Oc&WDG?YNm+6C9^cb5zdaV>D5V+(dvNXEQ-T8Yo9pWvSEIgqjRd+R) zq7(%QI9jofZd>adJeAt?LO6_-3NA1x?U>yjQ^vlFU^gQZ$Jjss zam`!0b8-E+u+wJd&Z$8x-m2(3wlEL**|Nu-847WW#}WPEu6eW(&=oA#prAx}cH}tU z5KOHbd~;$L#$6Zl%rzEQP$c0Kn@HI>$}8#IJVYA@VibExq7xO|{@jRqaHtH=kQ3YA zXAVMnj`FMSpH!gVusPs$h@SA4PyASb>>%3SH58w7?ZeuEgmDtF9u}jI`kd$mVvFz&G7HcM&!R%3TRp?UR=me z#$O~|%SkH|1Vrau$Yi2Hzp}&+r|dH*z6R}lsY6(nJg#E5dA}us-|t;}-Uls@T#B#P zO~H$mQ^wa#Ccxs+MKkM(5e&TaaqQczdHjlD0vwOl@IO0`&+5rcgll?&z4PxEz&vu< zW!jU5!!@Bd6STajHLf3BWTl||R_OugQ_c5BC9_&J3655?i)w97k^%Ae9Xahr>V2@jBOCpcT|(ZqYFZs=eC*N97N?^d+$BVS_L*K-X0Dr z6_NgdPesf2!-pRr{p`U!*Jr^NdlrQDW zK`Pjo-moTb5FwuKndq5XDwNt9M%Fx^0;Xv@gCG9s=-6vN`;j&bk-fhzHy{xWVw>Mi z6)m85UqbUp#UMOv7WwHVv;ar=Po{6vO#~~=C7vrCYv?;rq0}rpjK8hnmt5N<{+_&^ z>~L@b7K~S!I{%N5^M2>*asRkIN+By!Nu)&YjEaU^(jb+TQbZ+`Qj(DnMTC%%kP#t~ z8QJcaof)$CUN7Udc-g)_f5G?Hb6w{?=eo~*KcA21xz2TF`{5r^zdq@FFTP8dxLZCq z52UKqtHGh2pmFp^z_Y|f+;!%?e`iYpXs8(L(-ddnM#`~{^wMeg5OwEN$=?RlC3lN^ zADMzV-zx^qCq|)(>wYkIdmqfc5?yO_FGInzvsaCNlQ5uJ+2UXl9i3$CKM1il;of6c z{j*2oVf#bISD76RAZ0dUV18{3_Sldda`!W;_OsRv@=14t#JmiV{C5PHw9cLaqeWcn zZqn_ijpF#rs{4F`Lty`SqG0Dx18&yMW3WB3fH!0Q-Ir`%!h6!6*cg9z;Qpe9arNhO z5cTFjak%gj-V}Q>rn+fk9-^!tju1LwfO}nTVxnOn2GE8j&bB?Q~#z5vqKG&R@O9K(J;#@1u8n3N_Ad@2KmU zgw>;5C9FHfp|4TzhjZC2*>nZo2<4KGMqL4xa*HnBZ`*ZxN%ly8fB6^vaI?>(7!KI zK6{u5I`)x00vEeLi~h*_pj9k-vhvwB6jj-_aDgq zJYs0qFoEknulz-I=xB7g(y38+5ShY7{da8W;udt+yqeL3bhU_6?9OEvv=lw%N~py4 zCl17QQ#$Z0-usX)(+ofF5*T%4nFv32J^1!=WeAne)C}ylBf)+4Wit-1Ts*X+fN{!s zBL@q4jA^Ej;r*Jb_nu3G_@GZDJ8OUhUn8A5UyL^3ElD#6ZEiXyPkocq517UO`u|xD zZG3 zsVdzy2{`(q6|(u*!^b{!;>(JjhY_n3yc874k@Ip4M4DZh^UHcLC-jr(oH7OI66*Et zZ=2zVDWB&Bhh|JPeID9Dp~A#~+?~Ao9t=A5>F$E;1ayH{Y$WRfO830(dqg6_Go1zN zyDVfB+Vgk3XMGGW_)9L@&26wGnd~UFkyoN8p7URj>OtbKpy8COBsg}o$j+r<2qYSb zUTjND1Qq!w%>3yNGgR9;*GM_p3XT(3~^EM{lJV zR<92f%2B%EF;nV#y>~fQoRYQ8$Sa09m4JO*gKhZGvO#cLz&MzfKR%KY&Y&ux>Gqj& zWDII<5x1{}MdC!Mh!WRL5+?Fd*WW(+2UZ7ne53kN@%1fWr4FT{_`!^}U8*!tBeuO1 z%AbS%&%Y&jL}o+lW{Rrlvp=vswXE8(hYGjJdTl=+^uyssqir8r^6^4%6*ckk0$4L{ zHz|2tfsbFDsocD29QLk!U@Ws~z#mVnY`gQuK;Tu#9WQGN%82T(3v@QZQC9`-E6UR# z)#GtM*uM$DfD87rPxON+aQc?yo_WP~ zC}m!%a@eT5#_;RGbAv|wB_|)$KA!>V$%8D4Kl;%<>*lX_(&Hd!{>b@A;T+PJ&ll*4 z_Je+A!KDEr`6dg)M5PeAerrPMJpJ8eA>^iRRy6p`;O1WcEaKLRmQ46 zqi`?8JSu8&9Lw&FPwKnR!nbOn-Y!!r@ELeWW+?oD@-0V2oHpj3XYJ2j=elJuSQhl( zAKnG>3n`n-e5O$SgG2}a*Dfr%KbiX~covQ`x{VpM4na}*hwnb>>nJH1?pS^FFD}Tf z%0~XE!_>=n^0dNZkn_CB$oFHDNW8mt=3y8atKLbLylQ45!25z?;}R+?zN^!`Be4i~ zs_QU1q6`jGPHovwn+0;c%30m4X}AzI?~%gBNVrtAUBX1S4PTdJ(0@+M!L!TlDstk5 zFnasRTy!rDB(<`JGBgW;Hp;kR7nPbc z{C8(AGH9*~_;V&o*tjU*kS9=^n_Pqb78C6KgS{Bx`flhAM>gpEu&;mWz5?minJX%n zQc)yrWQgx92_>&TbCI||htYvo*K0QN8Jn|E(oTUk^it=O*;)7pr+G3ZCR?V_xFTwn z}q6=U;qxrV>P6y=v z_dfIKF;>D7sWxGinTwDX@9i+(G=#srGk(3*{DKN23!0;4)$ofw;nb-O-FpAbp+xV& zC@Ohq)yy2FV;n`$F*BkRV=g>*m22*X`5lX?GFc3S;!EiV(^ILa?^E`OZzlz=yDJYp zvg(H&g#8Nqn<^mBY9Hh-bwR@LZn2Y>8qkL6zEk}rI_QrlU8G)G26GnaQ|9|epwhHb z(=d$&JCd$tTqoHSr`3}STebDA{qW>3nBQER|>YzFiK}4nYM5fvVtnWO3bERbjC&o-gQrF7y zTXkST{M*0KVY{BX2D7ltZNF*zp+?lYm#r^SmW%;+4{KyBkg>6iaQ2-)4c3jH{WHmn z2HnojRB};?Om@5qCjRMF>cMfR=#%iSIMt9lZ{NjdB*)b4!HwW4ksUv^6NWetsUXOC!nBRN6-bZOcu3w#>-CT!pkny`!xAhwc zbS}JPGfo4qxZV4t@BM?vlCPAX@KMo;=2Y;WV;b~Q4-W>{4}zKd`X2?k1!Nf#@Sdz3 z2L|6`FDe?Ek@w``7w)5Z@L(sgK>FJlrqAEZ>d2%(kxh5yv2RU~6MkehmMa(TkZu@> zZtTJ98rOG$H%2heCg9po6BD60ct+PMlm{SpLU zeB-%YZU!Xh*~V2KlaXIbU&oRs4c0X^PlN3`5Cd{WcJFJ33a+JHPIFYes8eIgtF#Q^ zB&omMFFT<@gj!{m2{;jFjW3=G6@#2=L(h6nWd?Osi@ zXx8c2zqDr(;t$eWBNs`S_2xE@x6=UR9abyZ|9BF`Zc-op7de3^EPolPcrX&Gwdv*j z+5ga^Kr#C|xdAJxI3C(3b>WLo`C+5kWVjPjmeVrV4i|J|<>H+uurAFqvT$(-M{+d_ z_Pce$&YVB{%pY#>f&YHzj{HeD^fd05Lm&fTvw)3RVaFJzz0vsdbAf;r$}6g_LLE?e z%HO`dWJ$u262K^tZ_7_BqBI}Q|DnCCOSXTK0mrygZtQi!B7k46` zgZrV|MWguL#)a3AnGU;4>&?d-`=L8{g6E0L3KY2&jehf6gcBUEvf}y%!D`t+!EGxY zm?J9#2SQ2Ut?03Oyl!J}4{LQq{OQ7I&xXtQH+1v<2$3h_M<+J;>?u?48prCRpWkVd zmyxjfTyFcvF3hhCSbP0_BWKxUJlywR7Y<8=aefk6z z^doi8^xS5%nIfk=>GSpe;Rd6j`#XRrsH0f&9$YPG*E60G2j?) z#YFv;g5wVm`O|wRQvw-OMZK5J_VTsEp$FmnVK z*}Ks<{+dtU7b&=S%e>Z}c?8Hg?!RAtn8)_^;72dEmE${+<{7!M4c|*r5qi7aj5$rh z4zEgSQ0;m#xq4*^W`C~*O>|D+-@cTBi+ji*Yu2<*tC@mJUki>E^$%j!isNRto8vfh zM?EFIy%EA%e%SBd-3@7Sk8fJO+vuBBTwG;&CkU&Ay{Pja0VkrHTkQKum?y5}-jp6d zP%D%y+;~3H(@Kno?`|frls7%uJk<(Qu3myJSEf-~aZ`Jp?Fw>@&u_1NFbq}OPN)O~ zG80sz4)gt^w_@PC2aSJ}$#|J1{)YpBhN(4!t6SE_uDwYX2_A>X+0DmyM8Amg|_4J>5C`Mvu)%6(xLhEX&MB0^PN|2oq?IG5Qb)`MqPn? zOQv^AU{Ad$_CA^f`*u&UCCvZ9ZN!**lT)>zAJZh&cx4(o#+#-1KaWG;)cwCZOy+T@ zGMqEwTOY(|l6X$yY|0kt82H<#DwPhv43OKy<2on(;gB2S4naX^2LPDCqim?SZ zK`+Hf|1VPqBz@dGJS8*@UD|KAnXk`)#Y^9Ai@pXZ)iRXJut`T~Ym6&iZz}%Z|HD9vmI-%AJ>J+MOM=>A;Cm`AvMZ+(pT=J++I5Qp z;?^3i6pbZxH@Vn)D{Bs8<7XL#QP;l@YJKy(G^wU1`j&gZ}_Zqa055NFGMz)Sg$rQww z94g+c_zey$NW2!Qn?-idtdP5gWO(`}hBr!e2s=L{q%mzP#`kv~y=^XJAc$~p@(Ob# zW3I-oqnGW5;8xS_CsW@p;vJ5^6xJ0Iyd1t&-Dc5^T#N@Y&YD!gMIR#3qH+vGq{KKC zBFEtS!nyNrb`N0Tl_}%3&$D>&b)eZ}zFrhC|p7{SNmd^RRPN^gBUu3GJ?XUut>Lg@;O+p^Etl^6MuQLP z^QnL7SnzDtO@Ck-_&t(H)O~UHs6n)##aZv z`VFZz;*Yv896dJylkxvJ_Vx5aG)1ydkyZis-1;6Lm!U%BZRz>s_6q1tHfj@3cD44kG&nQsy~v z5<0%Tc(-DVg&+$rMT#$vqH_G@V1qloxV=JuIZtbDMlh+xqO3>lk#y++SR4@}_zhHTP5APen`jTdES-D9JEevnJuFFW^*4T38zikWPuvLde_X%l3zg_-2Ax6Nzc~=HE z_6e-sy0|s7l40>=_BM`*9*jI9RH$e<3?2iM0&>(LIIgvqUrB<2aLcul$thw5vn?w> zjkVNbPr{*-wa*(7>q7!&nIKmS?Y2cTd6-j#m=toTGUD%(0x>nMvI7%=JO2OCl1vI2%|O zsjx%$;$rrzIrvQZeKD(d6b%Hgo^)2DK;j+upu$6=P?o&q`}J=#&>?G9anGEF0!CX# z)=tes=h~B29w9P%co$b`Rv2B|Oa8!|o22F-Ij zB^)`1QSNJ%Sht@G)d3fy)77LzZ1Fxc1)2f6z+&W}Kujige zS~&kP!!;5N@7|qKH%vz6(`iAG9?8dWQ9)Z`f zANlXeOJ%PX!D+i+)2eS5V1YsDhP1^mkd%8W8oAhtB=y%R{>&uganfLVajFA-Cw#JF z7MN9|5}ux4yuAQD`I>chgH1r>{Zg9bO@vMPR~t9!PXG^{B{cZsJc_V9Vy8NiU|X0) zqE5vaJU^jvp}let!{W9GTCsP5@SQp4k?TotvARK3D18A<*LwzdqkjXjc4pdFp#!52 z!o|BA*BR5kmM6S8hF&`MFl!gcrPl74xy5pvG*IX8T8`_c>aYM@#ntI7ea*_JpJ)SxNTu8 zh`QFs+0ISCaKI&{h#m8AM)z^qg>VvBUKqVzEkVJ#;wyO-H%RazSvKD$o(4Gr5rMz& zgy7-zJW=8s5_}}qrJ2XIV2bqGgJ%_gKy6s7@Wk;>5K5>KI!d2MpCaebt2rxhCa1gl z)#x-1e|aNxUN;vxvlunao%+!%*dlyrtPK?0w>>_4B?tDo+C+8NR>KpLe&Df(a~oWq zu)H`w0ew=k#oq;Lfc|{^#^C7&kZ;`nZt(Onj&e0lI3Nv@WncToj?Ln|M3F1ytIJTt zDi@sWLd6aT6a00DhCdR*wf>8w;9jA_CQ)Z7uzTc!_K7urcz19&+xM~oa8x)ae!pP` z#HFJd9>(=xuz*tDU6U@%3vPV~*a2Hi=0sm6(qJ*qj$@_03_Fgx++%pt4a;*5#TFbn z=uVM7(~{GKE~7`gw{Kp<`YtJ#GNnTFZ_|6wNSHwSf0XRF@<2Eopk%dKa|lZF$eqQ< zrlHQ%%d}vM25`sdP?W|zP;c2@%b<_ov}sQM0Bse{IaoEFzd^#|hb$B{FVaBZ55M(P zM-8g{+xD#W%p`PNo}ZX@%m8m~!f53VA{KP1Jz7{@#=;%rwI{3xG2vBC?zJom&^8}` zOq1+IB}PxfYWXGnx*Vg=IY&WmQ?^%ZRx2=-sb-$8|bW6XJ!AV=lH;;E3 z&aB^k9JGH7A70QpW*$RCQ%i%q&?quEgmMb$)GdIhxu0+9LJUMF-Y#^Fox-)Z{l7@; zOUQN4?`r0TZmQ{J2D$kWagk?P+WL1l?w^%N`ys+iNZRWgmg+@El{MBF#grbFV_s43Xnnq#zsP=SAJWw-E~Z18eg=#CeGROsZO**W)*KurKJ zY;hk#p$q1L9~?_C|D1w($p&xHc4zP7?45uu6RG*y!ZR=?s=s}ub`~$+`F*9IjRy9s z-t}8`2f;gmPs*S2d=)HCMr# zX)dnkWF_jZ?B8TWc7`zj)kI>{!Aet(F|U4PAU(wO72wvlQ3{JnqZNBKitJ_)V~LRc?DpiWSO?lmuLsJlSHq{R>8s8TWH_c?{mYMmf;N*?uQ&6> zqO=n-+?H$t>Hp4DCJ9m@o0?^oQ&tZ#Pj09tXp*7zALkEcM>>2BqHpfgtwWE*;J-W0 zl|qMffJ?175h8B7%g0wzfa&^|-Tc>wVGF|rU9AN&?0V!qGMtu!doujkBXtJx?-HwY zSg;4Yt6nrdwK|L8TO@gnwlEX+7A4!446_kF@7vM+<9QdRlvi3<@9V_#!qw2V+=x?J zw{8^{l>wzq)B3mygDRo5ggpC`28Xwq{QF$ch9tFyh>H{Hz)>&!=+u`rl;N4t(~}*C ztxAEKsyQUQ>?*mJ`CB{Gd50;Y3Vc46=HmFKOvXZ1!Smk*-N*bSp9 zPa-_HAWI2iYdkHzg1%}Qjv!4pm@jU0h*3=6{YJEqaivDZ^sy$=i?+gIOCbA~Rt z9rkmaRalnxrGeFqhSypd^Ns$HvCzL$C-*uD8ZYha{~gc-nMLcHsxLI*_4PSzC(}H< zn5HJUkV1k{k1Ycqsz%V1#b>zkL<~ee9IMp-xdI)cvqd*o8_}#dTPnGn3{O4%U6vxd z@wDd7-~NI`Y|k?2+5GMg%pbX((R*kH(@Q?5Q~xp$cDri(e4irXxy2hE(bnS-djFHv zu7fqmI+py}%;hge>s~0JsjcA7c(n;)0v!}}ZY#+TE?`mXX2ZArwYXWPPN^>^6Cwjs zOV{pZ;)AHYmuH*{@V13{`DMX&aCIsB`Eu)qAEWLm^RK0FXHUPX=G?|yPQ78iFf{`5 z=h*_4w$7pZ%@Ni_uQFuWr}v29M*~XcNuy-DSWq<#31jeFLuJY5`+{T=uxd|BvU*!J z4DS&77)R)aI>w(*c}`4WKjP5Lk;i;DCh4LdzE zI!qocJ#@!l5lg%x3GBDW5J|%AcMcT5+j5IUQuG8q5EyuF8B~EcZpCbKl_P^>gtaj5 z&35=Yzpcm67O}2`w)<=55_)(FOqklw<6TBM4+dKrzN`42v~}A!>}~$eta2a`oP4@h z|9o4;-iG3iuDX8s&neS@MRo?`oOQ>FZ=j5n>2WAZ*3e{bC9O0jz0y)tN0v8M^B zltH~z(Y5hEOsWwFhu5{sdocUah0q7bCNN^LMnTVa7EYW~+6=E+K-ze2lY|}x>1RX? zj@=x=qjz^?o{y|W62tZ1mgh*&$!&8o%CZg9Yc*v*h|ZvWrn=`}g$_s%*SONc*pB)G z`s?J4eB0Z}*u22A0*vOx>LX9c@YeKY>HNxHJP|`!eJ?Tsmj493G&;xeO5up2b74AC zj{Saa$HaUobfDX&J>N9)1L9~!D*ZXV z*t1_FB<&y-R}<@-+_J{ul;?!Q-`tJ8dch-Y!`+M}7gLr)w+#b(P*C9c=VNfYRPo%R z&kV*;C;WL=NkCs!m%Vat673$bo9%Naz@7uW?JZkI;X0FQ*^ds%q+1C|aW!(;sbqWldQc3XI?<*9uuvGdE-2%mc4N(`Hk--?;QgHd*U!177ranQ^@4Bi`;!O&4z- zh4=`iqE`(=D0=<#;S=*~s1sV?tWFBSi&hRc-@~S$Qj&CPx@HW-Yk%p~i8X=tl~Ow6 zvl%EKws@a4?zev`M?w*Y9h%lJV);=>pxQt*YPjiuSdhSw@z3bK|776nMmVGfC&k zFbZ!9i0Q2yf`99*Lp-uHP&OO*YV(GGp~dIQgq`YKDYb5T0IE%(+)JzEO|z z*uQcGn{0FElyqnak#%#sghCye@ZsPX%>9Tc^~~tQ6Q|eT{Fv{8 z7E>LCQ@m7I*eme<{>lve;W@)p+dheR@9PS^j-lf1TGTqdYXk~{i`(s@7*q>(W_^Cq zUxchfhM%+}i?KeZ%SBt10?+?Ea*BU44uiEJ(dUC`xX*(y8GD@!oy=0ZLS73+F-?$d7g??fGb zSF&0QTAhUcyb%4X8ZGEx_kB2ejFIrQgz%s6%TCa{dsNoOr5Vh{sJy(vWXz{1myQ;W zfY<25_?nIa7*$YsA7oL0EL=(}tD+TZ!=gWM7$qTm|TbSG?5R zRsvo7f>YI#$zaaxy?*&11zW5sX2-`$Kz-sd%h#Ggv_0K3H!?bb*7eIr2Q`@q+*(`N z;tMzWGZF2Yb8rqCJtpS7sMO3OU4dN!Ev8wr~8ioMIYma zz+e7zU=+;#>S`$o0z&e_5_gTG&vHiVxLpBGi;kSmt*65>i^-%`QZI_+ot*k|bP|_z zr$0IIk3htllX%nnVaSh@o74E53uZRNy?>QMp|vOe%%m8duG` z1|dV17yfwDz@`1C?oeYl%K3&Y$^5Oxgx5*fnMH(c6C-gNvbBIHI|1p}xkP?X zwWF4}ar3*p4ph;0*348cN3W3>r`7ras7?AhULr6GHg5Y|Wq;QI#r2Kb@zObL*_xl} zS|I?VzJO|3|PpJIz^I+iW_2JQ>HauECCSh`|55K5$ zR1HT`U{_j2Qu@RoY<|db%~UWQ9=zeyVs~AKj7>Lck90Lb=QiV@kw@*I=F6}7Z?qr# ztp8kRHeW@e3-yGhatq$F&0>2S)rW6xZ5m=AuHtg)C94L34sf)MS!|D+LZ!rn-M{T8 zaBt660~_Z_7 z&LEgc`v>^6tYKrsY5)8s8h#*NO&Gpkj~%S10&WhHq4H>k*}*IAa9vRHRNL!nxD{d} z3=1vLC&Y8^p~4JW4V8RuP$$EGmyfQ~%AVk2YcYwQJ%YMvq1xoZUgXN-@nQ?B0RPGM z%2CfjpuVzwp6I^>u8eIi59`{n`rPmC1GXgK#wb5hp+8JX%yDLW|o>)B^@G{CaUfLGR~3 zRAB53GAIaz-7+={wL()6NBsFkc5)QL7N_pD7LVY|PNhfX;!F5yYuc{?-v*?Ke?IZ} zlpyQf0aN>*6)tb;1@7_9ekK!37!sza zMtnnoD~#H{N3w_DZc($q?-w+b>YMg!CpCgfx~vHA=P9i1!-y}@J&=*XHpXK^$7=-1 zh{)7wC{34pbEuetlFvC$F|u^x*M7DC^mFE5r`XF!*DbqnLgb8N=br(5Z_TtdPGttK zkB<9rsn)})=r?u!Ywmbh4CNQIC{Wp?P^og6j)rQ-Rit8wc+b&d?EJG1sPD4pQIT55 zJF!J)ZiF`iZ`yM%yQxZi7XAL(r>S=M{&2Eu_yD8o(IaYV`v*31@h*3ILPaw%d}&$b$&ESS{in35oX~_` zq(g$=IELZ6qtfx}#!2K%KA;*rzKBs&;x8nDXh5nSAG}s)~dZehn9?~-#^L8x{ zKt^18pmAmh?5(qVc~E5*B!9%v3yY^vFq*B|ySWQbXD@F)dvOV6xVx@wzf1+YYhPJe zOeknoU90kgTmp}TpZaN}H)Ehvlf`M5c_8%Jd|&hIMtT*=IWLEt4l~G z*ztR}b-Dd`5e10~(%_m}*YV!JyV#uuY>44!_F}Ii~#{@;GkJ4SF_0 z4V%intv~`>XQLti;!?O-bfHxoUUaz`p)OTIPYFd{-qA&tGfPi%)APv%pNCO)5v)5z>g#+ zsWO<5QJ5Lo)rw*ox4d7d58;giLvc6Gw&9M>D_HHl1ftm~^4=^Hc(sz6mGvUUg1mNSU92-!t-K+$H^(!B=qom2%BSEL2GMI#p16+FMv4`RnQGe+htBDyv9$L2P} zv30iY^Rz~^Tnf)!P;P~wsIqN$!zd^`B|V<9JP5@OnJq5&GeN$jHT-RIKkzV6qJ*uJ zK;knrG7gLZs|2ru`?X5A^|Py;`{W|LlKn;?yc@?H=hGntxxJv*Fg)&~I=aFA;+M84 ztz-LDYkym*X%woI4q7(;iBBoxkngo}hSN1h)oZfT-x$9RfC=+rxrOEkhVA5D zi*y?Y^WdJh2W)#F-YkKcR#SP?@EW! z0!z7(I3gIuHMgA-?nQxl*E{z5p@%T(R3t?~LS2=#05v)HVzh+@Mh|@>pE;D-- z0DazLMJ%HM-#AB;tU^a2clMJ7S+O2`Q#$B4qd_gWEJdID9ZJOyZCj-)MHvVerK~>w_nL+9li#z6 zC5em=9lW!1J;#8H=kk*|K{BeZUzQJk$V_(jgKb|wsiq{>zcF0Luu!|lroBFnh0D*sWFCmbtI;pPs*aX7|eQO&zR1Q2NuUt1$% z%B~M@jxlklhB2&$eO7CN8#K8A7QKF0lI?u=U&b8d4K}a|-l@S#(N~<(_eb!9OG-_6 z*)W9vdwW;hZUT0MR1H&!^LRQj=|_aeV&{(R{&-#(0%$3Hc7na|*4U8Nd}9UWQxy(Jo-_Tv@T zT|v6@L}(hg?3x|ih`MeQ!-^k=p*7L?yPMGvYC4i?;*Sl%s`2L3*L(W$FQau0hxj0{ zIpU>FeKR0>r})g`)6O zf!>1-{|hZspztG5fb6;m3tOWsB^-L;;Qr9Br|6jwePsJV@#E8A^lM%3bnPs%TS~0R zXH%hODrjp>NH|PzcD`+rMK0?+F$f zr}dTKt)Kfysxo8PF#i2>iX|Og9~-Y(o44W>@4GJt`sqN}*DTLPO@aO0Q$51Ge~~`+ zn)k{^KjYOjb%Q_jqi5IH$oGV0nA>IPgi^H-#j@DrUEKqrO;I1!D%)Vs^|Q}%Xcge% zQf)QO-+*#4!yTNrXOZ}7&oP6uO{iNm>R>%P4XabDgVD7yxQ1nISc* zftYd%4TKa*v=ua$V6yxCi5uBvNaq?|t`2X5lE+D=fxF32v2t9vnP~~0xE)ke(e$v&aMGYVg%ImNi#Gr>MynP9!#53ehVD0lNV z__y*Blh@B)i20JKAXU~2Pxlp$_TB1 z)Nj6;R&Gbb)yA>dPh~{>tvzz->1{HQm+weP-0}sgMZ^Ie?s>2w{;9q4ctcMbjwE#Wbpz@GJ2K$d4mzqG16MZc%t~E6`>V9;Ln zba5LI3=&#?T17WQKt_HZ4?h*odJm-T+WZOGiKZ%7&$WPO%r%;o&kPi+zCW-M+W_bK z^L(te+R>TSyV#0h6`3OqXZF0`*t5$@YWDm3@vAbQN_*HSa?PCh;uu6h&ef*mf_W1B zP-o|#r1e42`{7fZ2S~ujT~Rjoata17cTf#eTA=&mVZqMW83;T>xTBcVijys?g#nxF z@rb+ga!1$#npK+gMa(b}$}V{dh#Vh5RBIUdv^EOs$K^&Xm_~s?>vp+Ge?271QjVRD zkHEN_+B~B@!|)*|pa1L90?JjN7kzVN2Hw2gbT<9nBqsDcXnb&F82f<6i6hw4xj`D1TTgi2XH#9$jf`y}=~>5TYK^DAop< zTMFK}q?2%eg1O;L)hwRzI`HF}{B>mscu}Hzkv2e4N}u_Bn&yLG?v@! zkM_-5GhM%U;ikV2&IeuXK(b>WE9Ze#C_OH9eU-f*M7SGv4d{`us8#$?^}--nv9Mb^ zbIl_2?qsj`A7){BjhVBniIKpx&HwR>DmpMn3t9LuXQEd&|L~zAI+SJ_DXQj;K>7uH zMO$howqF{^OUW3(S4H*b9+%96z7pe6xxO@<>#;g#n$ZHRi{9>^EvGR)tD|7_-XwbS z2}an(%XP74v}CMsECkIF8Uaf!pFRv00u1 z2b3RDRyf~64WA?D44sJT+Mo41)R#anpsj?Yn+jh)F%L`q9)k~omqu=T{~yKX;ZEh> z25=*ks3>WWT^UI!BHXkPMSfCgP!TDWl~9=}L}ZriGK#G1aUW#wnLQ2;$2{lQ`}O_< z&-H!o`T1PW_vwZlhn+joYx{i)ssV*Fych0kb)wCX)`0JH7VNHx zU^hK61!sA#7_@!-hh@`OLacl$fbuY5vPxzium1jOW}Y_+-!0@yssviGSBz0XWq1Vc zkH#@)ot}kKI^&NUJVU@7{?_4U!8&9n6&8pnRKRKL2l>k~131)^{ghR@7#c2E)&Fy+ z0h7#}=JAwvAj*(07P^jt@s{C}Tj}Tt&C`q_4kIJ@A9Z`c6+ExpRhiz}f|hK9G%was%-zIx7tU^Ays1Q^*Iz;2 ztC?o^jA+(O!egnZH?3Oqh?YVxfngYw|3OuaYP znFv?rjKg;Ol*09cbwRi3<{{*P_L~5W0i?JxZuK|$4#vV)UY?q*g0kAFckyQN_`B5i z?EDWR#02=>4AfslCKj(BF@@{+Tj4}cN=*+2pv~?3uS${k`Zac~WeR$d)m3Vciblj0 z4NZj+XgJZ59#y-DA2Mng1t!MvSoHDexsGO7dnBo&;yR98x^L?~$}S;gD%Owj(hRE8 zU5)tqWFBUH?+%(cXW#_8QG`Fw7z8H_vDiLz!FL=B`=&Gpk&m*KzgjB;U(qZQEILvl zqaj48`p`V6qeGxm_zdLAYbY0tk77t~@191|7UiI@Z9Dtahv98=y@l-Fc9WI2q-eIof~*^>w?B8IkZyZrfH~pE+pWdt1n%a15=MM^4^6Ld2Uq$E5zx7p~(b zb{Dkrq3le`@2k;^5PinIj=0G!v~#`_v4!cE|Vj z{!sF4UE`%Y0X_Qyn$YbPKIauX(B(vfi;?$5L_7Y1&FW=t?#w)Vuuv+NS37|Q$)Ag) zZTfNlcN3AWfKl|Y*y!Cbq$iMhek(nj=?80KPWRWqMKBk3Io>5z0BV^s0r>*M*r-s| zH84I5s)YTovswEg|LNoFl&kZ2G;P}VnQ=1|8GKs%5ip29#2=~tVwr~mlNr~h(>2KF z#Z(_JmJjPz~SK}@tui#QfSNBAOLw2fDw7rgD)fmeDM#w1WuS1MWXkG@nEZyQ}^yw?{#vm-oP&%q(Vz)!CKIuqX?bDeL_E z*bG)PTS-PA2Z5g}ea%_xGu;1qkmZc!9Nv0(VdoS3Mi6Cqu2Mm1#i6G^ZZC*;L4CCN z&o+x})aFTiT)R0JpZhns$A4Xds+ZQfw96z&lG@83!7~6C<{f@t4p@VO+RyDWBl_{k z((`(<`3h8t<&7HrZNw`^;~$U872_h8b=6VT6fpYeoVuaWfUaZ{srx=-kbC>2;FXyf zloP#j)$~LX#`YY~Dsx@JJ<{=Id^UbCZ2BNkiIs%93om1yb`$lYz1Z#+1Pcdn^xlCKfbwt|x|aXAtPeYatChodB4yjFt?+xd7 z;6Qp*eqTcsS~)(w^CW5$r;(T=tQ-~Noki2G6a%%81gTk8UFPzUp)%kwb)=(400 z{Uj==on?wTzY3?_Bf_~mjd3&f&26Aye(zyedA;(O0~amFbB z%OSQwG^>#~CdJqZzOOzS-rT&)CG%`yL5zPqJ10P$J>37_(i*3bk;$$(k}}L4m@0-wF$} z0_17+o;6`>K=$Q5^HDn~z;dBweKzEqcQ7Ka-!7WNF}+tn{KlX9z?TJ@N)+DOlag&#YuQ4sQp% zxca#138^LA6i4$ZB%Zzc^k5nV)?{)7^dI(P+EpCg-A#mNF&~ah`mW)(F4vc5xW`d) z`eb*aWFml#zx#XE&G}qjr`|C}fue5W6K3aHWL0iRI9EVJ!St05pN|X#X#@Qn0q<2f zVD53DSF8cNgFh^rKU@GRzvY;GMin#`E!;R*KLa+E(wAPicc5%>kZ{>I3QT-t+BKse z0BbCgGWWf^u-ZK)&swb;0y~ds^EkC($yAkMTWCA@9~ql!q6~q(@-AJGmlM!?ZITwg zgN(`geI>VV%)ncLqUVP#Nbul*py7Gx4m?uke@cdhfe^l>MfKac3E*D+Cz|&<2R9!2 z{=WH)PMI2Zus2O&44i-et2t!Vk13MD>4&vekp4Y6^VVnsJUgWIqdH^?PX{Jx&n4AB ziwmKeCQk!rhng$kRRtN(+Em46=m|os9T!)*S~2(mS?p)b1g5Hfk#OAP%H%YwgRAlW zAoJ%Y+T5E(fuRD2@LNOhU%!%w?qmll?^}y?jv-;RCCTny77aB%c0cFoAA}a&wc8$D z?a0BGIi$k6j8Eiu$O*+~!x_=`N}cW=oC%z4HO(VK%RBjE4V4ApQz}nw@ackAYQxR@ z^n3AYg0Z%E1Qj~8)b#9k4M25`&qPoK83+H}`_!;ZLir17iD}Gpc+tP_#+&?k?2$6} z`WHM01f558=Y&^)k*vNyJ&**lEYYi9*DLVU17Am`xK<$D2&l}CAmZmB#z;rjCODO| zcl0^Q8%&!N%!pnLgln#!e_AlFBdaA%vo)#`bFVp_st8}ibDs)Fw_NCjHOZvO#UvU? zNGoM<>3;z?9m#+QwEzfNbl#)8eHL!beptB?Y z=YRaGm{b3nFJ6oYBaF^7f$dueW&`7sgso)QFHW~#)FKOV|J!=gR)PixlRFHFd4(`Y z+_xiDk&bZUbaB~0+7PB}CNgk235plb8lI9T;T7`LGo*dPMqc`I||7S`D z{undyB)tVBj<}=^Y@iJC9==*Zgs68Eo-6TFP%M4E`6;qCZ>{q?Hz7pU-qw=YSd3xmuIWLivH!V2Vf>H+KVI*7Gms=3V-voM)->v5c48*)ljn&+~wfar_KF@2RflwRJy zaA~F(YUSPsKPh1(JPW+Qx~p#lmnxK&wE?M z^ST7v#MMFEU9G=2uciaWFFz*IDNlp6jMc|2E=^$iJ>k7B15aLT(ct>2*^`siaL-A4K`_S}fr+VU2Ha;Mq% z4_$NkHOTSQa?ljc+~*#dnTx~xTQP+^+_QLU$Bq&8%{eVn)IFmjO~zC&6FEEIethHG zS7XdsgI&C;Mwf0bLZ!#Kikh}w_>U=*@Va0Ub;v;nS&nu?^s~9xlKOG{mwA}l^m!IV zg>sw&HoY&KPl)}r*$N7J9a?{w+m6A4nilK*iO|e`UD5YrCA|L~`8v;*fHj3+g`92BQd{4)Ux#OlVg+*^o*JC~%H`x7=msQmEnFQ10sjFU#@9j9^l=tqzkO&-Fr zLyp!Q&l=Iq%aSd5dI9XGzdPQ4@E0Y9IfGJ|M&VE3<0dDk9uyq@&@doHf&YGprXM)l z5AUTLJ}>WY0fCV_5{`B2DB;8{`A_{HYEvrr{jMLxprjn}y;D@U$f9u4Cb9zh(+ZRW zjOYpNw(W%6zXa^wHv7qI7X^)Y@5Vgb*#XGNqSNYC4z+c?_4hV?&rd@)GXCQv*zQiB z+bv4Mv>O(h-5)c+hE;5RTjnaZzp9;RV4MNrJEVCA-UiH0tO#r~AA_clDnB(r8gjba zRGxMkLt@%vL;52tAk=$GNz0xBCtKH5jJXEzYnAAYLMJkic2Wb|xJW26ZmQ4cN=5g- z+{)%w9q0=wLimUXrbIkATunnK0lxfkWoBh*W_^3VmIbI?YI~q0H3RnJpYl!!5>ZBn z^K_fp08A-vjT9GNLDJ?hz_SxLEk7)0bbS_xbVO^$WBo9wb3Z+cvbi5F((V86JqhWz z-z++~X9Q&K9ei^C&=At)3r}X&jo|akGD4MvB(&R@yF<#K!Lt!(2GX`RqZ_-SX6#xP z?iFvmH^?>zVNCZkEB9rC%P;ba;Sy=0N`ohwf1W86w1It& zaI}%`ApXecy&!2Y4!lX_>>;Np=xr44s>C{ve<=0d?-l#dQr2IL@L>aOCco+$)bztU zw@5jkgKeOge=yL4cMbRKbL)P$(2Chc0pum`F6asmH97HP0x#bc`pd}Nf{OOO3)wn< zvFhmR*~iXHm|h_3I#ETZY}bzStStRd`!+(uTXz_(queTkFHgZQ7Pot5sZ(%9$^ML_ z-allf$ZR=ts2(qz`M#KKwv1M`twesyHHebiPd@OKo>1k}7QVfA0$q34F$%>DL4faN zjg_b}I7r8FMMtI;*;BU_uQU9G@hjR39f8F-nQALpE&LN`IzI1uBS*0!Ym(H=x5=5A zKlrm{o8ZwwiA2~>#CBCbuW*N6I(|ZaC z-A>zJlkb6>ujFJm7aM+^l%Y&aH=v=KR;PvMAh=6dcQ_5L!a%!&hnwUa%H9vFDEyBI z+f@3b=**PM_H@M#*->wGx4XZrg^POOFdXd-S@eJI}FdVQcCIKfSX|()B zH45^~i!SI5VET9Vl*`Nw2qwHsmmNo-u5X)xE!{jE*0yJ|kVpZELneGC!oyhFeLaWI zaR!N5x_8_M=8z^gbmWx8GMt-lrN4K)2ePT>US6}MLFKytxkF~FAa|pO!)3AoU#Ptn zy|qRJwNtm)twqPt^z`jhxnGtre{iIBEPVzm<1#FDK2hP#OXrxfUjeYd;>*Mr^#{h* zD>L`*$bnwl2Mc9i1|aR#ITnWgMK~-q@#RD05Vj??M6XBwgHI<<{!AL9V25b6IHi`E zV4>pXS@(6*?=%c{+zK1Py*W}1rffC1SIkZK;X^v*#>$gh6mKO#MW2Kn>uVD16&TSB zWoIDJG@fpp*s_Qj?;>v<|3QXt56$){)-@x)v+zjWTq|1;b+1`jc_xDA%ShQj2 zHi;^c?=iT%_(5ZFWeuw7&*z=jp1|dvr=D*DYT!lv#-10kQ;@=SDt{(=lyQ?`d}Wb3 z%U?AFIIf|~;kkm;_3z&gSk2&=(cMu`$u>9=_qLOVmx$a#FBKl#qa$#pmNFW^t;6da3UXToDu9t zrkf{hUtgfXTV99Gq097e^*?>#$AlD`$903TR0BychqMjuEbp z!wyz1K&Y%0du3A0O`4X-)?}w!gEW5qP~=pSuwc2cg~nO0_A(V zKCS@A_Y#TpHxr;D@aEB5^Jd)6ZK1EfJc|kI>rCQ#Of`8HdCc7OYPd#0@Vg^lTfrE_pVvRSO}Q18 zqDlG+_Mfri)0x(28!~K3@{x-7CV;AH+@Z%7t8i;;_Gwbz63mS<59#e319RWR16QyrIiKG<7&FVHoe#FFnV!7rTHcq^?%Bl?V4P|SA5Jh{~3+o?)+uJ^f4mx ze7?>c&pwJ)<(^xP&rZR+|8D*9HtT`Xzdv;|V#nc;$Wg8$#VPpf)hLp9jDlw4;oTfD z!(bCv_-mxE755G4ouVJ2g4d1%*XG2Dxc%ZyFJ@;(!pPk6hqrEI&^eoZS=hV)r)=E9 zR9{S>@YlRuv5xKVS1(ri&f#X5f2eRI#V!LMK>+hJH7bTBhWV`TScG3UWG761j-b&t zt%}s*KadeqL3+wxib*`&87A!0urKqdoi-FfR@(KD_V+XRh4NIlkc9{@l_XZ@kK}>u z2jg1>H+$gh%S)XrV$;wD2kofar=g~8VaZc58!W=|PYhV3!g-l%v(^_Fl=*%aRw~UG zVqvh`fZg7|@al>k58cmdI8!xzejw5VAKkLae7xERzaGjf{$O9gvfRO1HNRxcj?BE= zx6qBmpA?Spqa#?zK`fUb_5y633wjwT=W{frId5PmB7haUG6Hvh}ZAD*}$xpHkm~mvDZ53;XFz#Fp0_ z)dSM&@c!phXAaLf3 z^ToSnm!$td^WKPm4?kq04f|Q4XME#$%EfF~aAOOu9g0|J?&^oSGp^cuxVq6zQg-8J z*)$M2Bu~a%>p=TI+ir;FEx{i1E2QS#%WyMlC%awa0?rWw?u+efLnCdj$5B!fz;xL9 z-7fxq)E96mw#%oWq}H|rZtXL0Xin@A_h#Pf9G?Em5b1{6VzH6zJTl69uYUfnL`N|E zdVTD5NHegUZyAze?tz-;yqc_a=@=ba?9jvB55q6$_(u$;fycl$M8|mqevxa8w`jFt z21Ch9mbh6gmrE^Gz1WDpyu|F=iY=hn@8%gi-UMaI;SCd6OCVu-`+}ElKU@+|j0@JB z!<;We+W$Og*!(Mk=bGFy-g+I>tzbEf{BmyNKS#QNOReG2FU}^AV|=^+d&e5?z3}U4 zz7Yk-oaAmg=8>RMW1cLUynwzNF+&2ugPVT)EB*Q`9icvJZ*mO#H~iz9calFT2QCB} zlbS?EppzVW>Sy90q>730NiM958D9yg$+f?Uf{ZP!Pu6L4 z1huMf{A*!NSn65oOgzm>5G-ID5!@04)~Cnl;AOa%@sADF}!%D4DSs)-IVf%6yC*anU3(0?z%V;}4IpeW*Ebd~v zAR*8JdAEPI-<^$v>n~#D>HnLCFFGvop~Wj8=A)tY%bAMHPSV;f%>{5Kyy4f7K{+@a zx4CeoXbwsaf0>D0=>VU0`fT2X3CLmVD`{|}KvS<^%X#l&TFF} z)n*tbB=<{!S?;_sqC$VV@Hp6UM8CTDaQ9KvTf7=oo(bB=(;Pe*?Oe+k}5t4|o z*b9R7dj@cJf@KmvcEQ2KPX)~8jqpM;ye(3&6$B1S@-52Gg59_6pI$naqGr|^%X=0y z{K>C-TAytY<65cvUo|eFUhwx%;$eSLanhmOD!c^7wm3XYZ)u0*u9%BYALiq3tz_9( z`cJGz@Z0As_=R$(7VIRuyI7||w=AbsRma&hU2+FUHI%cacpp|As z?#K8XywtR>>A=Ay?6~oyDM(>+PwgoxI70i2mL)-2xtsZ3==>I7ymc8&PImWJpQ;0? zE$SDTQ^o;{iLLBBLm=*cXMKW=f~AKgtnP=k!`-o5j;VX2$m>}{Q-42%`-o2@n0Hcf zH&cn=$%8Lips#`R z5+eFU>LQ9eu86qq8HA^iiN{<6t3fJtm60vF3YmWoq&thz6QTl?UBB;0#@r_s$;5mj z*4|Jkzdl977r%Brj4WA!ENSDo^FN4S`u6p6^XM52)3MlHyg@^S=YRKGG%o>^h^Jjt z{{SD}@L&2?G7ds9nkolZhcS+@ruL(w0l5?QT)eT#2km@gbA3-Yc{A6kcz@{TUfr_$ z^;X->_o3Zgvu>S$hZlSLk4Ut@jps9j3ykB)e02BeQO;Rhu%o}eP)h=?Yq}4#|1={@ zOG}ZEQ6om@S;vw~mqA{}%jd2E30`ELifmlp&z`0UtRjw|83@`^YvOBXZo__VevU0gZxk-m$@2oqt~Pm|>fodf88=+r;U z7BW!(eUJO*Ige-eOR`NY_v81XTr1zx-QfE~b9qLg5#99F_FUCl!vDy(FMKc>1J{ic z)I(;o(70?8caVD!OvP&YrTxjUP5E8*A? z;V8v#Y%42t(+FnHH-1{bo5C*5D(go1U*OikK<*+uWX-%qH;XZu)I_o{U@he%cBCnZU`I zi)?|>X^^Em>D1fP0+lsvU0m!8%I!PCPlV*R!%h!H(b|V2sL}RIk0WayFFOC0S0=V$ zLQx+dv^yH=m-vSZr&aIi*VAqwzy|!8xW;rud#k8$587Qfro=b80l^n z=gvKemj}1m7Ch?4cXVdE0#viXz;x~4$1h~KSHL{6*Lf7{r7ze?+@iucle|;aE=>?5 z%$HWbLPcx$C!aa)OoO+Mt8&IdJ*KG`-t;c6f$Zrm)Aw#tLH+NG@FPxE@16 zXOqY6ds)koeTRxI^E43*Z-(~9-=pBqM4JvF(FUw9u+Mc59f5e(`%%7o*YOf1SMO@a zECla<=HjcJi|+C&(Y)zH_(w!eIMlWgZMUA>zW@9(q@{E`5c=Z;;>+bfxAx4yC%4bF zX`;hOQ#)3pe_$GUC?1WLF4d4a6knh)+y~^x*3Ya>GjVij>CO1sGOBZWZ##G8FPyb~ z{(61OIlcVp3khsw);z}Dz2@MFx8ZJU~Jni8S{VE=4 zjF-}_1x&Vlr}`tS6StmjC5r4tbau!%zj!VbHD}|@`}n9hceCpBfD8%W`o7TAo5n8VNz-!Lx$k-m3va-P}}@>8*?uar2-Bl zHuDpqqNi#j&6kEJvL2~@4kcrE+F5#Wa|#|SZe7j{CBjjz?KZmBb0B)`lK1!R4R}wm z_=#QR5Ej3xEK?z@qn4#>?AALJ__02t*Ahv@%c`}9xpRoH@!yAcyeB4*_rRMAW=TUB z7`}Sq=6VUHntbMGIFSMTRv%Rhcg#ZO9P{WNv0<&1y{o`Ty^UHoIPEGzkG~1Jr9rIuCm|Hf9fzQA9-@&N*Ln?R$u?mdTU`1$oNX> z%xZK3gEWoy+^7P=KQb%bpp8NH#{+H)snx(!k-;2V�Wd-Q?d(kujV*dbUyP&gT9; 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

    >o__%?Od(|xL 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 self.num_batches: @@ -133,13 +136,10 @@ class MNISTDataProvider(DataProvider): super(MNISTDataProvider, self).__init__( inputs, targets, batch_size, max_num_batches, shuffle_order, rng) - # def next(self): - # """Returns next data batch or raises `StopIteration` if at end.""" - # inputs_batch, targets_batch = super(MNISTDataProvider, self).next() - # return inputs_batch, self.to_one_of_k(targets_batch) - # - def __next__(self): - return self.next() + def next(self): + """Returns next data batch or raises `StopIteration` if at end.""" + inputs_batch, targets_batch = super(MNISTDataProvider, self).next() + return inputs_batch, self.to_one_of_k(targets_batch) def to_one_of_k(self, int_targets): """Converts integer coded class target to 1 of K coded targets. @@ -156,7 +156,9 @@ class MNISTDataProvider(DataProvider): to zero except for the column corresponding to the correct class which is equal to one. """ - raise NotImplementedError() + one_of_k_targets = np.zeros((int_targets.shape[0], self.num_classes)) + one_of_k_targets[range(int_targets.shape[0]), int_targets] = 1 + return one_of_k_targets class MetOfficeDataProvider(DataProvider): @@ -164,7 +166,7 @@ class MetOfficeDataProvider(DataProvider): def __init__(self, window_size, batch_size=10, max_num_batches=-1, shuffle_order=True, rng=None): - """Create a new Met Offfice data provider object. + """Create a new Met Office data provider object. Args: window_size (int): Size of windows to split weather time series @@ -180,27 +182,74 @@ class MetOfficeDataProvider(DataProvider): the data before each epoch. rng (RandomState): A seeded random number generator. """ - self.window_size = window_size - assert window_size > 1, 'window_size must be at least 2.' data_path = os.path.join( os.environ['MLP_DATA_DIR'], 'HadSSP_daily_qc.txt') assert os.path.isfile(data_path), ( 'Data file does not exist at expected path: ' + data_path ) - # load raw data from text file - # ... + raw = np.loadtxt(data_path, skiprows=3, usecols=range(2, 32)) + assert window_size > 1, 'window_size must be at least 2.' + self.window_size = window_size # filter out all missing datapoints and flatten to a vector - # ... + filtered = raw[raw >= 0].flatten() # normalise data to zero mean, unit standard deviation - # ... - # convert from flat sequence to windowed data - # ... + mean = np.mean(filtered) + std = np.std(filtered) + normalised = (filtered - mean) / std + # create a view on to array corresponding to a rolling window + shape = (normalised.shape[-1] - self.window_size + 1, self.window_size) + strides = normalised.strides + (normalised.strides[-1],) + windowed = np.lib.stride_tricks.as_strided( + normalised, shape=shape, strides=strides) # inputs are first (window_size - 1) entries in windows - # inputs = ... + inputs = windowed[:, :-1] # targets are last entry in windows - # targets = ... - # initialise base class with inputs and targets arrays - # super(MetOfficeDataProvider, self).__init__( - # inputs, targets, batch_size, max_num_batches, shuffle_order, rng) - def __next__(self): - return self.next() \ No newline at end of file + targets = windowed[:, -1] + super(MetOfficeDataProvider, self).__init__( + inputs, targets, batch_size, max_num_batches, shuffle_order, rng) + +class CCPPDataProvider(DataProvider): + + def __init__(self, which_set='train', input_dims=None, batch_size=10, + max_num_batches=-1, shuffle_order=True, rng=None): + """Create a new Combined Cycle Power Plant data provider object. + + Args: + which_set: One of 'train' or 'valid'. Determines which portion of + data this object should provide. + input_dims: Which of the four input dimension to use. If `None` all + are used. If an iterable of integers are provided (consisting + of a subset of {0, 1, 2, 3}) then only the corresponding + input dimensions are included. + batch_size (int): Number of data points to include in each batch. + max_num_batches (int): Maximum number of batches to iterate over + in an epoch. If `max_num_batches * batch_size > num_data` then + only as many batches as the data can be split into will be + used. If set to -1 all of the data will be used. + shuffle_order (bool): Whether to randomly permute the order of + the data before each epoch. + rng (RandomState): A seeded random number generator. + """ + data_path = os.path.join( + os.environ['MLP_DATA_DIR'], 'ccpp_data.npz') + assert os.path.isfile(data_path), ( + 'Data file does not exist at expected path: ' + data_path + ) + # check a valid which_set was provided + assert which_set in ['train', 'valid'], ( + 'Expected which_set to be either train or valid ' + 'Got {0}'.format(which_set) + ) + # check input_dims are valid + if not input_dims is not None: + input_dims = set(input_dims) + assert input_dims.issubset({0, 1, 2, 3}), ( + 'input_dims should be a subset of {0, 1, 2, 3}' + ) + loaded = np.load(data_path) + inputs = loaded[which_set + '_inputs'] + if input_dims is not None: + inputs = inputs[:, input_dims] + targets = loaded[which_set + '_targets'] + super(CCPPDataProvider, self).__init__( + inputs, targets, batch_size, max_num_batches, shuffle_order, rng) diff --git a/mlp/errors.py b/mlp/errors.py new file mode 100644 index 0000000..712fe59 --- /dev/null +++ b/mlp/errors.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +"""Error functions. + +This module defines error functions, with the aim of model training being to +minimise the error function given a set of inputs and target outputs. + +The error functions will typically measure some concept of distance between the +model outputs and target outputs, averaged over all data points in the data set +or batch. +""" + +import numpy as np + + +class SumOfSquaredDiffsError(object): + """Sum of squared differences (squared Euclidean distance) error.""" + + def __call__(self, outputs, targets): + """Calculates error function given a batch of outputs and targets. + + Args: + outputs: Array of model outputs of shape (batch_size, output_dim). + targets: Array of target outputs of shape (batch_size, output_dim). + + Returns: + Scalar error function value. + """ + raise NotImplementedError() + + def grad(self, outputs, targets): + """Calculates gradient of error function with respect to outputs. + + Args: + outputs: Array of model outputs of shape (batch_size, output_dim). + targets: Array of target outputs of shape (batch_size, output_dim). + + Returns: + Gradient of error function with respect to outputs. This should be + an array of shape (batch_size, output_dim). + """ + raise NotImplementedError() + + def __repr__(self): + return 'SumOfSquaredDiffsError' diff --git a/mlp/initialisers.py b/mlp/initialisers.py new file mode 100644 index 0000000..243adc2 --- /dev/null +++ b/mlp/initialisers.py @@ -0,0 +1,65 @@ +# -*- coding: utf-8 -*- +"""Parameter initialisers. + +This module defines classes to initialise the parameters in a layer. +""" + +import numpy as np +from mlp import DEFAULT_SEED + + +class ConstantInit(object): + """Constant parameter initialiser.""" + + def __init__(self, value): + """Construct a constant parameter initialiser. + + Args: + value: Value to initialise parameter to. + """ + self.value = value + + def __call__(self, shape): + return np.ones(shape=shape) * self.value + + +class UniformInit(object): + """Random uniform parameter initialiser.""" + + def __init__(self, low, high, rng=None): + """Construct a random uniform parameter initialiser. + + Args: + low: Lower bound of interval to sample from. + high: Upper bound of interval to sample from. + rng (RandomState): Seeded random number generator. + """ + self.low = low + self.high = high + if rng is None: + rng = np.random.RandomState(DEFAULT_SEED) + self.rng = rng + + def __call__(self, shape): + return self.rng.uniform(low=self.low, high=self.high, size=shape) + + +class NormalInit(object): + """Random normal parameter initialiser.""" + + def __init__(self, mean, std, rng=None): + """Construct a random uniform parameter initialiser. + + Args: + mean: Mean of distribution to sample from. + std: Standard deviation of distribution to sample from. + rng (RandomState): Seeded random number generator. + """ + self.mean = mean + self.std = std + if rng is None: + rng = np.random.RandomState(DEFAULT_SEED) + self.rng = rng + + def __call__(self, shape): + return self.rng.normal(loc=self.mean, scale=self.std, size=shape) diff --git a/mlp/layers.py b/mlp/layers.py new file mode 100644 index 0000000..e2e871b --- /dev/null +++ b/mlp/layers.py @@ -0,0 +1,139 @@ +# -*- coding: utf-8 -*- +"""Layer definitions. + +This module defines classes which encapsulate a single layer. + +These layers map input activations to output activation with the `fprop` +method and map gradients with repsect to outputs to gradients with respect to +their inputs with the `bprop` method. + +Some layers will have learnable parameters and so will additionally define +methods for getting and setting parameter and calculating gradients with +respect to the layer parameters. +""" + +import numpy as np +import mlp.initialisers as init + + +class Layer(object): + """Abstract class defining the interface for a layer.""" + + def fprop(self, inputs): + """Forward propagates activations through the layer transformation. + + Args: + inputs: Array of layer inputs of shape (batch_size, input_dim). + + Returns: + outputs: Array of layer outputs of shape (batch_size, output_dim). + """ + raise NotImplementedError() + + def bprop(self, inputs, outputs, grads_wrt_outputs): + """Back propagates gradients through a layer. + + Given gradients with respect to the outputs of the layer calculates the + gradients with respect to the layer inputs. + + Args: + inputs: Array of layer inputs of shape (batch_size, input_dim). + outputs: Array of layer outputs calculated in forward pass of + shape (batch_size, output_dim). + grads_wrt_outputs: Array of gradients with respect to the layer + outputs of shape (batch_size, output_dim). + + Returns: + Array of gradients with respect to the layer inputs of shape + (batch_size, input_dim). + """ + raise NotImplementedError() + + +class LayerWithParameters(Layer): + """Abstract class defining the interface for a layer with parameters.""" + + def grads_wrt_params(self, inputs, grads_wrt_outputs): + """Calculates gradients with respect to layer parameters. + + Args: + inputs: Array of inputs to layer of shape (batch_size, input_dim). + grads_wrt_to_outputs: Array of gradients with respect to the layer + outputs of shape (batch_size, output_dim). + + Returns: + List of arrays of gradients with respect to the layer parameters + with parameter gradients appearing in same order in tuple as + returned from `get_params` method. + """ + raise NotImplementedError() + + @property + def params(self): + """Returns a list of parameters of layer. + + Returns: + List of current parameter values. + """ + raise NotImplementedError() + + +class AffineLayer(LayerWithParameters): + """Layer implementing an affine tranformation of its inputs. + + This layer is parameterised by a weight matrix and bias vector. + """ + + def __init__(self, input_dim, output_dim, + weights_initialiser=init.UniformInit(-0.1, 0.1), + biases_initialiser=init.ConstantInit(0.), + weights_cost=None, biases_cost=None): + """Initialises a parameterised affine layer. + + Args: + input_dim (int): Dimension of inputs to the layer. + output_dim (int): Dimension of the layer outputs. + weights_initialiser: Initialiser for the weight parameters. + biases_initialiser: Initialiser for the bias parameters. + """ + self.input_dim = input_dim + self.output_dim = output_dim + self.weights = weights_initialiser((self.output_dim, self.input_dim)) + self.biases = biases_initialiser(self.output_dim) + + def fprop(self, inputs): + """Forward propagates activations through the layer transformation. + + For inputs `x`, outputs `y`, weights `W` and biases `b` the layer + corresponds to `y = W.dot(x) + b`. + + Args: + inputs: Array of layer inputs of shape (batch_size, input_dim). + + Returns: + outputs: Array of layer outputs of shape (batch_size, output_dim). + """ + raise NotImplementedError() + + def grads_wrt_params(self, inputs, grads_wrt_outputs): + """Calculates gradients with respect to layer parameters. + + Args: + inputs: array of inputs to layer of shape (batch_size, input_dim) + grads_wrt_to_outputs: array of gradients with respect to the layer + outputs of shape (batch_size, output_dim) + + Returns: + list of arrays of gradients with respect to the layer parameters + `[grads_wrt_weights, grads_wrt_biases]`. + """ + raise NotImplementedError() + + @property + def params(self): + """A list of layer parameter values: `[weights, biases]`.""" + return [self.weights, self.biases] + + def __repr__(self): + return 'AffineLayer(input_dim={0}, output_dim={1})'.format( + self.input_dim, self.output_dim) diff --git a/mlp/learning_rules.py b/mlp/learning_rules.py new file mode 100644 index 0000000..22f2bcb --- /dev/null +++ b/mlp/learning_rules.py @@ -0,0 +1,162 @@ +# -*- coding: utf-8 -*- +"""Learning rules. + +This module contains classes implementing gradient based learning rules. +""" + +import numpy as np + + +class GradientDescentLearningRule(object): + """Simple (stochastic) gradient descent learning rule. + + For a scalar error function `E(p[0], p_[1] ... )` of some set of + potentially multidimensional parameters this attempts to find a local + minimum of the loss function by applying updates to each parameter of the + form + + p[i] := p[i] - learning_rate * dE/dp[i] + + With `learning_rate` a positive scaling parameter. + + The error function used in successive applications of these updates may be + a stochastic estimator of the true error function (e.g. when the error with + respect to only a subset of data-points is calculated) in which case this + will correspond to a stochastic gradient descent learning rule. + """ + + def __init__(self, learning_rate=1e-3): + """Creates a new learning rule object. + + Args: + learning_rate: A postive scalar to scale gradient updates to the + parameters by. This needs to be carefully set - if too large + the learning dynamic will be unstable and may diverge, while + if set too small learning will proceed very slowly. + + """ + assert learning_rate > 0., 'learning_rate should be positive.' + self.learning_rate = learning_rate + + def initialise(self, params): + """Initialises the state of the learning rule for a set or parameters. + + This must be called before `update_params` is first called. + + Args: + params: A list of the parameters to be optimised. Note these will + be updated *in-place* to avoid reallocating arrays on each + update. + """ + self.params = params + + def reset(self): + """Resets any additional state variables to their intial values. + + For this learning rule there are no additional state variables so we + do nothing here. + """ + pass + + def update_params(self, grads_wrt_params): + """Applies a single gradient descent update to all parameters. + + All parameter updates are performed using in-place operations and so + nothing is returned. + + Args: + grads_wrt_params: A list of gradients of the scalar loss function + with respect to each of the parameters passed to `initialise` + previously, with this list expected to be in the same order. + """ + for param, grad in zip(self.params, grads_wrt_params): + param -= self.learning_rate * grad + + +class MomentumLearningRule(GradientDescentLearningRule): + """Gradient descent with momentum learning rule. + + This extends the basic gradient learning rule by introducing extra + momentum state variables for each parameter. These can help the learning + dynamic help overcome shallow local minima and speed convergence when + making multiple successive steps in a similar direction in parameter space. + + For parameter p[i] and corresponding momentum m[i] the updates for a + scalar loss function `L` are of the form + + m[i] := mom_coeff * m[i] - learning_rate * dL/dp[i] + p[i] := p[i] + m[i] + + with `learning_rate` a positive scaling parameter for the gradient updates + and `mom_coeff` a value in [0, 1] that determines how much 'friction' there + is the system and so how quickly previous momentum contributions decay. + """ + + def __init__(self, learning_rate=1e-3, mom_coeff=0.9): + """Creates a new learning rule object. + + Args: + learning_rate: A postive scalar to scale gradient updates to the + parameters by. This needs to be carefully set - if too large + the learning dynamic will be unstable and may diverge, while + if set too small learning will proceed very slowly. + mom_coeff: A scalar in the range [0, 1] inclusive. This determines + the contribution of the previous momentum value to the value + after each update. If equal to 0 the momentum is set to exactly + the negative scaled gradient each update and so this rule + collapses to standard gradient descent. If equal to 1 the + momentum will just be decremented by the scaled gradient at + each update. This is equivalent to simulating the dynamic in + a frictionless system. Due to energy conservation the loss + of 'potential energy' as the dynamics moves down the loss + function surface will lead to an increasingly large 'kinetic + energy' and so speed, meaning the updates will become + increasingly large, potentially unstably so. Typically a value + less than but close to 1 will avoid these issues and cause the + dynamic to converge to a local minima where the gradients are + by definition zero. + """ + super(MomentumLearningRule, self).__init__(learning_rate) + assert mom_coeff >= 0. and mom_coeff <= 1., ( + 'mom_coeff should be in the range [0, 1].' + ) + self.mom_coeff = mom_coeff + + def initialise(self, params): + """Initialises the state of the learning rule for a set or parameters. + + This must be called before `update_params` is first called. + + Args: + params: A list of the parameters to be optimised. Note these will + be updated *in-place* to avoid reallocating arrays on each + update. + """ + super(MomentumLearningRule, self).initialise(params) + self.moms = [] + for param in self.params: + self.moms.append(np.zeros_like(param)) + + def reset(self): + """Resets any additional state variables to their intial values. + + For this learning rule this corresponds to zeroing all the momenta. + """ + for mom in zip(self.moms): + mom *= 0. + + def update_params(self, grads_wrt_params): + """Applies a single update to all parameters. + + All parameter updates are performed using in-place operations and so + nothing is returned. + + Args: + grads_wrt_params: A list of gradients of the scalar loss function + with respect to each of the parameters passed to `initialise` + previously, with this list expected to be in the same order. + """ + for param, mom, grad in zip(self.params, self.moms, grads_wrt_params): + mom *= self.mom_coeff + mom -= self.learning_rate * grad + param += mom diff --git a/mlp/models.py b/mlp/models.py new file mode 100644 index 0000000..86a0472 --- /dev/null +++ b/mlp/models.py @@ -0,0 +1,67 @@ +# -*- coding: utf-8 -*- +"""Model definitions. + +This module implements objects encapsulating learnable models of input-output +relationships. The model objects implement methods for forward propagating +the inputs through the transformation(s) defined by the model to produce +outputs (and intermediate states) and for calculating gradients of scalar +functions of the outputs with respect to the model parameters. +""" + +from mlp.layers import LayerWithParameters + + +class SingleLayerModel(object): + """A model consisting of a single transformation layer.""" + + def __init__(self, layer): + """Create a new single layer model instance. + + Args: + layer: The layer object defining the model architecture. + """ + self.layer = layer + + @property + def params(self): + """A list of all of the parameters of the model.""" + return self.layer.params + + def fprop(self, inputs): + """Calculate the model outputs corresponding to a batch of inputs. + + Args: + inputs: Batch of inputs to the model. + + Returns: + List which is a concatenation of the model inputs and model + outputs, this being done for consistency of the interface with + multi-layer models for which `fprop` returns a list of + activations through all immediate layers of the model and including + the inputs and outputs. + """ + activations = [inputs, self.layer.fprop(inputs)] + return activations + + def grads_wrt_params(self, activations, grads_wrt_outputs): + """Calculates gradients with respect to the model parameters. + + Args: + activations: List of all activations from forward pass through + model using `fprop`. + grads_wrt_outputs: Gradient with respect to the model outputs of + the scalar function parameter gradients are being calculated + for. + + Returns: + List of gradients of the scalar function with respect to all model + parameters. + """ + return self.layer.grads_wrt_params(activations[0], grads_wrt_outputs) + + def params_cost(self): + """Calculates the parameter dependent cost term of the model.""" + return self.layer.params_cost() + + def __repr__(self): + return 'SingleLayerModel(' + str(layer) + ')' diff --git a/mlp/optimisers.py b/mlp/optimisers.py new file mode 100644 index 0000000..01dd8b6 --- /dev/null +++ b/mlp/optimisers.py @@ -0,0 +1,134 @@ +# -*- coding: utf-8 -*- +"""Model optimisers. + +This module contains objects implementing (batched) stochastic gradient descent +based optimisation of models. +""" + +import time +import logging +from collections import OrderedDict +import numpy as np + + +logger = logging.getLogger(__name__) + + +class Optimiser(object): + """Basic model optimiser.""" + + def __init__(self, model, error, learning_rule, train_dataset, + valid_dataset=None, data_monitors=None): + """Create a new optimiser instance. + + Args: + model: The model to optimise. + error: The scalar error function to minimise. + learning_rule: Gradient based learning rule to use to minimise + error. + train_dataset: Data provider for training set data batches. + valid_dataset: Data provider for validation set data batches. + data_monitors: Dictionary of functions evaluated on targets and + model outputs (averaged across both full training and + validation data sets) to monitor during training in addition + to the error. Keys should correspond to a string label for + the statistic being evaluated. + """ + self.model = model + self.error = error + self.learning_rule = learning_rule + self.learning_rule.initialise(self.model.params) + self.train_dataset = train_dataset + self.valid_dataset = valid_dataset + self.data_monitors = OrderedDict([('error', error)]) + if data_monitors is not None: + self.data_monitors.update(data_monitors) + + def do_training_epoch(self): + """Do a single training epoch. + + This iterates through all batches in training dataset, for each + calculating the gradient of the estimated error given the batch with + respect to all the model parameters and then updates the model + parameters according to the learning rule. + """ + for inputs_batch, targets_batch in self.train_dataset: + activations = self.model.fprop(inputs_batch) + grads_wrt_outputs = self.error.grad(activations[-1], targets_batch) + grads_wrt_params = self.model.grads_wrt_params( + activations, grads_wrt_outputs) + self.learning_rule.update_params(grads_wrt_params) + + def eval_monitors(self, dataset, label): + """Evaluates the monitors for the given dataset. + + Args: + dataset: Dataset to perform evaluation with. + label: Tag to add to end of monitor keys to identify dataset. + + Returns: + OrderedDict of monitor values evaluated on dataset. + """ + data_mon_vals = OrderedDict([(key + label, 0.) for key + in self.data_monitors.keys()]) + for inputs_batch, targets_batch in dataset: + activations = self.model.fprop(inputs_batch) + for key, data_monitor in self.data_monitors.items(): + data_mon_vals[key + label] += data_monitor( + activations[-1], targets_batch) + for key, data_monitor in self.data_monitors.items(): + data_mon_vals[key + label] /= dataset.num_batches + return data_mon_vals + + def get_epoch_stats(self): + """Computes training statistics for an epoch. + + Returns: + An OrderedDict with keys corresponding to the statistic labels and + values corresponding to the value of the statistic. + """ + epoch_stats = OrderedDict() + epoch_stats.update(self.eval_monitors(self.train_dataset, '(train)')) + if self.valid_dataset is not None: + epoch_stats.update(self.eval_monitors( + self.valid_dataset, '(valid)')) + return epoch_stats + + def log_stats(self, epoch, epoch_time, stats): + """Outputs stats for a training epoch to a logger. + + Args: + epoch (int): Epoch counter. + epoch_time: Time taken in seconds for the epoch to complete. + stats: Monitored stats for the epoch. + """ + logger.info('Epoch {0}: {1:.1f}s to complete\n {2}'.format( + epoch, epoch_time, + ', '.join(['{0}={1:.2e}'.format(k, v) for (k, v) in stats.items()]) + )) + + def train(self, num_epochs, stats_interval=5): + """Trains a model for a set number of epochs. + + Args: + num_epochs: Number of epochs (complete passes through trainin + dataset) to train for. + stats_interval: Training statistics will be recorded and logged + every `stats_interval` epochs. + + Returns: + Tuple with first value being an array of training run statistics + and the second being a dict mapping the labels for the statistics + recorded to their column index in the array. + """ + run_stats = [list(self.get_epoch_stats().values())] + for epoch in range(1, num_epochs + 1): + start_time = time.clock() + self.do_training_epoch() + epoch_time = time.clock() - start_time + if epoch % stats_interval == 0: + stats = self.get_epoch_stats() + self.log_stats(epoch, epoch_time, stats) + run_stats.append(list(stats.values())) + return np.array(run_stats), {k: i for i, k in enumerate(stats.keys())} + diff --git a/notebooks/01_Introduction.ipynb b/notebooks/01_Introduction.ipynb index b50e1b4..cfe69a1 100644 --- a/notebooks/01_Introduction.ipynb +++ b/notebooks/01_Introduction.ipynb @@ -323,11 +323,37 @@ }, "outputs": [], "source": [ - "# write your code here for iterating over five batches of \n", - "# 100 data points each and displaying as 10x10 grids\n", + "def show_batch_of_images(img_batch, fig_size=(3, 3)):\n", + " fig = plt.figure(figsize=fig_size)\n", + " batch_size, im_height, im_width = img_batch.shape\n", + " # calculate no. columns per grid row to give square grid\n", + " grid_size = int(batch_size**0.5)\n", + " # intialise empty array to tile image grid into\n", + " tiled = np.empty((im_height * grid_size, \n", + " im_width * batch_size // grid_size))\n", + " # iterate over images in batch + indexes within batch\n", + " for i, img in enumerate(img_batch):\n", + " # calculate grid row and column indices\n", + " r, c = i % grid_size, i // grid_size\n", + " tiled[r * im_height:(r + 1) * im_height, \n", + " c * im_height:(c + 1) * im_height] = img\n", + " ax = fig.add_subplot(111)\n", + " ax.imshow(tiled, cmap='Greys')\n", + " ax.axis('off')\n", + " fig.tight_layout()\n", + " plt.show()\n", + " return fig, ax\n", "\n", - "def show_batch_of_images(img_batch):\n", - " raise NotImplementedError('Write me!')" + "batch_size = 100\n", + "num_batches = 5\n", + "\n", + "mnist_dp = data_providers.MNISTDataProvider(\n", + " which_set='valid', batch_size=batch_size, \n", + " max_num_batches=num_batches, shuffle_order=True)\n", + "\n", + "for inputs, target in mnist_dp:\n", + " # reshape inputs from batch of vectors to batch of 2D arrays (images)\n", + " _ = show_batch_of_images(inputs.reshape((batch_size, 28, 28)))" ] }, { diff --git a/notebooks/02_Single_layer_models.ipynb b/notebooks/02_Single_layer_models.ipynb new file mode 100644 index 0000000..74ee73a --- /dev/null +++ b/notebooks/02_Single_layer_models.ipynb @@ -0,0 +1,833 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Single layer models\n", + "\n", + "In this lab we will implement a single-layer network model consisting of solely of an affine transformation of the inputs. The relevant material for this was covered in [the slides of the first lecture](http://www.inf.ed.ac.uk/teaching/courses/mlp/2016/mlp01-intro.pdf). \n", + "\n", + "We will first implement the forward propagation of inputs to the network to produce predicted outputs. We will then move on to considering how to use gradients of an error function evaluated on the outputs to compute the gradients with respect to the model parameters to allow us to perform an iterative gradient-descent training procedure. In the final exercise you will use an interactive visualisation to explore the role of some of the different hyperparameters of gradient-descent based training methods.\n", + "\n", + "#### A note on random number generators\n", + "\n", + "It is generally a good practice (for machine learning applications **not** for cryptography!) to seed a pseudo-random number generator once at the beginning of each experiment. This makes it easier to reproduce results as the same random draws will produced each time the experiment is run (e.g. the same random initialisations used for parameters). Therefore generally when we need to generate random values during this course, we will create a seeded random number generator object as we do in the cell below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "seed = 27092016 \n", + "rng = np.random.RandomState(seed)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 1: linear and affine transforms\n", + "\n", + "Any *linear transform* (also called a linear map) of a finite-dimensional vector space can be parametrised by a matrix. So for example if we consider $\\boldsymbol{x} \\in \\mathbb{R}^{D}$ as the input space of a model with $D$ dimensional real-valued inputs, then a matrix $\\mathbf{W} \\in \\mathbb{R}^{K\\times D}$ can be used to define a prediction model consisting solely of a linear transform of the inputs\n", + "\n", + "\\begin{equation}\n", + " \\boldsymbol{y} = \\mathbf{W} \\boldsymbol{x}\n", + " \\qquad\n", + " \\Leftrightarrow\n", + " \\qquad\n", + " y_k = \\sum_{d=1}^D \\left( W_{kd} x_d \\right) \\quad \\forall k \\in \\left\\lbrace 1 \\dots K\\right\\rbrace\n", + "\\end{equation}\n", + "\n", + "with here $\\boldsymbol{y} \\in \\mathbb{R}^K$ the $K$-dimensional real-valued output of the model. Geometrically we can think of a linear transform doing some combination of rotation, scaling, reflection and shearing of the input.\n", + "\n", + "An *affine transform* consists of a linear transform plus an additional translation parameterised by a vector $\\boldsymbol{b} \\in \\mathbb{R}^K$. A model consisting of an affine transformation of the inputs can then be defined as\n", + "\n", + "\\begin{equation}\n", + " \\boldsymbol{y} = \\mathbf{W}\\boldsymbol{x} + \\boldsymbol{b}\n", + " \\qquad\n", + " \\Leftrightarrow\n", + " \\qquad\n", + " y_k = \\sum_{d=1}^D \\left( W_{kd} x_d \\right) + b_k \\quad \\forall k \\in \\left\\lbrace 1 \\dots K\\right\\rbrace\n", + "\\end{equation}\n", + "\n", + "In machine learning we will usually refer to the matrix $\\mathbf{W}$ as a *weight matrix* and the vector $\\boldsymbol{b}$ as a *bias vector*.\n", + "\n", + "Generally rather than working with a single data vector $\\boldsymbol{x}$ we will work with batches of datapoints $\\left\\lbrace \\boldsymbol{x}^{(b)}\\right\\rbrace_{b=1}^B$. We could calculate the outputs for each input in the batch sequentially\n", + "\n", + "\\begin{align}\n", + " \\boldsymbol{y}^{(1)} &= \\mathbf{W}\\boldsymbol{x}^{(1)} + \\boldsymbol{b}\\\\\n", + " \\boldsymbol{y}^{(2)} &= \\mathbf{W}\\boldsymbol{x}^{(2)} + \\boldsymbol{b}\\\\\n", + " \\dots &\\\\\n", + " \\boldsymbol{y}^{(B)} &= \\mathbf{W}\\boldsymbol{x}^{(B)} + \\boldsymbol{b}\\\\\n", + "\\end{align}\n", + "\n", + "by looping over each input in the batch and calculating the output. However in general loops in Python are slow (particularly compared to compiled and typed languages such as C). This is due at least in part to the large overhead in dynamically inferring variable types. In general therefore wherever possible we want to avoid having loops in which such overhead will become the dominant computational cost.\n", + "\n", + "For array based numerical operations, one way of overcoming this bottleneck is to *vectorise* operations. NumPy `ndarrays` are typed arrays for which operations such as basic elementwise arithmetic and linear algebra operations such as computing matrix-matrix or matrix-vector products are implemented by calls to highly-optimised compiled libraries. Therefore if you can implement code directly using NumPy operations on arrays rather than by looping over array elements it is often possible to make very substantial performance gains.\n", + "\n", + "As a simple example we can consider adding up two arrays `a` and `b` and writing the result to a third array `c`. First lets initialise `a` and `b` with arbitrary values by running the cell below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "size = 1000\n", + "a = np.arange(size)\n", + "b = np.ones(size)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's time how long it takes to add up each pair of values in the two array and write the results to a third array using a loop-based implementation. We will use the `%%timeit` magic briefly mentioned in the previous lab notebook specifying the number of times to loop the code as 100 and to give the best of 3 repeats. Run the cell below to get a print out of the average time taken." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%%timeit -n 100 -r 3\n", + "c = np.empty(size)\n", + "for i in range(size):\n", + " c[i] = a[i] + b[i]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And now we will perform the corresponding summation with the overloaded addition operator of NumPy arrays. Again run the cell below to get a print out of the average time taken." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%%timeit -n 100 -r 3\n", + "c = a + b" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The first loop-based implementation should have taken on the order of milliseconds ($10^{-3}$s) while the vectorised implementation should have taken on the order of microseconds ($10^{-6}$s), i.e. a $\\sim1000\\times$ speedup. Hopefully this simple example should make it clear why we want to vectorise operations whenever possible!\n", + "\n", + "Getting back to our affine model, ideally rather than individually computing the output corresponding to each input we should compute the outputs for all inputs in a batch using a vectorised implementation. As you saw last week, data providers return batches of inputs as arrays of shape `(batch_size, input_dim)`. In the mathematical notation used earlier we can consider this as a matrix $\\mathbf{X}$ of dimensionality $B \\times D$, and in particular\n", + "\n", + "\\begin{equation}\n", + " \\mathbf{X} = \\left[ \\boldsymbol{x}^{(1)} ~ \\boldsymbol{x}^{(2)} ~ \\dots ~ \\boldsymbol{x}^{(B)} \\right]^\\mathrm{T}\n", + "\\end{equation}\n", + "\n", + "i.e. the $b^{\\textrm{th}}$ input vector $\\boldsymbol{x}^{(b)}$ corresponds to the $b^{\\textrm{th}}$ row of $\\mathbf{X}$. If we define the $B \\times K$ matrix of outputs $\\mathbf{Y}$ similarly as\n", + "\n", + "\\begin{equation}\n", + " \\mathbf{Y} = \\left[ \\boldsymbol{y}^{(1)} ~ \\boldsymbol{y}^{(2)} ~ \\dots ~ \\boldsymbol{y}^{(B)} \\right]^\\mathrm{T}\n", + "\\end{equation}\n", + "\n", + "then we can express the relationship between $\\mathbf{X}$ and $\\mathbf{Y}$ using [matrix multiplication](https://en.wikipedia.org/wiki/Matrix_multiplication) and addition as\n", + "\n", + "\\begin{equation}\n", + " \\mathbf{Y} = \\mathbf{X} \\mathbf{W}^\\mathrm{T} + \\mathbf{B}\n", + "\\end{equation}\n", + "\n", + "where $\\mathbf{B} = \\left[ \\boldsymbol{b} ~ \\boldsymbol{b} ~ \\dots ~ \\boldsymbol{b} \\right]^\\mathrm{T}$ i.e. a $B \\times K$ matrix with each row corresponding to the bias vector. The weight matrix needs to be transposed here as the inner dimensions of a matrix multiplication must match i.e. for $\\mathbf{C} = \\mathbf{A} \\mathbf{B}$ then if $\\mathbf{A}$ is of dimensionality $K \\times L$ and $\\mathbf{B}$ is of dimensionality $M \\times N$ then it must be the case that $L = M$ and $\\mathbf{C}$ will be of dimensionality $K \\times N$.\n", + "\n", + "The first exercise for this lab is to implement *forward propagation* for a single-layer model consisting of an affine transformation of the inputs in the `fprop` function given as skeleton code in the cell below. This should work for a batch of inputs of shape `(batch_size, input_dim)` producing a batch of outputs of shape `(batch_size, output_dim)`.\n", + " \n", + "You will probably want to use the NumPy `dot` function and [broadcasting features](http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html) to implement this efficiently. If you are not familiar with either / both of these you may wish to read the [hints](#Hints:-Using-the-dot-function-and-broadcasting) section below which gives some details on these before attempting the exercise." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def fprop(inputs, weights, biases):\n", + " \"\"\"Forward propagates activations through the layer transformation.\n", + "\n", + " For inputs `x`, outputs `y`, weights `W` and biases `b` the layer\n", + " corresponds to `y = W x + b`.\n", + "\n", + " Args:\n", + " inputs: Array of layer inputs of shape (batch_size, input_dim).\n", + " weights: Array of weight parameters of shape \n", + " (output_dim, input_dim).\n", + " biases: Array of bias parameters of shape (output_dim, ).\n", + "\n", + " Returns:\n", + " outputs: Array of layer outputs of shape (batch_size, output_dim).\n", + " \"\"\"\n", + " raise NotImplementedError('Delete this and write your code here instead.')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once you have implemented `fprop` in the cell above you can test your implementation by running the cell below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "inputs = np.array([[0., -1., 2.], [-6., 3., 1.]])\n", + "weights = np.array([[2., -3., -1.], [-5., 7., 2.]])\n", + "biases = np.array([5., -3.])\n", + "true_outputs = np.array([[6., -6.], [-17., 50.]])\n", + "\n", + "if not np.allclose(fprop(inputs, weights, biases), true_outputs):\n", + " print('Wrong outputs computed.')\n", + "else:\n", + " print('All outputs correct!')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Hints: Using the `dot` function and broadcasting\n", + "\n", + "For those new to NumPy below are some details on the `dot` function and broadcasting feature of NumPy that you may want to use for implementing the first exercise. If you are already familiar with these and have already completed the first exercise you can move on straight to [second exercise](#Exercise-2:-visualising-random-models).\n", + "\n", + "#### `numpy.dot` function\n", + "\n", + "Matrix-matrix, matrix-vector and vector-vector (dot) products can all be computed in NumPy using the [`dot`](http://docs.scipy.org/doc/numpy/reference/generated/numpy.dot.html) function. For example if `A` and `B` are both two dimensional arrays, then `C = np.dot(A, B)` or equivalently `C = A.dot(B)` will both compute the matrix product of `A` and `B` assuming `A` and `B` have compatible dimensions. Similarly if `a` and `b` are one dimensional arrays then `c = np.dot(a, b)` / `c = a.dot(b)` will compute the [scalar / dot product](https://en.wikipedia.org/wiki/Dot_product) of the two arrays. If `A` is a two-dimensional array and `b` a one-dimensional array `np.dot(A, b)` / `A.dot(b)` will compute the matrix-vector product of `A` and `b`. Examples of all three of these product types are shown in the cell below:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Initiliase arrays with arbitrary values\n", + "A = np.arange(9).reshape((3, 3))\n", + "B = np.ones((3, 3)) * 2\n", + "a = np.array([-1., 0., 1.])\n", + "b = np.array([0.1, 0.2, 0.3])\n", + "print(A.dot(B)) # Matrix-matrix product\n", + "print(B.dot(A)) # Reversed product of above A.dot(B) != B.dot(A) in general\n", + "print(A.dot(b)) # Matrix-vector product\n", + "print(b.dot(A)) # Again A.dot(b) != b.dot(A) unless A is symmetric i.e. A == A.T\n", + "print(a.dot(b)) # Vector-vector scalar product" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Broadcasting\n", + "\n", + "Another NumPy feature it will be helpful to get familiar with is [broadcasting](http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html). Broadcasting allows you to apply operations to arrays of different shapes, for example to add a one-dimensional array to a two-dimensional array or multiply a multidimensional array by a scalar. The complete set of rules for broadcasting as explained in the official documentation page just linked to can sound a bit complex: you might find the [visual explanation on this page](http://www.scipy-lectures.org/intro/numpy/operations.html#broadcasting) more intuitive. The cell below gives a few examples:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Initiliase arrays with arbitrary values\n", + "A = np.arange(6).reshape((3, 2))\n", + "b = np.array([0.1, 0.2])\n", + "c = np.array([-1., 0., 1.])\n", + "print(A + b) # Add b elementwise to all rows of A\n", + "print((A.T + c).T) # Add b elementwise to all columns of A\n", + "print(A * b) # Multiply each row of A elementise by b " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 2: visualising random models" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this exercise you will use your `fprop` implementation to visualise the outputs of a single-layer affine transform model with two-dimensional inputs and a one-dimensional output. In this simple case we can visualise the joint input-output space on a 3D axis.\n", + "\n", + "For this task and the learning experiments later in the notebook we will use a regression dataset from the [UCI machine learning repository](http://archive.ics.uci.edu/ml/index.html). In particular we will use a version of the [Combined Cycle Power Plant dataset](http://archive.ics.uci.edu/ml/datasets/Combined+Cycle+Power+Plant), where the task is to predict the energy output of a power plant given observations of the local ambient conditions (e.g. temperature, pressure and humidity).\n", + "\n", + "The original dataset has four input dimensions and a single target output dimension. We have preprocessed the dataset by [whitening](https://en.wikipedia.org/wiki/Whitening_transformation) it, a common preprocessing step. We will only use the first two dimensions of the whitened inputs (corresponding to the first two principal components of the inputs) so we can easily visualise the joint input-output space.\n", + "\n", + "The dataset has been wrapped in the `CCPPDataProvider` class in the `mlp.data_providers` module and the data included as a compressed file in the data directory as `ccpp_data.npz`. Running the cell below will initialise an instance of this class, get a single batch of inputs and outputs and import the necessary `matplotlib` objects." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "from mpl_toolkits.mplot3d import Axes3D\n", + "from mlp.data_providers import CCPPDataProvider\n", + "%matplotlib notebook\n", + "\n", + "data_provider = CCPPDataProvider(\n", + " which_set='train',\n", + " input_dims=[0, 1],\n", + " batch_size=5000, \n", + " max_num_batches=1, \n", + " shuffle_order=False\n", + ")\n", + "\n", + "input_dim, output_dim = 2, 1\n", + "\n", + "inputs, targets = data_provider.next()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we used the `%matplotlib notebook` magic command rather than the `%matplotlib inline` we used in the previous lab as this allows us to produce interactive 3D plots which you can rotate and zoom in/out by dragging with the mouse and scrolling the mouse-wheel respectively. Once you have finished interacting with a plot you can close it to produce a static inline plot using the button in the top-right corner.\n", + "\n", + "Now run the cell below to plot the predicted outputs of a randomly initialised model across the two dimensional input space as well as the true target outputs. This sort of visualisation can be a useful method (in low dimensions) to assess how well the model is likely to be able to fit the data and to judge appropriate initialisation scales for the parameters. Each time you re-run the cell a new set of random parameters will be sampled\n", + "\n", + "Some questions to consider:\n", + "\n", + " * How do the weights and bias initialisation scale affect the sort of predicted input-output relationships?\n", + " * Does the linear form of the model seem appropriate for the data here?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "weights_init_range = 0.5\n", + "biases_init_range = 0.1\n", + "\n", + "# Randomly initialise weights matrix\n", + "weights = rng.uniform(\n", + " low=-weights_init_range, \n", + " high=weights_init_range, \n", + " size=(output_dim, input_dim)\n", + ")\n", + "\n", + "# Randomly initialise biases vector\n", + "biases = rng.uniform(\n", + " low=-biases_init_range, \n", + " high=biases_init_range, \n", + " size=output_dim\n", + ")\n", + "# Calculate predicted model outputs\n", + "outputs = fprop(inputs, weights, biases)\n", + "\n", + "# Plot target and predicted outputs against inputs on same axis\n", + "fig = plt.figure(figsize=(8, 8))\n", + "ax = fig.add_subplot(111, projection='3d')\n", + "ax.plot(inputs[:, 0], inputs[:, 1], targets[:, 0], 'r.', ms=2)\n", + "ax.plot(inputs[:, 0], inputs[:, 1], outputs[:, 0], 'b.', ms=2)\n", + "ax.set_xlabel('Input dim 1')\n", + "ax.set_ylabel('Input dim 2')\n", + "ax.set_zlabel('Output')\n", + "ax.legend(['Targets', 'Predictions'], frameon=False)\n", + "fig.tight_layout()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 3: computing the error function and its gradient\n", + "\n", + "Here we will consider the task of regression as covered in the first lecture slides. The aim in a regression problem is given inputs $\\left\\lbrace \\boldsymbol{x}^{(n)}\\right\\rbrace_{n=1}^N$ to produce outputs $\\left\\lbrace \\boldsymbol{y}^{(n)}\\right\\rbrace_{n=1}^N$ that are as 'close' as possible to a set of target outputs $\\left\\lbrace \\boldsymbol{t}^{(n)}\\right\\rbrace_{n=1}^N$. The measure of 'closeness' or distance between target and predicted outputs is a design choice. \n", + "\n", + "A very common choice is the squared Euclidean distance between the predicted and target outputs. This can be computed as the sum of the squared differences between each element in the target and predicted outputs. A common convention is to multiply this value by $\\frac{1}{2}$ as this gives a slightly nicer expression for the error gradient. The error for the $n^{\\textrm{th}}$ training example is then\n", + "\n", + "\\begin{equation}\n", + " E^{(n)} = \\frac{1}{2} \\sum_{k=1}^K \\left\\lbrace \\left( y^{(n)}_k - t^{(n)}_k \\right)^2 \\right\\rbrace.\n", + "\\end{equation}\n", + "\n", + "The overall error is then the *average* of this value across all training examples\n", + "\n", + "\\begin{equation}\n", + " \\bar{E} = \\frac{1}{N} \\sum_{n=1}^N \\left\\lbrace E^{(n)} \\right\\rbrace. \n", + "\\end{equation}\n", + "\n", + "*Note here we are using a slightly different convention from the lectures. There the overall error was considered to be the sum of the individual error terms rather than the mean. To differentiate between the two we will use $\\bar{E}$ to represent the average error here as opposed to sum of errors $E$ as used in the slides with $\\bar{E} = \\frac{E}{N}$. Normalising by the number of training examples is helpful to do in practice as this means we can more easily compare errors across data sets / batches of different sizes, and more importantly it means the size of our gradient updates will be independent of the number of training examples summed over.*\n", + "\n", + "The regression problem is then to find parameters of the model which minimise $\\bar{E}$. For our simple single-layer affine model here that corresponds to finding weights $\\mathbf{W}$ and biases $\\boldsymbol{b}$ which minimise $\\bar{E}$. \n", + "\n", + "As mentioned in the lecture, for this simple case there is actually a closed form solution for the optimal weights and bias parameters. This is the linear least-squares solution those doing MLPR will have come across.\n", + "\n", + "However in general we will be interested in models where closed form solutions do not exist. We will therefore generally use iterative, gradient descent based training methods to find parameters which (locally) minimise the error function. A basic requirement of being able to do gradient-descent based training is (unsuprisingly) the ability to evaluate gradients of the error function.\n", + "\n", + "In the next exercise we will consider how to calculate gradients of the error function with respect to the model parameters $\\mathbf{W}$ and $\\boldsymbol{b}$, but as a first step here we will consider the gradient of the error function with respect to the model outputs $\\left\\lbrace \\boldsymbol{y}^{(n)}\\right\\rbrace_{n=1}^N$. This can be written\n", + "\n", + "\\begin{equation}\n", + " \\frac{\\partial \\bar{E}}{\\partial \\boldsymbol{y}^{(n)}} = \\frac{1}{N} \\left( \\boldsymbol{y}^{(n)} - \\boldsymbol{t}^{(n)} \\right)\n", + " \\qquad \\Leftrightarrow \\qquad\n", + " \\frac{\\partial \\bar{E}}{\\partial y^{(n)}_k} = \\frac{1}{N} \\left( y^{(n)}_k - t^{(n)}_k \\right) \\quad \\forall k \\in \\left\\lbrace 1 \\dots K\\right\\rbrace\n", + "\\end{equation}\n", + "\n", + "i.e. the gradient of the error function with respect to the $n^{\\textrm{th}}$ model output is just the difference between the $n^{\\textrm{th}}$ model and target outputs, corresponding to the $\\boldsymbol{\\delta}^{(n)}$ terms mentioned in the lecture slides.\n", + "\n", + "The third exercise is, using the equations given above, to implement functions computing the mean sum of squared differences error and its gradient with respect to the model outputs. You should implement the functions using the provided skeleton definitions in the cell below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def error(outputs, targets):\n", + " \"\"\"Calculates error function given a batch of outputs and targets.\n", + "\n", + " Args:\n", + " outputs: Array of model outputs of shape (batch_size, output_dim).\n", + " targets: Array of target outputs of shape (batch_size, output_dim).\n", + "\n", + " Returns:\n", + " Scalar error function value.\n", + " \"\"\"\n", + " raise NotImplementedError('Delete this and write your code here instead.')\n", + " \n", + "def error_grad(outputs, targets):\n", + " \"\"\"Calculates gradient of error function with respect to model outputs.\n", + "\n", + " Args:\n", + " outputs: Array of model outputs of shape (batch_size, output_dim).\n", + " targets: Array of target outputs of shape (batch_size, output_dim).\n", + "\n", + " Returns:\n", + " Gradient of error function with respect to outputs.\n", + " This will be an array of shape (batch_size, output_dim).\n", + " \"\"\"\n", + " raise NotImplementedError('Delete this and write your code here instead.')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Check your implementation by running the test cell below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "outputs = np.array([[1., 2.], [-1., 0.], [6., -5.], [-1., 1.]])\n", + "targets = np.array([[0., 1.], [3., -2.], [7., -3.], [1., -2.]])\n", + "true_error = 5.\n", + "true_error_grad = np.array([[0.25, 0.25], [-1., 0.5], [-0.25, -0.5], [-0.5, 0.75]])\n", + "\n", + "if not error(outputs, targets) == true_error:\n", + " print('Error calculated incorrectly.')\n", + "elif not np.allclose(error_grad(outputs, targets), true_error_grad):\n", + " print('Error gradient calculated incorrectly.')\n", + "else:\n", + " print('Error function and gradient computed correctly!')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 4: computing gradients with respect to the parameters\n", + "\n", + "In the previous exercise you implemented a function computing the gradient of the error function with respect to the model outputs. For gradient-descent based training, we need to be able to evaluate the gradient of the error function with respect to the model parameters.\n", + "\n", + "Using the [chain rule for derivatives](https://en.wikipedia.org/wiki/Chain_rule#Higher_dimensions) we can write the partial deriviative of the error function with respect to single elements of the weight matrix and bias vector as\n", + "\n", + "\\begin{equation}\n", + " \\frac{\\partial \\bar{E}}{\\partial W_{kj}} = \\sum_{n=1}^N \\left\\lbrace \\frac{\\partial \\bar{E}}{\\partial y^{(n)}_k} \\frac{\\partial y^{(n)}_k}{\\partial W_{kj}} \\right\\rbrace\n", + " \\quad \\textrm{and} \\quad\n", + " \\frac{\\partial \\bar{E}}{\\partial b_k} = \\sum_{n=1}^N \\left\\lbrace \\frac{\\partial \\bar{E}}{\\partial y^{(n)}_k} \\frac{\\partial y^{(n)}_k}{\\partial b_k} \\right\\rbrace.\n", + "\\end{equation}\n", + "\n", + "From the definition of our model at the beginning we have \n", + "\n", + "\\begin{equation}\n", + " y^{(n)}_k = \\sum_{d=1}^D \\left\\lbrace W_{kd} x^{(n)}_d \\right\\rbrace + b_k\n", + " \\quad \\Rightarrow \\quad\n", + " \\frac{\\partial y^{(n)}_k}{\\partial W_{kj}} = x^{(n)}_j\n", + " \\quad \\textrm{and} \\quad\n", + " \\frac{\\partial y^{(n)}_k}{\\partial b_k} = 1.\n", + "\\end{equation}\n", + "\n", + "Putting this together we get that\n", + "\n", + "\\begin{equation}\n", + " \\frac{\\partial \\bar{E}}{\\partial W_{kj}} = \n", + " \\sum_{n=1}^N \\left\\lbrace \\frac{\\partial \\bar{E}}{\\partial y^{(n)}_k} x^{(n)}_j \\right\\rbrace\n", + " \\quad \\textrm{and} \\quad\n", + " \\frac{\\partial \\bar{E}}{\\partial b_{k}} = \n", + " \\sum_{n=1}^N \\left\\lbrace \\frac{\\partial \\bar{E}}{\\partial y^{(n)}_k} \\right\\rbrace.\n", + "\\end{equation}\n", + "\n", + "Although this may seem a bit of a roundabout way to get to these results, this method of decomposing the error gradient with respect to the parameters in terms of the gradient of the error function with respect to the model outputs and the derivatives of the model outputs with respect to the model parameters, will be key when calculating the parameter gradients of more complex models later in the course.\n", + "\n", + "Your task in this exercise is to implement a function calculating the gradient of the error function with respect to the weight and bias parameters of the model given the already computed gradient of the error function with respect to the model outputs. You should implement this in the `grads_wrt_params` function in the cell below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def grads_wrt_params(inputs, grads_wrt_outputs):\n", + " \"\"\"Calculates gradients with respect to model parameters.\n", + "\n", + " Args:\n", + " inputs: array of inputs to model of shape (batch_size, input_dim)\n", + " grads_wrt_to_outputs: array of gradients of with respect to the model\n", + " outputs of shape (batch_size, output_dim).\n", + "\n", + " Returns:\n", + " list of arrays of gradients with respect to the model parameters\n", + " `[grads_wrt_weights, grads_wrt_biases]`.\n", + " \"\"\"\n", + " raise NotImplementedError('Delete this and write your code here instead.')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Check your implementation by running the test cell below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "inputs = np.array([[1., 2., 3.], [-1., 4., -9.]])\n", + "grads_wrt_outputs = np.array([[-1., 1.], [2., -3.]])\n", + "true_grads_wrt_weights = np.array([[-3., 6., -21.], [4., -10., 30.]])\n", + "true_grads_wrt_biases = np.array([1., -2.])\n", + "\n", + "grads_wrt_weights, grads_wrt_biases = grads_wrt_params(\n", + " inputs, grads_wrt_outputs)\n", + "\n", + "if not np.allclose(true_grads_wrt_weights, grads_wrt_weights):\n", + " print('Gradients with respect to weights incorrect.')\n", + "elif not np.allclose(true_grads_wrt_biases, grads_wrt_biases):\n", + " print('Gradients with respect to biases incorrect.')\n", + "else:\n", + " print('All parameter gradients calculated correctly!')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 5: wrapping the functions into reusable components\n", + "\n", + "In exercises 1, 3 and 4 you implemented methods to compute the predicted outputs of our model, evaluate the error function and its gradient on the outputs and finally to calculate the gradients of the error with respect to the model parameters. Together they constitute all the basic ingredients we need to implement a gradient-descent based iterative learning procedure for the model.\n", + "\n", + "Although you could implement training code which directly uses the functions you defined, this would only be usable for this particular model architecture. In subsequent labs we will want to use the affine transform functions as the basis for more interesting multi-layer models. We will therefore wrap the implementations you just wrote in to reusable components that we can build more complex models with later in the course.\n", + "\n", + " * In the [`mlp.layers`](/edit/mlp/layers.py) module, use your implementations of `fprop` and `grad_wrt_params` above to implement the corresponding methods in the skeleton `AffineLayer` class provided.\n", + " * In the [`mlp.errors`](/edit/mlp/errors.py) module use your implementation of `error` and `error_grad` to implement the `__call__` and `grad` methods respectively of the skeleton `SumOfSquaredDiffsError` class provided. Note `__call__` is a special Python method that allows an object to be used with a function call syntax.\n", + "\n", + "Run the cell below to use your completed `AffineLayer` and `SumOfSquaredDiffsError` implementations to train a single-layer model using batch gradient descent on the CCCP dataset." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from mlp.layers import AffineLayer\n", + "from mlp.errors import SumOfSquaredDiffsError\n", + "from mlp.models import SingleLayerModel\n", + "from mlp.initialisers import UniformInit, ConstantInit\n", + "from mlp.learning_rules import GradientDescentLearningRule\n", + "from mlp.optimisers import Optimiser\n", + "import logging\n", + "\n", + "# Seed a random number generator\n", + "seed = 27092016 \n", + "rng = np.random.RandomState(seed)\n", + "\n", + "# Set up a logger object to print info about the training run to stdout\n", + "logger = logging.getLogger()\n", + "logger.setLevel(logging.INFO)\n", + "logger.handlers = [logging.StreamHandler()]\n", + "\n", + "# Create data provider objects for the CCPP training set\n", + "train_data = CCPPDataProvider('train', [0, 1], batch_size=100, rng=rng)\n", + "input_dim, output_dim = 2, 1\n", + "\n", + "# Create a parameter initialiser which will sample random uniform values\n", + "# from [-0.1, 0.1]\n", + "param_init = UniformInit(-0.1, 0.1, rng=rng)\n", + "\n", + "# Create our single layer model\n", + "layer = AffineLayer(input_dim, output_dim, param_init, param_init)\n", + "model = SingleLayerModel(layer)\n", + "\n", + "# Initialise the error object\n", + "error = SumOfSquaredDiffsError()\n", + "\n", + "# Use a basic gradient descent learning rule with a small learning rate\n", + "learning_rule = GradientDescentLearningRule(learning_rate=1e-2)\n", + "\n", + "# Use the created objects to initialise a new Optimiser instance.\n", + "optimiser = Optimiser(model, error, learning_rule, train_data)\n", + "\n", + "# Run the optimiser for 5 epochs (full passes through the training set)\n", + "# printing statistics every epoch.\n", + "stats, keys = optimiser.train(num_epochs=10, stats_interval=1)\n", + "\n", + "# Plot the change in the error over training.\n", + "fig = plt.figure(figsize=(8, 4))\n", + "ax = fig.add_subplot(111)\n", + "ax.plot(np.arange(1, stats.shape[0] + 1), stats[:, keys['error(train)']])\n", + "ax.set_xlabel('Epoch number')\n", + "ax.set_ylabel('Error')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Using similar code to previously we can now visualise the joint input-output space for the trained model. If you implemented the required methods correctly you should now see a much improved fit between predicted and target outputs when running the cell below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "data_provider = CCPPDataProvider(\n", + " which_set='train',\n", + " input_dims=[0, 1],\n", + " batch_size=5000, \n", + " max_num_batches=1, \n", + " shuffle_order=False\n", + ")\n", + "\n", + "inputs, targets = data_provider.next()\n", + "\n", + "# Calculate predicted model outputs\n", + "outputs = model.fprop(inputs)[-1]\n", + "\n", + "# Plot target and predicted outputs against inputs on same axis\n", + "fig = plt.figure(figsize=(8, 8))\n", + "ax = fig.add_subplot(111, projection='3d')\n", + "ax.plot(inputs[:, 0], inputs[:, 1], targets[:, 0], 'r.', ms=2)\n", + "ax.plot(inputs[:, 0], inputs[:, 1], outputs[:, 0], 'b.', ms=2)\n", + "ax.set_xlabel('Input dim 1')\n", + "ax.set_ylabel('Input dim 2')\n", + "ax.set_zlabel('Output')\n", + "ax.legend(['Targets', 'Predictions'], frameon=False)\n", + "fig.tight_layout()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercise 6: visualising training trajectories in parameter space" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Running the cell below will display an interactive widget which plots the trajectories of gradient-based training of the single-layer affine model on the CCPP dataset in the three dimensional parameter space (two weights plus bias) from random initialisations. Also shown on the right is a plot of the evolution of the error function (evaluated on the current batch) over training. By moving the sliders you can alter the training hyperparameters to investigate the effect they have on how training procedes.\n", + "\n", + "Some questions to explore:\n", + "\n", + " * Are there multiple local minima in parameter space here? Why?\n", + " * What happens to learning for very small learning rates? And very large learning rates?\n", + " * How does the batch size affect learning?\n", + " \n", + "**Note:** You don't need to understand how the code below works. The idea of this exercise is to help you understand the role of the various hyperparameters involved in gradient-descent based training methods." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "scrolled": false + }, + "outputs": [], + "source": [ + "from ipywidgets import interact\n", + "%matplotlib inline\n", + "\n", + "def setup_figure():\n", + " # create figure and axes\n", + " fig = plt.figure(figsize=(12, 6))\n", + " ax1 = fig.add_axes([0., 0., 0.5, 1.], projection='3d')\n", + " ax2 = fig.add_axes([0.6, 0.1, 0.4, 0.8])\n", + " # set axes properties\n", + " ax2.spines['right'].set_visible(False)\n", + " ax2.spines['top'].set_visible(False)\n", + " ax2.yaxis.set_ticks_position('left')\n", + " ax2.xaxis.set_ticks_position('bottom')\n", + " ax2.set_yscale('log')\n", + " ax1.set_xlim((-2, 2))\n", + " ax1.set_ylim((-2, 2))\n", + " ax1.set_zlim((-2, 2))\n", + " #set axes labels and title\n", + " ax1.set_title('Parameter trajectories over training')\n", + " ax1.set_xlabel('Weight 1')\n", + " ax1.set_ylabel('Weight 2')\n", + " ax1.set_zlabel('Bias')\n", + " ax2.set_title('Batch errors over training')\n", + " ax2.set_xlabel('Batch update number')\n", + " ax2.set_ylabel('Batch error')\n", + " return fig, ax1, ax2\n", + "\n", + "def visualise_training(n_epochs=1, batch_size=200, log_lr=-1., n_inits=5,\n", + " w_scale=1., b_scale=1., elev=30., azim=0.):\n", + " fig, ax1, ax2 = setup_figure()\n", + " # create seeded random number generator\n", + " rng = np.random.RandomState(1234)\n", + " # create data provider\n", + " data_provider = CCPPDataProvider(\n", + " input_dims=[0, 1],\n", + " batch_size=batch_size, \n", + " shuffle_order=False,\n", + " )\n", + " learning_rate = 10 ** log_lr\n", + " n_batches = data_provider.num_batches\n", + " weights_traj = np.empty((n_inits, n_epochs * n_batches + 1, 1, 2))\n", + " biases_traj = np.empty((n_inits, n_epochs * n_batches + 1, 1))\n", + " errors_traj = np.empty((n_inits, n_epochs * n_batches))\n", + " # randomly initialise parameters\n", + " weights = rng.uniform(-w_scale, w_scale, (n_inits, 1, 2))\n", + " biases = rng.uniform(-b_scale, b_scale, (n_inits, 1))\n", + " # store initial parameters\n", + " weights_traj[:, 0] = weights\n", + " biases_traj[:, 0] = biases\n", + " # iterate across different initialisations\n", + " for i in range(n_inits):\n", + " # iterate across epochs\n", + " for e in range(n_epochs):\n", + " # iterate across batches\n", + " for b, (inputs, targets) in enumerate(data_provider):\n", + " outputs = fprop(inputs, weights[i], biases[i])\n", + " errors_traj[i, e * n_batches + b] = error(outputs, targets)\n", + " grad_wrt_outputs = error_grad(outputs, targets)\n", + " weights_grad, biases_grad = grads_wrt_params(inputs, grad_wrt_outputs)\n", + " weights[i] -= learning_rate * weights_grad\n", + " biases[i] -= learning_rate * biases_grad\n", + " weights_traj[i, e * n_batches + b + 1] = weights[i]\n", + " biases_traj[i, e * n_batches + b + 1] = biases[i]\n", + " # choose a different color for each trajectory\n", + " colors = plt.cm.jet(np.linspace(0, 1, n_inits))\n", + " # plot all trajectories\n", + " for i in range(n_inits):\n", + " lines_1 = ax1.plot(\n", + " weights_traj[i, :, 0, 0], \n", + " weights_traj[i, :, 0, 1], \n", + " biases_traj[i, :, 0], \n", + " '-', c=colors[i], lw=2)\n", + " lines_2 = ax2.plot(\n", + " np.arange(n_batches * n_epochs),\n", + " errors_traj[i],\n", + " c=colors[i]\n", + " )\n", + " ax1.view_init(elev, azim)\n", + " plt.show()\n", + "\n", + "w = interact(\n", + " visualise_training,\n", + " elev=(-90, 90, 2),\n", + " azim=(-180, 180, 2), \n", + " n_epochs=(1, 5), \n", + " batch_size=(100, 1000, 100),\n", + " log_lr=(-3., 1.),\n", + " w_scale=(0., 2.),\n", + " b_scale=(0., 2.),\n", + " n_inits=(1, 10)\n", + ")\n", + "\n", + "for child in w.widget.children:\n", + " child.layout.width = '100%'" + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python [conda env:mlp]", + "language": "python", + "name": "conda-env-mlp-py" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +}

    O;&Y=RYgVr(^I5eNdz?mvf;JZhQ8r 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