Skip to content

Instantly share code, notes, and snippets.

@tttamaki
Created June 19, 2020 09:11
Show Gist options
  • Save tttamaki/34b10d0af8628be86e0a5042f25fb629 to your computer and use it in GitHub Desktop.
Save tttamaki/34b10d0af8628be86e0a5042f25fb629 to your computer and use it in GitHub Desktop.
Pyroで正規分布の最尤推定とベイズ推定を比較する
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Following the Pyro tutorial\n",
"\n",
"http://pyro.ai/examples/intro_part_ii.html"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# !conda install pytorch torchvision -c pytorch\n",
"# !pip install pyro-ppl\n",
"# !pip install daft"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"\n",
"\n",
"import numpy as np\n",
"assert np.__version__.startswith('1.18'), 'numpy == 1.18 is tested'\n",
"normal_np = np.random.default_rng().normal # for sampling\n",
"gamma_np = np.random.default_rng().gamma # for sampling\n",
"\n",
"from scipy.stats import norm as norm_sp # for pdf\n",
"from scipy.stats import invgamma as invgamma_sp # for pdf\n",
"from scipy.stats import gamma as gamma_sp # for pdf\n",
"\n",
"import torch\n",
"\n",
"import pyro\n",
"import pyro.infer\n",
"import pyro.optim\n",
"import pyro.distributions as dist\n",
"import torch.distributions.constraints as constraints\n",
"from pyro.optim import Adam\n",
"from pyro.infer import SVI, Trace_ELBO\n",
"\n",
"\n",
"from tqdm.notebook import tqdm\n",
"\n",
"\n",
"import daft\n",
"# from matplotlib import rc\n",
"# rc(\"font\", family=\"serif\", size=12)\n",
"# rc(\"text\", usetex=True)\n",
"\n",
"\n",
"pyro.set_rng_seed(101)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"単純に平均と分散を求めてみる"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# 平均0標準偏差1の正規分布\n",
"\n",
"data = torch.tensor([normal_np() for i in range(100)])\n",
"plt.hist(data, bins=100)\n",
"plt.xlabel('x values')\n",
"plt.ylabel('counts')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"ml_m = data.numpy().mean()\n",
"ml_std = data.numpy().std()\n",
"gauss = norm_sp(ml_m, ml_std)\n",
"y = [gauss.pdf(x) for x in x_range]\n",
"plt.plot(x_range, y, c='k', label=r'ML Normal(m,$\\sigma$)')\n",
"\n",
"plt.hist(data, bins=100, density=True)\n",
"\n",
"plt.title('m={0:.3f}, $\\sigma$={1:.3f}'.format(ml_m, ml_std))\n",
"plt.ylim(0,)\n",
"plt.xlabel('x')\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def scale_model():\n",
" '''\n",
" model with observations\n",
" '''\n",
" \n",
" a1 = torch.tensor(0.0)\n",
" b1 = torch.tensor(1.0)\n",
" a2 = torch.tensor(3.0)\n",
" b2 = torch.tensor(0.3)\n",
" \n",
" m = pyro.sample(\"m\", dist.Normal(a1, # mean\n",
" b1)) # std\n",
" std = pyro.sample(\"std\", dist.InverseGamma(a2, # alpha, concentration\n",
" b2)) # beta, rate\n",
" \n",
" with pyro.plate('observe_data'):\n",
" pyro.sample('obs', dist.Normal(m, std), obs=data) # vector-plate version\n",
"\n",
"\n",
"# # non-plate version (150x slow...)\n",
"# for i in range(len(data)):\n",
"# pyro.sample('obs_{}'.format(i), dist.Normal(m, std), obs=data[i])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"このモデル`scale_model`のグラフィカルモデルはこれ.\n",
"- $p_\\theta(X, Z)$\n",
"- $X = \\{x_1, \\ldots, x_N \\}$は観測されたデータ\n",
"- $Z = \\{ m, \\sigma \\}$は潜在変数\n",
" - $m \\sim \\mathrm{Gauss}(a_1, b_1)$\n",
" - $\\sigma \\sim \\mathrm{InvGauss}(a_2, b_2)$\n",
"- $\\theta = \\{ a_1,b_1,a_2,b_2 \\}$"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAYAAABJ/yOpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAT6ElEQVR4nO2de7AU1Z3HP9++vIIgIGpURNFFVASMGJFYJD4KDVl3E9aY0o2r2QDZ+Cg0WR/JCq6wIokmFCnyXsFoXDWLZkOeVmKMgHENMaCIL8wGpHxgEhVuEhGF27/94/TAcHOZOz23u2fm3t+naqrunZn+/U5Pn2//zjn9O+fIzHAcp2OiehfAcRoZF4jjVMAF4jgVcIE4TgVcII5TAReI41TABeI4FXCBOE4FUglE0mmS7sirMI6TBVnW07QR5F3AY1k4dpwcyayephXI8cAwSaskbZB0WhaFcJyMyaye1hJB/mxmJwMXAzfU6thxciSzelq1QCT1AoYC85O3Hgf2l3SkpCWS7q21EI6TFRXq6VRJt0j6vqSzqrWXJoKMBv7PzN5O/h8PrDWzDWY2PYUdx8mTvdXTZWb2CeCfgfOqNdYrhePjgSMk9QV6A9cDn05xvOMUQWf1dDbw1WqNpRXIncD/Au8AbjCzX6U43nGKoMN6KknA54H7zGxNtcbU1QlTkoYCNwJnAovN7HNdMug4OSDpcuBjwKPA42b2jaqO8xmFjrN30jSxdiHpHcCHgcHASjN7ItNSOU4GSOoNnAMcCPzKzB5NbSNtBJE0EPg1cChBYDHwcTNbmta54+RF0kl/CDiW3fX0KjP7eio7NQjk34Frgb5lb78JDDCzOJUxx8kJSRcDC4D+ZW+/BRxgZn+u1k4t2bxHsac4ICh03xpsOU5eHM6e4gDYAbwzjZFaBLIK2Nbuvd7AFklH1WDPcTJF0hzgs8Db7T4y4MU0tmoRyNeBnxFE0gpsJeS7ADwnyVwoTj2QNEeSER4O/gK4i9D8bwX+AvyDmW1PZbOWYd7koctowijWk2bWmrx/KrC87KujzOy3qR04TgqSiHF98u8vgLNLQpB0NGEU62kzey217Tyeg7hQnCKoJIzMfOT5oNCF4uRBEcLY5auIJ+kuFCcLihTGLp9Fppq4UJxaqIcwdvmuRy6WC8WphnoKY1cZ6pms6EJxOqIRhLGrLI2QzetCcaCxhFGiIQRSwoXSM2lEYZRoKIGUcKH0DBpZGCUaUiAlXCjdk2YQRomGFkiJIoSSpM9MAk4FTgTGAgMJCW5bCMvHrAbuN7O1WfouCkn9gbOBkwnnOJKQmb0DeAlYA/wG+KGZ/T4H/3NoEmGUaAqBlMhDKMnsyOnApclbPyIIYS0hEVPAAcAJwLuBqcALwNeAu82srSv+i0DS4UBpTvZqYCVBCOsJyXy9Cenh7wYmAlOA+4AvmdmvM/A/hyYTxi7MrOlehLu8lb2OqtHOKYRK8v3Epqo4phfwIeDh5DWq3r9HhbJGwGXAH4GbgSOqPG4I8ClCaviXgX1q9D+n7Bo9APSr92+S+hxSnvC5wK8Id9dfEmZn1bMC/JVQCHf8c4DBFY4T4Y62GfhwFyrfTOBV4GP1vpAdlG8w8HPC8jdH12hjCHA78DtgdCffnVS6WdRbGFnW07SOh5b9fT1wWb0rQlKW9kKJCW3qcR18V8BCQlPjnRn4PgbYBFxa79+hrExDCP2JRUBLBvYuAl7Zy+8ZAfMI01nLr0HdIkaW9TSt4ysJCzasBX5PaLsfCSwB7m2AilEulBh4A7iw3XeuISyNv9cIU4PfIwj9knMa4DfoRehjfIkqmowp7J6X3HQOLntvP0Kf8C9lv/uf6yWMsnJ1VE+nArcQmtNnVW0rhdOLgP8mLM5AchEmln3eCAIZDOxMLlLpgr0BLAb6AOMI7fHhOfiemNxlD6zzb/CZ5O4d5WD7BuAHSRQen5xvKXLsIMwyXVLn8++sng5JU8Y0jr8AXJH8/eGkIu5T9nndBZKU42DgQuB/CFMttycXcF3ympaj75uBpXU892OTG8CInOz3AZ5Ibjg7gbZEIM8QVlN/L9C7zte/s3q6ABhftb0UjscQOmsPAf8GPNfu84YQSLsyRYS1Wq8hjFY9S4bNjg789QNeBo6r0/neBnw2Zx+TCE2q/wI+AuxX7+vcrnwd1tMk6t0ETE5jr8eszSvpAUL57s7Zz1xgfzO7LE8/HfjdH/gtMNJqmHudwo8IAwCfMbOf5eUna3xt3gpIGkHotA03s7dy9jUMeIrQF2m/7EyefmcCJ5nZRQX4+iRwhplVvc9Gs1LzNtCS+koamtxRGp33AL/MWxwAZvYSYbTnuLx9teMUQue8CH6e+Gt4JPWRtH+t9TS1QBS4gTBS9DJhLawjanGeJZIGSOq3l49PJKRWVGNnhKRnJS2W9KSkOyVNlvSwpN9KmlCFmdWJzyKp+hwBJB0vaaWkpyXFyXpmc6s8fAMwQNKBHdhV0tyrO5I+RainLwIvSEp/06qhE3Qee457twHrG6BztpYwYrGBsGDYJcAEQsf5R8CHqrQzIrEzlnADWQ3cSujkfQhYVoWNa4AFBZ57r6TMVT0UTH6TZ4EJyf83EEZ/qh7AIKTZvA8YBnwwsbGSkL9mwNQ614fJhCH+8udim0k5ylbL9gcfAPYp+z8CRiYr2jUCRySvcwiZqjFhuHdhChsbzWwdgKSngAfMzCStIwioM97gr9eFzZN+wFtWfeLkZGCN7U5EfAKYYknNqpI+wI+BAQRxCmhJPouB7zVA67v8fETIzj6MMMpVFbUI5I+EH6T8WCOkG9RTJNcRLsxfCNmpOwl3/xWE7NQ051reV4nL/o+rtFO6oxdFG7srZzWMITwTKjGeMDKVhjcJz0MOIDwkPYxwY+hFEM8aQkZwvTgJOJ09F1rvTYhwVVOLQBYCHwcGJcdvA240s/kVj8oZSa8CBxFGq1YDL5buiJIOAw4psDgHA38o0N924G1JQ626Id7XgDMAJI0iRNu0ne4DgG9ZsnlSsh/HWELK/LuBeWb2fEqbmSFpCOEmcABBsG8QhvlTDYGnFoiZvSxpHCGN+gDCpojfS2sna8xsUYWP1xA6sd8qqDgnEnKhCiFp/j1GiAT3V3HI3cAHJT1JyEb+xzQVJ9lE6TDCE/RSGd4iDBJUPVCQJ2a2JamnVxD6SQ8S+qap6CnPQU4Fbjazkwvw1UJoho42s1fy9lfmdwHwWhGRPPk9v2Bm1YzoNTU1PwdpMlYR9s4eVYCvKcDvihRHwg+BCwp6LnUBIWmx29MjBGJheuet7N7HJE8uJcVG9RmygjBS8748nUgaRMjBWpynn0ahRzSxAJKHmY8C7zKzVLsMpfBxMmG+wRFm9mYePjrxfwlhNt3klEO2aXz8B/A3ZnZBHvYbjR4RQQDMbCNhfvV/5tEMSZ7i30ZItS5cHAm3EMb6/yUP45JOIEThq/Ow34j0mAgCu/bN/jVhwsxXMrQrwvTWQ4Bz87p7V1mW0YTm1qlm9nSGdgcR5nd/wcy+nZXdRqeW5yBNi5ntkHQusFJSq5nd0VWbiTjmAKcRKmVd7zhm9nSSg/RTSZPNbH1XbUral5CusxLo8m/WTPQogQCY2e8knUmoQEcC881sRy22kucBCwkPxiab2esZFrVmzOzOJFoulzTNzGp+oi3pWOBOwkjgzHrfAIqmx/RBykmaHu9JXquStnXVJBmrZxFymESIHJmvRNgVzOw2wnDs1yTdmkxsq5pkOsM1hKhxC2HVljj7kjY49cy4rPeLULmnE7I8HySMAA2o8P39gE8QUhgM+Pt6n0MV5ziQkOm8gzDUPRHoVeH3OIowQ/QVQjLiiHqfQz1fPaqTvjck9SEsC3MxYd3aTey59Oj+hDSO/QlLZ34N+CkhzeZv61Hmakme7O8k9B2eIkw7PYwQ/dovPXoiIa/rHuAbZvZsPcrcSLhA2pG03UcTlggaSMjg3UpYvPo5S5oZkuYTFgXoawVOrU2LpG8TVnlpKSv7voS1hkcSUuXfJkx+W23FZwA0NC6QGklGr2IaOIqURY9bzCyXZyPdnR7ZSc8CC3eWzwEfSJpojUgpe7mIFJtuiUeQLtDIUcSjRzZ4BOkCDR5FPHpkgEeQLtKIUcSjR3Z4BOkiDRpFPHpkhEeQDGikKOLRI1s8gmRAg0URjx4Z4hEkIxohinj0yB6PIBnRIFHEo0fGeATJkHpGEY8e+eARJEPqHEU8euSAR5CMqUcU8eiRH00nEEnPE1KzneZlk5mNqHchqqEZBWJmVvdlwytRZBRpxujRDNewhPdBcqDgvoj3PXLEI0hOFBFFmjF6QPNcQ/AIkhsFRRGPHjnjESRH8owizRo9oLmuoUeQHMk5inj0KACPIDmTRxRp5ugBzXUNPYLkTLsoMk/S6bXaktQi6WbCkj3g0SN3XCDFUNre7LPAzV2wcwIwk7AsEcCRXSmU0zkukGL4CLt3oh0naZ9Ovr83prD7mu3ABZI7LpBiOJewPTWElQtr3QXqHMKOrdsIWzj8LIOyORVwgRSAhR2tziEs8zkQODutDUkDCPub7wSeAy7PsoxOx/goVoFImg3MJezhfnjZ+yKsCXwUIUL8CVhuZn8s+87ZhI0z/wQcZ2YvF1n2LGmma9jj9gepMzcC7wXOkjQeuKalpeX9wGBJ9OrVqw0gjmO1tbVFURTtkLQpjuObCYtnC5jazOJoNjyCFIyksVEU/SaO4z5DhgxpO+OMM1omTZrEyJEj9/jetm3bePTRR1m+fLmtWbOmtBz/cjM7o05Fz4xmuoYukAKRNAe4btiwYXbVVVe1tBfF3ti5cyf33HMP3/nOdwx4OY7jM8zsuTzLmifNdA1dIAUgSVEUrTCzSdOmTdPUqVNrstPa2sp1113XtnHjRgF/Z13YWq2eNNM1dIEUQEtLy8NRFE1cuHBhNGLEiC7bW7Rokd1///0AZ5nZz7tssGCa6Rr6MG/OSPoy8J5FixZlIg6Ayy+/XKeddhqS7ku796CTDhdIjkgaC1w2c+ZMDR8+PFPbV155pfbbbz9FUdR0EaSZcIHkSBRF940aNSqePHlyLvbnzZvXYmbHS7owFweOCyQvJE2M43jY7NmzW/LyceihhzJhwgSiKLoxLx89HRdITkhacPjhh7cNGTIkVz8zZsxQHMfDJY3u/NtOWlwg+XHy+eefn1v0KHHQQQcxdOjQnYQdd52McYHkgKQRZtYyYcKETr977bXX8thjjwFwxx138M1vfjO1v6OPPrpXFEWdO3NS4wLJh3P79u3b1qdP59PQP/rRj7J06VKWL1/Ohg0bmDFjRmpnJ5xwAvhqk7ngAsmHY/bdd9+qnsCOGTMGM2PZsmVcffXVtLSkb5Udc8wxxHFc7417uiUukHzoW21Ff/7559myZQu9e/emf//+ALz66qtce+21LFu2jJtuuqlTG/369YOQ6etkjAskH97cuXNnp196/fXXWbBgAbNnz6Zfv36sWbMGgI0bNzJx4kSmTp1aVUTZtm0bQHPlDDUJLpB8WNva2lrxjr59+3bmz5/PtGnTGD58OOeddx533XUXEASS9CsIc6kqs27dOqIo2p5BuZ12+ISpfLh3x44dX9m+fXup+fNX9OvXjy9+8Yu7/h8zZsyu/zdv3sywYcNobW1l8ODBnTp74oknADZmUXBnTzyC5ICZ/V7SjhUrVtR0/BVXXEEURQwaNIjp06d3+v3169fvjOP44ZqcORVxgeTHg/fee29b3k42bNhAa2trL+CGvH31RFwgOWFmn37llVdaNm/enKufxYsXx1EUPWdmL+TqqIfiAskJM3s6iqL1c+fOzS2KPPPMM6xbty6K4/hf8/LR03GB5Egcx2e+9NJL+u53v5uHbebOndsm6QEz+3HmDhzABZIrSbPnuttvv93WrVuXqe1Zs2a1bdu27W0zS70InVM9LpCcMbP5wNJZs2ZZKSmxK8RxzKxZs9qeeuopM7OTzOytrpfS2Ru+aENBRFF0h5n905QpU+ySSy5RFKW/N73wwgvMmjWrbevWrW1mNsHM1uZQ1NxppmvoAikQSRdKWjJw4MBoxowZLaefXt1WIa2trSxZsoQHH3yQKIpWx3F8ppltybm4udFM19AFUjCSBkpaamZn9enTx0466aSW8ePHc8oppzBgwAAgNKM2bNjAI488wqpVq9o2bdrUEkXRq3Ecf8bMbq3zKXSZZrqGLpA6Iak3cH0UReeb2XAz65O8Xzo/a2lpaY3jeK2ZzTazX9a3xNnRTNfQBdIgSBoIHAa8A3gd2GjNdnGqpJmuoQvEKZxmuoY+zOs4FXCBOE4FXCCOUwEXiONUwAXiOBVwgThOBVwgjlMBF0gHSLpV0h8kPVmAr09KMknHlr33jKQReft2OscF0jG3AVMK8jUOeBw4G0BSX+CdwKaC/DsV6FYCkfQ9SfMkPSTpFUk17VxjZisJ6R5FMBb4PIlAgOOAZ7prmkmz0a0EAowBtprZe4FLgQvKP0yE83gHr3y2gKqO0cAPgAMlDSIIJtvph07NdJuF4yT1BwYBC5O3egFby7+TCKdhkDQceM3M3pR0P/B+QpPrifqWzCnRbQRCaJqsNrPSKiLjgD062ZIeAgZ2cOxVddpOeRy7o8VPCBHvYGBZHcridEB3EsgYQme3xDjg++Vf6GoEkfQAcJGZvZTR8eXNqRXAN4D+eBOrYehOfZCx7CmQMbSLINUi6W7gEeBoSS9Kmi4pAkbSQedd0k8kHZL8fbGki5O/D5H0k+Tvjo7fJZBk8YV1wNtmtkfT0KkfPh+ker9jgGlmVtMibV09vjvRTPNBXCBO4TTTNexOTSzHyRwXiONUwAXiOBVwgThOBVwgjlMBF4jjVKAZn6RvktRcY9NOe5omlb/pnoM4TpF4E8txKuACcZwKuEAcpwIuEMepgAvEcSrgAnGcCrhAHKcCLhDHqYALxHEq4AJxnAq4QBynAv8P5KQGYlKd+BAAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 186.142x138.425 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pgm = daft.PGM()\n",
"\n",
"pgm.add_node(\"a1\", r\"$a_1$\", 0.5, 2, fixed=True)\n",
"pgm.add_node(\"b1\", r\"$b_1$\", 0.5, 2.5, fixed=True)\n",
"pgm.add_node(\"m\", \"m\", 1.5, 2)\n",
"pgm.add_edge(\"a1\", \"m\")\n",
"pgm.add_edge(\"b1\", \"m\")\n",
"\n",
"pgm.add_node(\"a2\", r\"$a_2$\", 3.5, 2, fixed=True)\n",
"pgm.add_node(\"b2\", r\"$b_2$\", 3.5, 2.5, fixed=True)\n",
"pgm.add_node(\"std\", r\"$\\sigma$\", 2.5, 2)\n",
"pgm.add_edge(\"a2\", \"std\")\n",
"pgm.add_edge(\"b2\", \"std\")\n",
"\n",
"\n",
"pgm.add_node(\"xn\", r\"$x_n$\", 2, 1, observed=True)\n",
"pgm.add_edge(\"m\", \"xn\")\n",
"pgm.add_edge(\"std\", \"xn\")\n",
"pgm.add_plate([1, 0.5, 2, 1], label=r\"$n = 1, \\ldots, N$\", shift=-0.2)\n",
"\n",
"\n",
"pgm.render();"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def scale_guide():\n",
" '''\n",
" guide with parameters\n",
" \n",
" use model's default values as parameter initializers\n",
" '''\n",
" a1 = pyro.param(\"a1\", torch.tensor(0.0))\n",
" b1 = pyro.param(\"b1\", torch.tensor(1.0), constraint=constraints.positive)\n",
" a2 = pyro.param(\"a2\", torch.tensor(3.0), constraint=constraints.positive)\n",
" b2 = pyro.param(\"b2\", torch.tensor(0.3), constraint=constraints.positive)\n",
"\n",
" m = pyro.sample(\"m\", dist.Normal(a1, b1))\n",
" std = pyro.sample(\"std\", dist.InverseGamma(a2, b2))\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"このガイド`scale_guide`のグラフィカルモデルはこれ.\n",
"\n",
"- $q_\\phi(Z)$\n",
"- $Z = \\{ m, \\sigma \\}$は潜在変数\n",
" - $m \\sim \\mathrm{Gauss}(a_1, b_1)$\n",
" - $\\sigma \\sim \\mathrm{InvGauss}(a_2, b_2)$\n",
"- $\\phi = \\{ a_1,b_1,a_2,b_2 \\} = \\theta$"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 209.764x68.0315 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pgm = daft.PGM()\n",
"\n",
"pgm.add_node(\"a1\", r\"$a_1$\", 0.5, 2)\n",
"pgm.add_node(\"b1\", r\"$b_1$\", 0.5, 2.5)\n",
"pgm.add_node(\"m\", \"m\", 1.5, 2)\n",
"pgm.add_edge(\"a1\", \"m\")\n",
"pgm.add_edge(\"b1\", \"m\")\n",
"\n",
"pgm.add_node(\"a2\", r\"$a_2$\", 3.5, 2)\n",
"pgm.add_node(\"b2\", r\"$b_2$\", 3.5, 2.5)\n",
"pgm.add_node(\"std\", r\"$\\sigma$\", 2.5, 2)\n",
"pgm.add_edge(\"a2\", \"std\")\n",
"pgm.add_edge(\"b2\", \"std\")\n",
"\n",
"pgm.render();"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"pyro.clear_param_store()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"trace = {'loss': [],\n",
" 'a1': [],\n",
" 'b1': [],\n",
" 'a2': [],\n",
" 'b2': []}"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"adam_params = {\"lr\": 0.005/10, \"betas\": (0.95, 0.999)}\n",
"optimizer = Adam(adam_params)\n",
"\n",
"svi = SVI(model=scale_model,\n",
" guide=scale_guide,\n",
" optim=optimizer,\n",
" loss=Trace_ELBO())"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "537767b88fe14d48a334ee55fc18f09e",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, max=25000.0), HTML(value='')))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"num_steps = 25000\n",
"\n",
"with tqdm(range(num_steps)) as pbar:\n",
" for i,p in enumerate(pbar):\n",
"\n",
" loss = svi.step()\n",
"\n",
" trace['loss'].append(loss)\n",
" if i % 10 == 0:\n",
" pbar.set_postfix(loss=loss)\n",
"\n",
" trace['a1'].append(pyro.param(\"a1\").item())\n",
" trace['b1'].append(pyro.param(\"b1\").item())\n",
" trace['a2'].append(pyro.param(\"a2\").item())\n",
" trace['b2'].append(pyro.param(\"b2\").item())"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(trace['loss'])\n",
"plt.title(\"ELBO\")\n",
"plt.xlabel(\"step\")\n",
"plt.ylabel(\"loss\");\n",
"plt.ylim(0, 10000)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1080x360 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize=(15,5))\n",
"\n",
"plt.subplot(1,4,1)\n",
"plt.plot(trace['a1'])\n",
"plt.ylabel('a1')\n",
"\n",
"plt.subplot(1,4,2)\n",
"plt.plot(trace['b1'])\n",
"plt.ylabel('b1')\n",
"\n",
"plt.subplot(1,4,3)\n",
"plt.plot(trace['a2'])\n",
"plt.ylabel('a2')\n",
"\n",
"plt.subplot(1,4,4)\n",
"plt.plot(trace['b2'])\n",
"plt.ylabel('b2')\n",
"\n",
"plt.tight_layout()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"現在の値で分布を複数サンプルして重ねて表示してみる"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"x_range = np.arange(-5, 5, 0.1)\n",
"n_funcs = 50\n",
"\n",
"a1 = pyro.param(\"a1\").item()\n",
"b1 = pyro.param(\"b1\").item()\n",
"a2 = pyro.param(\"a2\").item()\n",
"b2 = pyro.param(\"b2\").item()\n",
"\n",
"y_list = []\n",
"\n",
"for i in range(n_funcs):\n",
"\n",
" # sampling\n",
" m = normal_np(a1, # loc, mean\n",
" b1) # scale, std\n",
" # invgamma = 1/gamma\n",
" std = 1 / gamma_np(a2, # shape k = shape alpha\n",
" 1/b2) # scale theta = 1 / (rate beta)\n",
"\n",
" # generate a Gauss pdf\n",
" gauss = norm_sp(m, std)\n",
" \n",
" y = [gauss.pdf(x) for x in x_range]\n",
" y_list.append(y)\n",
" \n",
" # plot\n",
" plt.plot(x_range, y, c='k', alpha=0.1)\n",
" \n",
"plt.hist(data, bins=100, alpha=0.2, density=True)\n",
"plt.xlabel('x')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 80,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEHCAYAAAC+1b08AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOydd5QUVdqHn1tVHSaAZFfFuCoiIwii6JpzQoxrXkVhzRkTBnDBXcwKigEVc3aVZRXDsuqaA6AYQJQPAyMSJs90qnS/P2q6mZ6OM0ye+5zDka6qvn0Lu3/99huFlBKFQqFQdH609t6AQqFQKFoGJegKhULRRVCCrlAoFF0EJegKhULRRVCCrlAoFF0EJegKhULRRTByXSCEmA2MBtZKKUvSnBfAdOAIIAyMlVIuyrVuv3795FZbbdXkDSsUCkV3ZuHChWVSyv7pzuUUdOBx4D7gyQznDwe2q/8zCnig/r9Z2WqrrViwYEEeL69QKBSKOEKIXzKdy+lykVK+D1RkueRo4Enp8SnQSwixSdO3qVAoFIoNoSV86JsBKxs8Lq0/plAoFIo2pCUEXaQ5lrafgBDiHCHEAiHEgnXr1rXASysUCoUiTj4+9FyUAps3eDwQWJXuQinlLGAWwMiRI1UTGQUAlmVRWlpKNBpt760oFB2GYDDIwIED8fl8eT+nJQR9LnCREOJ5vGBotZTy9xZYV9FNKC0tpUePHmy11VZ4SVMKRfdGSkl5eTmlpaVsvfXWeT8vn7TF54D9gH5CiFJgMuCrf9EHgXl4KYvL8dIWz2ry7hXdmmg0qsRcoWiAEIK+ffvSVNd0TkGXUp6S47wELmzSqyoUjVBirlAk05zPhKoUVSgUii6CEnSFQqHoIihBVyjq0XWdnXfemWHDhjFixAg+/vjjNt+DEIIJEyYkHt9xxx3cdNNNbb6P4uJiACKRCPvuuy+O47To+qZpss8++2Dbdouu291Rgq5Q1FNQUMBXX33F4sWLmTZtGhMnTmzzPQQCAV555RXKysqa9XwpJa7rtth+Zs+ezXHHHYeu6y22JoDf7+fAAw/khRdeaNF1uztK0BWKBkgpcVyXisoqNurVC1dKjjnmGHbZZReGDBnCrFmzALjxxhuZPn164nnXX389M2bMAODpp59mt912Y+edd+bcc89NWLehUIgjjzySYcOGUVJSklbMDMPgnHPO4e677045d9ddd1FSUkJJSQn33HNP4vjPP//M4MGDueCCCxgxYgQffPABO+ywA+PHj6ekpITTTjuN+fPns+eee7Lddtvx+eefA6S9r8Y888wzHH300YnXyWfdxixevJh99tmHHXfcEU3TEEIwefJkjjnmGJ555pmc/08UTUBK2S5/dtllF6lQSCnlkiVL2nsLUkopNU2TQ4cOk9tvP0j27NlTfvzpZzJm2bKsrExKKWU4HJZDhgyRZWVl8qeffpLDhw+XUkrpOI7cZpttZFlZmVyyZIkcPXq0NE1TSinl+eefL5944gkppZQvv/yyHD9+fOL1qqqqUvZQVFQkq6ur5ZZbbimrqqrk7bffLidPniwXLFggS0pKZF1dnaytrZU77rijXLRokZRSyp9++kkKIeQnn3ySeKzruvz666+l4zhyxIgR8qyzzpKu68o5c+bIo48+WkopZXl5ecp9NdxHLBaTG2+8ceJYvus2JBKJyEGDBsnPPvtMSinlDTfcIK+88krpuq60bVv269evOf+rug3pPhvAAplBV1uisEihaDEuu+wyvvrqqxZdc+edd06yaDNRUFDA5wsWommCTz/5hHFnn8XCLxczffoM/vWvOQCsXLmSH3/8kd13352+ffvy5ZdfsmbNGoYPH07fvn157rnnWLhwIbvuuivg+aAHDBgAwE477cSVV17JNddcw+jRo9l7773T7qNnz56cccYZzJgxg4KCAgA+/PBDjj32WIqKigA47rjj+OCDDxg+fDgAW265Jbvvvntija233pqddtoJgCFDhnDggQcihGCnnXbi559/BmDGjBm8+uqrSffVt2/fxBplZWX06tUraW/5rNuQ+fPnM2LECHbbbTcAhg4dyptvvokQAl3X8fv91NbW0qNHj5z/fxS5UYKuUOD9UoX1ub+777EH5WVlvPrPl5n/3/l89NHHFBcXsd9++yVaFIwfP57HH3+c1atXc/bZZyfWOfPMM5k2bVrKa2y//fYsXLiQefPmMXHiRA455BAmTZqUdj+XXXYZI0aM4KyzzkraXybiQh8nEAgk/q5pWuKxpmnYts17773H/Pnz+eSTTygsLEy6rzgFBQUpx3Kt25hvv/028QUAsGjRIkaMGJF4HIvFCAaDWe9NkT9K0BUdinws6dbAceOC7j3+/vvvcRyHQDBA79698QWDLF26lE8//TTxnGOPPZZJkyZhWRbPPvssAAceeCBHH300l19+OQMGDKCiooLa2lq23HJLVq1aRZ8+fTj99NMpLi7m8ccfz7ifPn36cOKJJ/Loo49y9tlns88++zB27FiuvfZapJS8+uqrPPXUU82+3+rqanr37k1hYSHff/990n3F6d27N47jEI1Gmyy6Bx54IE8++SR9+/blnXfeAeCHH37glVdeSWQPlZeX079//yb1KlFkRwm6otsjpcRxJZFIhJG7jEgce3T2Yxx40EE8/NBDjBw+nEGDBiW5Nfx+P/vvvz+9evVKZIHsuOOO3HzzzRxyyCG4rovP52PmzJlsueWWfPPNN1x11VVomobP5+OBBx7Iuq8JEyZw3333ATBixAjGjh2bcF2MHz8+4W5pDocddhgPPvggQ4cOTbmvhhxyyCF8+OGHHHTQQXmv7bouy5cvp0+fPpxyyinMnTuXkpIS+vXrx3PPPZdw67z77rscccQRzb4HRRoyOddb+48KiiritHdQ1HYcGTVtadpOxj9RyzvfEMdx5LBhw+QPP/zQTjtvfRYtWiRPP/30Jj3nm2++kZdffnnO64499lj5/fffN3dr3YKmBkVV2qKiWyOlxHZlzr4ZAoHryoQve8mSJWy77bYceOCBbLfddm2x1XZh+PDh7L///k0qLCopKeGuu+7Keo1pmhxzzDEMGjRoQ7eoaIByuSi6NVJ6f7Qcpo0Q668VwnOtrFixom022c7EA74tid/v54wzzmjxdbs7ykJXdGtcKdOO3EqLACdHtolC0Z4oQVd0a1wpybdLaWO3i0LR0VCCrui2SClxZf59p+OXKT1XdFSUoCu6Lc0SZuV2UXRglKArui1NcbfEUW4XRUdGCbqi2+JIicg/JAo0cLu0wn4Uig1FCbqiW+JKCZImW+hxlIWu6IgoQVd0SzZEj4WAFpwhoVC0GErQFd0SV0oae1v8hs7YM9cXu9i2zaZ/2JhjxhwFQO+NegL1fnSZ3o/eEUbIxcfHQeuNkGvMm2++yaBBg9h222255ZZbmnWN4zgMHz6c0aNH53W8NcjnPqZPn05JSQlDhgxJaiZ39tlnM2DAAEpKSlKeU1VVxQknnMAOO+zA4MGD+eSTT1plDJ8SdEW3Q0qJ66b6z4uKivjuu++IRCIAzP/Pf9h0s81SFxCeDz2dkb8hI+RkC4+Pg9YbIdcQx3G48MILeeONN1iyZAnPPfccS5YsafI106dPZ/DgwSnrZzre0uSzx2+//ZaHH36Yzz//nMWLF/Paa6/x448/AjB27FjefPPNtGtfeumlHHbYYXz//fcsXryYwYMHt8oYPiXoim5HXIjT+c8PPfQw5s17HYAXXniek046Oe0agvRum6aOkGs8Pm7lypV5j3prqxFyufj888/Zdttt2WabbfD7/Zx88sn861//atI1paWlvP7664wfPz7peZmOZyPTyLuWuI+lS5ey++67U1hYiGEY7LvvvokhIfvssw99+vRJWbempob333+fcePGAV7bg/jgkJYew6d6uSg6HPvtt1/KsRNPPJELLriAcDictuXq2LFjGTt2LGVlZZxwwglJ5957772kx9n85yeedBJ/v3kqRx45mm+++YaxY8/iow8/SL1QeG4bPU2WzIUXXsjQoUO5+uqrE8cWLlzIY489xmeffYaUklGjRrHvvvvSu3dvli1bxmOPPcb9998PeMK7fPlyXnrpJWbNmsWuu+7Ks88+y4cffsjcuXP5xz/+wZw5c5g9ezZ9+vQhEomw6667cvzxxydNHDJNkxUrVrDVVlsljuWzLsDee+9NbW1tyr3dcccdKa10f/vtNzbffPPE44EDB/LZZ5816ZrLLruM2267LeU1Mx3PRDQa5aSTTuLJJ59kt91248YbbyQajXLTTTflvKd87qOkpITrr7+e8vJyCgoKmDdvHiNHjsy6pxUrVtC/f3/OOussFi9ezC677ML06dMpKiqipKSEL774Iq97ywcl6Ipuh0zjP48zdOhQfvnlF154/jkOO+zwjGvE/ejpaMoIuTFjxqSMj4P2HyH3wQdpvsQykCmWkO81r732GgMGDGCXXXZJ+vLNdDwb2Ube5bqnfO5j8ODBXHPNNRx88MEUFxczbNgwDCO7jNq2zaJFi7j33nsZNWoUl156KbfccgtTp05t8TF8StAVHY5sH97CwsKs5/v165fzw5+rIdfo0UdxzdVX85//vkNFeXnaa4QA6XoikK51QFNGyDUeHwftP0IumzW7bNkyHn74YQDmzZvHwIEDWblyZeKa0tJSNt1006TnZbvmo48+Yu7cucybN49oNEpNTQ2nn346m2++edrjTz/9dLp/RiD7yLtcFno+9wEwbty4hPvkuuuuY+DAgRn3E7/3gQMHMmrUKABOOOGEpIBri47hy9QovbX/qAEXijhtOeDCdd2MwyyKioqkaTtyxc+/yDvvuluatiP/M/+/8ogjjkg6nxh6YdrSdtyk9YuKihJ/v+qqq+Tmm28uJ0+eLBcuXCh32mknGQqFZF1dnRwyZIhctGiR/Omnn+SQIUOS1mh87Mwzz5QvvfRS0rk5c+bI0aNHSymlXLp0qQwEAvLdd99N2cPAgQNlJBLJe93mYFmW3HrrreWKFStkLBaTQ4cOld9++22Tr5FSynfffVceeeSROY8fcMABsrS0NOW6WbNmyZNPPllKKeWyZcvk9ttvL8vKylrsPqSUcs2aNVJKKX/55Rc5aNAgWVFRkTiX6d9xr732SgzzmDx5srzyyiullFKWlZXJHXbYIeOe1IALhSIL+aSfDxw4kIsvuSTleDgcZustt0j8mX7P3Vkt7wkTJiSyXRqOkBs1alSLjJCzbZuhQ4dy44035hwh15oYhsF9993HoYceyuDBgznxxBMZMmQIAEcccQSrVq3Kek1TaTjirjGnnHIKdXV1lJSUcM455ySNvGuJ+wA4/vjj2XHHHTnqqKOYOXMmvXv3Trz2HnvswbJlyxg4cCCPPvpoYu17772X0047jaFDh/LVV19x3XXXAS0/hk9ke0O2JiNHjpQLFixol9dWdCyWLl3aJmlp4A2Dth0XTWtmiWgD4p8dv9F6KYEbypdffsldd921QQOlOxrffvsts2fPzjkVqTNw3HHHMW3atIyTm9J9NoQQC6WUaSOxykJXdCtkloBoUxFC4MqO3QagOSPkOjr5jLjrDLTGGD4VFFV0K5o0oSgP4vnoze0J0xa0xgg5xYbTGmP4lIWu6DZ4gaP8B1rkva7qvajoIChBV3QbWkV2BbhKzxUdhLwEXQhxmBBimRBiuRDi2jTntxBCvCuE+FII8bUQouXCtopuQVv4oVvjJbIVGCkUG0JzPhM5BV0IoQMzgcOBHYFThBA7NrrsBuBFKeVw4GTg/ibvRNFtCQaDlJeXt7qot2RANI4QQAcPjCo6H1JKysvLm1xwlE9QdDdguZRyBYAQ4nngaKBhGzIJ9Kz/+0bAqibtQtGtGThwIKWlpaxbt65VX8eu72TY1ClFuZBSomuixX3ziu5NMBjMWYXamHwEfTNgZYPHpcCoRtfcBLwthLgYKAIOQqHIE5/Px9Zbb92qr+G6kp/LQxQFWj6xKxyz6Vvsp2eBv8XXViiaQj4+9HRmR+Pfl6cAj0spBwJHAE8JIVLWFkKcI4RYIIRY0NrWmELREKsVRwzpuiBqqxFGivYnH0EvBTZv8HggqS6VccCLAFLKT4Ag0K/xQlLKWVLKkVLKkf3792/ejhWKZuC0YiqKoWlEzK5TuKPovOQj6F8A2wkhthZC+PGCnnMbXfMrcCCAEGIwnqArE1zRYTAtF62VfNy6JrBd2apfGgpFPuQUdCmlDVwEvAUsxctm+U4IMUUIMab+sgnAX4UQi4HngLFShf0VHYiI7WDorRe0FIDlKLeLon3JK0IkpZwHzGt0bFKDvy8B9mzZrSkULUfMcgn4Wq+OLi7oQV/HbdSl6PqoSlFFl8dxJa6UreZyAS8wGrGUH13RvihBV3R52sIVYmgaUVO5XBTtixJ0RZenOcFK23GJNsHi9gKjrgqMKtoV1T5X0eWJ2S56HgMtpJTURC3CMQfTdnGBPoU+NirMr2BISonluOia8qMr2gdloSu6PFHLwchD0EMxm/I6EwQUBgyK/DoVYZPqiJnX6wjhpS8qFO2FEnRFl8fMw0K3HZeKkEmh38DQvI+FEIJCv0FlyKIuauV8HV0TRE27RfasUDQHJeiKLo3tuN6UohwZLpVhCyFEivBrQlDg1ymvMzFzlPcbuiCmWgAo2hEl6Iouje3mnicUNR1CMTtjDrkmBJomCMWyW9+GphGzXdVKV9FuKEFXdGksx836JnddSVkoRsDI/lEIGBo1UQs7RwqklGA5StAV7YMSdEWXJmY5aFn856btYrsSQ8/+UYi7bEK5fORCJvquKxRtjRJ0RZcmZrtZe7jURG18eWTAAAQMnZqIjZslk0UXGqalBF3RPihBV3RZpJSYjkTPEBB1XEnEsvHlsM7j6Jo3PzSSxUo3dEHEVi0AFO2DEnRFl8V2JTJLhkvMcpDkzoBpiF/XqI7YGQOfhiaIKQtd0U4oQVd0WewcwcnamE1Ab1pVp6FrmK6bMT1RCIHrypzBU4WiNVCCruiyWE5m14fluERNJ2cwNB26EMSy9HmRAlUxqmgXlKAruizZAqJRy04/LTcPfLpGbZacdAGYyo+uaAeUoCu6LNmactVFHfzNsM6hvrOiIzNWjhpqaLSinVCCruiSSOkJbrwvS0NM28V03Ga5W+JoAiJWeivd0DQVGFW0C0rQFV2SbD7slnCH+AyNcCz9OromsBw3a766QtEaKEFXdEmyDZoImy6+NJZ7UzA0DdNxM05DkoClKkYVbYwSdEWXJJMVLqUkajtZq0ebQqZsF0HutEmFoqVRgq7okmTKcIl3Q2xKMVEm/LpGbTS9H13XVCtdRdujBF3RJck01CJmO7SAlgP1RUaOm7aIyNBE1hYBCkVroARd0eXI1sMlHHM22H/emHR+dF0TmI5UvdEVbYoSdEWXI1MPF8eVG5yu2BhdE0TMVD+6EAIppaoYVbQpStAVXY5MGS6W4+acXtRUfLpGOEsbABUYVbQlStAVXY5MqYRRy8nYSre5aEJ4ln+aAKgQns9eoWgrlKAruhwxy0kbEA3HWi5dsTHpA6MakSzWu0LR0ihBV3Q50qUs2vVFQOlaAWwohiYIpfGjG7rI2O9FoWgNlKAruhSZMlwsx212d8Vc+HTPEm+c0RJ3x6je6Iq2Qgm6okuRKcMlW+fFDSWe0WJmEG6V6aJoK5SgK7oUjivTZrJEzPR+9ZYiUw90QeYgrULR0ihBV3QpLMdNeVO78fzzVvCfx/HpGmEzTYGRLoiqwKiijVCCruhSxCwHrZElnskV0pLomifcjVvmGppGVPVGV7QReQm6EOIwIcQyIcRyIcS1Ga45UQixRAjxnRDi2ZbdpkKRH+kyXCyn5fq3ZCKTH91rAaB6oyvaBiPXBUIIHZgJHAyUAl8IIeZKKZc0uGY7YCKwp5SyUggxoLU2rFBkIp7hUuBLtlNaov95PmiawHQcgj495ZzlugS01OMKRUuSz7t8N2C5lHKFlNIEngeObnTNX4GZUspKACnl2pbdpkKRm3QZLlLKVs1waYhP04ik8aOr3uiKtiIfQd8MWNngcWn9sYZsD2wvhPhICPGpEOKwltqgQpEv6UTTciSu2zL9z3ORyY8eP65QtDY5XS6kL8do/MkxgO2A/YCBwAdCiBIpZVXSQkKcA5wDsMUWWzR5swpFNtL5ym3Hba16ohTiXxqm4xJs4F4xVKaLoo3Ix0IvBTZv8HggsCrNNf+SUlpSyp+AZXgCn4SUcpaUcqSUcmT//v2bu2eFIi3RNK6ViOWgt1L/lnR4eefJ4m1oGjFbBUYVrU8+gv4FsJ0QYmshhB84GZjb6Jo5wP4AQoh+eC6YFS25UYUiFzErNdc8Yjmtmn/eGENLn48Oami0ovXJ+U6XUtrARcBbwFLgRSnld0KIKUKIMfWXvQWUCyGWAO8CV0kpy1tr0wpFY1xXYjnJFrrtuDiObJOAaBxDF4m5pUlIFRhVtD75+NCRUs4D5jU6NqnB3yVwRf0fhaLN8TJcGh1z0rcBaE2EELj1+egBY70fPV4xWhTI6yOnUDQLVSmq6BI4rkwJiMbs1u3fkgkBWI3a5hq6UL3RFa2OEnRFlyBmp2a4RCwXo4mC7roS03YImzY1EbNZrW99afzoKjCqaAvU7z9FlyBmJwdEvYIih4I0VZuZMG2HsjoTR0oE3gi52qhNr0IfhX4j71x2QxdEbSdtG19VMapoTZSgK7oEUcvBp68X9HhPlXxF2LJdyupMDE0QaPDF4EhJRdgiYjr0KQqkNP5KR7yvi+VI/Mb66+MVo8qNrmgtlMtF0elxXYnjJmezOE3IKLEdl7JQDF2IFJ+7LgSFPp2o5VIbtZq0r8Z90HVNEDHtJq2hUDQFJeiKTo/luinZLJEMg6Ib47qSipAJkHWAdNCnURO1iaUZYpEOQxOEG80Z9QKjKhdd0XooQVd0ehxXppT3R9MUGaUjZFqYjotfz36tEIKAoVFeZ+LkEdg0dI1oozmjhqZhqVa6ilZECbqi0xOzXLQGvnLHldhu7g6LjiupidgEjPw+Bt56kpqImfNarT4f3UrXMExVjCpaCSXoik5PxHKS3CWWk+qCSUco5vnEtSZ0YgwYOnUxJ2/XS7q0x3Qir1C0BErQFZ2aeL/zhvnmMdshl/vcdlxqojb+PK3zhvh0QU0kd4DU0FKLiQxdEFaBUUUroQRd0alJN9QiauWeUFQXtRCiadZ5HJ/uzQnNZaUbupYi6D5dI2KqilFF66AEXdGpsZ3kHi75TCiyHZe6mEMgRyA0G4YuqI1kt7Q1IXDqm4ZlO6ZQtBRK0BWdmsb9Wiwn1WJvTMS00bT8i47S4dc1oraDmYcvvXFfF2+fStAVLY8SdEWnpnFA1MmRQSKlpDbmYGyAdR5H1wR1sexWerrxc94xJeiKlkcJuqJTE7OS3StRK7u7xbRdHCnRW2DGqE8ThGNO1gZehqYRThMYDeX4IlAomoMSdEWnxXZcXCmTApsRM3uFaE3Uwt9CE4yEEGgaWcv5dc3zmTcUfUPTMB03rwIlhaIpKEFXdFrsRoLouBLLzVwhajuuN6auBWeMGrpGbcxJnVDUiHQ+c+VHV7Q0StAVnRazUQ/0XAIZseyUnukbii4EjpSYaQKfiWs0kZKqqAlSfOsKxYaiBF3RaYk06tdiOalDLuJIKamNOviaUUiUC58mqI1mdruk86P7dC2leZdCsaEoQVd0WqKNMlzCZuaCItNpuWBoY3z1KYyZgqNxP7qV5Ef3sl9Uoy5FS6IEXdEpcep7oMcDorkKisIxu8nj6JqCwHPpZKNhPno8B1416lK0JErQFZ2Sxv5yy5G4bvqCIteVhC0XXysKus/QqMsSHDU0keJ2EUBM+dEVLYgSdEWnxHLcpB7otuNm9J9b9emNG1IZmgtdCGzHTYy+a4xR38MlqT+6rhFSfnRFC6IEXdEpCZsOut6woChz/nnIbF13SxxD14hkKBha38NlvaD7dC/7RfnRFS2FEnRFp0NKScRMHgrdOOMljuvWX9sGgu7TBKEsAi0ESb1fhBBIyGjVKxRNRQm6otNhOTKpQjReUJTOQjcdB1duWCOufBFC4ErvNdPh0zTCZqPB0SJ19qhC0VyUoCs6HakB0cwWbl3UwdeClaG58OmCumh6gTZ0QdRO9qP7DY26LDnsCkVTUIKu6HRETDvJGs80ochxJTHbaRP/eRxDE0Qy5KSL+jmjDV0suiawXVe1AVC0CErQFZ2OUCP/eTjmpC0ostrQ3RJHCOGlI2bok65B2h7qsSytAxSKfFGCruhU2I6L48iEhe66nsWbrr95KJafu8U0Yyz+4pPE43umXMuf9xvORaeM5qUnHmLt6lVN2qNf1wjFMvjRdS3FJeMdU24XxYajBF3RqbAcScMckkwZIq4rveEXWdwtsViUWXfezAl7D+PyM4+jbM1qALb84/aM/NM+xGJRZk6bxIn7DWfSJeNydlSMo2sC03HTul0MXSPWqHWur35wtEpfVGwoRntvQKFoCo3zzWN2+oZcluMiyexu+Xn5MqZOOI//W7aE/Q4bw5EnnEbvfv0BOPa0sxPXlf68gnfmzaFXn35emmG9qOdy48RbAfTQ/WnPmbZDgd9IrCXrfetBTc+6rkKRDSXoik5F2LTxGQ0acmXwn0eyFBOF6+q4+LQx6LrOLQ89w+77HpTx9QZutQ1nXHBF4vE7r7/K/956jevvuJ9AIJjxeT5DIxRz6ZHmEqM+Xz0u6AC6phE1HYI+JeiK5pOXy0UIcZgQYpkQYrkQ4tos150ghJBCiJEtt0WFwsN1vQZc8QKiTP5zKSUhy80o6IXFxVw7bTqPznk3q5ino6a6ivf/8zqTLxmHacYyXqcLgeW4aQOg8da5jdMXq6NW3m4dhSIdOQVdCKEDM4HDgR2BU4QQO6a5rgdwCfBZS29SoYBUf3km/7npuLiumzSaDmDeP5/lv6+/CsCeBxxG3wEbN3kPx552NldOuYNP/zefSRefnVXUNS198624i6VhZouXvihVtotig8jHQt8NWC6lXCGlNIHngaPTXDcVuA2ItuD+FIoEjf3lmfznMctJsdr/+9or3H7DFfxn7lbPjW4AACAASURBVMsbbAWPPvEvTPjb7Xz6v/ncdOl4nEyVobpGnZm+A6MQqWKvqkYVG0o+PvTNgJUNHpcCoxpeIIQYDmwupXxNCHFlC+5PoUhQF7XxN+zfkmaghZSSukbpit99+QX/uPZihu26Bzfd83CL5KUfddIZOI5DZXlZxmt0ITBdrwNjwEj2jfvqUxs3Klx/LODTqI5Y9C70tWnuvKLrkI+gp3tnJUwOIYQG3A2MzbmQEOcA5wBsscUW+e1QoaB+wLPtUhTw3rJufRVooT/5LRyfTBQQntBXV1bwtyvOZeNNNmPqfY8TLChMWbu5HHPqWYm/O46DrqcGNHVNELOcFEE3NI2wbWM5bqJISquvJI1aLgV+FRxVNJ18XC6lwOYNHg8EGlZa9ABKgPeEED8DuwNz0wVGpZSzpJQjpZQj+/fv3/xdK7odjX3LpuOmdWXELCdpzNz7b79GZdk6Jt/9MD16btQqe/vuyy8YO3ofVq38OeWcoQlqswy+aDxc2rveao1tKroB+Qj6F8B2QoithRB+4GRgbvyklLJaStlPSrmVlHIr4FNgjJRyQavsWNEtqY3aSeX+MdtBa5TFIqUkZCbPGT3qpDN4Yt4HDCoZ1mp7692vP5Xl65h86fiUIGnc6m4s3OBVlNY16p8eMDRCUVVkpGgeOQVdSmkDFwFvAUuBF6WU3wkhpgghxrT2BhUKr6e5neQXT5d/bjkutuMNgl6xbAk/Lv0WgE0336pV97fp5lsx8ZYZ/LjkG555aEbKeS/vPLW039A1olZyI694j/Rohl4wCkU28iosklLOA+Y1OjYpw7X7bfi2FIr1xGwXl/XVmfFRb439557VDrZtM23iJVRXVvDs259h+Hytvsc9DziMg8ecwNMP3cO+hxzJNoPWZ/b6NG8ykVMgU3u2C6/6tbjBrw+f7gVHG9+fQpEL9Y5RdHhCMSupSCid+8K7zgswvjT7fn5c8g1/m/5ok8R87epVfLPwM379vx/5ZcWP+AMBRuy+NyP22JsBf9g05/MvnDiFLz58l7fnvsx5V623d4QQuMikcv84fk2jNmpTHFy/z3iP9JidGkxVKLKhBF3RoYmnIQZ86y3YkJnadMuyXWzXpbz0V2bPuI29DjqcfQ45Mq/XCNfV8dRDd/Py47OwLBNN09hk8y0J1dbw9r9eAqBk+K5MmHIHW2+3Q8Z1evXuy0Mvv82ATTZLOefXdOpidoqgG7pG2EzOdvGOC2oiFv17KEFX5I8SdEWHJmZ7aYjxqs94F8Wgkew/jzk2SMldN12Fz+fj0hun5ZXL/d/XX2XmLZOoWLeWQ485iRPOPIctttmWQCCI67qs+GEpCz56j+cemck5xx3MmRdO4OTxF2EY6T86G286EIA1q0oRmpaw7I36gdB2mlYFAohaNr4GjbwChme59y5M3xpYoUiHeqcoOjRRM3kaUTxdsbFYh2MumnTZacQoLpw4hf4bb5Jz7RdmP8DUCeex8Sab8cCLbzDxlhlsN7gk0XRL0zS23WEIJ4+7kCdef5+9DjqMR+6ZxqWnH01tTXXGdWPRCOccfwgzpzUKMwmI2qnBUZ+R2iM9PihD9UlXNAUl6IoOi5SS6qiV5EeOWk5Kj5Z4kDQQ8HPWxVdxxPGn5lz3yfvv4oHbbmK/w8Zw7zP/ZvDQEVmf06tPPybf/TA33vkgy75bzFXjTqSutibttYFgAcf/ZTz/e+vffPnZR4njfkMjFE3TI13TMB03JTYQ9OtUhs2k3ukKRTaUoCs6LFHLxXaTM0PqYsn56OBZvW+8/AwfvfNmXus+Ov0WZs+4lUOPPpEb7nigSYHTA488linTH2X5999x9fiTCdXVpr3upLPPZ+NNB3LftBsTvV50IeqFOzUlURNe//TkY14KY0gVGinyRAm6osNSFTGTereYtjfpp3Hq368rVzHrtsm89eqLOdd889UXePrBexj959O5Ztr0jL7wbPzpgEOZfPcsln23mGvOOTVtx8VAsIDzrprE/33/HfNefiZxXNcE0TQdGH26Tk3ETqkoDfg0KkKWKjRS5IUSdEWHxLRdIjEHv9FQ0FOF0LJdHrn7Hzi2zblXpS2NSPDjkm+466arGT5qTy6bfCtamsEY+bL3QUdww+338+2iz1N95fXsd9gYdt7tT/xe+mvimE8X1MWcFIHWNYEjZYrYG5qGKyU1UWWlK3KjslwUHZJQzEY00tvaRt0WARYv/pL5c1/i5HEXstkWW2Vcr6aqkkmXnE3PXr2ZdNdDzbLMG7P/4Ufzw3df89wj9zFk55EccvSfk84LIbjj0ReTXDqaEDiuSyxDTnpV2Eo5XuDXqQiZFAcMlfGiyIp6dyg6HK4rqY5YSePYTNtNO51o5m03U9yzF6ede2mW9Vz+cc1FrFvzO3+b/gi9+7ZcY7hxl01k2K5/4s7JV/F/y75LOR8X86VfL6J83VpgfUpiY3yGRsz2xL4hmhBoQlAZNlts34quiRJ0RYcjYjk4rkzKZomYNo2r5mOWzV6HHsUFV0+muEfPjOv9+8Wn+PR/87nw2ikM2bllpyMahsGkux6iuEdPJl0yjnAolHJNRdlaLj5tDE/efyfguVdMx8VKU/Gqa4JQGrEP+rwvgcZir1A0RAm6okMhpaQybCZVhkopqY3Z+Br1Gzdtl8OOO5nDjz8l43prVpXy4G1/Y8Qeeyf1L29J+vYfwKS7HmLVrz8z686pKef79BvA6D+fzmsvPU3pLz8B3sSixlktUG+9x+yUVEUhBIYuKK+LqbmjiowoQVd0KEIxm5jtNmqV62I7blJ2y4fvzueJh+8HJ3PhjZSSO26cgERy1dS7WnUK0LBd9+CEM85hzrOPsfCT91PO/+X8K/D5fMyefgsQb52bGhyN7zFspgZBA4ZO2HSpVQFSRQaUoCs6DK4rKQ+ZBH3Jb8twzE7ynTuOw+1Tb+C1F5/ESDMlKM4brzzHFx+9x7kTbmSTga0/IWvcZdey+VZ/5LbrryBcV5d0rm//AZxw5rm8M28OPy75pj44KjHTzCP1GxrVkfQ90YsCOuvqzIwNyhTdGyXoig5DTdTCcSVGg3RC15XUxZKzW+bNeZkVP3zPmRddkzFbpXztGmbeMplhI/fg6FPGtvbWAQgWFHLNP6az9vdSHrj9bynnTx53IRtvujm//rQc8NwrNZE0fdI1Ddt1CaWx0jUh8OmCdbVR5XpRpKAEXdEhsB2XypCZMkszajlIGvRCt20evPtWthm0IwccflTG9R68YwpmNMqVU+/coHzzplIyYldOPOt8/v3Ck3z56YdJ54p79OSZtz/lwCOPBernjabJagEIGgZV4fRWesDQidoO1RHlelEkowRd0SGoqc/saNynpTpiJVnnr73yAr/+vILTLrgyo7vl6wWf8p+5L3PSuAvYfOs/tt6mM3DWxVexycAtuOtv16RUkRqGgeu6LP7iE++xLtI24NI1b3RdXYay/0K/QXldLG3VqaL7ogRd0e5ELSejdR5rlHu+xVbbcMQJp7HvQYenXcu2be6Zci0bbzqQ07PkprcmwYJCLpt8Kyt/Ws7zj8xMOT/vn89y6V+O4dtFXySmGTUcQxcnYOhUR1IzXsD74gv6dFZXR7HSPFfRPVGCrmhXHFeypiZKwKelZKFURyx8jZLPS0bsxkWTbs9YMTnn2dms+GEpF02cSrCgsNX2nYtRex/A/oeP4akH76H05xVJ5w488lh69enLY/fd5rXJ1SCcZuZoLivd0DWEgHW1UdXrRQEoQVe0MxWhGK4rUzsoWg4R08Ff3zrXMk3uv3Maq37/PXUuZ3ytsrU8NuM2dt1rf/bKYMG3JRdNvBm/38/dU65JCmAWFBZx6l8vYeHH77P4i0/w617RUDpLPOjTqQpbGa3woE8narmUh1IbhCm6H0rQFe1GXdTyhiEHUjNVaiI2hr5euOe8+CwP3H0rixcvxqenF/RH7plGLBblkuv/3qo55/nSd8DGjL/8OhZ+/D7vvP5q0rmjTzmTPv0H8MTMOxJtciNW+qwWXRNUhjKX/Rf6daojFlWqNUC3Rwm6ol0wbZd1tbG0k+1N2yVi2YnBFpZp8vC9d1AyfCTD99gvJXAKXifFN/75HMedPr5dAqGZGHPymWw/ZBj333pTUu/0QLCAU8ZfxKqVv1BVWY7f0KiJOGmt9IChEzJtwhlcL0IIigMG5XUmdaroqFujBF3R5tiOy+rqKIaupXWf1EStpONzXnyW338r5fTzJyQ17IojpeTef9zARr37cMYFV7Tq3puKrutcPvkWKsrW8vi9tyedO/qUsTz1xsf06t0XXXj+8nQVouC5VspDVsbpRUIICvw6a2qiREyV+dJdUYKuaFNcV7K2NoorZVKv8zhRy6GuQZvcuHW+0/CRlIzaO+0XwHtvzuXrBZ8y/rKJWZt0tReDh45g9J9P559PP8KKZUsSx/3+AD6/n1gsytrff0sUGqUTbUPTvJF8WdwquiYI+nVWVUdUOmM3RQm6os2QUlIeihG13JQUxfj5ypBJwFif8VJXV8uwXXbj9AsmJM0WjROLRnjw9qn8cYchHJ5jlmh7Mv7y6yjusRF3T7k2KUAqpeTiU8dwy8RLEr70TK6VoE+nJmoTSZMRE8fQNIKGxqoqJerdESXoijZBSklFyKQ6YlOUJggKUBu1iDlOUkpi7z59+fuMh9lp1L4pmTAALzz2AGtWreSiiVPRs/R1aW826t2HcyZczzcLP+OtOetH5QkhOHjM8Sz69EMWf/EJAUOjOmqnzUsXQhDwaayrjWXNPTd0jYCh8XtVRLXb7WYoQVe0OnExrwxbFAfSi67luFSGLQp868X+kw/eY/mypdRGkzNe4qxdvYpnZ81g30OPYvioPVtt/y3FEcefyo7DduHB2/9GTVVl4viYk86gT/8BPH7f7fXDLNLnpYNngWta7ja6hq7hMzRWVSpLvTuhBF3Rqnj9zS2qIp6YZ0onrAp7gdB4Botlmky+8iImX3WJl4+exjqfdcdUHMflvByzRDsKmqZx+U23UVNVySP3TEscj2e8fPnZR3z1+cf4dc+Xnm6GKuTfy8UXF3Xlfuk2KEFXtBrrLXOTIn9mMa+NmtTFrCQf+asvPM3vv5VyxgUT0NIEQr9Z9DnzX3uFk8dd0CatcVuK7QaXcOzp4/j3C0+y9OtFieNxK/39t19LDLOoilgZrfBCn0FV2CKUI03RV+9+WVUVUdkv3QDRXi04R44cKRcsWNAur61ofVxXsq4uRl3MoshvZBTzmO2wuipK0K8nrHMzFuOIvUaw8SabcsvjcyjwJX8ZuK7LeX8+jIqytTz1xkcUFBa1yT21FKG6Ws44fE/69t+YB156M+H7X7t6Ff033mT9kAvLoW+hj8KAL+06jiuJWQ4bbxRMm87ZENt1iZoOG/cMUhxMv56icyCEWCilTDtLUVnoihbHcSWrayKEYjbFAV9GMXdcybraGH5DSyoWeuX5p1jz+2+cdsGV+PTUHi9vvPIcP3y3mHOvvKHTiTlAUXEPLpw4hR+WfM2cZ2Ynjg/4w6YIIaitrkJKScDQqMqQxghemqLfyB0kBc/3XuA3WFMTUxWlXRgl6IoWxbRdfquMYNkyYzYLrHfHSClTGm2FQyF233t/SnbdMyWzpaaqkll3/p2ddhnFQaOPb5V7aAv2P/xodtv7AB65Zxprf/8tcfzbRV/w5/125svPPkQXAill1upPQ9fQBKyriaXNjGmIrgkKAzpldTE1m7SLogRd0WJETIfSyjBCQDBNnnlDqiMWdTGboC9V9MeedwlTHng27blHp99CbU0Vl02a1iH6tTQXIQSXT74FKV3u/tv65l3bDdmJ4p69mD391oSVXhO1iWUJavoNHRfv104maz6OVt8moDJssqY2mvN6RedCCbpig5FSUhU2WVUVIeDT0laANqQmsj5Q2pBwOMTH/3uHkGliSzelKnTZt4uZ+/wTHHvqWfxx0JAWv4+2ZpOBW3LWxdfwyXv/4X9v/RuAQCDIGedfwbdffsHnH7zj5Z4bGuUhM6sFHjD0ehdWbpEWQtAj6CMSc/i9OqL6qXch8hJ0IcRhQohlQojlQohr05y/QgixRAjxtRDiv0KILVt+q4qOSLyfeVmdSWFAT5oHmo5Q1KIiZFGYJlD6/OOPcO5px7Fw0VcEG1WFuq7LPVOvpVfffoy9+OoWv4/24vgz/sr2Q4Yx/ebrqK2uAuDw405mk4Fb8Og9tyClRNcEAnKmKQZ8Opbj5iXqAIUBA1dKflO56l2GnIIuhNCBmcDhwI7AKUKIHRtd9iUwUko5FHgZuK2lN6roeEQtz8USs1x6BI20XRAbEjFt1tXFCPr0lGtra6qZff897Lb3AQwaMjTl/OsvPc3SxYs4/6rJ9Oi5UYvfS3thGAZXTb2T6soK7pvm5dP7/H7OvPBKfljydSK10W9ohEybUIa2AHGCPqO+k2V+oh4wdHy64LfKMDURFSzt7ORjoe8GLJdSrpBSmsDzwNENL5BSviulDNc//BQY2LLbVHQkpJRUhUx+qwwnGkLlIhyzWFMTJegz0jbYeurh+6muquT0C69OKSIqW7OaB++Yys67/YmDx5zQYvfRUdhux5049a8X89acF/jonTcBOOio45k99z12HLZL4rqgT6cybGUsOIpT4DewHcnammjOQCl4gdXCgMHa2piaftTJyUfQNwNWNnhcWn8sE+OANzZkU4qOi+W4/F4doTxkUhQw0vZXaUwoarGuzswo5lWVFTz58Ez2PPhISobtnHJ+xs3XYZkmV065s1MHQrNx5gUT+OOgHblj0pVUV1ZgGAbbbD8YgEg4BIAuBH49tz8dPPeLIyVramKYdm5R1+r96rVRm1XVkbyeo+h45CPo6T5Bab/ChRCnAyOB2zOcP0cIsUAIsWDdunX571LR7kgpqY1arKwIYzmS4mDmYqGG1EZN1tWZBAw94+i4//thGQVFPTjroqtSXC3vv/067//ndcZedCUDt9qmRe6lI+Lz+5l4633UVlcxferExPEnZt7JuKP3xzS9EXO6JpASKsJmzrRDr/LWi3Hk6yMvqverl1aG1bCMTkg+gl4KbN7g8UBgVeOLhBAHAdcDY6SUaQccSilnSSlHSilH9u/fvzn7VbQDtuOypiZa7zLRc1YlwvpWuGV1JgX+zGIOsE3JCB5741O2HTQ46XhtTTX3TL2WbQeXcOLY8zb4Pjo62+4whDMuuIJ35s3h3Tf+BcCOw3Zh1cpfmPv8E4nrAoaGabvU5AiSgpfSaGiCNdXRnG0C1q/v/T9eXROlvC6mXDCdiHwE/QtgOyHE1kIIP3AyMLfhBUKI4cBDeGK+tuW3qWgPGlrlMdulR9CXVZjjuK6krM6kOuKV/WcLlv53/ttU1kXoURhMOXff32+gqryMq2++G8PXPcrVT/3rJQweOpw7Jl3J76W/sute+7HLn/bhyfvvpq62JnFd0NCojlrU5hHINHSNgE9nXZ1JdR6WPXi/BIoDBtURi1XVqg1vZyGnoEspbeAi4C1gKfCilPI7IcQUIcSY+stuB4qBl4QQXwkh5mZYTtFJsOqt8rW1MQJ5WuXgVYp6Y9C8vufZ3DKLv/qSy8aeyGvPPJxy7r03/81b/3qR08+7jO2HDG32fbQWrpQ4UuK49X/qH28ohmFw450PgpRMnXAetmVx7oQbqamq4PlH7ktcJ4SgsD5IWhfLLeq6Jij0e9fnU4AUf42igIGU8FtFhJpIfl8GivZDNedSJCGlpDpiUREyvQyWPIUcvEyWdXUmhibwp5ku1BDTdhh/8jH83/ff8ex/PksaHVe2ZjVnj9mPTbfYkvuefa3NrXNXSiQgXXCkxG30GRH1Pct1IdZHmCS40muC5T2U+DQNQxPNCuS+M28OU644l1P/ejHnTLiBm688ny8++h8vvruQQLAgaa9Ry6VvUeYmXo2JWjZCCPr3CKSdApUOV0pCMYdCv0b/HsG8guGK1iFbc67MzTYU3Y6o5VBWFyNmOxTmcJU0xHW9L4HqiEXQl91fDmDZLm+99TZffvoBF103NUnMXdfl1usuxTSjXH/b/Rsk5o6USBdcPFHO13bRNYFe38K2QNfw6d5QCQ2Bpoms9yelxHYkjnQJxRwi9cFIv6F5XwB5csARx7Dwk/d59uF7GT5qL867ajLnXy2SxBy87JSAz8t8EQIK/Ln/vYI+A8t2WV0VpU+xL2sDtYav0yNoELUcVlaE6d8jQHGOX2CKtkdZ6AocV1IZilEdsfEbuUv3GxKzHcprTSzXTWlzmw7bcVldFeL8Ew4mFgnzxLwP8fsDifMvPfEQM6dN4vKbbuPok89s0n24UmI5nutD4AmzT9Pw6QJdB11oeEb1esta4D0WYr3l3ZIi5biSqGVTE/W6JgYadZbMRjQS5rwTD6Ni7Voe+udbbDJwSy+uUV1Fz169k19HSmKWS58iH0V5WuqulEQshyK/QZ8if17xkfg9hU2b4oBB3+KAstbbGNU+V5GWhkHPuphNUUDPW8w914zJ6qooQNpS/sbYjkt5nUn5ujVoQnDBNX9LEvNvFn3Og7dPYc8DDmXMSWfkfR+ewDheOmVAZ0CPAJtsVMAmGxXQr0eAjQr9FAf8FPgNgj6DgE8nYHh//IaOz9AwdM0rsW9hi1PXBEUBHxv3CLJRgVfFmW+Od7CgkJvvewJXutxw4Vgi4RBTrjiHieednuLL1ust9YpQfj518KzuIr9B1LK9qUZ5DsDQNS9nPWa7rKwIK996B0JZ6N2UhHvFcnOmFaZ7bmXIJOY4FPjyc81YtktZyMtm9esajuOgaet7nVeUreWc4w7GHwzy0Mtv51XeH7dKA4ZGzwIDv66nnW7UkbAdl6qwSdhyKfDlZ61//sG7XHvuqexzyGh23Ws/br/hCq6/fSYHH5VaNRv3qfcqMCgO5nalJPblusQsl55Bg40K87fWXSkJxxwCPq1JPnlF81EWuiJBPAvlt8oIAMXB9NWb6XBcr6vi6uoIUkKR35eXIJm2w7q6GAL48K251NZUo+vr3TO2bTPlinOpralmyozZeYm5abtYtkvvIoP+PQIEfUaHF3PwUgj7FgfoXej5o/PJNtlt7/356xXX896bcylbu5rthwzjodunEg6FUq7VhKDAp1EZsakKm3nnkBuaRqFfpy5m83t1/ta6JgTFQS8TprQiTEXIVC152xEl6N0Ex/UGSpRWhIlaDsXB/Mr2wXOvhKIWq6oiVEe8Tom+PF0zMcthXW0MQxOsWPoNUyecxwuPzky65qHbp/DV5x9zxU23se0O2dviSum5V3y68MapBfydLjDnta/1M6BnEMtxsZ3cAnjyuAs5eMwJPDbjNnbda3/K1q7mmYfuybh+kV8nZDqUhXIPvmj4vAK/gS5Eoqgo3+f6DY2igEF12GRlRZjaaOZ5qIrWQwl6F8ett6p/LQ9RHfZa3DYlFTFmO14+el0MQxd5+crj1MVM1tXFPPGXLtOnTqRX336cPP6ixDWvPjObl554iONOH8ehx5yYdT1HSiKWy0YFXjCu8aSjzkbA0BnQI4gjJWYO4RRCcPXNd7PLn/bhuUfuZfjue/HeW/9OtARIR4FP95p01caaVBhk6J44h02b36uj1OUpzkIICgMGfkNjTU2M36pUW962pnN/IhQZcV0v4Plr/c/goF+nsAlpZrbjUlEXY3W114a1OODL2eu84WtXhmJUhCwC9el6/3rucZYsXsj5V9+USFP86J03uffv17PnAYdy4cSpWdd0pMSsz7fuWdD5rPJM+AyNAT0CaIicou7z+5k64zG2HTSEJV8tYMKUO5KCyukIGF4u/LqaWN7B0jhBn/crrqzOZHV1/v1gvKBpfUFSZYTV1VHV7KuNUEHRLobrSkKmTXmdiSNdCjJ0OMyE43ozLKsiFprwrMimiKdlu1SGTUzHJWh4Qc81q0oZO3ofdtplFLfOehYhBN9/8yWX/uVYttp2EPc8+UrWYc9xMe/fI0CgCb8uOhO243r+ZylT2gc3pqJsLRedMpqa6iqmPfA0hs9g8NARWZ/TMEVxowJfk3/dWLaL6Xh975v6/Kjl4DiSngVewFWlOW4YKijaDXBdSU3E5NeKMGtro/gNjeJAfr1X4s+vjXpj5KrqC4SCvqYVjoRiFqtro7hSJuWkC01j1z334/LJtyKEYPn333H1+FPo3bcf0x58qtuLOXhujj5FfnSR21Lv028Adz72MsU9enL52OO4/MzjKVuzOutz4imKpu16LpgmukJ8hhc0DZsOv1VFqA7nH/wM+nQKAzp1MSfxizFf37yiaSgLvZNjOy51MZuqsIUrZV6Vmg3xLHqLqrCNK2XWNrfZ9lAVtghbtvf6Wb4EVixbwmVnHk8gGGT6U6+y6eZbZby2u4h5Q2zHpazOBGROS3b1byu56NTRlK1ZzbBd9+CeJ1/N6ws4nu5ZHNDpWZB/imIcLzXSQROCXoWGl+2U5xqy/rmuhF6FfnoGjU4fC2lrlIXeBYnZDmW1UX6tCFMZMgn4vEBWU1IQa6Mmv1V5wyp8ukahv2nuGSklofpJRKbjUlSfIRGnbM1qJl86nnVrfgfgpx+/54qzTsAfCHD3E69kFXO3XnT6Fvu6jZiDZ6n3K/YjIWf2yx8225yZz71Oj416sfiLT3jg1pvyeg29PrUxYnkB73COsXaN0YQXHPfVD9tYVR2hLmrllSIZz6Qp9OvUREx+qQhTVqt87C2FEvROhJeyZ/NbZZjfKiOETIfC+mBnvuXktuNSHfZcKxUhC5+uUeTP3zUTJ55bXhG28BkagUZpjK7rcsvES/j0f/MJh+r47qsFXPqXY9F1g3ueeIWBW26d9T6j9WXs+fQm6WoYuka/okCim2M2Nt50II+8+g7BgkJefPxBnnv4vqzXxxFCEDB0DF1QFjIpq41iNVFUdU0k3jvNFfYiv+eKWVkRatIg1ka3QgAAIABJREFUDkV6lKB3AkzbpSpk8kt5mN+rorjSmywTzKN3SsM1Kuq8VLLqiIXfaLpFDvXulVCMtbXe4IPCDC6Wfz45iwUf/48Lr51C6c//xxVjT6DHRhsx/el/ZZ08JKUkbDn0KjDy7knSFfEZnqVuOm4eor4ZD7z0Jj169uKhO6fy2L2347r5ibNe71u3XG+yUU2k6YVBXlGSkRD236oi1EbzW8cTdp3ioI+o5fnnSyvDhGK2GqzRDFS3xQ6K19TJoTpiErVcNOFNn2mqSyRmuVRHrYTPM58GWpn2E45ZVEdtNEEigyUdy7//jll3/p09DzgU13W48aKzGFQyjGkPPk2vPv2yvk7Ectko6KNHgb/Je+xq+A2d/j0CrKuJ4fdl79a49baDePWjb7lj0pU8MfMOflzyNRNvvS+vqlvw2jFITVIbtamN2vQsaJpvHDxhN/xafRGbRWXIomeBL+/Zs/H6CNtxWV0dRdcEPQt8FNfntityo4KiHQjXlcRsl9qYRShq4yLx6/k3zIpjOy4h0/tg2q7Er2l5V3Y2xnElEcuiJuLUB01z9x+57vy/8P03XzJ8973472uvssd+BzPproeyZrMARCyHAp9On6Kuk2feEsQsh7W1UQI5As4A4bo6LjvjWJZ//y1/GLgFU2bMzll92xhXeu9DTQg2KjC8fj3NaKvgSolpO7guFAUNigMGgSyGQLrnRy0HKb18+l6F/iYH/bsiKijagXFdScT0Apy/VIRZVR0hYjrez9CAL28xd11J1HRYW1+hVx22MDSNoiaU6TckHjRdUxOlKmx7vcF9el6++rEXX0VRj57897VXOeOCK7h55hM5xTxmOwQMjd6FSswbE/Dp9C3yE7PclGEb6YhGIxQWFRMJhTj/xMN56fEH83bBAIlfcoYuqAibrK6JUhfLvy9Mw3WCPoMCv07UclhdE+X3Kq/yNB93TDz4WhQwkMDqmgi/lodYWxslYjqqtUAalIXeDjiuJGY71EZtQjEbCRiaaJL1AvUuFdslanlrOVLiy2NaUDYs2yVS378baFL/7o/ffZvK8nXcX59tcf1tM/nT/ofkfJ7puOhC0Lc40O2tr2yEYhYVIYtgji6Nv65Yznl/PpRNt9iK/gP+wCf/m8/Ou/2Ja6fN4A+bbZ7xeZlwpMSst9h7BHQK/M1PNbQdN5FnXxRoutUef8/brkzspzjoa/JnpzOTzUJXgt4GyPpeHbF64Y3aLgIwdIFfb/obMWY7CRG3XYkuBP4mCG/a/dkutVGLiOWgaxp+vWm9wd+e+zL/uPpCAEpG7MZ1t96bNS0xTlzM+xT5VT5yHtTFTCpDdk5R/2D+PG686CwOP+4USkbsyn3/uBGAsy+5mmNPH49hND185ta/T1yguD67qrntcuOfCdtxMXSNHgGDAn/TfOXx/TiuRAhBcWD9r9qubBgoQW8HLMcbZBAybcIxB0dKNLzshaaWPsetkpjlUBuzsR2JpoFf3zB/ou141nhdzMF2Peu+qXtzHIcn7rudJx+4BwSMv3Qip/z1InQ99wfdclwk0L8LNNpqS/IV9Uen38Lc55/kkTn/xbYspk+dyKf/m8822w/mssm3MnSXUc16fSklluuN2gsYGsUBnUATW0w0xHElpuP5yv26RlFQJ2g0T9xtR9aP4tPrrf+mx6A6OkrQWxlZP/rMclzCpk3YXN/n2tA9kWyq9ey4XkApYjqETC8gKcSGi7jjSizHs+5jlosQ3pdMU+Zdxln69SJuu/4KfvpxKT6/n2kPPsPIP+2T13Mtx8WVMKBH/mIef692l5/W2chH1KWUlK1dTf+NN0k8/nD+G9z7jxtY+/tv7HPwkYy7fCJbbrNds/fhuJKY46DhtewtCBjN+tUZx3a9PvcS8Gn14u7Tm7Rmw88jxPPlvV8Ufl3r9MaDEvQWxhNFF9N2CJtufSmz9++oa81zf7huvVvGdgjHHGKOC7L5XwiN17bqM18ippP4sBh689b8efkyZs+4jffffg3dMAgEgjzw4hts+cft83p+3Iear2Vuu+vHtmlCJP6tpaTTZj24UiaCjM0VmFDMojJs5RxALaVk9oz/b+/Mw+Sq6rz/OffW3tV7d9LZCAkkISELZAEDouxrZFFZFZ1HGIdnZDTzIvPo+OqLwzwq4usLg4iKiKBiQEQJqMMOggYmbAmSnaydrfettrud9497b3V1J91dS3cKm/N5nkp3p6rOPbfq3u/5nd/5/X7nNmYfv5DTzr6QVDLBb37+Y3790x+QyaS54ONX8anPfzEvF9lwxzAdNxFK1wTxkE44qJe0nmM5jjuLk34tGj1bi7/QgnNmTjx/0CsPHAlqf5cCrwS9BBxHYjruVC5lWKRM/yJz/XZB3d2EuFCLxBdw0+4fFADXYtZKv8h8S7wvbZP2amEHNEGghH0zd27bzEP33sWzT/yWcCTKFf9wA8tPPweE4LgFJ+TVhmE7aAjq4yP7zJ2czSyqowFiXlailBJHQsqw6Ey6tboLSbIqF5bjZHMKdE0Q0LSsLxnc/yvUJ502Ldr6DEL60CKXyaRZee2lbNu0gW/ecS+nnHkeAF0dbfziR3ew+tcPYDs2Z154KddcfyMz58wr6Txt6Qqo43jiGdIIB3WCJVjujhwoyiFdIxb29oXVtYLCKgcLvK4JYiF3sTeouxuLv593v1KCnieW7a6eW44r3mmzf0Xe30U+oIu864If0rbtRrckDXtART3/ZixFkKR3wRu2TTLjkLG9hdcSRVxKybq1a1h13928+tKzhCNRzv7YJ2ic2MRnv/DlgtpNmzZBr6rgSGJuebOVuooQlcPsjWl7dd+7kibRUH5hlUca25GkLYuAplEbDRINDYzrth2JaTn0pE0ShkUkoBc0oLt1fTLow6yBdHd28G//eDXbNv2Nr333bs688NLsc60H9/Obn/+Y1Q8/QDqZZPHy07jsms+x/Ixzi1o8zcUXdyn7XR/hoF6yaFq2g+m47YJX0TGkEdQLF3h/sLBsicS918MBzdtUXCOgFWe0jRVK0AdhOxLLcUfojOmQtuwBMb4C0EoVb89CThmuiDtSZi/qgCZGZZpn2e5sIW3apLz+C1yrqFQ3RG93F089/ghPPvJLdm7bTE1dPZd96jqWnPIRvvmvnyeVTPCz1S8yoWnyiG356fyxoE5txcihif5sxd0rND+LtTdt0N73/hN1y1scr4sH88q8TBs27QkDy3EKyur169CbtjPkZ5bo6+Ur//Qp3n1rLTff+n0u+MTVA57v6epk9aoHWP3wg7Ts38uESVM4/7IrOfeSK4atvZMvjpRZg8kXzVhIJ6S7Me+lGB22N+P1Z84hXSMa0t0NPnStYKPGv4dz4+XDAY1I0B2QAt7gWQ533wdS0P0v2f9SDMsVbj/MyUcTrnDrmijK7+2273jtuz8dRyIFaAICQkPXC2/7cOdj2dKbttukrYFTxkAR/R+MYWR47c/P8dyTv+OvLzyNkUkzd+GJrLjiWs5e8XE2vfM23/jidWi6xvfue5hj5oycgWh72X7VkSBV0ZF3oU8ZFqGARkMRkS/vN1E3LLdMbCEDE3i17dMmnQnD3eOzwE28E4ZNdIjF0lQywS0r/5HzL7uSMy645LDtWJbFmhefZvWvH+D1v76ElJL5i0/irIsu4yPnrqC+cULe5zIU7v1J1srWNUEkqLkJTd76TikWsWU7A4qbucXItKzfXC/C6rY816vtyOzAoQlBOKgR8aJpfCNwLIV+3Ap6rmj7YUsZy7VaTVsOyCTTNZF9FBNxYjlO1u9tWK7V7Vsa4A0MmkAbBWGF/gvSsGzP9dN/PtlzGYXjJBMJ1r7yAq889yfWvPgMfT3d1NTVc8YFl3DhJz/FrLnzAXh81QPceetXmXLUDL59zy+GLbDVfw4Sw3GoiwXzKrSVNCyiQZ2GeLjo6Xhv2qCtz6CigL1Px4KMZSMQNFaGiw6bS6RNWhNGQaUbpJT0ZUy6kxZB/fAL374YAbz25+c4/sRl2W0BB9NyYB/PrH6UZ1Y/ys5tmxFCsHDJhzj1rPNZfvo5TJtxTFHnNhjHv5c9t4euuVZ2JCQI6nrJIjlYK8AV+aAm3Cgab6E14N1bhZQnsD2j0bYlviBoXm5IOKC5Qq/1t1+qf37cCXpPyqQ7ZWbDknJHS00jK3aF3NC+aEsHTMfGtCSGF/qUm26tCbdtzfviS8W3vB3pxuKmTXcwchz34vAXSTUxOuF6Ukp2bN3E2lde5PW/vMjba9dgGhmqqmtZfsa5nHnRpSxZ/pFDfKd/fvoPPPPEo3zl2/9FRbxyxGOkLYeQ7qby5yNGCcOkIhSkviJU8gXflTToShlUlKn0rmHZgGBiVenx9RnLprXX3Qi6kAVTw7LpTJiYjjNkIbWujjauOmspjRMn87+/dw9z5i8ats2d2zbz4n8/wUtPPcGOrZsAmDp9Jss+fDqLl5/GCSedmncxsJEYaMF7AQiaRigg3Jo2WumWsJQya8Xnztp9oQ8F3OMFNd11wRYgxoM9BL6ECG9B3F8bKoZxJ+itvWmShp33NNaPirC90dlf5TZt6S2uuNavvyAiRL9wl7pY6eN4X6wjZXbAMO2Bu70Lz0WjaYyay8CyLHZs2cg7b7zG22vXsP71NXR1tANw9LFzWHbq6Zx61vnMX3zSISL+2svP07KvmY9d+RlgoGU3FLZXYKwqEqAyMrLPWHqRLJWRwKgV5ZLSLQVr2rIgV8do4Ptem6ojo7Z3pmU7tPZmsByHSDD/RUrH8az1lOlFYx3an3Vr13DrTTfQ0d7Ktf+0kk/fsJJgaORKl/ubd/PqS8+y5sVnWP/6GtKpFJqmcezcBSxcejILl3yI+YuXUddQunvGJ1d8pZTgzYqDmkY4KAjprqtNL9EK9sXYP553KMC9L4O6m0kdDLiDiqYVphVp0yYeDlAfH36D76EYl4KeMm3CAT374TuyP7bXdBxs24uLtSWWHOh+AXeU1BAIjYKt+aGwHff4Dv700cnWnbAcCV4XNO+Y2ii5TXwcx6F553a2bljPlg3vsGn9W2x+923SqRQAEydP44RlyznhpFNYcupHh1zQ7Opo40e338p//24Vs+Yt4Ee/eWrEzE+/Ql9I16iOBfOyJqWUJAyb6kiA2lGusGjZDgd60uhidBag8zqmt5bSVB0pOiV+KGxH0t6XIWXaxEKFRZ4Ylk1X0iRtOUQOU4a3t7uLH3zr6zz1+CMct+AE7l71x7wyfbPtGxk2vP0Gb776MuvWvsrG9W9iZNKAuwHH3IWLOW7BCcyat4BZcxdQVVNbUP+Hw73nwZL9ES9+bSS/PlJQL1x0hz+eK/aO9xD0t+fPHHzB14WWdcO67l7IWI4S9Fx2tvXR0pNB14U7VfJNa49cC1uI0XGNOE7/Fyilay1YnpWfnVrJfp+6Hynj9mH0LG5whbBl/152vbeVXdu3sGPrJnZs2ciOrZuy4h0MhTn2uHnMO2Ep8xYt4fgTlo5YmMlPOFl1392k0ymuuf5GPvOFmwiFhr7w/DhqR0J1ATW0XTG3qImGqImNvFhaDGnT5mB3msgRWCR1pBvq2lQVJRIam1mBlJKOhEFP2qIiVFjcvfT61522sBzH3Tt20Ptfee5P7Ny6mU/fsBJwtxBsmNhUcD8NI8OWv61nw7o32Lj+DTase4uD+/Zkn58waQozZ89lxuzjmDFrLtNnzmLajGOJVQxfkbMQbCmRDlnhzcV11Xjhwrr7tyb6RbeUa9GfPdg5WpErT0IITNtmSnWU6Q3xoo4x7gR90/5uOpMmFQVsvXY4fFeM/wUg/dAqNynC8OJnB4u1T66VrzG6KemWadJyYC/7m3ezf88u9u3ZRfOuHezdtZ29u3dkhRuguraeY+bMZcbsuRw753hmz1/I9JmzCQQL89G9t/ldrr/0LD589gVc/6//PmxKuCvkrrVSFQ0QK6ACn5swZFEbC1ETG9uNLPxF0vgY7n7kD04N8RCVkbE9HyklPSmTjoRR0NaDPo4jSXr17W3pEB6ilMSbr77MzddfxdkXfZwrPndDXhFNw9HV2c62DX9jy4b1bN+8ge1bNrJ7xzYss38/08amyUw7eiZTps9k6vSZTJ42nUnTpjNp6lEjrtsUgn+vD7XFn55jzQd1d10uoLnrEBoi6wcv9n7vSRs0xsPMmnj4heiRGJeC3pU0iecsKjiO6wOX/shIv2A70hXo3AWK3NVuGOgf1jyrWhcCxOiLdSqZoLO9lbaWg7S3HKDt4H5aDx6g9eA+Wvfv48C+ZtpbDgyM0gkEmDx1OlOmz2Dq0TOZNuNYps+cxfRjZlFT11Bw/6SUbN3wDn949FekUym++p3/AqB5145hY479UqoAlWG3VnUhLg1/J6b6eHDMxc+ntTdDyrCIFuiqyJeEYVIdCVFbceR2WepLm7T1ZbyY6MJdSo4j3cJsaRvDtgnoGsEckWpvbeGhn9zJH377EOlkkqWnfJQVV1zLh886v2BDYSgs06R513Z2b9/Gru1b2L19G827trN35w56ujsHvDZeVc3EyVNpmjyVxqYpTJg0mcamSTQ0NlE/oYmGCU3E4sVZvIPJWtaSrPt0AJ7J3R8gQTY6xnWneiGjguwAoIl+v74S9EG8uaudfV0ZYiF9yFHWq/aByPlABeR80KMj0pZl0dfbTV93N91dHfR2d9HT1Ul3ZzvdnR10dbTT1dlOV3sbHe2tdLa1kkomDmknFI4wocm9SCdMci/ciVOmMmnKUUyaNp3GpskF+TWHYs+O93j+j7/n2ScfY8+ObQRDYc675HJu+o/vDfl59FfXc0udxsM60WDhNbH9JJvGyhCxI7hfqO1IDnSn3aSrUa68l/GyXydUhY94mGTatGnpSXv1g0orY5vIuEXlJJKQpmfDHXu7u1j98IP87lc/wzINHn1pHYFgkB1bNzFp6lFEorHRPKUsPV2d7uy0eRf7m3dzcF8zB/bu4eC+ZloP7qevp/uQ90RiMerqG6lrmEBtQyM1tfXU1DdQU1tPdW0d1bX1VNXUZh+xinjJ2dkOZGf2kv7BYCh0TZBIW8xoiLHoqLqijluyoAshzgfuBHTgp1LK7wx6Pgw8CCwB2oErpZQ7h2uzFEFfs62Fgz0GVbGgG5VCYeJsGgbpdIp0Kkk6mSSdSpJKJvofiQTJRB+JRC+pRIJEXy/Jvl76entI9PWS6O2hr7eHvp5ukom+IY+j6TrVNbXU1DVQW99ATV0DdY0TqPUuuoYJTdRPmEh940SqampHXRBs22b39q1sXP8mp593MbF4nAd/+H3uv+u7LFq2nLNXfJyPnLvisItU2aw+W6IJtxxpRQmV9DKWWx61kCQbv2wwUHB88OGOf6A77fqORynpw/BizSdWR8pWIMywHNr7Mpi2U/IMxM2ctkgYNhnLdTe6iTIC6Tjs272TaTOOQUrJVWcto7O9lUXLlnPiyacyb9ES5sxfNOLOVKNFMpGg9eA+OloO0tZ6gLaDB+hsa6WjrYWOthY629vo6miju7NjyN2aNF0nXllNZXU1lVXVxCuriVdVU1FZSUVFJRWVVcTicWIV/Y9oRZxorIJoNEY0VkEkFiMSjeVtbDlS0pkwmFYXY9mM+qLOvSRBF0LowBbgHKAZWAtcLaXckPOafwYWSilvEEJcBVwmpbxyuHaLFfQ1a9Zw/8OP09WXRJM2ppHByGQwDQPDSJNJpzEyGTIZ//c0mXSKdDpFJpUik0ljW1bexwsGQ8Tile6XHK8kVlFJZbX/5VdRWVXjXgxV1dmRv7Kqhpq6eioqq9CKmA4XSjqVBCASjbFnx3s8cv897HxvC+9tejc74Hzrnl9wyhnn0tneimM71E+YOKANP1ogN3MvGnR3c/ejBIpBSulFJOWf/ekKi40DVEYCaOAljLkRRBVFClcyY9LSaxArcEHxcIxFeGKxuJsyG/RlTGKh0taVcts0bZu0YZMalJUskLy95mVee/k5/uflF9i9fSsAH7vyM9z0zduxTJOHfnoXR804lqYp02iaehTVNXVlSfSybZu+nm53ttzZTm93Jz2dnXR3ddLX00VvTze93V1ZA62vt4dEbw+JRC/pZDLv4wRDYSLRKJFojEgkSigSIRKJEo5ECIXdh/t7GKkFuewTl3P95RcWdU7DCXo+d8ZJwDYp5XavsVXAJcCGnNdcAtzi/f4o8AMhhJBj4M/5y1/+wr133oamaQRDYYKhEKFwmFAoTDAUdj8072dFQ2P2g4xEooSjUcLhiDuqRqKEIzEisRjRWIxotML9WREnGosRq6gkVhHPKyZ3OKSUWQtB190wy2SiD8e2sW0Ly7SwLJNorILq2jos02TjO2+RSacw0mlSSXe2MPv4RcyZv4j21hbu/vbX6epsd62R1lZ6ujr48q3/lxWXf5pMJs1LTz3J9GNnc87Fn2TuwsXMXbSYaUe7GX219Y3Zgkl2zvRQ81Kj45FgybU1fCzHIWM6VEeDVEfzi35JmzaOI6mtCBEf5J93HElrX4a+jFlUJmgsHKTWlnQkTeLh4q1Zy3GLnzVVlV/MwRXZhniIaFCjPWEQLGFT8Nw2dS1AJBigBn8Ac7/PjOUw/+TTmH/yaVz35Vvo6+5k8/o3qZ8wESklB/bu4Wd33jagvXAkype+/i0u/MQ1HNzXzIP3fJ+q6lriVdXEKuJUxCtZtGw5EydPpa+3h+ad7xEMhQgGwwRDQfRAkJq6ekKhMJZpYhgGuq6haTpC09C8RcvB14Su6567pY6jOLagz8CyLFKJPpI5j9xZfMqb4aeSCddoTLmz/Uw6x4hMp+nr6SGTcY1L39hcsnhxSd/PUORzVU8B9uT83QwM3uok+xoppSWE6AbqgbbR6GQuK1eu5MlnXuC1V15CALZlkbIs6hsncu9jzwJw83VX8re31g543+x5C7nzl78H4MarV/De5g1I+sebRUuXc9tPHgLgukvOYO/uHQPe/6GPnsMtd9wLwJVnLqWzvdVdtPQU8cwLL+Wrt90FwIVLjiGVTAxY1Lz4qs/yv275Lo7jcNHSQy+sq677Ajfc/A1SqST/cs3HDnn+H268mTnzFyEEbH53HTW19Uw7+hgWLV1Ow8QmjltwIgAzZs/lsTUbQAoc+kOn0paDEO7Cb0AMzILTR6lYWC5p0wIETVWRvML4/ASjUEBjck30sEKpaYIJlWE0Ad0pi3i4cEu7KhrEciR9aYtYEaLuiprNxKrIqCYt+Ra/X5qiUBeOEIJ4JEgwoNHRZ5AwTKLB0bHWwa3ZHtA1/DgEP1HOlg7V0UYaG871NruQ1E+ZzmOvbWXf7p0c3Lubln17aDu4n6lHz8KWks6ONl598Vl6ujoxTSN7jFvuuJeJk6eycd2b3Hz9oRP82+79NSefdiZ/feFpvvHFzx3y/F0PPcGCxSfx1O8f4bavrcwKvPBSrn/86FPMnD2Xx1c9wA+/838Y/NHc/8SfmTT1KFbd90N+fvfth7S/6rnXqamt5/67bueR++855PnHX91IKBTmh7fdwhMPPzjw8wsGeeK1zQC88PyzXHT+eSN+5sWQj8vlcuA8KeX13t/XAidJKf8l5zXveq9p9v5+z3tN+6C2Pg983vtzDrC5qE6HYnGhB4I4tl3M+0tB2ma10IOHrsiMGiL3x2HuxpHuUCmR9EfASvpHHffLLmrWJB2rVmiBzpFfKQRCaEjHlk7+vi0hNE06to1j5/ceTdeFpgekLGA7+9zjaYEAQtORzpDX0GHO2VUIx7aKPe4h/RCuT05KKZGOjRAaCCG8karo8xOajhYIuNeDzLuN/L/n4Q/vXab+xezFJngRCb7C5tejoa5XmfMvRV7W/Y2N+X2dg6br0jYNaaQOjY7Ij+lSysbDPZGPidIM5GakTAX2DfGaZiFEAKgGOgY3JKX8CfCTfHr8fkUI8bpjZg7rvxrPCCFedyzzA3Xe6pw/OIyX+zqfefZaYJYQYoYQIgRcBawe9JrVwGe93z8JPD8W/nOFQqFQDM2IFrrnE78ReAo3bPFnUsp3hRD/AbwupVwN3Af8QgixDdcyv2osO61QKBSKQ8lrVUhK+Ufgj4P+7xs5v6eBy0e3a+9b/q5dRiXwQTxvdc4fHMbFeZctU1ShUCgUo0v5g2gVCoVCMSooQS8BIcSXhRBSCNFQ7r6MNUKI24UQm4QQ64UQvxNC1JS7T2OJEOJ8IcRmIcQ2IcRXyt2fsUYIMU0I8YIQYqMQ4l0hxJfK3acjhRBCF0K8JYR4stx9KRUl6EUihJiGWw5hd7n7coR4BpgvpVyIWwriq2Xuz5jhlbu4G7gAmAdcLYSYV95ejTkWcJOUci7wIeALH4Bz9vkSsLHcnRgNlKAXz/8D/o1SMxr+TpBSPi2l9JN+XsXNRxivZMtdSCkNwC93MW6RUu6XUr7p/d6LK3BTytursUcIMRW4CPhpufsyGihBLwIhxMXAXinlunL3pUx8DvhTuTsxhhyu3MW4FzcfIcTRwInAa+XtyRHhDlzDbFQyf8vN2FT8HwcIIZ4FDrf/1teAfwfOPbI9GnuGO2cp5ePea76GOz3/1ZHs2xHmcGnpH4iZmBAiDvwWWCml7Cl3f8YSIcQKoEVK+YYQ4vRy92c0UII+BFLKsw/3/0KIBcAMYJ1XbmMq8KYQ4iQp5YEj2MVRZ6hz9hFCfBZYAZw1zjOB8yl3Me4QQgRxxfxXUsrHyt2fI8CpwMVCiAuBCFAlhPillPLTZe5X0ag49BIRQuwElkopR72y5PsJb5OT7wMflVK2lrs/Y4lXj2gLcBawF7f8xTVSynfL2rExxCsG9gDQIaVcWe7+HGk8C/3LUsoV5e5LKSgfuiJffgBUAs8IId4WQvyo3B0aK7zFX7/cxUbgkfEs5h6nAtcCZ3rf79ue5ar4O0JZ6AqFQjFOUBa6QqFQjBOUoCsUCsU4QQm6QqFQjBOUoCsUCsU4QQm6QqFQjBOUoCsUCsV+3qC0AAAA4klEQVQ4QQm6QqFQjBOUoCsUHkKIZV6994gQosKrCz6/3P1SKPJFJRYpFDkIIf4Tt65HFGiWUn67zF1SKPJGCbpCkYMQIoRbuyUNnCKltMvcJYUib5TLRaEYSB0Qx61bEylzXxSKglAWukKRgxBiNe4ORTOASVLKG8vcJYUib1Q9dIXCQwjxGcCSUj7k7Sv6VyHEmVLK58vdN4UiH5SFrlAoFOME5UNXKBSKcYISdIVCoRgnKEFXKBSKcYISdIVCoRgnKEFXKBSKcYISdIVCoRgnKEFXKBSKcYISdIVCoRgn/H9hYnbD3jyC2gAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"y_list = np.array(y_list)\n",
"y_list_ave = y_list.mean(axis=0)\n",
"y_list_std = y_list.std(axis=0)\n",
"\n",
"# average line\n",
"plt.plot(x_range, y_list_ave, c='k', label=r'Bayes Normal(m,$\\sigma$)')\n",
"\n",
"# 1-sigma, 2-sigma, 3-sigma zones\n",
"for i in range(1, 4):\n",
" plt.fill_between(x_range,\n",
" y_list_ave - i * y_list_std,\n",
" y_list_ave + i * y_list_std,\n",
" color='C0', alpha=0.1)\n",
"\n",
"ml_m = data.numpy().mean()\n",
"ml_std = data.numpy().std()\n",
"gauss = norm_sp(ml_m, ml_std)\n",
"y = [gauss.pdf(x) for x in x_range]\n",
"plt.plot(x_range, y, c='k', ls='--', label=r'ML Normal(m={0:.3f}, $\\sigma$={1:.3f})'.format(ml_m, ml_std))\n",
" \n",
"plt.ylim(0,)\n",
"plt.xlabel('x')\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"x_range = np.arange(-1, 1, 0.01)\n",
"gauss = norm_sp(loc=a1, scale=b1)\n",
"y = [gauss.pdf(x) for x in x_range]\n",
"plt.plot(x_range, y, c='k')\n",
"plt.title('m ~ N({0:.3f}, {1:.3f})'.format(a1, b1))\n",
"plt.xlabel('m')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"x_range = np.arange(0, 4, 0.01)\n",
"\n",
"# needs conversion from Scipy invgamma to a common Pyro InverseGamma\n",
"ig = invgamma_sp(a=a2)\n",
"y = [ig.pdf(x / b2) / b2 for x in x_range]\n",
"\n",
"plt.plot(x_range, y, c='k')\n",
"plt.title(r'$\\sigma$ ~ InvGamma({0:.3f}, {1:.3f})'.format(a2, b2))\n",
"plt.xlabel(r'$\\sigma$')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.7"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment