Skip to content

Instantly share code, notes, and snippets.

@taku-y
Last active April 4, 2016 13:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save taku-y/d68fdc893ff808468a98b400b2e059a2 to your computer and use it in GitHub Desktop.
Save taku-y/d68fdc893ff808468a98b400b2e059a2 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create of artificial data, adapted from scikit-learn. \n",
"http://scikit-learn.org/stable/auto_examples/linear_model/plot_lasso_and_elasticnet.html"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x117567610>]"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n/6Fxixcp9Z8vaN+M09X0zPPqkJS6/ibt++qlw2/8CI2f+ynFXn5JOwvvpeXd3WqXtPfOH6nv7M+N\n/AVyOU066TiZXz2q3e92qeGZpzU+nVb3/1ii9M1rR/77A0gk4oGunXOK/xtMnib9+W/Dfvq4L89T\n4+O/1c4tb8hMmqQJf/xPReId2vW3N0etlzfppKmKpFKl69feuVstknY/+oRyH/jgqLxmEK3fullt\n3/mW9mzvVGZKUtE3d2iipH2LLlbq1u8M/QuK1+biS/L/wqbQvlY/ojZJe/6xW5nOpCLbd2qSpJ4v\n/auS31u/39P47FmsM9n/pSyAQH8R5syZo8bGRp177rm69dZbdc011wRuwFBy0/J/QKJbX8n/3JL/\nmZ1Wnz8sprVNXm9vqabldXcXHq9RrzYaVd8Zn1J0+9uKvvo3NTzxO0lSZvaZtfn9qJvMR/Nlitjm\nF+R17VXs1b8pe/JHR3X41bS3S2WbXhTLL6a9fdReMwjTlm+Pl05V/Cw+7grTnO8dF4fkvZ6eiseB\nokA9Z8/zdMMNN9S6LYPKHXucTEODYoVwjm3dkn982gcOyesPZApDT153Wibe0R/OLbUbcs7MPlPN\nP3tEjU/8Vo1P/FamoUF9n/inmv1+1Ef25BmSpIYXX5AaGguPnTKqr2na2qXdu0r3vUI5yrS1jerr\nDlexPcX2hbWdI2WaC6W4QigXQ7r0OFAQKJwPqYYG5aYer+jWrZIxim59Rf648fKPOLIuzTGthT8W\n3fukeIe0Lx/OaqtdOPd98lOSpKZHHlJs86b8YQsh6+lg+LLFnvOmF2QK4ZwZ7XBub8/XnQvrfks9\n55D1SMdKOKvUc86HczGkRc8ZA9R/OmMVstM+qEg6pei21/J7HE/7QN02GCgOX3vdhT8itR7WluQf\nfYyyJ5yoho3PyTOGIW1H+Eccqdz7jlLsxRfUsOkFSf2BPVpMW1t+zW/h/0+97pRMY6PU2Diqrztc\nY2dYOz+5zSv1nAvD2vWY3IpQsyKci0PYjf/3/8jL5epWb5ZUmlHplf7Y1X5YW5L6ygK5j3B2Rvbk\nUxR9d4cannxc/mEJ+e8/elRfzy8s9Sr1SFOp0NWbpbHTczZNhXDu7an4Sc0ZA1kRzsUwLq71zX2g\nPvVmqX9Y29s3IJxrvMyp2Fv2J05U9iPTa/q7UT/FnnIk2ZWfIDbKI0DFIC7uSOWl06HsjY6VcFZL\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x116831650>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"import pymc3 as pm\n",
"from pymc3 import Model, Gamma, Normal, MvNormal\n",
"import theano.tensor as tt\n",
"from theano.tensor.nlinalg import matrix_inverse as inv\n",
"\n",
"%matplotlib inline\n",
"\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"\n",
"np.random.seed(42)\n",
"\n",
"n_samples, n_features = 100, 200\n",
"X = np.random.randn(n_samples, n_features)\n",
"coef = 3 * np.random.randn(n_features)\n",
"inds = np.arange(n_features)\n",
"np.random.shuffle(inds)\n",
"coef[inds[10:]] = 0 # sparsify coef\n",
"y = np.dot(X, coef)\n",
"\n",
"# add noise\n",
"y += 0.01 * np.random.normal((n_samples,))\n",
"\n",
"# Split data in train set and test set\n",
"n_samples = X.shape[0]\n",
"X_train, y_train = X[:n_samples / 2], y[:n_samples / 2]\n",
"X_test, y_test = X[n_samples / 2:], y[n_samples / 2:]\n",
"\n",
"plt.figure()\n",
"plt.plot(coef, c='r', label='original coefficients')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Fit ARD regression model and plot estimated coefficients. For illustrative purpose, I manually tuned the hyper-prior value to fit estimated cofficients to the true coefficients, though in real problem we do not know these. "
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def fit(xs, ys):\n",
" n_samples = xs.shape[0]\n",
" n_features = xs.shape[1]\n",
" xs_ = tt.as_tensor_variable(xs)\n",
" \n",
" with Model() as model:\n",
" # Prior precisions\n",
" alphas = Gamma('alphas', alpha=1e-6, beta=1e-6, shape=(n_features,))\n",
" beta = Gamma('beta', alpha=0.1, beta=0.1, shape=(1,))\n",
" \n",
" w = Normal('w', mu=0.0, tau=alphas, shape=(n_features,))\n",
" Normal('l', mu=xs_.dot(w), tau=beta, observed=ys)\n",
" \n",
" means, _, elbos = pm.variational.advi(\n",
" model=model, n=1000, learning_rate=0.1, accurate_elbo=True)\n",
" \n",
" return means['w'], elbos"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Applied log-transform to alphas and added transformed alphas_log to model.\n",
"Applied log-transform to beta and added transformed beta_log to model.\n",
"Iteration 0 [0%]: ELBO = -17521.52\n",
"Iteration 100 [10%]: ELBO = -2724.24\n",
"Iteration 200 [20%]: ELBO = -2686.37\n",
"Iteration 300 [30%]: ELBO = -2673.6\n",
"Iteration 400 [40%]: ELBO = -2662.15\n",
"Iteration 500 [50%]: ELBO = -2644.35\n",
"Iteration 600 [60%]: ELBO = -2643.02\n",
"Iteration 700 [70%]: ELBO = -2635.8\n",
"Iteration 800 [80%]: ELBO = -2636.92\n",
"Iteration 900 [90%]: ELBO = -2632.07\n",
"Finished [100%]: ELBO = -2635.36\n"
]
},
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x122467690>]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAecAAAFVCAYAAADVDycqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl8VNXdP/DPvbNPJvtOwr6HfVERREFFQdG6tm6oLVZR\n27pRtWoVtUrbX5/W1qKiuGJb69baWlQEERAXFtl3wk4Wsiczyaz3/P64M5MEAomTCffe8fN+vZ6n\nScxkvsOdmc+cc8/9HkkIIUBERES6IWtdABEREbXGcCYiItIZhjMREZHOMJyJiIh0huFMRESkMwxn\nIiIinelwOG/cuBEzZswAAGzfvh3XX389brzxRtxyyy2orq7usgKJiIi+bzoUzgsWLMAjjzyCQCAA\nAHj66afx6KOP4o033sCUKVPw4osvdmmRRERE3ycdCueePXti3rx50e//9Kc/YeDAgQCAYDAIm83W\nNdURERF9D3UonKdMmQKTyRT9PisrCwDw7bff4u9//ztuvvnmLimOiIjo+8gc6w0XLVqE+fPn48UX\nX0R6enq7vy+EgCRJsd4dERHR90ZM4fzBBx/g7bffxsKFC5GSktKh20iShIqKhljujjSWnZ3MY2dg\nPH7GxWNnbNnZyTHf9juHs6IoePrpp9GtWzfceeedkCQJp59+On72s5/FXAQRERE1k07lrlT8BGhM\n/PRubDx+xsVjZ2ydGTmzCQkREZHOMJyJiIh0huFMRESkMwxnIiIinWE4ExER6QzDmYiISGcYzkRE\nRDrDcCYiItIZhjMREZHOMJyJiIh0huFMRESkMwxnIiIinWE4ExER6QzDmYiISGcYzkRERDrDcCYi\nItIZhjMREZHOMJyJiIh0huFMRESkMwxnIjI8+eAByOVlWpdBFDcMZyIyvPQJp8F5/TVal0EUNwxn\nIjI8JRBEeZ1X6zKI4obhTESGJwkFQUhal0EUNwxnIjI8k1DQ78BWrcsgihuGMxEZm6JoXQFR3DGc\nicjYGM6UgMxaF0BE1BnCZEJpai5sIqR1KURxw5EzERmaEIAimSArDGdKHAxnIjI0RQgosgyZ09uU\nQDitTUSGJoTA133PQBp8GKl1MURxwnAmIkNTFOCNiTOQkmTFM1oXQxQnHZ7W3rhxI2bMmAEAOHjw\nIK677jrccMMNePzxx7usOCKi9ijBIHLrypHUUKt1KURx06FwXrBgAR555BEEAgEAwNy5c3Hvvffi\nzTffhKIoWLJkSZcWSUR0IlLFUSx4+Tbc/MnzWpdCFDcdCueePXti3rx50e+3bt2KsWPHAgDOPvts\nfPXVV11THRFRO0R4IZgicX0rJY4OnXOeMmUKjhw5Ev1eCBH9OikpCQ0NDR26s+zs5O9YHukFj52x\nJfLxq6uwAQAUSUrIx5mIj4naF9OCMFlu/oTq8XiQkpLSodtVVHQsxElfsrOTeewMLNGPn7uyHqkA\nzt76ecI9zkQ/domuMx+sYpoHKioqwpo1awAAK1aswJgxY2IugIioM0SQzUco8cQ0cn7ggQfw61//\nGoFAAH379sXUqVPjXRcRUYcoUoutIhUFkHnumYxPEi1PIHcxTs8YE6fWjC3Rj19FbRP850/ByIOb\nUHGkCrBYtC4pbhL92CW6Uz6tTUSkF4oQ0ZXaIhjUuBqi+GA4E5GhKQrDmRIP23cSkaEpAtjQcwTq\nnKkYDJkjDkoIDGciMjQhBD4Y8wMAwPN2u8bVEMUHP2QSkaGJpibk1pYhyevGKVzfStSlGM5EZGiO\nbZux4JVZuHLNv8AtnSlRMJyJyNBESE1kIUlQOHKmBMFwJiJDi6zQViSZ4UwJg+FMRMYWHjlP3v45\n0MFNeIj0juFMRIYmFLW3dm79UUjV1RpXQxQfDGciMrSQ2dr8DZuQUIJgOBORodWOPA2fDJ0CgDtU\nUeJgOBORoSlCQAnvRKWEOHKmxMBwJiJDEwItemtz5EyJge07icjQFEVgZ/4A2ANedHPFvkUfkZ4w\nnInI0BQhsKxoMpYVTcaTud20LocoLjitTUSGJrndyK0tg8PfBIU9SChBMJyJyNByVi7Bgldm4ewd\nK6AwnSlBMJyJyNCEEumtzfadlDgYzkRkaCKkrtAOSTKYzZQoGM5EZGhSOJwnb/8cpqNlGldDFB8M\nZyIytMi09ohDm2Hfu0fjaojig+FMRIYWsNmjX0emuImMjuFMRIZ26NxL8MaE69VvuPEFJQiGMxEZ\nmqIIKJIJQPMUN5HRMZyJyNBabnzBkTMlCoYzERmaoggcyOyBpUWT4c3O1bocorhgb20iMjRFAN/2\nHo1ve4/GL/oP1bocorjgyJmIDM3SUIvcunJYAz52CKOEwXAmIkPr/+E/sODl21BUsh2C4UwJIqZp\n7WAwiAceeABHjhyB2WzGk08+id69e8e7NiKi9oXUFdqKJHFXKkoYMY2cly9fDkVR8NZbb+GOO+7A\nn/70p3jXRUTUMYraeESRZO5KRQkjpnDu1asXQqEQhBBoaGiAxWKJd11ERB0ihUfOk7cvh+PQPo2r\nIYqPmKa1k5KScPjwYUydOhW1tbWYP39+vOsiIuoQER45X7BlCb7dOBm4cJzGFRF1Xkzh/Nprr2Hi\nxIm45557UF5ejhtvvBH//e9/YbVaT3q77OzkmIok7fHYGVsiH79DqenRr+0WU8I91kR7PNQxMYVz\namoqzGb1psnJyQgGg1A60DavoqIhlrsjjWVnJ/PYGViiH7/VF92ApeUCv1z0R3g93oR6rIl+7BJd\nZz5YxRTON910Ex566CFcf/31CAaDuO+++2C329u/IRFRnKm9tcPLZxS276TEEFM4O51OPPPMM/Gu\nhYjoOxMC0XCWgtwykhIDm5AQkaEpQuBoSg4+GzwJdYV9tC6HKC4YzkRkaIoisCevH/407W6UjB6v\ndTlEccFwJiJDs9VVI7euHKZQEIJNSChBMJyJyNAmvPVXLHj5NuTUV7B9JyUMhjMRGZokWvbWZjpT\nYmA4E5GxhcK9tWX21qbEwXAmIkOTwu07J29fjvTibRpXQxQfDGciMrbwaHnGqr+h51dLNS6GKD4Y\nzkRkaI2u1OZvQmxCQomB4UxEhvbxtfdi9jW/U7/pQI9/IiNgOBORoSlCXQwGABJHzpQgGM5EZGii\n1cYXDGdKDAxnIjI0RQjUO1KwtGgyynsP1rocorhgOBORoSmKQEVKNp6Zehd2TJimdTlEccFwJiJD\nc9VVIqeuHBACguvBKEEwnInI0K5+9Qm8/PJtkIXC9p2UMBjORGRs4UBWJBmC4UwJguFMRIYmKSEo\nkABufEEJhOFMRIYmKwpkCJy3dSm6bV+vdTlEccFwJiJDk8Jdwe7+5FmM+PxfGldDFB8MZyIytPrk\nDDRaHQCag5rI6BjORGRoL938JG778fMAmrePJDI6hjMRGZoiRIve2hw5U2JgOBORoQkhEAr31ubI\nmRKFWesCiIg6Q1GAgMmCpUWT4RswDJlaF0QUBwxnIjI0IQSCVjuemXoXRvbLwmlaF0QUB5zWJiJD\nS6spR66nEgDYhIQSBkfORGRo9710HyRFwY9veYnhTAmDI2ciMjRZKFDCC8KEwnCmxMBwJiJDk4SA\nCF9KxWymRBFzOL/44ou45pprcOWVV+K9996LZ01ERB0mKyEIScbkbcswcPOXWpdDFBcxhfPq1aux\nfv16vPXWW1i4cCFKS0vjXRcRUYfIigJFlvGLxX/FeUve1LocoriIaUHYF198gQEDBuCOO+6Ax+PB\n/fffH++6iIg6pColG41JKciqKWMTEkoYMYVzTU0NSkpKMH/+fBw6dAi33347Pv7443jXRkTUrodv\n+TNcDgv+MucSbnxBCSOmcE5LS0Pfvn1hNpvRu3dv2Gw2VFdXIyMj46S3y85OjqlI0h6PnbEl+vGz\nWkwQkgxZiIR7rIn2eKhjYgrnMWPGYOHChbj55ptRXl4Or9eL9PT0dm9XUdEQy92RxrKzk3nsDCzR\nj18wJBAKCfVyKiWUUI810Y9douvMB6uYwnnSpElYu3YtrrrqKggh8Nhjj0GSpJiLICKKlSIEZBn4\nouhsKGnpGKt1QURxEHOHsNmzZ8ezDiKimAhFQJYkvDrtTqQl2xjOlBDYhISIDC2nuhRp7mpIkgSF\nXUgoQTCcici4hMDzC27DTW8+CVmW2CGMEgbDmYiMK3zplJBNkCV1+0iiRMBwJiLDEiG16YiQZU5r\nU0LhlpFEZFgi2BzOY3d8CXMoAGC8tkURxQHDmYgMS4SC6v/KMn645BXYfY0I4CGNqyLqPE5rE5Fh\nKSEFZam5aEjNhJBktu+khMFwJiLDCjmT8NOZ8/HvG34FRZYhC4YzJQaGMxEZVmSgLEuSuiiM4UwJ\nguFMRIYloK7OliSoG19wWpsSBBeEEZFhRS6dkmUJm4vGw1xVgVEa10QUDwxnIjKsyGXNkiRh0YU3\no7TKgxe0LYkoLjitTUSGpfj8yKsthctdo553Zg8SShAMZyIyLHPpEbz0yu04/915kCWwQxglDIYz\nERmWEm7fCdkESZagcOhMCYLhTESGJULhjS9McnRam5tfUCLggjAiMq6g2r4TkoyBu9aie/EBiODZ\nkCx8ayNj4zOYiAxLiWx8YTJh0rJ/YsCONSj1PwyZ4UwGx2ltIjIsRZZRlpoLb0o6FDn8dhbeDIPI\nyBjORGRY3t798dOZ8/HNlbdByCYAgBIIaVwVUecxnInIsCKrsyU58v/UnaqIjI7hTESGFQlnWZIg\nTOrbmeC0NiUArpogIsNquSvV/oGjUeo3oa/Zom1RRHHAcCYiw2o5rb3m3KuxtmASnnG6NK6KqPM4\nrU1EhiU1NSGvthR2TwNkWQIAdgmjhMBwJiLDStq4Fi+9cjuGf/QPyFI4nNlfmxIAw5mIDCvSvhMm\nEySJI2dKHAxnIjIsEWruEBbpQcJspkTAcCYi4wqHsyTLKCjegvO2LAXqajUuiqjzGM5EZFzh3tow\nmTBs1f9w9+JnYSov07YmojhgOBORYQVtNpSl5iLgSgHC7TsFO4RRAuhUOFdVVWHSpEnYt29fvOoh\nIuqwqjET8NOZ81F84ZUQJjWcEWCHMDK+mMM5GAziscceg91uj2c9REQd1rJ9Z2RFmKJw5EzGF3M4\n/+53v8O1116LnJyceNZDRNRhkZXZsixBRLeM5K5UZHwxte98//33kZmZiQkTJuCFF17o8O2ys5Nj\nuTvSAR47Y0vU4+c6XA8ASEmxo27wCCzdX4I+hXkJ9XgT6bFQx8UczpIkYdWqVdixYwceeOABPP/8\n88jMzDzp7SoqGmIqkrSVnZ3MY2dgiXz8ausaAQAetw/7Tz8fH4kBeNiVDVeCPN5EPnbfB535YBVT\nOL/55pvRr2fMmIEnnnii3WAmIoo32d2A3NoyWHzdIUfOObMLCSWATl9KFWmZR0R0quV//hEWvDIL\nhV98Gn0vYjZTIuj0lpFvvPFGPOogIvruQs1NSMKbUnHjC0oIbEJCRMYVuWzKbGrelYpDZ0oADGci\nMq7IyFmWkXFwN87bshSWshJtayKKA4YzERlWZFcqyWRC92+/wN2Ln4Vz9w6NqyLqPIYzERlWwJ6E\n8pQcKM4kINK+k01IKAEwnInIsIqnXI5bbnkR1ePOabHxBXtrk/ExnInIsCIrs2VJAkyR9p1cEEbG\nx3AmIsMS4ZXZkoQW4cyRMxlfp69zJiLSSnRXKllCQ4++WFo0GbbcbhpXRdR5DGciMqyW09oVo8fj\njYpM3DqoSOOqiDqP09pEZFiW+jrk1pbB5Pci0klYcDtnSgAMZyIyrKH/eQMLXpmF1B2b2SGMEgrD\nmYiMS2nRWzvcXJu9tSkRMJyJyLjCl01JJjNHzpRQGM5EZFzRkbMEZ/khnLdlKVwHirWtiSgOGM5E\nZFhSpLe22YyMHVtw9+Jnkb3+a42rIuo8hjMRGVZTUgrKUnMBm529tSmhMJyJyLC+ufwW/HTmfPj6\nDWA4U0JhExIiMqyWHcIi7TuFwgudyfg4ciYiw4oszFY3vlBHzpLCkTMZH8OZiAwr2r5TluDP64al\nRZNR3b2fxlURdR7DmYgMS2mxK1XjgMF4ZupdODRmosZVEXUew5mIDMtRU4nc2jLIoVC0CYlghzBK\nAAxnIjKsc9/6Mxa8MgvWygp2CKOEwnAmIsOSwiuzJUuL3trMZkoADGciMqxIOMsmU/OWkRw5UwJg\nOBORcbXYlcpaW4PztixF1q7N2tZEFAcMZyIyrOjI2WKGo+ww7l78LPp+uVjjqog6j+FMRIblTk5H\nWWouJLMJkhxu38kOYZQA2L6TiAzrg2t/iY2nV2FecgpgVscaEntrUwLgyJmIDCuyMluWJUim8FhD\ncORMxhfTyDkYDOKhhx7CkSNHEAgEMGvWLJx77rnxro2I6KSiG19IAMyRXakYzmR8MYXzf/7zH6Sn\np+P3v/896urqcNlllzGcieiUi/TWliQJIjUNS4smw9d3CAo0rutYW1ZtRUN5Jc684hytSyGDiCmc\np02bhqlTpwIAFEWB2cxT10R06okWW0Yqubl4ZupdOGt4Pk7TuK5jTb78TABA+WW1kGWeTaT2xfQs\ncTgccDqdcLvduOuuu3DPPffEuy4ionYl1xxFbl05ZElq7q2t4yYk/nq31iWQQcQ85C0tLcXPfvYz\n3HDDDbjooos6dJvs7ORY7440xmNnbIl6/G58/XEUHNwJy4JbIcL7OVutZt093urkTGQ0VMGp+JH5\nHWvT22OhUyOmcK6srMTMmTPx6KOPYty4cR2+XUVFQyx3RxrLzk7msTOwRD5+UigEIUmoqGhATb0X\nANDUFNDd493QewymbFqMo8VHoGRkdfh2iXzsvg8688Eqpmnt+fPno76+Hs899xxmzJiBG2+8EX6/\nP+YiiIhiIgSU8Dnc5o0v9DWtHQwp2JvZA9/2HAlvSF+1kX7FNHJ++OGH8fDDD8e7FiKi70RWQlAk\nNZxNfh/O27IU6aI/8IOhGlfWzOsP4cNR0/HhqOm4L7cHCrUuiAyBywaJyLAkRYGIhLO3CXcvfhan\nff6exlW11uQLtvk10cnwGigiMqzalEwEhAQXACk8vS3prLd2q3D2M5ypYxjORGRYz978NOo9fvwF\ngBTuEKa33trS1q14/L05+KxoMrzn9de6HDIITmsTkWEpikB4HRjkcDMkvY2cUVKC0Qc2IKf+KEfO\n1GEMZyIyLEUISOF0jo6cFX2NnJXaWgDAgLLdSNq1XeNqyCgYzkRkWEKIaGcwyWLB0qLJ2D1wrMZV\ntSbq6gEA44pXo2jRPzSuhoyC55yJyLAUBdFwli0WPDP1LgzqkYbTNa6rlfq66JcmD9t3UscwnInI\nsDKqSyFFzjWHzz0rOuvzITU0d/iyNDKcqWMYzkRkWI++fC+89iTgwR9AkiRIkv46hG08cxr+F8zB\nY//+DawMZ+ognnMmIsOShAIRWa4NdYpb6GzoXJ6Wh7V9xqLengxrk0frcsggOHImIsOShQJFMjV/\nL0u6m9Zu8qmrxzf2GQXF7kSRxvWQMTCciciwZEWBkJsnAM/e9jkcmWkA9LNiO9Ih7I3rHoG7KYC/\naFwPGQPDmYgMSxIKhNQ8rX3r4udRmVUA4G7tijpGky8Im9WEJLsZlXVNWpdDBsFzzkRkWBWpuahN\ny4l+LyQZss46hDX5g3DazLDbzAiGBAJBfdVH+sSRMxEZ1r0//gsKspPw6/D3iizrrn3n7W8+jqaU\nNHz200cAqGFtMVs1ror0jiNnIjIspUWHMABQJBmy0E/7TiEEhu5bj96le+CwqmMhL7eNpA5gOBOR\nYSkKILUIZ6GzkXPQ54cj4IXf6UJubSnO2PMNAiXlWpdFBsBwJiLDUkfOzd9/PeQcfDt4gnYFHcNb\nrbbuDDhdKFq9BI/8Zy7MmzdoXBUZAc85E3WQ+du1EDY7QoOLAJmfa7UW6QQmt0jnt6bdBkDCaRrV\ndKxAZTUAIOhKhkhNBQAo4Y0wiE6G4UzUQdZ77oKteDeqDpRyykkHhKIgv6YUKWnN09iSJCGkoy4k\n/hp1u8hQUjKQnAwAEOEtJIlOhu8xRB0hBEz79uJwcg4OVTRqXQ0BUBq9ePHV2/HDf/w2+jNZliB0\n1Fu7PqsbHrrqSeyefg2kNHXkLOob2rkVEcOZqEOkqirYvR6UpuWjpJL9kfVAKOFV2VLr3to6Gjij\nwezA5h7D4OvTH6bwtLbUwGltah/Dmagj9uwGADWcqxjOeqAE1EuShNzcW1uSAEVH6ez1qzU6bGag\nWzes6T0WVVndNK6KjIDhTNQBjVt3AABSm+qQ9eH7GldDAICgOnJuGc6jdnyF8Zs/06qi4zT6WoRz\n//544vJHsOnMizSuioyAC8KIOqACdtR0H4azd6yEZdsyVDzxM8Dh0Lqs7zUlfD1zyy0jL/n0daTV\nlqMJj2lVViveFuHssIWbkPjZhITax5EzUQdsLjoTj1z9JJYNmQwAUPbu1bgiUgCUpubCk5oV/ZmQ\n9dVbu8mvju7tNhPsVnWE7/Xpp4MZ6RfDmagDSirVFdrBXn0AAA2bd2hZDgEIpaTh1pnz8dH1s6M/\nE7IMWegnnIf86zX85p1fI6WiFPZw+84mjpypAxjORB1QWuWB2STBNXQQAMC3neGstci6r5ZNSBSd\n7UqVsX8XRhzaDLvNDItZhtkko4kjZ+oAhjNRO4QQKK1uRG6GE85wOKOY09pai6zKbtm+U8gmXY2c\nzY1uAIA1Iw0AMKpsOwat/1zDisgouCCMqB01DT74/CHkZyYhbUQ3fDFgPCpz+yGn/ZtSF4o0G2m5\nK9X2IeOw25WHUVoVdQyLp3U437h0AfIrDqL+mdknuxlRbOEshMCcOXOwc+dOWK1WPPXUU+jevXu8\nayOKSTCkQJIAU5z6X9evXo+JO1ai25CLkJKdjoevfAgpSVboZ3uF76dIb22pxdB52QUzsONgLV4W\notVuVVqxNnngtdghmdW3Wp/DBVvABwQCgMWicXWkZzG9ey1ZsgR+vx9vvfUW7rvvPsydOzfedRHF\npLK2Cb+a/zWeXrgO/kB8zu3ZFv0H9y/6P/SrPgBJktAtOwlHa5oQCOpn+tRIFCFwtLYJvk4eH+Hz\nI7+mFEnu5l7VkUBWdNLC097kRpM9Kfq936l+LTTuEhaPFqdCCFTW8nXQVWIaOa9btw4TJ04EAIwY\nMQJbtmzp0O2EEKh1+3Gkwo1gSGBgj7TotX8AEAiGsGVvNfIyncjPTDrh3wmGFOwtqce2/dVw2sw4\nZ1QBbBYThBCorvchpG7yCrvVhCS7OeYR1OEKNz76+gD6d0/DmUV5sFlN7d6m0RvER98cgKIInDu6\nEJmp9g7dV02DD4cr3OjbLRVOe2xnG0KKgoPlbjT6ghhQmAaLufXjbmrZEKGDhBA4VN6Az9ccxN7S\nevTMdWF43yxYzDKq6r2wW03omZsMs0mGIgQavUEk2c3HjVoavUF4/UGkJdsgS1L08Wal2pGX4Yxp\nlKNuF9h8uzqPH3/45wZU1XtRVe/Fm5/uwk8uGvyd/+6xTPv2AQCShqjnm7tlJmHP4TrsPFSD3HQn\n0pNtMJu6ZvmGEAIhRaj/vopAcUkdtu6rhsthQd+CVHTPcZ3wvn3+EOoa/UhLP/FrSQiByjovat0+\n+AIhmGQZGck2pCXbYLOoz/fK2iZsO1ADjzcACMDlsKAwx4W8DCcsZhkmWWr3+FXVebF251Gs31WB\nA+Vu+AIhpCRZcdU5fTF+WF6r49hR5gP78OKrt2PDgSuAH54JoPn8s88fgtPe/jE59jl0IvUeP0qr\nPMjLTEJqkhVAc8C19dgbvUE0egN47bL7kWUFbg7/POh0AQACVbWwZmQedztfIITDR91oaAqgd34K\nsrOb/1sgGEJJZSMkCcjPdMJiPvH7kRAC+8saUF7TiMwUO1wOC9xNAVTUNmH97kps2VeN7jku3DBl\nAHrkJrd6nMs3lqDe40eTLwib1YS0JCu6ZSVhcM90OO0W1Hn82LqvCp+uPYwDZQ1IT7bhkgm9cNaw\n/OhzMRBUsLekDr3zU2C1tP++GQwprZ7HIUWBEDjuuR0MKdi2vwb5mU5kpzmiP6tu8CEUUmA1m1q9\n5x57jCLvUQ6bKW4za8fq6HOqPTGlgNvtRnJy8wE1m81QFAXySR5scV4/CCEgA4hMgG8sHIKl19+D\n9GQ7zLKETcVVaPQFMbJsG2av/RscNjNq3T5U21OR9K93YM9Igz8QwkMvfY3qel/0b3+y5hBG98/G\nOb/5OZKry6MPSgBwA/jjVY/Al1cAm9UERVHf7BRF4M6/z0Gupwo2i/pz9ZpEga/n/BXBgu54b3kx\nAkEFX20txzvLivHof+civa4CtWedi5w//x4AUL5uK8yzbkWy4lP/TlMAk2DCL6/9HRavOYRRA7LR\nt1sK+hWmom+mHWkXTwEANHoD0U+cjULG7CueghCASZYwqEcafnhuf3TPcSEQVLDp9gcxcPUS2C0m\nWMwyVk+6EitGTkGv/BQU9UxHeU0TNuypRJ9/LcQ5m5YgA4BXliDZzLCYZOy59Hr8t/852LqvGiFF\nIM1lRV6GE9PWfYiRXy5S32BNEgJBBf6Agh3Tr4X3mhtQVe/Fio0lOHRUPW82ff2HOGtrc/elwvD/\nvj/mEmyaOB0V4U/RqS4r+uSnYNzn72LYqkUIhhSEQgpMANyShCWnXYIPB0yK/h2Xw4K+3VIwfcP/\nMHj5f8M7CynhQA/hfyMvwvIRU1CY48KYAdkIKgLfbCvHmE/fxoU7l8FikgFJgjkQwq9CCg5cMQPv\n956ILzaVomduMkb1z4KiCPj+/BfkfvguQiH1OWAySXBYzTh01QysHHkBjtY0wWSSYJIl1Ln9GPXp\n2zhrw6foXXkYQdmEjCH9AQAFWWrYPfOPb/F/f/8lGiUpuhLXJEuALGPBQy/D3RRAKPJ8E+pz7qxh\n+Zg0qgAAsHp7OV7/eCcUIXDl1+9g4p6vYbXIEAIIhP/N3hl7BZb3Gw+bxQRZRnSl71Wr30XGri/R\nKEmwWmRYTDIUASyZfC1W9h+PWrcP3vA1tuOH5+OW8IcU78pVaHr2OXx062No9Aax82Atquq96uOq\nPoLZi/5V4zeyAAAgAElEQVRP/T0AflmCLEk4mpKP1y6+77jXdMvfj7z5mUwSavN64JNfzEVWih2+\nQAhb9lXj0FF39PctZvV53OQLQswX2JvdHW/c8Ahy05249dIhsJhlBIIKnnpjLWo9fqQ4LeoHBQmw\nN9Ti9hfvhxBAasiP8J1Ga7KHP3i++KuXcMeKV6Jv7sGQAn9QwYE+w7D//sdhMZvw1dYyHCxvQFaq\nHWMrd2P6u39BUFFgMclw2MwwyRKKew7B85NuwdGapuh9pCfbMODgFly76AUA6gcCk0mGzWJCzdDR\neOm8W7H7UC0EAKT3xsDuadHbBpPU981AdQ2sUEPoqTfWobS6ESZJQpM/iMig9gfrPoB590pIAIRQ\nH0MagA9GX4rlQyYhN92Jwuwk5GU6IUsShv1nIfquXAQItflJRjCEjPDvf17U/HqLPIYhH7yB1N+u\nQMhpQZLdDEURkOq9qBl5yXG/DwCXrfsA5+5cCSgKhgAYAsBuNeO9ERfjjYZzsH5XJe6+ejgkScLb\nn+2B66V5yN+xArLNDLvVBKvFBK8/hA9GX4KVQydj4vB89MpPwbJvj2Djnkr8aPOHmLRjBUKKQCCo\nqHkhS/hi0tWov+xqpLlsWLL2EKrqfZAk4M6DSzFi9WL1Q0SLlq2rLpmBgQ/egY17qvDhV/vhD4SQ\nk+bEuSvfwYg1n0IIATfUVf4Ws4ytl8xA/WVXIyvVjpoGHzYVV6Gk0oNpX7+P0zd8BllSn99BRUEg\nqODfoy7FyqGT4LRb0DM3GTlpDpTXNGLYfxfijI2foTIpA+vmzsfVk/sd92/4XcQUzi6XCx5Pc3/h\n9oIZAApqSyABgCRFP926lR7YW1IPIdQpnowUO84ZXYjat9fDsq8YIUlCeiiAnFAQOz9fie63XYe9\n63Zg0NplCJ1+Bs6//EzsOliDD5YXY+m3h3FZdRny68sR+cwiAEAI5LjM2KcIuOu9MMly9A04s6Yc\n6dUl0RqTw28wS7/ah9J0L5KdVvzih0NRUunBp98cgLP8CPIrDiD1XyVw/f15AED5ss8w6MBm+E0W\nBGUTkiBBdthw9zWj8N6y3Vi74yjW7jgKAPjFpYMwZe8ehISAxR9C5IyT1WRB38I0DOubhc17KrB1\nfw3+3z/W44nbzsQHS3bgzkWvwRr0w2dWP7GX7jmMrWk12Lq/Bv/76kC0/jOVJvSoLwMAhBQR/dS4\n9ds92CQPRe9uKUhz2XCkwo0dB2sxevch2A82rzq2hP9v18a9+LdlEwD1w8IZQ/IwbmgeTpe+hvOb\n8ugqWUlS3zTyZS9WuH3okZeMNJcN+0rqsH53JQYfKEVm+UFIkvomL0nqp8r0YCPOGJKH3t1SUVrp\nwfYD1dhYXIUhm/dh+L5iAOoT0wZ1sU9vewjFOcnYX1qHvSXqc8ViltHT4kNO5ZFWU3Rmk4y+fV0o\nunkc7vnT5/jbp7vwt093AQCuW7cHA0oOhGtv3r1o3Vc7sTjQeoQtScAEdy1yKg9DCIHNoyZjVA+1\n2cXFZ/dFgy8Iv9ePHi+UQRECQgGE+oyDkGR8va281d8zyRJmf/A7FDaUI/PIbsiyhK/f34wmXxB9\nuqUiJ+BGRvnBY2qQUGgLYXi/LHi8Afj8IQzpk4mxg3PRrfS/yFsbue/IPQN1R46iqWcQeZlJyEix\nY9OeCpRWepCdrYbCtn+8g6LP/4tnel6AQ5ndkeSw4Mxh+SjMcSHnsISe/yyDEOqIQwj1NWRy2jHr\niuHITndAgjoK3ldSB2xuQPe6UvUxh+9fCKBJmPDFptLm55VZxsj+2bgwyYq+7x6Nvj4VAMGgAths\nOFrrxeEKD9wBBQPyU1FaVofaAyVQklyoCSnRKfC0RjdyKo9E78xtS4L/jDOjj+/nPxqFj77cj+p3\ntiG97Ph/zzJXNt5bvjd6TPoWpqGytgllhyuRXXk4HITN/55+pMDjDWLMoBz0yEvB4aMNKD5cB6cS\nQEFt+L1DIPxvJVBsTsOuAbUY3CsD+VlJsFlMOGd0YbS+TUXD8cWhI+iTnors7GTUHCrH1L/9Aft7\nFmHHxIuRFJ4RcTmtKNz2HnIjjxWIhsTp3Wwo75mBg2X1WLuzeYe0tG37MfyQOsvjAiCbZJgkCRN6\nOGA5vQdSXTakp9gwol82euQlo7xkEdK+KoFSoz5aE4B8SDi/fzKuuE8Nn0ZvANX1Xuw6UIPcTX7k\nVx9RX8+yuqZDbgRuOacQpc5MbN5bhUPVTeiek4zlG4/gJ0EPCmpKWp1icABQetXA3RTAv1bui/68\nZ14y0tY0IL3sICRIkGREP5T4KqrwyepDAACrWcaF43pi96Fa1K8oQUrJAaRK6vs5oL6/LN17BC8/\n/5V6fzYTstOdKK30QFRUhHNIAiCiz/MDOw7iw092tnquJDstQGVlq9ekFH4O9XEqKClIQ3WDF5v3\nVkX/+1mNdSioLUGSSSA4MDd6zGMliRhOPixevBjLli3D3LlzsWHDBjz33HN48cUX271dRcXxW6UF\nQwo83iCafEHkpDkgyxIOH3XjL+9tQr3Hj6urN+KaBb/G2p/MRs/fPor9z76M0568B+tn/QqFT/wK\ngDolXFLlQb+C1OhUXEfVun0oPlIPp92MfgWpCIYUrN5ejqM1TTh/bHekJ9uiv6sIgaaxZ6CgZA9q\nS9VN1NcveBfi7/8AbpmJpmGj0LcgFXkZzujvl1c34kB5AxZ+sguKEJjz49Pw1/c340iFBz+5aDAy\nUmxIc9nQLat56nHV5lK88r/tkCQJRQc3Y+47j8D9k1tRPPtxHK1tQm66A6lJVuw6VIcdB2uQmWLH\nyP5Z0WmeyH2XVTWixu1Dg8ePnnnJrU4V+AIhlFc3oqy6EWVVjaioa0JuuhO9u6UgEFRw6KgbNrOM\nM4py0a93VpvH7kSEEKj3+CHJUodPK9Q0+FB8pA7V9V6EFAGLWcawPpnIDf9bAkBDox+biqsgScDI\nftlw2s0QQqChKQAJajC3nLLfV1qPLzaXwhMewQ4oTMOQ3hnIzXDAJMuoafBhy74qNHmD6JWfgoLs\nJHWkGxJIdlqioy6fPwSLWW51Pe2xQoqCek8AnqYAgoqCFKcVLof6N6Twm2rDuRegz5av8e3yzcjp\nW4if/3kFumUmYc5PTgegnnbYX9YAm8WEvAxnh09v+Pwh1Hl8cNotx03XvXPbk3DIAtOffxQAUHLd\nTzBiybtY/toiZIwbHX3NxZM/EIqeWpAgoV9h+6/LD77Yhw++2IdfXjMSg3tloHzlGgy98jxsnHI1\nuv3t5TZvEwwpqPf4kZ5sO25qWQiBuvDUrC8QQlaqAy6HBR5vABv3VMIfVDB6QDZSnOoHXl8gBKtZ\nhiRJ8HgD2FRchUBQQd9uKcjPSmp3mjIYUrC/rAFHaxoxqEc6MlLaPp319rI9+Pibg3h4xhj0LUhF\n7dZd6D95LDafOQ15H/zzuN/Pzk4+4WtPCIGaBh8qapugiEh4qP+t5fR7e3XvPlSL9Xsq4W4M4JIJ\nvU56SvFEDh11Y84rq1GY40KvvGSs3FSKW6YPxplD8lBS6cHeknocKG9AdpoD44fmwWyS8eWWMpRU\neXBmUR76Fao7djV6A7BaTK2ms32BEPYcqUN5dSNGD8hGmssGIQSKS+ohSUDv/JTo8VGEwMqNJfj4\nm4MY2icTl4zvhZQkq/oBQeC453rkNMLR2iZU1jbBbjNjeIv3nZCiwOsPwecPIdlpPe5UYX2jH1V1\nXuSkO5BkP36BX2cCOqaR85QpU7Bq1Spcc801ANCpBWFmk4zUJGurJ1Jhjgu/ueUMBEIKmooL8Mqu\nYqDXSPQEIG3bpt5u6JDo76cn21qF6HeR5rJhzMDmEzsWs4xzRha0+buyJCFod8ASCkLxByBbLTg0\naAz+fUEGZo8fidG9Mo77/fzMJORnJiEUEnj5f9vxm9fXwuMN4pyR3XDW8Pw272fy0c04c9WzmFP0\nQ9jys1F//c1Qpl+KbllJrUJ8ZP8sjOyf1ebfkCXpuN9vyWYxoUducqvzTS2N7Nf23+0ISZKQ6vpu\nxyM92Yaxg05+cVKy04oJw1r/m0mSFH2DPVbv/BT0zk856X1OHN7+DkEdWWtgkuV2n4eh0WOALV/j\n6NKVqLZMRTAkMLRP83lHh82MwT3T272vturLsTrb/G9XLf8bzAEfQlDD2dSoznjl98hGekbbt+ks\nq8UUfd53VKS1ZaTdZahenSFRklwnvI3ZJJ8wBCVJQppL/eDbUpLdgvFDj3/dtfzwkGS34MwheR2u\nPVJLv4JU9CtIPenvWc3N52QBQGlUR76KvWNrU1qSJAkZKfYT/ht0hNkkY3CvDAw+5r3ru+qe48KZ\nQ/Pw5ZYyHDrqRl6GE+OK8iBJEgqyXSjIdmHiMbc5b0zhcX/H2UbA2SwmDOmVgSEtapQkqc1/a1mS\ncM7IguPew2VJAtr4fGWzmNC3IBV9T3DcTLKMJLvcZvACQIrTesL3n86KKZwlScLjjz8e71pasVrU\ncxS2QX3xn9MvR09nMi4B4ChWpyiTx47o0vs/kaBNfSH46xtgz8qITre1NzIYPzQP63ZWYMOeSnUh\nzKS+J/xduawMud8sx6+nTEHwtjvgs10bvwdAmkk9exzwxjyEVq/Bvvz+SG2sxbA+XXtFrs/uhMtT\ni8hJqEg4m9PTTnwjDRy7KUSoPjxadH33UZyeRUZe/nA4B93quWzFFnvA6sVlE3tj9fZyBEMCPzir\nd9xnZL5vdN8hzGySkZfhRGmVB0IIZBwuhtueBGcvba6r/vSae3DnjX+B16K+mDoazpIk4aapAzFm\nYDZ+eknRCT+JAYD/HHVzhczVX3ynldWkb6bT1enrrN1bkf7u3/HmCzejaMuqLr3PgM0Bm98b3cHJ\n3KSO1KypJ55R0EJGxWFMX/8hbNvUKz+i4XySkbMRRVZYR0fOTWo4C1tsM396kpXqwI/O7Y8Jw/Jw\n2mC26OksQ7zz52c6caTSg8qKOgysKsGBXkVI7qJl8O1pLOyJg9VW+MKX9kXC2dqBqc9Ulw13Xj6s\n3d9TCrsj2H8ArF+sBPx+wNo10yZ0ail5+fBk5KB75UEEw3sQi2HDu/Q+A44kmISCYIMH1tRk7Ow/\nGodMyRiSpK+RWuaBPbht2QKs7pMO/HAKlAb1CgEpObHCuXlaO7wXdXhaW9gTY/vRtqaqKTa6HzkD\niJ433br5ED4dej4Onn6uZrVERsi+8LkxX0Bp9fN48Z8zGVKjB5a1q+P6d0lb+976ELf/eB76l+2B\nNzUDSmHXzgAFHep5ZX9NHQDgo4k/xHOX3huX6zDjSU4Jh3D4KpBAIIQGmwtyysnP4RqNq64SE3at\ngr14NwCgvlsPzJ98C8rGnqVxZaQ3hgjnyMKSL0v9mDflDhyZcatmtURC2B8O5d7frsAFmz+FTcR3\nG7jAJPUDiGXFsrj+XdJWzoiBKDT7kdNQgeDI0c3La7vIgZHj8d+RF8Mn1Pvx+UOwx/mDZDxYwtPs\nklsN5+1nXYTr7nwTddMu1bKsuMvctwMPfvj/kL1qKQDAnZmHD0dNR13RSI0rI70xxLR2d2sQ93z0\nDErT87Fn3I+Qf4IVyKeCzRK+vCY8nT3us3cwYNc6lJsfi+v9+Cecjdr/fIzAmNPi+ndJW5Ik4cc5\nagBJp43t8vvbfe5lWJI6FnOcKcgE4A2EOrT6/FQzp6pXDcjhBWuRBiqJtuZCcqjT15JXPdccWRhm\nsRhinESnkCGeEdmFWZi46wucVrwWgNo+USvRae1wOJt9XoQkGXK8F3QkJSEwbjyb4yeg/jlOBAcM\nRHBM14dzJIgjz1e9jpytaer0tRxesBZpNWvX4QeJzjA5I+GsdmWLLAyzdFH7VzIuQzwjLHYbyrK6\no3v1IdjNEjJStFvZ2PubpZj3+s+RtmKJWpuvCT6rvcunJylx+C+ajpov1sB/3gVdfl8tP0wKIeDz\n63PkbMnNwv9GTMPOfuqlZZGRc6KFs+xU1wBIvmPC2WyIt2I6hQzzjKgt7ANHwIvBslvTreDsAS96\nVB2CXFkBALD4ffBbjH8ZBCWm6MjZH0KgwY0LN36MQQc7tlHNqWRKS8OCC27Hl8PPAwA0ha93tifY\ntLYcGTn71L0BIuFsPckmFvT9ZJhwNodXc563Y7mmdchJ4Sn18KpSq98LvzUxLoOgxBOZwvb6QwiW\nluPOpS/g9G8WaVxV2+xWU7QJiVxTDZfPDaspsWakpPR0fNlvHMp6DAAA5H31GW797EWklB5s55b0\nfWOYcHZPVFcvu1K0DULZ1Tqclxedg29Ha3dpF9HJpFWXYfr6D5G0ZQMCterlVIqja9p2dpbDZopO\nZ8947XH8Y94NkELx2ZNbL+S8XMy99EGsO/tyAEDW9g24ZMMiOOqrNa6M9MYwc0YFs27Cv3N6YtT0\nCZrWYYqEc1MTFEXglbNuxKAeaRijaVVEbUsvPYDbli3A+m52BDPU7UpDOu26ZbeaUVmnrmK2+Jrg\nN1kSbkFkpEOYP9yEBOGFYZFz0UQRhglni1nGhB9qP0KVwx2L5MbG5u5gOlz9SgQAcop6iZLk8URb\nYookffartltN8PrUhWtWXxP8tsQ7XWQ5ZuML2RcJ58R7rNQ5hglnvVAGDcLPZzyDAWMHYloH+2oT\nacWUGr5EyeOGEg1nfY6cT9u6EkV79sEXOBu2BA3nY3elksMLw0xJifdYqXMMc85ZL6wpydif3Qs1\njtQOb3pBpJWWzT0aMnLxydApaOg3SOOq2jZ+5fv4yfLX4Hb7YPc3wW9PvKle8wlGzuakxHus1DkM\n5++o5XWjXdVXmyhezOHmHuZGD472G4K/XnAn6seO17iqtgUdSZAhUFdVh0abE40pndtjWI9kScIZ\n+9eh/yZ1N7J14y/Gi5NugSn9u+/jTYmN09rfUXNv7RBC5eW4eP3/kJV5FoAB2hZG1AZLehr+N2Ia\nAkXDoyuh9diEBGheRd5wtAY/nTkfE4blYabGNXWFWZ8+D5jNEL/7OXYMOA2bzX1wkYsjZ2qNI+fv\nSJYlWMwyfIEQTPv2Ytayl9B/nbbXXhOdiC3JhhfOuw1fnn5R9DSMXrtuKeGFao2VNQDU1duJKGCx\nwhzwq1+HV22zfScdi8+IGNgsJvgCSnTPWeHU5+pXIpMsw2qW4fWHmkfOOj0NE3kdNVar12M7bPqs\ns7OCFisswUg4KzDJEmQ5sZqtUOcl5kfTLvbo336FkGxG449vUX/AaxRJx+w2s7pGItqvWp8v++qx\n4/GvEjcqYAeg3zo7K2ixwRJobt9p5Y5U1IbEfPZ3sey6ciCkoDjcJUzS6XWjREA4nP1BFKz5HBds\n2Qs7RmldUptqJl2AV+oKMMCaBqAWDp1Ov3dWwGqDNRQAhIA/qHBKm9rEcI6B3+pAcl0VRCScOXIm\nHXNYTahs9GPEp+/gyi1fY7d8v9YltSkyUvZU1yPdXQ0nEqt1Z8SeAWNQak1DUTCIyxe9iCabE/jF\nRK3LIp1hOMcgaLPDGvChMq8nFo2Yipz+/bUuieiERu/+BqadO2Fz1yMkybCl6LMJSWShWveta/Dw\n+09ip/lBYPRDGlcVf59PuxnbD9TgJZMJE9d/grqUTK1LIh3ifEoMgjYHbCE/insU4fnzZsE/XJ/T\nhEQAMG71x7hpxetw1VbCa7HDptNzuY7w9pAWbyOA5tajiSbSwtMfUGAN+BDklrPUBoZzDIJ2tdVe\nU63aDlGvq1+JACAYXgWdXF8Fr9Wh25XBkZGzIxDuN52szxF+ZzW38AzBFvQjaLFqXBHpkT4/Quvc\n0htn4w/bypAWUN/kGM6kZ0q4l7ZZCcFnc0Cv+zy56qrwg3UfYOjhrQAAc4KPnAMedQeukNWuZTmk\nUwznGHjzu6O0VIbsVdt3clcq0rNIc4+tBYOxu/8YaLvp6ok5aipwy/JXo98nbjir7xfeOrVPQsjK\nkTMdj+Ecg8hIub7R3+p7Ij0SLnXk/Na4H6Fy7ATdhrOpRRjXONNgzkjTsJquk1u2H2fv+Bq+yizM\nO28WUgf1xYVaF0W6w3POMYiE8ZBNX2Daxo9gQ1DjiohOrHboaPxrzKWodGXqurFHZCvL5QMn4qZZ\nr0E6/XSNK+oaA9d9jl8u+iPk4j34eMRU7B91ltYlkQ7p95WqY5GNAy7auAijDmxEhfQbjSsiOrG6\nMybi1Qp1h6chOm7sIcLT745AE+w2EyRJnwvXOks41HPMgYZGAGlsQkJt4rMiBpGRsy3ghyLJAM8Z\nkY617FFt1/EpmEhvbbvfq+sRfmcJuxrOQY96yZiF7TupDYn7CuhCvVd9ghde+T0KakvQZHUACfoJ\nnxKD3db8MtfrdpEAAFnGZ5N/hO1yum53zoqL8KWYQY8HsHFHKmpbTOHsdrsxe/ZseDweBAIBPPjg\ngxg5cmS8a9Mta9CPgtoSAIDP6tC4GqKTs1vNyK4/ijOKV8OZMQlAkdYlndDSq36GTcVV6J3AI2fJ\nob5nhBq9ajibGc50vJieFa+++irGjx+PhQsXYu7cuXjiiSfiXZeuya7mjS4CVnb3IX1z2EzoXbEf\nty1bgL471mpdzknZrSZkNlQiy9+gdSldxlfYAysGngW5vh53LHkePbbr+5iQNmL6ePrjH/8Y1vB5\n1mAwCJvt+xVQkXAOyGasO+1CjNG4HqKTcfoacc3X/wQAKC59d92yW814+u1H4EIQvp/u1bqcLuEe\nNgovXDwb19RuxPWb5mH1mXwHoeO1G87vvvsuXn/99VY/mzt3LoYOHYqKigrcf//9ePjhhzt0Z9nZ\nidFUIJCfBQB477QrsP3KWzE1QR7XySTKsfs+8paUoXt5MQDAnpWh62OZkeaAI+BFMDVV13V2RvZR\ndTc72au2KbWlJZ/0sSbqvwOdXLvhfNVVV+Gqq6467uc7d+7E7Nmz8cADD2Ds2LEdurOKisSYqmpC\neLV20AdJiIR5XCeSnZ2c8I8xkVnTUqJf+yw2XR9LEVJgD3hRb8vTdZ2d0ejxAQAC4dXaPsl8wsfK\n156xdeaDVUzT2nv27MHdd9+NZ555BgMHDoz5zo1KKRqC22/+K2odqRiu40tTiADAnpEa/VrSeUvM\nvutXwhHwwp3AV0BEF4A1qb21JQd7a9PxYgrnP/7xj/D7/XjqqacghEBKSgrmzZsX79p0y5rswuGM\nQgBs3Un6Z7c3b3WhFPTQsJL2DVj2AQDAHPQnbN+9SDiLJnVaW7Lzig86Xkzh/Nxzz8W7DkOxWZsX\nuTOcSe+sZhlVSenwWexQevfWupyTMoUXmkZaeSYiW9CHiTtWwmey4rnzbsPwAd+/2UdqHy+wi4FJ\nlpHprcMP1v0H3Ys3al0O0UlJkoTFYy7G4qFTdN/cwzW4HwAg+Pv/p3ElXcfmb8L9i/4PQ45sxUcj\npkEp6K51SaRDiXulfxfr7j6KW5a/gi1ZAHCl1uUQndSiSdeh1u3HKJ3P9EjhS72sviYENK6lq5jC\nPcStQXVXO4vOjwlpgyPnGLmE+tYhnE6NKyFqny3ccUvvI+fI5heSx6NxJV3HnKS+Z0TDme07qQ18\nVsTogYUPAQAkZ1I7v0mkPVt4cwVd99YGEBg1Fo2/uBehXvo+N94ZVrsVQdnUHM5s30lt4LR2Z7kY\nzqR/TpsZEvS/gDF4xjgEzxindRldymKW4Tdbo+FsZThTG/is6CSJ09pkAD84qzdmTB0IM6dQNSdJ\nElYNmojC6iO4fckLsIQS9ew6dQZHzp3kHzBI6xKI2jWwRzoG9kjXugwKW3DxL5BdW4aLNn2MAwm8\nAxfFjh+jY7R/wCgAQHDYcI0rISKjsZhlWIN+hCQZFnYIozYwnGMUDHf1sXNKioi+o0g4+8xWmE2J\n26qUYsf5lBjV/u5PeGVHOS7ulqF1KURkMJFwDpitkBK4jzjFjuEco55jBqPnmMFal0FEBmQ1m2AN\nBRCw2LQuhXSK09pERKfYwAObcSS9AO9Pul7rUkinGM5ERKfYpC/ew5j932LzoDO1LoV0iuFMRHSK\nhazqCm2nFNK4EtIrhjMR0Smm2NRzzU6FV3tQ2xjORESnmGJTR84OwXCmtjGciYhOsWg4K0GNKyG9\nYjgTEZ1i7rxCAMDwLSs1roT0iuFMRHSKlYxUV2mnuGs1roT0iuFMRHSK2cMLwSILw4iOxXAmIjrF\nbKFIOHPTC2obw5mI6BSzM5ypHQxnIqJTzBryAwCEneFMbWM4ExGdYk19+uPZ8+/AkTFna10K6RTD\nmYjoFFO6FWDx8AvQMLBI61JIpxjORESnWLpLXaWd5uJqbWob93MmIjrF+hakYO6t45Cd7tC6FNIp\nhjMR0SkmSRJyM5xal0E6xmltIiIinWE4ExER6Uynwrm4uBhjx46F3++PVz1ERETfezGHs9vtxu9/\n/3vY2BuWiIgormIO50cffRT33nsv7OxwQ0REFFftrtZ+99138frrr7f6Wbdu3XDxxRdj4MCBEEJ0\nWXFERETfR5KIIV0vvPBC5ObmQgiBjRs3YsSIEVi4cGFX1EdERPS9E1M4t3Tuuefik08+gcViiVdN\nRERE32udvpRKkiRObRMREcVRp0fOREREFF9sQkJERKQzDGciIiKdYTgTERHpDMOZiIhIZ7p0y0gh\nBObMmYOdO3fCarXiqaeeQvfu3bvyLikOrrjiCrhcLgBAYWEhZs2ahQcffBCyLKN///547LHHNK6Q\n2rJx40b84Q9/wMKFC3Hw4ME2j9nbb7+Nf/7zn7BYLJg1axYmTZqkbdEEoPWx2759O2677Tb06tUL\nAHDttddi2rRpPHY6FAwG8dBDD+HIkSMIBAKYNWsW+vXrF5/XnuhCixcvFg8++KAQQogNGzaI22+/\nvSvvjuLA5/OJyy+/vNXPZs2aJdasWSOEEOLRRx8Vn376qRal0Um89NJLYvr06eJHP/qREKLtY1ZR\nUSGmT58uAoGAaGhoENOnTxd+v1/Lskkcf+zefvtt8eqrr7b6HR47fXrvvffE008/LYQQoq6uTkya\nNC1fBZYAAALlSURBVClur70undZet24dJk6cCAAYMWIEtmzZ0pV3R3GwY8cONDY2YubMmbj55pux\nceNGbNu2DWPHjgUAnH322fjqq680rpKO1bNnT8ybNy/6/datW1sdsy+//BKbNm3CmDFjYDab4XK5\n0KtXL+zcuVOrkimsrWP3+eef44YbbsAjjzwCj8fDY6dT06ZNw1133QUACIVCMJlMx71fxvra69Jw\ndrvdSE5Ojn5vNpuhKEpX3iV1kt1ux8yZM/Hyyy9jzpw5mD17dqsmM0lJSWhoaNCwQmrLlClTYDKZ\not8fe8zcbjc8Hk+r16PT6eSx1IFjj92IESNw//33480330T37t3x17/+9bj3Uh47fXA4HHA6nXC7\n3bjrrrtwzz33xO2116Xh7HK54PF4ot8rigJZ5ho0PevVqxcuvfTS6NdpaWmoqqqK/nePx4OUlBSt\nyqMOavk6ixwzl8sFt9t93M9JX84//3wUFRVFv96xYweSk5N57HSqtLQUN910Ey6//HJcfPHFcXvt\ndWlSjh49GsuXLwcAbNiwAQMGDOjKu6M4eO+99/Db3/4WAFBeXg63240JEyZg9erVAIAVK1ZgzJgx\nWpZIHVBUVIQ1a9YAaD5mw4YNw7p16+D3+9HQ0IC9e/eif//+GldKx5o5cyY2b94MAPjqq68wZMgQ\nHjudqqysxMyZM/HLX/4Sl19+OQBg8ODBcXntdelq7SlTpmDVqlW45pprAABz587tyrujOLjqqqvw\nq1/9Ctdddx1kWcZvf/tbpKWl4ZFHHkEgEEDfvn0xdepUrcukdjzwwAP49a9/3eqYSZKEGTNm4Lrr\nroMQAvfeey+sVqvWpdIx5syZgyeffBIWiwXZ2dl44oknkJSUxGOnQ/Pnz0d9fT2ee+45zJs3D5Ik\n4eGHH8ZvfvObTr/22FubiIhIZ3gCmIiISGcYzkRERDrDcCYiItIZhjMREZHOMJyJiIh0huFMRESk\nMwxnIiIinfn/KVhBKplBpmkAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x117888f90>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\nv7VJukaAiIjIe3NfCPBcEgJ0tUAREZH35L4QYFuZr2cpBIiIiLwn14WAVOqtmyIGdbVAERGR9+S6\nEDAcT2W+1u4AERGR9+a6EBBPvBUCBqLxaeyJiIjIB5vrQsClMwGfmn/FNPZERETkg8118+WxkZmA\nJx68ndKQf5p7IyIi8sHlupmAeDKF12MpAIiIiIzDdSEgmTTYXtdtloiISN65brRMphxsrzX+giIi\nIjOcS0OA6zZLREQk71w3WioEiIiITIzrRstEyoy5iZCIiIi8O9eNlikdEyAiIjIhrgsBCe0OEBER\nmRDXjZbJpMGnECAiIjIuV42WjmNwjNHuABERkQlwVQhIphwA7Q4QERGZAFeNls90/gYAx5hp7omI\niMgHX95uIOQ4Dps2beLFF18kHo/z4IMP8nu/93scP36cxx57DNu2ue2221izZg0A27Zt4+DBg9i2\nzfr161m4cCH9/f00NTURi8WYPXs2mzZtIhAITGj9b164yLPdpwF4o/9ivjZLRETEtfI2E/DTn/6U\nVCrF7t27aW9v59SpUwC0trbS1tbG7t276e3t5eTJk5w4cYKjR4/S0dFBW1sbGzZsAKC9vZ0lS5aw\na9cuFixYwFNPPTXh9W956ni+NkVERGRGyFsIOHToELNnz+aP//iPaWlp4c477yQSiZBIJJg7dy4A\nt99+O11dXfT09FBbWwvAnDlzcByHvr4+jh07Rl1dHQCLFi3iueeem/D63zj/1qf/4XgqX5slIiLi\nWjntDti3bx87duwY01ZRUUEgEOCHP/wh3d3drF+/nq1btxIOhzPLhEIhTp8+TTAYpKysbEx7JBIh\nGo1SXFycaRscHMylewzHkzk9TkREZCbJKQTU19dTX18/pm3t2rXceeedANx666389re/JRwOE4lE\nMstEo1FKS0vx+XxEo9FMeyQSoaSkJBMGKioqxgSC8VRWFmN7LZKp9AGByZShsnJij5WJUT2nhuo8\n+VTjyacaF468HRhYXV3NwYMHueuuuzh58iRXXXUVoVAIv9/P6dOnmTt3LocOHWLNmjV4vV62bNnC\nqlWrOHPmDMYYysrKqKqqorOzk3vvvZfOzk5qamomtO6zZwfx2V6SqfQMwH/6+GzOns1tFkHeqbKy\nWPWcAqrz5FONJ59qPDXyFbTyFgIaGhpobW1l6dKlADzyyCNA+sDApqYmHMehtraWhQsXAunQsHTp\n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\nSUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x122b506d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"coef_advi_fit, elbos_fit = fit(X_train, y_train)\n",
"\n",
"plt.figure()\n",
"plt.plot(coef_advi_fit, label='advi coefficients')\n",
"plt.plot(coef, c='r', label='original coefficients', ls='--')\n",
"plt.figure()\n",
"plt.plot(elbos_fit)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"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.11"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment