diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index a8a272acaaa..75f5177cccd 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -6,6 +6,7 @@ - Mentioned the way to do any random walk with `theano.tensor.cumsum()` in `GaussianRandomWalk` docstrings (see [#4048](https://github.com/pymc-devs/pymc3/pull/4048)). - Fixed numerical instability in ExGaussian's logp by preventing `logpow` from returning `-inf` (see [#4050](https://github.com/pymc-devs/pymc3/pull/4050)). - Use dill to serialize user defined logp functions in `DensityDist`. The previous serialization code fails if it is used in notebooks on Windows and Mac. `dill` is now a required dependency. (see [#3844](https://github.com/pymc-devs/pymc3/issues/3844)). +- Numerically improved stickbreaking transformation - e.g. for the `Dirichlet` distribution. [#4129](https://github.com/pymc-devs/pymc3/pull/4129) ### Documentation diff --git a/docs/source/notebooks/lda-advi-aevb.ipynb b/docs/source/notebooks/lda-advi-aevb.ipynb index 9593fe32c4e..45a8f6ef0b2 100644 --- a/docs/source/notebooks/lda-advi-aevb.ipynb +++ b/docs/source/notebooks/lda-advi-aevb.ipynb @@ -24,14 +24,6 @@ "text": [ "env: THEANO_FLAGS=device=cpu,floatX=float64\n" ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/anaconda3/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n", - " from ._conv import register_converters as _register_converters\n" - ] } ], "source": [ @@ -52,7 +44,6 @@ "\n", "from pymc3 import Dirichlet\n", "from pymc3 import math as pmmath\n", - "from pymc3.distributions.transforms import t_stick_breaking\n", "from sklearn.datasets import fetch_20newsgroups\n", "from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer\n", "from theano import shared\n", @@ -77,22 +68,14 @@ "execution_count": 2, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Downloading 20news dataset. This may take a few minutes.\n", - "Downloading dataset from https://ndownloader.figshare.com/files/5975967 (14 MB)\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ "Loading dataset...\n", - "done in 30.579s.\n", + "done in 1.724s.\n", "Extracting tf features for LDA...\n", - "done in 3.830s.\n" + "done in 2.177s.\n" ] } ], @@ -132,14 +115,12 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAW4AAAD0CAYAAAC7KMweAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvDW2N/gAAIABJREFUeJztnXmcJVV96L91l96mu+cyTLMpArIcwKeyuODCquITQY0vz+QRXAgRSTSPBJ/6MGLyEs2iiGjEj2EMLrwYX1QwgCIIQXaUNbIeZNhkmWGGmV7v7b5L1fuj7lL7rbpbd3X/vn/M9K2qc87vLPWr3/mdzbAsC0EQBCE9ZJZbAEEQBCEZorgFQRBShihuQRCElCGKWxAEIWWI4hYEQUgZorgFQRBSRm4QiWzbNtfxnMPx8WHm55d6Kc6KR/K8NpA8r366ye/U1IQRdm/FW9y5XHa5RRg4kue1geR59dOv/K54xS0IgiC4EcUtCIKQMkRxC4IgpAxR3IIgCClDFLcgCELKiDUdUCm1G3A38Dat9SOO66cAnwWqwCVa6019kVIQBEFo0tbiVkrlgX8CSgHXvwycCBwLnKmU2qMfQgqCIAgt4rhKzge+ATznuX4I8JjWeqfWugzcAhzdY/kEYVXw7V8+zWu/dNNyiyGsEiJdJUqpDwHbtNbXKKXO9dyeBGYcv+eA9UHxjI8PdzwRPZvNUCiMdRQ2rUieVx8X3fIkgCuPqz3PQay1PPcrv+183H8IWEqptwKHAd9VSr1La70FmAUmHM9OANNBkXSzxLVQGGN6uthx+DQieV69OPO4VvLsZK3luZv8Tk1NhN6LVNxa62MafyulfgGcVVfaAA8DByqlNgDzwDHYbhVBEAShjyTeZEopdSowrrW+WCl1DnANtq/8Eq31s70WUBAEQXATW3FrrY+r//mI49qVwJU9lkkQBEGIQBbgCIIgpAxR3IIgCClDFLcgDBDL6vhMEUFoIopbEAQhZYjiFoQBIva20AtEcQuCIKQMUdyCIAgpQxS3IAwQGZsUeoEobkEQhJQhilsQBogY3EIvEMUtCIKQMkRxC4IgpAxR3IIwSGR0UugBorgFQRBShihuQRggYm8LvUAUtyAIQspoe5CCUioLbAIUUANO11pvdtw/BzgD2Fa/9BGtte6DrIIgCALxTsA5BUBr/Sal1HHABcC7HfePAD6gtb679+IJwupCxiaFXtDWVaK1/jFwZv3nPsBWzyNHAucqpW5RSp3bY/kEQRAED7HOnNRaV5VS3wF+B/hdz+3vAxcBs8DlSqmTtdZXOR8YHx8ml8t2JGA2m6FQGOsobFqRPK9e1q8fZThvvwtrJc9O1lqe+5XfJIcFf1Ap9Sngl0qpQ7XWC0opA7hQaz0DoJT6CXA44FLc8/NLHQtYKIwxPV3sOHwakTyvXqZnSgzn7I7uWsmzk7WW527yOzU1EXovzuDk+4GXaq3/DigCJvYgJcAk8IBS6hBgATgBuKQjKQVBEIRYxJkOeBlwuFLqJuAa4M+A9yqlzqxb2p8GbgBuBh7UWv+0b9IKQsqRMyeFXtDW4tZaLwDvi7h/KXBpL4USBEEQwpEFOIIgCClDFLcgCELKEMUtCIKQMkRxC8IAkaFJoReI4hYEQUgZorgFQRBShihuQRggMo1b6AWiuAVBEFKGKG5BGCCWDE8KPUAUtyAIQsoQxS0IgpAyRHELwgCRwUmhF4jiFgRBSBmiuAVBEFKGKG5BEISUIYpbEAQhZYjiFoQBIoOTQi+Ic+ZkFtgEKOyzJk/XWm923D8F+CxQBS7RWm/qk6yCIAgC8SzuUwC01m/CVtAXNG4opfLAl4ETgWOBM5VSe/RBTkFYFcjKSaEXtFXcWusfA2fWf+4DbHXcPgR4TGu9U2tdBm4Bju65lILQY27feisPTz9E7rlfkXvqBl7Y9m1Ms7TcYq0qlkyTS7btpLIG/EPff3GG7ZXqwNJr6yoB0FpXlVLfAX4H+F3HrUlgxvF7DljvDT8+Pkwul+1IwGw2Q6Ew1lHYtCJ57j9/8dNPAHD/E0+zdeMQWw6dJGNs54ADPtvXdNevH2P9aB5Y/fV84dNb+fLWHew6PsIH99wVWJ15fqK0xOef3861C0Uue9X+rnv9ym8sxQ2gtf6gUupTwC+VUofWT3+fBSYcj00A096w8/NLHQtYKIwxPV3sOHwakTwPFjNrAFAqTfddhunpItaSrbhXez2/WLTf+x3zi818rsY871wsA7B9qeLLWzf5nZqaCL0XZ3Dy/cBLtdZ/BxQBE3uQEuBh4ECl1AZgHjgGOL8jKQVBEIRYxBmcvAw4XCl1E3AN8GfAe5VSZ2qtK8A59eu3Y88qebZv0gpCyln93l5hELS1uOsukfdF3L8SuLKXQgmCIAjhyAIcQRCElCGKWxAGifhKhB4gilsQBCFliOIWhAEiKyeFXiCKWxAEIWWI4hYEQUgZorgFYYCIo0ToBaK4BUEQUoYobkEYIGtgozxhAIjiFgRBSBmiuAVBEFKGKG5BGCDiKRF6gShuQRCElCGKWxAGiYxOCj1AFLcgCELKEMUtrHnEBu4va6V8B9mZEsUtCANkrSgxob9EnoCjlMoDlwD7AsPA57TWVzjunwOcAWyrX/qI1lr3R1RB6A/Gcguwylkr5WsMMKPtji47DXhRa/1+pdSuwL3AFY77RwAf0Frf3S8BBWE1IWOTQi9op7h/APzQ8bvquX8kcK5Sag/gJ/WT4AVBEIQ+Eqm4tdbzAEqpCWwF/hnPI98HLgJmgcuVUidrra/yxjM+Pkwul+1IwGw2Q6Ew1lHYtCJ5Xh7yQ7m+yzC5fpTC5AiwMvLcT4Z35gEYHR1q5nM15nmiaA8VZjP+vPUrv21PeVdK7Q1cDnxda/09x3UDuFBrPVP//RPgcMCnuOfnlzoWsFAYY3q62HH4NCJ5Xh4q5WrfZZiZKTFimsDKyHM/WVqqAFAqlZv5XI15nlssA1AzTV/eusnv1NRE6L12g5O7A9cCH9NaX++5PQk8oJQ6BFgATsAeyBQEQRD6SDuL+9PALsB5Sqnz6tc2Aeu01hcrpT4N3AAsAddrrX/aP1EFQRAEaO/jPhs4O+L+pcClvRZKEFYrlkwrEXqALMARBEFIGaK4BUEQUoYobkEQhJQhilsQBCFliOIWhAEiQ5NCLxDFLQiCkDJEcQvCAJHZgEIvEMUtrHlEl/aXtVK+cpCCIAiCEIoobkEYINaasT+FfiKKWxAEoQuW41MsiltY8wzyaK21ODgpR5f1HlHcgiAIXSAWtyAIgtAWUdyCIAhdsBwDzqK4BUEQUka7o8vy2MeR7QsMA5/TWl/huH8K8Fns098v0Vpv6p+ogpB+1uLg5GpnJfq4TwNe1FofDbwD+FrjRl2pfxk4ETgWOFMptUe/BBUEQRBs2inuHwDnOX5XHX8fAjymtd6ptS4DtwBH91g+IQCrWsUqlfoUt4lVNV3XarW55EduWSZGeb6HkjkFqkClP/mvVqtUq1Xf9fJilbnKEptnnkkcZ7lcxohplxnlebDM9g+ucipLMyxVFgaaZq0211G4FWdxa63ntdZzSqkJ4IfAZxy3J4EZx+85YH3vRRS8zH7yz3nxxGP7Enf5Gw9Q/sqvm78XFx/nwYeOZufOHyeKZ91tn2fjpoOh3PuXb/0Vv8/UxQf2PF6Ab37zIjZt+prr2vOPTvPjz9/LqQ/cxnt+u8Rzs0/Gjq9arbJp0z/y2tzTQPRLbizNsnHTway74wsdSL7ymJmx1cPs7EybJ/187Oq38I6fv63XIoWyc/pqHnzoaEqlR5IHXgbN3e6Ud5RSewOXA1/XWn/PcWsWmHD8ngCmg+IYHx8ml8t2JGA2m6FQGOsobFppl+ftd/4SoC/lsnXJdMW9bfuzACwu3k6h8Aex48n9xlb0hdEaTLSXM0k955/rT/7zQzlqtaovbv38FgCezL8MgHlzB4XCobHiLNV7RvtnX+RX1X2YnBxpxu3L8/Q2AEY3X0H+HX/dXWZWAKXSAuTWsbi4EJ7nEH4zNAT0p40HsWWr3aaMzJMUCkckCjuRs1feZDP+vPVLf7UbnNwduBb4mNb6es/th4EDlVIbgHngGOD8oHjm55c6FrBQGGN6uthx+DQSN8/9LJdG3MUFu+7KlVqi9DZYFllgdraEWWsfLkk9T3lk7BWVcstF4ox7cbHiem6hWI6d9uLiouv3zEyJ6az9onvznJktsStgmtaqaPO1mgk5qDjaTtL3eVDl0Kj7YoK6bTBbst+Rmmn6wnajv6amJkLvtbO4Pw3sApynlGr4ujcB67TWFyulzgGuwXa5XKK1frYjCQUhRcjEkGRIefWeSMWttT4bODvi/pXAlb0WShCE9DPIvTuWkxU3OCkIgp9uXlSxPoVeIIpbEBIiyjcudZN7lReYWNyCsAwM9MVb5UosiLVyeIQcXSYIK5i1oYaEuIjFLQiCILRFFLcgJMTq4kwXsdZXI7KtqyAMnKRqWJRvPIw1c2iZjRxdJgirBsvzaw2q/VW+l+1yZE8Ud4pJvGOf0Buk2IVlRhR3mhHFvSwkKfU1/XFdI54SmVUiJGMtK4VlpKuVk2uwytake6jPiOJOMwPVAvLyNTHloIPVS/J2Lha3kIxUmG9pkLF/eKtoLZVGx56SVLTr5UUUd5oZqOXX4Wu4Cl9CK5PktVl9+U9M4iJYzjJL3s7F4haSkQqlmAYZk5FscLJvYqx8Op3YvKYLLR6iuNNMGhp4CkRMjJlIdUf+FIJIVyGJxS0kwhroaeDpepn6iSllkYh0TYlMh6xtDwsGUEq9HvgHrfVxnuvnAGcA2+qXPqK11j2VUAgnFS9EGmQcHJFT41JRnwNAyqEtcU55/yTwfmAh4PYRwAe01nf3WjAhBom67N0i/soGFvF7OsmszdVXVp2RssHJZWjjcVwlm4H3htw7EjhXKXWLUurc3oklxGKgrpJOWfnKKKmEZr9m86zCjxyAlVgXprMcBll9bS1urfWPlFL7htz+PnARMAtcrpQ6WWt9lfeh8fFhcrlsRwJmsxkKhbGOwqaVdnneXv9//eQo2R6Xzdb6/430K9VhAIby2UT1kKnPKJicHIEY4Tqp5163i/xQ63Vwxj0yknc9Nzyaj512JlN1/R4fH2mG9eXZHK2HMVZFm8/X3/mcI5+x6rna0hWDKoctW+26HxsbSpzmOsPW2EF565f+iuXjDkIpZQAXaq1n6r9/AhwO+BT3/PxSxwIWCmNMTxc7Dp9G4uZ5ZucCGYb6IkMj/eKCXXflSjVRPWywLLLA7GwJk/bhktTzlEfGXlEpt5SsM+7FxYrruVJpKXbac3NFz+9Fpkft186b5+xskQ2AaVqros1XayZkoVqtNfMTq56ri80/B1UOjbovFuPXbYP5BVveWs30he1Gf01NTYTe61hxA5PAA0qpQ7D93ycAl3QRn5CYFHQpV2n3v1PWYmkkbwLpKqXlkDax4lZKnQqMa60vVkp9GrgBWAKu11r/tNcCChGkYeXkCnwJux1MMhMMCicbm1x5ZbUsLGsxpGNLw1iKW2v9JHBU/e/vOa5fClzaF8mE9qThPV+FyijZbncyqyQ56SoHWYAjJGKwC3A6w1iBL6FX8Sa1scwE0wEDEl9DpMN67RVydJkQj4HO4xb6zirrnXSsyFJWDmJxCwlJVwNfKXS7sX8SvSILcCBpvlZiL22lIYo7zaRhQ/9+Wk/LZJl1s1eJLHmPQ8rKQQ4LFhKRihe9nzJ2GHe35ZYgvFjcJM9WKtr18iKKO83I0WXLQjeuFinFlY4cXSb0mzRYJivQVbJyS23lStYZ9uhkOlRhuhDFnWbW/AKc5XnB++b+SMOHuCMS5mtZy6GTo8tW5u6AwgolFRvUr0iLu8uVkwnC+w4LTkGV9YrO5zWvoULqEFHcaSYVWiANMiYjFR9MYWCIj1tIxpo/uqxDi7vbvUq6WMYeGXK1fhBSla10CCuKO82koo2tRB93AmXaJUl08WpdeJJ8c8B0lUND2kGKLYo7zaRhcHIF+rg7SsqVbL/STZfCas9KHNBuRzr2VxHFnWZSZpn0nuWZDphEcfuejQq75uuzTsrKQXzcQjLS0MDTIGMMkp+bKLRmlayONrCSEMWdZtb64GSnK947WRLiUNxmF+UenfIKLOMekK4TcDpIW/YqEZKQhmlp/R1wWx4fd99CpqA+k9BxdlJWDivWVaKUer1S6hcB109RSt2plLpdKfXhnksnRDPQ/bhX4EBTpwtwvOFiZM1pcSex2JOJmC6F1Z7O8rO8s2vS4RNrq7iVUp8EvgmMeK7ngS8DJwLHAmcqpfboh5BCCGmwTPoo43K94MkcJZ6ph1Eip6E+B0KrHNLQq1wOCeOcObkZeC/+syUPAR7TWu8EUErdAhwN/KCnEgJ3L5T41vZp/nKvKTZk4Be/uI6jjnoz+VKWzz++hTM2FthrW5nc63cHoHrbFjJ7j5PZe5zqr7aS2W0UY+9xqtc9Q+6Ne2BMDDXjHnr8arKzz5DdoSm+9hxqY7uz8OUvUnrLi0xaMHzEF3nh8Ud59qH7OPzk92EtLTF/wRdYd+YfY+5S4KxbT2fn/DP83m5v4fjn/oD/m3mUDQc+wwcPOoPafdvJFTUjw/dSOvJjWEs1qjc8Q+74l2IMZwHQ9/0afcc93HHwEXwss4Hdj96Tb/7bJg6+82D22sui8PZDyOy1rinvYqXWKhiHr7X2yE4o18i+aiPbSi/wnd/8M2c9ui/53fZg+JjjXeU5veVZHrr+Ksxajde89/2MjE8AcNXt97FH9mleWXsZAGbN5K7rnueagz7EGY//gsqOe6i++jDO089Rna9w2g3/yJEnnsIN5XE2z8zx4bedQP6ZW8lvubuZ1tgvv8jsKZdiVU27/I/eE2sUfvvbc1m//m0UCm8PrfcvfOUiyrVRTs++jMvecA8f2H4Qw1bL1rj818/zntccGBq+Vlvguef+nr32+gTZ7KTjjsX+M/szulDlS8Uhjspt45/4KO954Ql+cdBhHP2b/2RubpaJiUkeu+tZ7sn/X+583euADXabuftOqtu2c+f247hw+Fvssf8Z/NVTGQpv2ZutT8zx8OZLKc08zHHrT2bbBlu+YaNGbdch/r1U5JW0ZPnnhzULC0v8SXEjuYPsa1dOH8E1l/6QI169G49umefPC0fATIXMjs08//wLFN5/POO7TvFQaYmrZ+Y4Z/ddKT/+GDdddimvfelx5Hdqho4/lvwhhwLw1PyTnHHTaZx3+F/z8hcP4xvPb2OfzbdwwMnv4KHb7uDEa2/lhZPnOSD7OnZ7ze+T2XMdDz71IBfe/Z/8yZH7MP8v17JjZA/uHS/wsd1fy4bj9+b/vLiTn173BJ954248Uv1X/tvS7/LYPQ/y0gNfx35P/ZrxN7wUyANglLeF1hGA+dwC5uOz5N68J7X7X8SslcCCV+14Fdu3b2NqajduvfeLPLTlt2zc+8957MbPcVLmNbzij/+Y6VKFC298nE+95QBG81ksy+KyH/yAB3bZwMhL9mb4N5tZLOXZ7eBXcOD+69m8VOH1tSw/f2Qbf3rMfsy+sMjjd73ALgct8T3ez7uKWd64S0u20o/+jc3rTb60C3y0OMLY+M848L/8Dfn8VPOZoYe+D+uOZXqxyF0PfZLD1Xnce9X1/PzJp/nbPz0TMiMBue6Otopba/0jpdS+AbcmgRnH7zlgfVAc4+PD5HLZjgTMZjN8e3qWG+eK/DYLlS2/5ZFHHsQwTMZ27M9lB+d44pkX2HRniY1v3w+ArbdvoXY77P43b2Trzc9TA9afejAzD+yAikXhtEOa8eevbnl4hsvbWXjlX/Liv1/G828v8zxwTGGM717wlwAcf9qHmL3yOpZ+eiV5w+TJs9/D43ObAfjZU/fx7idO5qThGn9s/DNnv+5P2Xr9M1RZx8aRv2f4LZ9k/vqnKT+4k/xu6xg/wVaO19/6cx7fdU+u2biO2a3zfKL6OKfc/wq7f7MDKv/6G3b/mzc2ZfzhPc9wWKNc1w0xWhiz8/yT+wDY9ZiX8dn7zueW527hQ1+psgjsfv8DrjL98V+fz+wLW+w41k9w3Ac/AsBT91zPU3l4Ze1lFApj7HhkB5/Z/7XMG3neMXcnu372LO649kauqS3BKFx/0ke55ZP/g7O/8K8wtoFPFMbIX/R7AFjr7I/o8NM3UCiMUbr3BWYf3EEml2XonXlmZq9jbv5m9t33d5r1XKjnBcA0TS59y38F4BPXzHHwfbtSufRvqQD8vv3MV27czIfe+urQtvP0099h5/SVjE/sxX77frx5fagCh+2ol+JTd/G5Nx/JvcYJ3DQM7An7bX+em2++nlNP/QMeu+9HXHDU+1zxZp+e4ZbNI7xQ2cELJ+zHQxWTgxZKfHzrEjd951EOft83YS8o/smd3PvWf4CNdrjKa6b4f6UFzq/nM5vNcGEtByM5PnLjC4wfYRsUZ51wDgCXA+wFZ19j15VJgSkK3P1v3+Okc8/l/Q8+Ttmy+IuDXsojX/gcj77qVcxve5K3PrLAzL9+iAPq9f6Bmz6Jicn/ufcznHX7V7ji9zbAnsfBdAkOfTVvem6Iyf0/wwv8kl2+dyS7/80b+epPnuCOg17PXv/xL+y2fhIoMlUpMvf404zmcly2Tw1et5Ev3vMNhna9lY2Pr2fRKLN4y+4cOP4SFn9aJnfSMNRgdJdfUSj898B6Btj6Jbvtbjx5f7Zea/89dNAQB84eyBVX/ICPf/wTnPf85QAs3f0t/v379wP3Uzj343z1lof4yYNbOXyfXfjgG/bFLBb5q0OPrDciYH9VT6UET5UAGP/5c1RNi//9zkP56QX3szC9xKsyT/CTvc/iZztMnnxFS77tF57P1/7uY9w1/CauW/wWJ+XuYPv2L3PIIRc2n5l+6mdw6LGY1naGatcyN38Qp+9/POz/Sv7XRV9j6rzPhrbRTol1ynsIs8CE4/cEMB304Pz8UseJFApjlMq2lTm/sMTCgh1XpVLDqi9AaXilpqeLrrDO341w1WrNdX3K8XylajI/vxgax/R0kcWFcj19MzBfDf9nkCzVxQoAi4tVqvX7zm6WAb70vXEVi+Xm3/NziywFpFNxWuUBspiOhTtLS1Xf/UaYBUf+Gm6JYqnse9YZplGepmWRdVyv1eUuV6oszlbrciw10y4UxlxymNWqK+6g7qgRkDcnpUU7zaVFdx6L1QVfPO7flq+dtMMAFor+sgmS25lnJ3NzS3WbPpqqaTI9XWy2tdnpkmMtltFMtJFOLeFCrenpYtNFYQaMo9Sq9fbVxkdQqZiQcdeTt5696XqxrPA6np4usrRkt5PFUsWWu1SKFsoh9sxMsfku1Bz5DK33+iPlitl6xunKqf+9tNhqu2ZUfG2YmpoIvdeN4n4YOFAptQGYB44Bzu8ivrbI2bge0rByMoA4p9NbtVrbZ9KxRDyBjB028OXYVnQ10BP3uRW9c02/aiax4lZKnQqMa60vVkqdA1yDPch5idb62V4L6ESap4fUFkgcwfuXua5PLsusrJkHg24GfVvw3wtNmmRVq+vv/syaWlbFrbV+Ejiq/vf3HNevBK7si2QBpOBo3IFgYpDBimW59o5eNsHeWNzL9eUyjT4l3aHiGvR7ESWlW/0Nvn6STdV0zF7pdPNwy4wMa3a+KXkkKVuAs7wm5oqbmrRMmywNhBhuoM5tJHdukr9bfbK4O63PAVdO35LrietiZVnc/SJVinvZfdwrRHE3pRioPF0oK4+csXzcsRT3yqiPXmGkxeKOaApdWdy9qM4ESsJ0Wtwd735pEvVuiMXN8rtKVozF3WgMAxycNLtpKj5FvdyDk93VY6KX0ej/kvdkBzvEJGoTw7hRJM2P43mjqQyTxhH/nXBNCEmWSnAkAZh96p2lSnEvv9ocgAQxGvuyWNxdtb8ONnXqY958rpKkEaysscmBvxdRqjGoaAYqX6Itdx1/d7HffDNsn6zrINKluOMotX6+8IPw1cRIotlQBurj7sZV4n7VrTgWtxnH4l4eOh7Iakfc9uXxVfSjGUQN8vVtcNLxuNHpProduko6dWkYbdqyuEpIl8U9ELdKagYnPaHjyB3jBezUVbJypwPGE8yb+sCnA0ZlP4lryB9zF2GTx9Flv6seSfQ8ln7VTaoUdyzvVR9bcaKTTzrfLLo9jTY2QB93Ly3uWD7uFWxx943Y1qI7533xcUcQ7SpxytaFxd1p7SZ4J5zvc8e+6DY+9X71zlKluGM1g163YefI8yAUdwL6b9U7R927GZzsJEz/ZpV0WzfJPmIDaAd9TyF+egMeCukqjp5Y3FiR7UEsbmJ2cXuuzJwjGP13lcTpaZqD8nE7s96N5eD1ccda8r7cc4jCsTJGf97ImHH6XCUrah63FfJ3nIgds0o69HEnWZTm7OB0PGtKZpW0J1aXcIVY3B0fbxUniw0l2ueVk91Ml3LOSfYP4PTGVdJ5ZXfZSPrU/Y3fvLyuksES1+JuvS8xy2vA87hdBd6xwW1Si2gP/TqrNFWKe1kGJ53KMeLN8vvkVsYMlO7i72aBQrxyCw8eZ3ByeejWbxlqAMQsp+UenDSjFuB0NTjpiGcAKxmdTayWsr1K0qW425SCZVld9xv9L1U8i9vb0DoeMEoSrM+Dk65vVtKG7QqcfDqg2ceVk956TP7Kxg8RJGFnE+3C0+9+rCNZ+MinXaJZ9X8HaXEnGJx0/epwOqBlRk75k+mAJK/Xjhq0T2+3GkKk4vbNre1gChzxmk/rRVjBPm5Xfjsoi4FuoJWMbru/obkfwLc+bgydzuPulRwdW9wdjkN1vjJYLO5QGo3I+SpbVuu3heOPMH3RqKR2Jen9YgdslO77G8jUG1qjwfmsSpcicodtKALLH60fy6FEQ9wJbRtLzNZkmWbzS5LcVeIpqyhFHhTaMzgZlHpci9urhPxKKWHeHB+xVn0TUnn+a6GfpLgfd09TNl2/rOS+lCj3RsAH23lmgzctI+AFjK28AppI0Ccl6FdLB8QxCur6xDWG46jHMJp5dQY0fW4WZ/vq18BxKhR3g7bTuLwKopNCs0xPOs5KCLcCfa4Sn8Udz4KMs7lS0jh7waBdJYOdx53QVWBk3MYQvGACAAAbqElEQVRC0tTCwnR8an1HwZwx9OzpXk0HHMg8bue73bGLO3o64Jp2lTStGmfFGq1G4voQulqVJ4Dr4RAs9zNGmHL0VEjL8vLZAAG/PWGteKJ5Hwpz3bSNJ25b6uYb6LWwXeUV3yqKChHX4vYqAZ+93ZXmM1r/Br2kAZdCDZDYLm5Hms1gjrehyw6FW6YAm9eZsL8wA8LG9XHHKQDve+e5GmdbDMOvTxrrFCIlbT7vegl91r6zvckCHPxdTN/odpSrJC6W6ak9x1c54mvuFaVziztGw2uk1u+9UxzxW0b7puIcUHR+8Hwfv5Rv62oZLeXYyWsZlrO4H5CeDYS3Eo79aJCujn46AT2wuBMtkuuyc24TPTjZL8Xd9gQcpVQG+DrwamAJ+COt9WOO+18F3oR9yjvAu7XWM76IekByq6+TROIrXKflZFiZ0HtJhLG8Jn/gM40/+qu4LIcocVKyQv3YnfgT+ukGcsuTdAZb3wYnly2+ZDEk3x2wX/PeA+SO80407Z7Ws50veY9Or19vaJyjy94DjGit36CUOgr4EvBux/0jgLdrrbf3Q0AnXmXoa0AdDIL5MC13PyRyAY5DcftEiRjkjMC2NKOt234vwAny8cd5+dxT+NwDOO74Y66czEY/M8BdNF3Y5e/rpIc97b8S1hRi9qB8rh+ru4+Jlcjibves431JbHE7DaEYGQpU3J1NB+zmIIUopb+cKyffDPwMQGt9B/Caxo26NX4gcLFS6lal1B/2Rco6PmM4+TvTPo0IS9mruJ1fbL8f1StsH769fXaVON02sSxu14+IfmjPpgN2OpjnDud9Cdq9xF0vwOkqdFh8ncsUJE+U0o1cgBMz/p4QqLg7C97pXjxt3XV9Mi7iWNyTgNP1UVNK5bTWVWAd8I/ABdj20Q1Kqbu01r92RjA+Pkwu18Z8CiGbzZDL2YU6PDrEuvIwAPl8Djx+1/WTo1hlk+2O39vqf68bG2IGyOezFApjgWnlc1nGx4aYdhT2+onh5t+TE8Owboh5YGgoy9i6fPNexuMqmZgcwTkvorB+mPmRPAvAyEiecYcMzg/Q6Ki/Spzyjo0NOf7OM1m/t9XxbD7vLmtvfjOZlqzDw3nffQuL9etHWRzJQ6VxzRZybHTI9ayzYU46ysqpeCcnhymNDTELDA3lyKxrxdFIO5vNuORYGm2lHYaBFVqXALOzdjrDI+48lheG3Q/6DAIjsp24ZHBU3rqxoYgnW0ysH2V9Lks2624zo96yDSGXtWWzjQWLdRMjLAZsNdss20y7Hpy7AFpxg5HxGySZXBYInvXjXDmZzbZ6JWH1DK22OzExyovNEPX0DX/7bco5OcLwsP2+jI4NUSiMsbRuCIrlsKw24wRbLzXfBUcZOdMLciMMDTnaRm24ZVXXIx4ZaekFyzBitaOkxFHcs8CE43emrrQBisBXtNZFAKXUf2D7wl2Ke35+qWMBC4UxqlVbCRRLZRYW7LgqlarvizszXYSK6f5dpxWuxrTj+pQjfKVaY36u5DLBZmaKrr/zC3ajKJdrkfmanllwFdrM9AKVRVsTLS5WqDpkcGq/hflFYMQdl+PZYrHcVKLF+UVMVzz2s5VKLTQ8uF0aS0sV3/1GmGKxDPU22BicLJY8L4WjCnbudOa5dWN2ZoFK0Za5XK5SXCj5ZCsUxlxyzM+VYGTcJ1eQnGGUFm1ZlxbdeZwplVzPBRlF3nbiJMzibrSxdkxPF7Fy/g9DsVj21HwwtZppx1Ev45m5UmDnqyF/rc1Ar1dxO+P2DpZbQLUaZx8ZqNVqzXdp584FjLoSCyvX2ZmS75plhdfx9M4FlpZsVVQqlpmeLlKdLdHOx2bVP3gzc4vNd6Hm0CVRbQrsd7/xTHam6OuBLC62LI5ajPjCmJqaCL0Xp39wK3ASQN3Hfb/j3kHALUqprFIqj+1WuacjKWPg63G3m1USFTg0kYjBSc8t0+GrzfhcJW3iDXk2lksizsLJLlwzjZBuV0n7Pp/LBRGxWClOLuPs8tZpL9Q748fr4m2bV5fidk4Ni5d+6GNx68zb8K3u3BGBYRsXoxbgxI4/+XTAWLNKuhycdLbXzrctbjeZYJlmlQCXA29TSt1Wl+J0pdQ5wGNa6yuUUv8C3IHdsf2u1vrBvkiK/cK5C9tDlH6I27IdqwXB7cPyK5MIH3fEs16c72G849Ea81DjT09MghWgCWJ9UJyWXcQCnHgn4Kzk6YBhN+Jd7HrlZFB8fRqc9L9SVpsTcCIiSjImFavBdTk4GTEMY9+PNxYTlWK/5ka1VdxaaxM4y3P5Ecf9LwBf6LFcgcSy20JrI8FL7lorEmFxR4yCJ5tVknBxSpw4e6HTXEUZY1aJ60MW/Lcv4rCk+3l0meej4Ou4tRl8dM5pb9PPCg4f9lyHdRbV0YwTb1R+g+o9bktutE8rhgz+eDqzuGMp26bF7QgXlJ63nQSK1OYghT4NTqZiAU7T30arYiyrNbrdLH/LaykGKPF29eqxuJ0BbGVsNdNyzeNurqCrW8NexRO1V4nj/7YNz/LkN/gRMpFulLZJ+LRBvAU4YQrJcskaZzqg13IKav8G8V5U/wwf7wPeOfhRD3svG62fPldaSP2EuvOSabdWu/GYqp7CirYJiZzI7lXqFpZ7QaS3YgyPLM0/41ivcVwfzk3fTNe7Y9+On457ybujHkPSbilhd758zcnV1mXlJKblLhT/PG7Cu1sJXCWur6R3HrfT7+tcHehdzZZgtaDz5WiniOyuamMFQYSrpAuLO2hgKpaPO0wey/TURbITcKKy0smMSL8i8ygnp6ssqCCdyiyqjYUUWbfdZ2/vzvR7tly0a1NmlOIO+OYlXYATuAw/MDFniLCYHA8FVX6HJ+AEtu8YH5vAbV2j3Lk9IhWK27UDW+Oayw/dItw7YvkfDkjJ8kXoeTMbvw13R701XtjoEbirLPhpb+re9PzYnYqAvp4nnjbZbP0Z2k22v4JxxkFbsoWakjFCe3Er7qAYjHCng+c5/2Ce+wGf2RgZn603LdeTAfYalhHszAmVOa7FHbRXieGQxKdsOyl/p1ntic2ZsC9qp9LqgdryJG949kIxvI/FKcOMv7YsK2CvEsvyX/NdafdRFIsbE/fgpH+vEneXPPlmBFaAq8ShQEzL9UV3Wdze7naSpfOOyvXtceLBFUuEjy+uxR2kbJuDkw5LLt7KyTC3gtvijnWQQi2inusYnvYQF5/F7R2fwFEuRoCsYSsnY1rc3X7fggYnI3eoa2OFBlnczXoP+OZF+W2DblkYiV0lYSsnXZ/CoHwlGtwPamP++JtXAubK0+YgBXGV1Gk7q6Rbo8+ywgcncbtKIqcDdjAFDmi/0VDkNDtnPLGSC06i8UfASxD1XkRb3An9VnE35erGmGzidZU4XuyAggxdOej9VmeMwPDhlmjwdf/VgAHDrmaVRN31f9Q6PWOmN48Ht/9EzomGp9FlTASowoA57H5xgtw1DmlkcLJRjgmqyN0XipmYV3E70rM8CihSicWfVeL8KrczGEyLaB93w1Dstpfq6byYQYM33iBhytY7aBxnQNGRt9Dd9LDa9lCC8FqgoTMYQqNu2X2usF5Zkvq4w4ov7PlGsHa9tDYfwajpgP6QbRwggXHF9HG7QoRZ3A6JgrZkiDGNtNmbaKdgffUZYnEHuJOa4izjPO5lx3L87zI427lKOkrMHd49j9vyKBSnxd3mGxgll8tfHy2/89MRbAH4okxM89V0JWDHGPVaRB6C67qVzOLul9XSjD/A4m40JSPUVRIj3qCuNcG5j9qatZ3FHeMzGPlsLTKGADdSoqcbf8ap8/aPhPXcmm0vvqek7XRAnyESOh0wXMQ1bXE3PqxOH7dlxTm6LMA6blexlhm6O6Drw+CdDthUmHUF5/vyR00HbFmz7Q7JtfMfZXHXN4aNNI0jk3DF1aB1Jl944FrIy2lgerq1cfbjdiuboE6QQczZX97y9gUK9szGc12ETwdM4uOuhVwH/8vfcKc1HvfuveifDtimkJIuwGmGIyCP/o9EYNkE4aiXoMNTwPMhNR3TAZuvZZyppu7ys/82XP/7HsBpPbt1gn9WiXNgfQ37uN2V41AmQT2U4A9yfGVlelaGeQ8L9rlObHwrJyPncXtuxR+kdiuqoDgbSq2LjodVL8ig6YCRPu5eTgd0HF0WNTjZiauknYa1nEojyEftOnMyPFozxOIOUqSWYYWOb/hLyzueEm3ZWW16L5HTAQMUT0c+7qSKO8bgpGtwsfF3rKPLGm3Z375d+Czu4Gd8HzeZDmjj/HI7ZuM1cX8HwxpLHB9C0Oh3iMVtuCejeY8ui97WNXj6mYG70oOwgHZ7lRi0UdzOsgvr9tcLu3nX8FspviBhNwMWKbTF0/iDqzJerG3PA/XNOXOmE6y4m0o2SDBXPAHhA2SMdEH5psS12osdnxV7OmBQ2lH9Cp8bCSKnAwbZIPH3KvFf8jZP96ySDu3ZgA+q1XwHPe87jjz5/6hPSTU8zzvGrNbydMDGi2bi+cp6H/T4Ut2bHsVJybKtkx5Y3P6Vf+Hmv/tOG8VtORpKiKvETi8eodMBwe591K81XCVR0oUOglnJXSVmTB93pMUdNVjqwrty0rDL2bKCF+DgVEZGS0avwgy1uP3UDCu0cNs13fbTAR1lH2Q0BiyzDVW6RpLBSb8SjCTqfQqK3znDq9lQkyzAcfbeg7oibmMlcKAx0OKOt3isG1KhuMPVXOSD8e95nwubDmhZrobhGpz07VUSYXF7bzm73m3anfvbFJ6pXkwHdLt7/N1Lv2yhJneb34GRhT/t6DxF64Mwpdvm42jYz3hdc877gSklaWOBl0Lk9bkEg4YAO2/8kU3Oa48QMR0yNNWYAcI9fyEPBRhRcT4QDbvH9V2J4yoJiszCv9dL9IeyF6RKcdu7A9avWVAz3Pd9P1x/B3VtA/AtwHFG4bC4Le/ij0ZXy2g96wpstk3b7nm2WSzhGpwM1gAWPRictHC9BA1rIzLauLNK4kwHdCx5N43gLriBFRlVoyx9R955rDLL8r4GDndDmyXvrlW9HmGSWNymEXIj4LJ3cNIuXof/wjs42c7ijrAW/K6S6L1KgtxXcT9qgT1YTzjDcOwFbgbsVZLEsncq7uZ0V8P/XCtxb2pgWb6DFJwKfzmPLlt2TMf/0QtwLHdhJ3aVgPeUd8PjKnGn3/rbtwDH22VzugsiLO5243authQ4OGk/ELnJVBua83qDBicjwsVdORlreCtqZN5q+SMjZ0xYvtc64Bc+R6r9Aa27SgIVkfN5+xUyA10lwWIFyVwLchg34vG9+x6fPdFbrTqNgeDByaiwQf7gKEJG2uMoVLP9+xrkg7aDNtpsjLbVsHvwt+9QeYjvKkFcJTZufWf/G7hXSXjbb11uOzjpbdweE945OBlgcVsuKUPi8VpmnhiisGjJF3zKdYyOaazBSbswmy9KDMMhzOI2nOWG3wJuF1dYicZ2lUS5rZoxOW4bRqstBc4qCU7J/0Eg6Gp47tu13Ua0DQPPeT9qcLLNLIckc8hd+3EHZtqRVvO99cvULrGmxe0ta2fvwDE42fpGx0iouTK2damhlF2zVhq6piWU9w/HU06xnB/KNWxxB23rCkmnA8b89kUNTpqW64tuRfm4Ay3uALlwf+3b7uTmam3BituWJzKaSFq7AzqSijEdMNT/7ZsOGMf6crtKXNG5voFRSsd0/R+efJBVGe7jdj/vHJz0fJDDFuA0jcOWXLUAi71BYDv3xOe65HWVOJVRgCKJWjUYNKvEVZo+xRpxrx2xesjuedzeoPH2rvEr7jj7cYdNGfSPQfTfVdJ25WT9JPevY58luQT8kdb6Mcf9DwMfAarA57TWV/VaSOfHNLpuPZq7E+VlWW4ry+2bcEXqvOV/t8KVqg/Xh6K90C3xIp6N+50KnFUSJEsXPu4Auy2JXCGGL/Fs96BQ7TaZcvSm2m3rGquf5E3f/X/j77il1/5+G02f6G7EFyUgdLAtasT8WDvjCVZ43t0BW2VZ/9AkGJx0T5MMG3F2Je6/YVk09jlp3XV+KNuL0wlxLO73ACNa6zcA/xv4UuOGUmoP4H8CbwLeDvydUmo4MJYuaPm4PYqzrcXdgRI3rejpgCGbTPkamsc0NVw+bo9l5rK424nnyGTEdMBuLO66UK7pgC0fd3jE4dMBPV/cOD5u0+2XDfJe2QtwIuJoyOPbN8b70+sqqf9veRuU+779d71cAn3c0YOTzpWmZoTfxyufb166N2mPVd1uaqUZ0ViCDlIwgyoj6HdY7zc0sdZD4SfgBI85NVdXd7ofd8jiGtfPgAFTo62Puz+a22j3hVJKXQD8Smv9/frvZ7XWL6n//S7gJK31WfXflwN/q7W+0xnHtm1zHamR//ejb/BsvsqPX/Imdg5PcvDM0xyx4wEWcxY5E14YP5Rf7Lofuy3Nc+rzDzJvzgIwnpkEYN6cbf69aBUZMcaoWhUWzLlmGhmzdSKzZRhgZshlS4y8/EkA5h4/lFrVfiaTzZE1IVM1sbIG5ZxBrd6QRowRJjKT1KwaO8wXGTKGWJ8p2HFUtmJmcoxk1jFsjLBkLbJo2ic/zwyZPDrxch4oHMK+xWlO2HInk3WZG8zUdjT/Ni3Il6sYgJnNYObsb+/67AYAZs1pylYFLIvR+oHs1WF3x6pWbZ3UnslkMDK5piwAe5oFStV5csYwF7/8OABOXLyOfR4vceceB3PfhgOb4T/80JVsOvQUAH7n6ZvZsLTTV49mJsdwZowRY5SyVaY68RQju26pl+8r7Ie8iq9W41sHnQzAGc/cy1BllmrJrl8rb39QKmRt+X0p2gxv2MpQYTvlmV1ZenGPVtQGzOftvI4Xqzy0997cNXZE8/6rdj7EQXNPMF7JMrR+Jxdv/B+ueI+dvYP9thaBDL+c2peHC/ty5MzzvHbHIyxWDSYPuAuA4mP7U8xOsJi3T3+/bO93AnDKM7excWkGM5PhO/u93S7H396FUdlJrVbinw98lyu9M397D2O1VjtdqM5SNap8a/93AHDClnvYa+45iiMGw1aODUvDlCtzzXovU3XkfQPff/mbXPH/7rYb2Wuj/cpmnjqamdoO/mO3w3lqYg+O3PYQ+yw+0Xx2F3Mdz43uztW7HQLAaY9dhWVYlPIZMKBQW8ckowD8bLcNPDJ2IEdYv+LwJ3baSjXgA9dou0VznrHMOABbrG2Uc3bNri9nmnkwLIPRsh1BdShX3yrAImMYZOqG/bcPeAdRnPz0zeyyNEc2Y4Bpy7p1rzJXrzsRgNM3X20/aEGuXOWmAw5CDyleZ97GUcZtVOYnWXxhb1seTPTES7h1t8MYM4v8kfF1ytO78o1dTgfg1P+8iXP/4PRIecKYmpoI1fpxFPc3gR9pra+u/34aeLnWuqqUOg14pdb6U/V738U+MPg6ZxylUtnK5bKJBT/qxqt5NvvSxOEEQRBWAnvUtnDnsW/rKGw+nw1V3HF2B5wFJhy/M1rrasi9CWDaG8H8/FKMZPz8/ZLJ5uevp1o1maiWmcsNAXY3qtGJz1lVqkYOez1ha2ZHu79bOEbjG92wTAZqhr1/ROOakWl1gTKZZlc+S8ZedWVZmNTquwQadT+qVY8304w7SIZM1iBjVqlgYFgZcrksVapY1eAuo4GBmctiVKuOqw5/ImCQsaf1hQ2wNc6QdHTrMoaBYVjUzIbcQNYiX8tSydDMc75uOZWzeYxaDQPIYlFtTuxtlGXDE+fPu1UbxsiWm7LlchmqVXfXNJM1yOZzVMoVDDPTmqZoNUrBvdFXIFYWnHN/62Qby8YzWaq1GjnsMh/GomZkqboWXmUZyZTJVE0yZJnP5+wsGXY4w6xSNoxm3gzDwCCLSQ0si0wm0+yXZ6wa1XrZ53IZzGqNjAUVo1HXdlvJZ7PUalUMDKr1DrdlAJkMhuOQibxlUmnUZTaLZVYxjKzPjZZr5skih4VpZLAsi6wBtUwG08qAWXG1t9FMlpJZg2yWjGFh1CyqlomBQd4ysTJZavW6sDAha4Fp2LVcNwiHLYMlw6TRnoLq2a7SRtto+MGyZLEc7iTDngFlWWQNu0xaq4Td209kDIOcaWFiYhpZshl7INjEIGuZVI2MO4xhgWWQszJUvXPa6zOM7HxY9fZUdT9DhiGrZteDlcUyqmAY5DMmh/2X1zM9XfTlNw5TUxOh9+Io7luBU4B/U0odBdzvuPcr4PNKqRFgGDgEeKAjKQM47HXHc1zhnR1nPK0UCmOS5zWA5Hn106/8xlHclwNvU0rdhv3ZPF0pdQ7wmNb6CqXUV4GbsU2Fv9BaL/ZcSkEQBKFJW8WttTaBszyXH3Hc3wRs6rFcgiAIQgipWIAjCIIgtBDFLQiCkDJEcQuCIKQMUdyCIAgpQxS3IAhCymi7clIQBEFYWYjFLQiCkDJEcQuCIKQMUdyCIAgpI86S94HT7vCGtKOUygOXAPti7/HyOeAh4NvYu+w8AHxUa20qpf4SeCf2QRV/prX+1XLI3AuUUrsBdwNvw87Pt1nF+QVQSp0LvAsYwm7TN7KK811v29/Bbts14MOs4rpWSr0e+Aet9XFKqQOImc+wZ+Omu1It7tDDG1YJpwEvaq2PBt4BfA24APhM/ZoBvFspdQRwLPB64PeBi5ZJ3q6pv9D/BJTql1Z1fgGUUscBb8Q+aORYYG9Wf75PAnJa6zcCfw18nlWaZ6XUJ4FvAiP1S0ny6Xs2SdorVXG/GfgZgNb6DuA1yytOz/kBcJ7jdxU4EtsaA7gaeCt2OVyrtba01k8DOaXU1EAl7R3nA98Anqv/Xu35BftUqPuxN2q7EriK1Z/vR7HlzwCTQIXVm+fNwHsdv5PkM+jZ2KxUxT0JzDh+15RSK9Kt0wla63mt9ZxSagL4IfAZwNBaN+ZmzgHr8ZdD43qqUEp9CNimtb7GcXnV5tfBRmyj479jb9T2L9j72a/mfM9ju0kewd587qus0rrWWv8I+8PUIEk+g56NzUpV3FGHN6wKlFJ7AzcAl2qtv4f7IMbGgRSxDqpIAX+IvTXwL4DDgO8Cuznur7b8NngRuEZrXdZaa2AR9wu6GvP959h5Pgh7jOo72P79Bqsxzw2SvMNBz8ZmpSruW7F9ZQQc3pB6lFK7A9cCn9JaX1K/fG/dJwq23/tm7HJ4u1Iqo5R6GfYHbPvABe4SrfUxWutjtdbHAfcBHwCuXq35dXAL8F+VUoZSai9gHXD9Ks/3TloW5g4gzypu2x6S5DPo2disVPeD7/CGZZan13wa2AU4TynV8HWfDXxVKTUEPAz8UGtdU0rdDNyO/ZH96LJI2x8+DmxazfnVWl+llDoG+6SoRn6eYHXn+8vAJfX8DGG39btY3XlukKRN+55NkpAseRcEQUgZK9VVIgiCIIQgilsQBCFliOIWBEFIGaK4BUEQUoYobkEQhJQhilsQBCFliOIWBEFIGaK4BUEQUsb/B857JJVCNdUaAAAAAElFTkSuQmCC\n", + "image/png": "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NfjJT36C4uJivPbaa/jlL38Jnufxta99TT5e16309fXhK1/5Cu69915Mnz590Jf5tddew7p16+DxeLB48WJMmjRpUJe5t7cX3//+99HV1YVoNIpFixahpqYGy5cvBwBMmjQJ//Zv/wYAWLduHV5//XVwHId//ud/xqxZs/IouXMOHz6Me++9F9/85jexYMECnDlzxva9jUajWLp0KU6fPg1BEPCjH/0I5513nv3MWQGya9cu9q1vfYsxxtjRo0fZ1772tTxLlF127tzJ/vEf/5Exxlh7ezubNWsWW7p0Kdu8eTNjjLEnnniC/dd//Rfr7e1lN954I+vu7mahUIjdfPPNrKOjI5+iZ8yTTz7J/v7v/5698sorg77M7e3t7MYbb2Q9PT2submZPfTQQ4O+zC+++CJbtWoVY4yxs2fPsptuuoktWLCA7d+/nzHG2He/+122bds20QPbSwAABHVJREFU9tlnn7Fbb72VhcNh1tbWxm666SYWi8XyKbojent72YIFC9hDDz3EXnzxRcYYc3RvN27cyJYvX84YY2z79u3sO9/5jqP8C9JVsnPnTvn87wkTJqCrqwuBQCBFLPcwbdo0PPXUUwCAyspKhEIh7Nq1C3/9138NALj++uuxc+dO7N+/H5deeil8Ph9KS0tx5ZVXYt++ffkUPSOOHTuGo0eP4rrrrgOAQV/mnTt3Yvr06aioqEBtbS0eeeSRQV/mYcOGobOzEwDQ3d0Nv9+PpqYmecScKPOuXbswc+ZMFBcXo7q6GmPHjs3J27NyRXFxMdauXas6DdXJvd25cyfmzJkDALjmmmsc3++CVNytra0YNmyY/L26uhotLS15lCi7CIIAr1d608eGDRtQV1eHUCiE4mLpvPHhw4ejpaUFra2tqK6uluO5vR5WrFiBpUuXyt8He5lPnTqFvr4+/NM//RNuv/127Ny5c9CX+eabb8bp06cxZ84cLFiwAPfffz8qKyvl64OlzB6PB6WlparfnNxb5e88L53pH4lE7OefhTLkHDZIl5q/+eab2LBhA1544QXceOON8u9m5XVzPWzatAlXXHGFqR9vMJYZADo7O/Gf//mfOH36NL7xjW+oyjMYy/zqq69izJgxeP755/HJJ59g0aJF8PmSByUNxjIb4bScTstfkIrb6uUNg4Xt27djzZo1WLduHXw+H7xeL/r6+lBaWiq/kMKoHq644oo8Sp0+27ZtQ2NjI7Zt24azZ8+iuLh40Jd5+PDh+MIXvgCPx4Pzzz8f5eXlEARhUJd53759uPbaawEAkydPRjgcRkzxpiZlmY8fP6773c04ac+1tbVoaWnB5MmTEY1GwRiTrXU7FKSrxOrlDYOBnp4erFy5Es8++yz8fukFw9dcc41c5j/+8Y+YOXMmLr/8cnz00Ufo7u5Gb28v9u3bh7/6q7/Kp+hp89Of/hSvvPIKfv3rX+OrX/0q7r333kFf5muvvRbvvvsuRFFER0cHgsHgoC/zBRdcgP379wMAmpqaUF5ejgkTJmDPHukFyokyf+lLX8K2bdsQiUTQ3NyMc+fO4eKLL86n6Bnj5N7OmDEDr7/+OgBg69atuPrqqx3lVbBb3letWoU9e/bIL2+YPHlyvkXKGg0NDVi9erXqpRM//vGP8dBDDyEcDmPMmDH40Y9+hKKiIrz++ut4/vnnwXEcFixYgL/927/No+TZYfXq1Rg7diyuvfZafP/73x/UZX755ZexYcMGAMC3v/1tXHrppYO6zL29vXjggQfQ1taGWCyG73znO6ipqcHDDz8MURRx+eWX4wc/+AEA4MUXX8Rvf/tbcByH++67D9OnT8+z9PY5cOAAVqxYgaamJng8HowcORKrVq3C0qVLbd3beDyOhx56CCdOnEBxcTF+/OMfY/To0bbzL1jFTRAEQRhTkK4SgiAIwhxS3ARBEC6DFDdBEITLIMVNEAThMkhxEwRBuAxS3ARBEC6DFDdBEITLIMVNEAThMv4/yTt0sM5Fs/AAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -242,7 +223,7 @@ "## LDA model\n", "With the log-likelihood function, we can construct the probabilistic model for LDA. `doc_t` works as a placeholder to which documents in a mini-batch are set. \n", "\n", - "For ADVI, each of random variables $\\theta$ and $\\beta$, drawn from Dirichlet distributions, is transformed into unconstrained real coordinate space. To do this, by default, PyMC3 uses a centered stick-breaking transformation. Since these random variables are on a simplex, the dimension of the unconstrained coordinate space is the original dimension minus 1. For example, the dimension of $\\theta_{d}$ is the number of topics (`n_topics`) in the LDA model, thus the transformed space has dimension `(n_topics - 1)`. It shuold be noted that, in this example, we use `t_stick_breaking`, which is a numerically stable version of `stick_breaking` used by default. This is required to work ADVI for the LDA model. \n", + "For ADVI, each of random variables $\\theta$ and $\\beta$, drawn from Dirichlet distributions, is transformed into unconstrained real coordinate space. To do this, by default, PyMC3 uses an isometric logratio transformation. Since these random variables are on a simplex, the dimension of the unconstrained coordinate space is the original dimension minus 1. For example, the dimension of $\\theta_{d}$ is the number of topics (`n_topics`) in the LDA model, thus the transformed space has dimension `(n_topics - 1)`. \n", "\n", "The variational posterior on these transformed parameters is represented by a spherical Gaussian distributions (meanfield approximation). Thus, the number of variational parameters of $\\theta_{d}$, the latent variable for each document, is `2 * (n_topics - 1)` for means and standard deviations. \n", "\n", @@ -253,7 +234,16 @@ "cell_type": "code", "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ".../lib/python3.7/site-packages/pymc3/data.py:305: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n", + " self.shared = theano.shared(data[in_memory_slc])\n" + ] + } + ], "source": [ "n_topics = 10\n", "# we have sparse dataset. It's better to have dence batch so that all words accure there\n", @@ -264,11 +254,11 @@ "doc_t = shared(docs_tr.toarray()[:minibatch_size])\n", "with pm.Model() as model:\n", " theta = Dirichlet('theta', a=pm.floatX((1.0 / n_topics) * np.ones((minibatch_size, n_topics))), \n", - " shape=(minibatch_size, n_topics), transform=t_stick_breaking(1e-9),\n", + " shape=(minibatch_size, n_topics),\n", " # do not forget scaling\n", " total_size=n_samples_tr)\n", " beta = Dirichlet('beta', a=pm.floatX((1.0 / n_topics) * np.ones((n_topics, n_words))), \n", - " shape=(n_topics, n_words), transform=t_stick_breaking(1e-9))\n", + " shape=(n_topics, n_words))\n", " # Note, that we defined likelihood with scaling, so here we need no additional `total_size` kwarg\n", " doc = pm.DensityDist('doc', logp_lda_doc(beta, theta), observed=doc_t)" ] @@ -342,7 +332,7 @@ { "data": { "text/plain": [ - "OrderedDict([(theta,\n", + "OrderedDict([(theta ~ Dirichlet(a=array),\n", " {'mu': Subtensor{::, :int64:}.0,\n", " 'rho': Subtensor{::, int64::}.0})])" ] @@ -400,18 +390,46 @@ "execution_count": 10, "metadata": {}, "outputs": [ + { + "data": { + "text/html": [ + "\n", + "
\n", + " \n", + " \n", + " 100.00% [10000/10000 08:11<00:00 Average Loss = 3.0171e+06]\n", + "
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "name": "stderr", "output_type": "stream", "text": [ - "Average Loss = 2.9855e+06: 100%|██████████| 10000/10000 [06:20<00:00, 25.59it/s]\n", - "Finished [100%]: Average Loss = 2.9886e+06\n" + "Finished [100%]: Average Loss = 3.0204e+06\n" ] }, { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 10, @@ -458,14 +476,12 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYcAAAD0CAYAAABw3+qlAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvDW2N/gAAIABJREFUeJzt3XeYVNX5wPHvzM72Nruw9KW5cECqSxOkWRARFbuYKIo1hiRqSEww8IMY0yMmlqjBEGMMxogSS0SwgwQBsYHiARRFRGApy+6yvfz+mJnd2al3+szO+3mefZ6dO+feOWfKfe+p19TS0oIQQgjhzBzrDAghhIg/EhyEEEK4keAghBDCjQQHIYQQbiQ4CCGEcCPBQQghhBtLrDMQDmVllSGNx83JSaeqqi5c2Yl7yVZekDInCylzYIqKck3enpOaA2CxpMQ6C1GVbOUFKXOykDKHjwQHIYQQbiQ4CCGEcCPBQQghhBsJDkIIIdwYGq2klOoCbAWmAVnAC8Au+9MPaa2fUkotBmYCjcBtWuvNSqkS4DGgBdgOzNNaN4eaNgzlFkII4YPf4KCUSgUeAWrsm0qBpVrre5zSlAJTgHFAMfAMMAZYCizUWr+plHoYmKWU+jIMaYUQQkSQkZrDH4CHgQX2x6MApZSaha32cBswEVirtW4B9iqlLEqpInvat+z7rQbOBnSoabXWZaEVWwghhC8+g4NS6lqgTGu9RinlCA6bgUe11luVUj8DFgPlwBGnXSuBfMBkP7E7b8sLQ9p2wSEnJz2osb5llXVc+shGHr9uLH0KswLeP1GlpJixWpOnvCBlThZS5vDxV3O4DmhRSp0FjAQeBy7QWh+wP78KuB94Dsh12i8XW8Bo9rCtIgxp2wl2duDOA5XsP17L52VV5CdR17zVmkV5eXWssxFVUubkIGUOTFFRrtfnfJ4StdaTtdZTtNZTgQ+AOcBzSqmx9iRnYuuo3gBMV0qZlVK9AbPW+jDwvlJqqj3tDGB9mNKGldwLTwgh2gtmbaVbgAeUUvXAAeAmrXWFUmo9sBFbwJlnTzsfWKaUSgN2ACu11k1hSBsWVXWNAKzYtJfSC04O56GFECKhmTrCPaSDXXjvhe0HuGvNTgC2zJ8c1jzFM6l6Jwcpc3IIsVlJFt7zxOT1bRFCiOSW1MFBCCGEZ0kdHExI1UEIITxJ7uAgsUEIITxK6uAghBDCMwkOQggh3EhwEEII4Sapg4P0OQghhGfJHRxktJIQQniU5MFBCCGEJ0kdHJzVNjTx4dfHY50NIYSIC0kdHJz7HH7z2m5u+NeH7Cuv8b6DEEIkiaQODs52HaoC4ERdU4xzIoQQsSfBwUWL3N1BCCGSOziYnNqVTDKuVQghWiV3cIh1BoQQIk4ldXAQQgjhWVIHB2lJEkIIz5I7OMQ6A0IIEacsRhIppboAW4FpQCPwGNACbAfmaa2blVKLgZn252/TWm9WSpVEIm1YSu6FjFUSQggDNQelVCrwCOCYHbYUWKi1noTt4nuWUqoUmAKMA2YDD0Y4bXg4j1YykHzTl8f46phMkhNCdHxGmpX+ADwM7Lc/HgW8Zf9/NXAWMBFYq7Vu0VrvBSxKqaIIpg2L5mb3ekKLj6rD91Zu4+LlW8L18kIIEbd8Nisppa4FyrTWa5RSC+ybTVprxym0EsgH8oAjTrs6tkcqbZlzPnNy0rFYUnyX1ANLelvxG+xRITc3A6s1y+d+/p6Pdykp5oQvQ6CkzMlByhw+/vocrgNalFJnASOBx4EuTs/nAuVAhf1/1+3NEUrbTlVVnZ9ieFZdXd/6/2dlJ+zHqqW8PNXnfuXl1UG9XrywWrMSvgyBkjInBylzYIqKcr0+57NZSWs9WWs9RWs9FfgAmAOsVkpNtSeZAawHNgDTlVJmpVRvwKy1Pgy8H6G0EeOrWUkIIZKFodFKLuYDy5RSacAOYKXWukkptR7YiC3gzItw2rCQeQ5CCOGZqaUDXCqXlVUGVYiXdxxi0Uufttv22LdPYUg3z1WtMfesA2DL/MnBvFzckKp3cpAyJ4cQm5W8XiIn9SS4kqLsWGdBCCHiUlIHh9z0YFrVhBCi40vq4CCEEMKzpA4O0h8thBCeJXVwSPyueCGEiIykDg4edYDRW0IIEaqkDg6ehvFeu+IDNn1xLAa5EUKI+JHUwcGbP637HIB95TXc++ZnNEttQgiRZJI6OFgzfa+h9NMXdrBi69fstq+7JIQQySKpg0NGqueVXB0VBakxCCGSVVIHB38kNgghkpUEBw9aXAa5ygJ9QohkI8HBA0eNwTVItE/TwvSHNvLctm+ilCshhIgeCQ4euIaEL4+63ze6uQWOVjfwq1d2RSdTQggRRRIcPNh7tJqP9le01iAWvLiDJpf7TUt3hBCiI5Pg4EFTC1z/5AfttnkLBtIdIYToiCQ4+OAcEDrCTZGEEMIoCQ4GucUGCRZCiA5MgoMvLR7/FUKIDs/vrdCUUinAMkABTcBcIB94AXAM1XlIa/2UUmoxMBNoBG7TWm9WSpUAj2E7v24H5mmtm0NNG5bSB8C1WUmChRCiIzNSczgfQGt9GvB/wFKgFFiqtZ5q/3tKKVUKTAHGAbOBB+37LwUWaq0nYeu/nRWmtBF3or6x9X+vrUoyQ04I0QH5rTlorf+jlHrR/rAPcBAYBSil1CxstYfbgInAWq11C7BXKWVRShXZ075l3381cDagQ02rtS4LufR+HKqqb/1fuhiEEMnEb3AA0Fo3KqX+DlwEXAr0BB7VWm9VSv0MWAyUA0ecdqvE1vxksp/YnbflhSFta3DIyUnHYvG8iF64fHWiofV/qzWLuoYmwFa9sVqzIvra4ZaSYk64PIdKypwcpMzhYyg4AGitr1FK/QTYBEzQWn9tf2oVcD/wHJDrtEsutoDR7GFbRRjStqqqqjNajKBdtbytm6O8vJpae3BwPA7Eq7qMsX2s5GX4XjI8UqzWrIDzHKjjNQ2c9eeN3HvRECb27xTR1zIiGmWON1Lm5BBKmYuKcr0+57fPQSl1tVJqgf1hNbYT+LNKqbH2bWcCW4ENwHSllFkp1Rswa60PA+8rpaba084A1ocpbViM7W0N16EM2X+8lgUv7uBnL34a1deNtl32e2D8Y8u+GOdECBEMIx3SzwKnKKXWAWuw9S/cAvxRKfUmcBpwt9Z6K7aT+UbgGWCeff/5wM+VUhuBNGBlmNKGxSm98kPav7G5hQ+/Pm44fX2TrXK0v6I2pNcN1Za9x5h6/waq6hr9Jw6Co58+El01x6rreX77gQgcWQjhYKRD+gRwuYenJnhIuwRY4rJtJ7bRRmFNGy5zx/Xmkf99GfB+e462VeNu+NeHbJk/2dB+ZvtZ03Vo7PPbDtAlN41T+xYGnJdg/OV/X3KivoldZSdCDpDRdsfzn/DB1xWMLrbSIz8j1tkRokMy3OfQUaWYAx+K+uPnPubN3Uf8J/TA8XIu6/jxi7U7AQwHmURUVddIbWMznbPTQjrOkRO2UWQNTc1+UopYOv8vm+jXKYv7LhkW66yIIMgMaWBIj7yA0gcbGCCyzS3B8HXPinC7ZPkWZjz8TsjHMcnckoRwoLKOjV8ci3U2RJAkOACPXTM6aq/13le2/on9x2vZ8PnRqL2uq2BOrw1NzW5Ll/vl1Hx2tLrBR8LAxUuAFaIjkuAAWLNCa+aA9rOpm5pbeObD/TR6aPa4a83O1v9vW7Xd8PG/OlZDZa3nzuO6xmbK7SfeQ5V1NAZwAg9kct+EP77N91Z+ZCitXNwLkdgkOITJVf94j+3fVPD6zjJWbN3Hb17dzfg/vs22/RU8uH5PyEt+X7x8C1f9Y6vH52b//V2mPbSRsqo6Zv5lE3966/OQXsuXd78yPjILInx1L1WHdsqrG9hzJLnG+IvISfoOaQezyb2TOBD7ymuZu+IDt+3X2W8a1D0/g2kDiwwf77WdZXTPy+Dkbm2TVPZXeJ7st6/cNiz2uW224Z1vf36E+aefZPi1IsGEY1RWJI6dGGoamrjr5Z3MP70/nXPSI/56sx/fypET9R1iUMNH+yv49GAVl5/SI9ZZSVpSc7Db9MPI/qB+/couznjwf37TOWZe//SFHVzzz/fdnj9UWceGPUd56ZODbs85zsOGglyE230cRz98op6yqjpWbA3/ZLh4rzis/fQQr+4s46ENX0Tl9RyjuDqC65/8gN+/vjvW2UhqEhxibMw96xhzz7rWx3et2Yk+WNX62HmZDoCZf9nEbc9uZ/FqDcDXx2tan/uLfb7G/uO1LPzvDhqamrn8b++2O364vbnrMGPuWdeuKevWZ7e1juj6+ngt5z6yiXvfbHv+X+997XacQHiKa89t+4afv6xDOq4vNQ1NvLu3bdWWlpYWnv5gv9vnI0RHIc1KceYVXcYrTgvO/ua13fz3Y/dagsOi/3pehmPNp2XsK69tnaz38YFKhnTLbe2sdpxfnZt9dh8+QUVtA4O75pKZalvI8Muj1XTKTiMnve2rsqusigFFOewrr+HHz38CwBPv7uPWKf0B+N+eY/xvj/chjPe88RmzS3t6fd7h4wOVDO6a0zpx0OFEve2E7DwM9+61tluLLD5HtW47Vl1PbkYqliDmsjj89IVPKKuqp3N2Gq/vOswLN47ljd1HSDGZ+P3ru9l7rMZvE15VXRO1DU1kpEZ2cchwOl7TQG6Gxe29F4Gprm8iKy1xPndnEhzinK/AsOCFHWz7ptLr8x8faHvuWqcmqn9eP5Zq+wnW8dvftr+itX/kzIGd+dV5g/nnu/u4b90eVJccnri6tHX/bz3+HmcNLOLVne1XTR9zzzq+Ncr/SR/grd1HGNvH2hqEGptb+PUrO5l8UmemlHTi9Ac2UFXXxJwxveiZn8EFw7q3nuTL7Eupt7TA3zbtdeuDWL3jIL95ZTfVDU1cOKwbPzlrgD19Cz94djuzS3tSmJVKdX0To4p9r6312s72y3h9cbSapW981vr47c+PUNfYxJ3TBno9xuu7DrOzrIpTeubz308OemzC3Hushie37uNHZ5SQYjaxZschHnx7D6uuH0uK2cS+8hoWvfQpf7p4qKEFG+sbm4NeGuXIiXrOefgdbhzfm5sm9AVsi0UO75FHl9zI9J00NrfQ2NQc8QC6ePWnWDNTuX2q94D+8YFKCjJTQ5p9X1XXyHv7jjP/Px/zy5mDGNw1l+KCzKCPFwsSHBKY68nZqB/++0MOVto6t7/zb9vQ1MzUthbG13Ye5qZ/fciH+ysA0IeqmPPEe4Zee8VWY01GP3ruY07qnEVZVT3DuufRIz+D57cf5PntB7lxfG+q6mzB63H7wn3vfFnOt0f1ZKlT89RvX93F+19XuB37t6/aAgPAf7Yd4D/bDrDrF+fw2ZFq3vniGO84Tcxa/4PT+Pf7+zla3cB5Q7ty5d+3cve5gyjISvXYme7an7OvvJZ95Qe4enSxzx+/LZ1t4MCYe9bx72tH069T2zLLd764A32oiguHdUd1zeEXa3dS19jMsep6ZjyyqTXdG7sOc1q/QjJSU1prc4er6lj1Ufu1pub88z0+O1ztt3P6rd1HGNo9lyMn6qmub2Jkr3wO2/su3tx9hJsm9KWxuYUFL+4A4JXvjsea2Rac3ttXTlF2esgnvnlPf8R7+4675ddxwXH71JNobG7h/nWfc+3YYgo8DD+vbWiivtH3rPmXPjkEwMY9x/j33Lb5TVV1jWSnpWAymVovpILt2H9j12HueP4Thna3DSb5mb12v2X+ZJpbWnhVl3GWKgqpVtbc0sKf3vqcy0b2iNgS5RIckpAjMDiraWj/o3IEBocdTv0g4fLZYVuT14Y97ScDLtu41y3tG7sO88au9lfxngLDRX/d3Nrs5GzAopc95uF3r+3mBXvt7J/2TvOFL3lfMddbv8aOg5Ucq2lg61flzB3Xm+3fVLQ2dXly+WPvMmdMMY9v+YoF0wagD9ne308OVvLMR/ups5/kPncZmmoxm5nxyCYKs1JZc8t4ahua+O7Kbe2GsB6uqmt9b5/96BvOVkXc8fwnmIAJ/Qr59uhefPxNBSaTiR8993G74/s7IV7+t3d58LJhpFtS6JGfwc1PfeS2X3lNA5u/bAvANzz5AWcM7My9b37emu/q+iaWb9rLmQM7M7hrLu/tsw2RPl7TwMoP97d7zRVbv+b2qScx/t71rY8XnFVCn8IsctIsPPrOl4zvV8ivX2l7vzfcOpHDJ2zNgWkW24WP8+z8PUerW5v6HDWl707sy9xxvVvT7CuvoZe1LejpQ1Vc9Y/3+OuVIxneI4+lb3zGyF75nDGgc7v8OvqmPjnQvlb/g2e2MbhrDss3fUVVXSMXj2gbibV6x0EKs9IY0SOPbyrqsJhNrQG3qbmF5pYWUlPMtLS0YDKZ2HmoihVbv+aDryt4bt5pPj+zYJlCHX8fD8rKKkMqhGM99Eh23AoRK+kWc2uwAXjllvFMe2ijoX033j6Jf767jwfW7/GbNis1hZqGpoBHkd1xZgm/e833yKQ+BZl8eazGZxpnvz5vMAte3MEpPfN48LLh/PWdvfz1HfeLDoCZJ3fhv/YahbMBRdnUNTZzw/jeDOuex5LVuvWiadHZA1vXQ3PYMn8yr+gy7rTXsnyZ2L+QC4d1Y1DXXNItZqb92f3z2Hj7JCxmE7ev2s7bnx9l0fSB/GLNTjJTzSyZMYif2Pv79M+nU1Fh/L1xVlSU67X6IsEBCQ5CiMR17fg+zJvQJ6h9fQUHGcoqhBAJ7LGNgd9ywAgJDi7yM6QbRgghJDg4efa6MaycOyZix3eMXhBCiHgnwcFJcUEm1iz/Y8iD5W9MvRBCxAsJDlEUzF3nhBAiFvw2sCulUoBlgAKagLnYVl94DNvaZ9uBeVrrZqXUYmAm0AjcprXerJQqiUTaMJVfCCGEB0ZqDucDaK1PA/4PWGr/W6i1noQtUMxSSpUCU4BxwGzgQfv+kUorhBAiQvwGB631f4Cb7A/7AAeBUcBb9m2rgbOAicBarXWL1novYFFKFUUwbeLpAHNKhBDJwdC4Ta11o1Lq78BFwKXAeVprx5muEsgH8oAjTrs5tpsilLZ1cZ+cnHQsluAX7EpJMUdsfRJn6QYWTBNCiEBF4vxleFC/1voapdRPgE2A8ypbuUA5UGH/33V7c4TStqqq8nyHNKMcM6SN6F2Qyd4ApvE7q6ttCGo/IYTwxej5y1VRkffh9X6blZRSVyulFtgfVmM7gb+rlJpq3zYDWA9sAKYrpcxKqd6AWWt9GHg/QmljoiAz+Kt/aVQSQiQKIzWHZ4G/KaXWAanAbcAOYJlSKs3+/0qtdZNSaj2wEVvQmWfff36E0gohhIgQWXgP92YlXwvwjeiR57actVFzxxXzt01fBbWvEEJ4E+y9J2ThvTjRAeJwwhnbW2alCxEMCQ6iQ5N4LERwJDhEkZyohBCJQoJDgEK47asQQiQMCQ5CCCHcSHCIIumQFkIYZYnxKs4SHAIkJ3ghRDTEuglbgoMQQgg3EhwMunh49zAcRaodQojEIMHBoBmDu8Q6C0KIBDaxf2FA6WPdhC3BIYouGdEj1lkQQiSIWLczSHCIoh75GbHOghBCGCLBQQgh4lCs59tKcDAo1lU8IYSIJgkOAXIee/y7C06OXUaEECKCJDiE4PQBnWOdBSGEiAgJDkIIIdxIcBBCiDgky2cIIYSIOxZfTyqlUoHlQF8gHbgb2Ae8AOyyJ3tIa/2UUmoxMBNoBG7TWm9WSpUAj2Eb7LMdmKe1bg41bbgKb1SXnLTW/2M9a1EIIaLBX83hKuCI1noSMAN4ACgFlmqtp9r/nlJKlQJTgHHAbOBB+/5LgYX2/U3ArDCljar/3nxqzMccCyGSS6wvRH3WHICngZVOjxuBUYBSSs3CVnu4DZgIrNVatwB7lVIWpVSRPe1b9n1XA2cDOtS0Wuuy0IothBDxLdaNFD6Dg9a6CkAplYstSCzE1rz0qNZ6q1LqZ8BioBw44rRrJZAPmOwndudteWFI2y445OSkY7GkGCmvRykpZqzWLK/PW61Z5ByvA8BiMbfbHohA04vQOX9eQsRSoOcoswmaDKaNxLnFX80BpVQxsAr4s9Z6hVLKqrUutz+9CrgfeA7IddotF1vAaPawrSIMadupqqrzVwyfrNYsysurvT5fXl5NVWUtAI2Nze22ByLQ9CJ0DY3N/hMJEQWNjUZP9TaBNCsFe24pKsr1+pzPyyqlVFdgLfATrfVy++Y1Sqmx9v/PBLYCG4DpSimzUqo3YNZaHwbeV0pNtaedAawPU1ohhBAR5K/mcCdQACxSSi2yb/sh8EelVD1wALhJa12hlFoPbMQWcObZ084Hliml0oAdwEqtdVMY0kZdrNv/RHBkIIEQwfHX53ArcKuHpyZ4SLsEWOKybSe20UZhTRtLsZ6YIoRIDrE+10hvnRBCCDcSHIQQQriR4CCEEMKNBAchhBBuJDgIIYRwI8FBdGihDkHulJ3mP5EQERDrtZUkOAQo1h+YEEJEg9/lM5LZdaf25nhNAyCTqYQQyUWCgw/XjCkmKy34Bf1E4pOLApGspFnJh1jPUBQiEd06pX+ssyDCQIKDQdLVkJzkcw9M74JMrhrdK9bZ6BBifXEqwSFAsf7AYqHYmhHrLAQtCT8uIcJCgoMQQgg3EhyEX9K0IkTykeAghBBxKNZzqiQ4CCHCpiXWZzQRNhIchF+J3Kkb6qkqN13muYjYiPXgF5kE50MinxTDyRTrb2kMnNavkPF9CyjMTuPOF3fEOjsiCcW6EiY1ByE8MJngitKepFvkJxKI4oLMWGdBhInPmoNSKhVYDvQF0oG7gU+Ax7DV2LcD87TWzUqpxcBMoBG4TWu9WSlVEom04St+4GIdzYWIZ9bM1FhnQYSJv8uiq4AjWutJwAzgAWApsNC+zQTMUkqVAlOAccBs4EH7/pFKG3XJ17AiQD73QMn71XH4Cw5PA4ucHjcCo4C37I9XA2cBE4G1WusWrfVewKKUKopgWiEMG9ItN9ZZSB5J2D8VKbF+K302K2mtqwCUUrnASmAh8AettaNxpRLIB/KAI067OrabIpS2zDmfOTnpWCzBjypJSTFjtWa5bc/PzyLTviprdnktABanNmhP+/gSaPp4kWJO3B98qsXM3NP6Me/J9wPaLyczFas1i+ycqgjlrGNKS01J2O95pIVyjvInEu+539FKSqliYBXwZ631CqXU75yezgXKgQr7/67bmyOUtp2qqjp/xfDJas2ivLzabfvx49XUpaa0e42mprZsetrHl0DTx4um5sTtaGlsbKamOvDvR/+CTMrLq0P+biWb+vrGhP2eR1pjY1PEjh3se15U5L1W7bNZSSnVFVgL/ERrvdy++X2l1FT7/zOA9cAGYLpSyqyU6g2YtdaHI5hWCCFEBPmrOdwJFACLlFKOvodbgfuUUmnADmCl1rpJKbUe2Igt4Myzp50PLItAWiGEEBHkr8/hVmzBwNUUD2mXAEtctu2MRFohjLI1iCVun4kQsSIzfMLMYu+8vetc5fH5H59REs3sCCFEUCQ4hOiGU3u3e/zSzeNYdf0YZgzu6jF997z0aGRLiJhI3KEL8SfWE24lOITo5tP6tntckJVGL2vklhCYclKniB1buIv1D1SIWJHgkGB+P+vkqL9m4rfYB36GT/wyCxEaCQ5RFuqsx2RcITV0gb9nUmEQyU6CQ4BCbWYwJeA1aaKfKEOJpxKLAyNvV/jE+rsnwcGgePjS52fI7TeEENEhwcGgeLh6fnXeBABG9MijU3ZajHMjhOjIJDgEKOSqXhiqII9eOZKXv3Nq6+O544pDP6gP8VBrihUZrSTiXaTuoSHBoQMw+uVYdsUIn89/e1SvDlcjCTSwnTO4S0TyIUSkvHzrpIgcV4JDB2Fkct3IXvk+n0+zmCjwEGgi0TE2tSQ68zUCvfDvkmN7H5O5tiQSS6Qu6CQ4eBDJ+wZH6qRz6YgeYTlOtEZIRLO5Rk70QgROgkOQhnXPi3UWhBAiYmRsZBC2zJ8c6yxEVSLOzRAi0RmpXTsPTAk3qTlEWULWOCQ2BMV1UcZkIIO7oiuSA0gkOERZboYlIiuzBvqj/OHpJxlOm1yxwfWdDO50N3dcMSN7+h4A4MtlI8PThyQSl8yQFlHVu8C2YmyLhzqrt+9irL+kkfT7C6K/kKERM2RIrYgxCQ5h9LdvjTSULpYTq1LM3s/0HaVJ4MyBnQ2nVV1zXLa4vj+xiYyJGpBjne3rXZbQF8GT4OBDoCfLoV76E07xM7/A1RWnJE6Twn2XDGXdD04LeL9InvwuHNYtcgePklifZBNNaoq8Y+FmaLSSUmoc8Fut9VSlVCnwArDL/vRDWuunlFKLgZlAI3Cb1nqzUqoEeAzbeXY7ME9r3Rxq2rCU3AdPX7MBRdmkW8zccGqfgI/3yOXDA0p/+9STeOr9/QG/TiyM71sY6yx0TIladTBgbG8rm/eWxzobUZGbbqGyrjGofUs6Z7PjYFWYc2Sc35qDUuoO4FEgw76pFFiqtZ5q/3vKHjCmAOOA2cCD9rRLgYVa60nYzrmzwpQ2ojzVGHLSLbx960TG9S0I+Hgmkymg+zCkmE2RG4XgpzrkaQJgIg9l9TTjO1p8NeH5E8KucS/emi+funZUUPsZGdIeSoxfePbA4HcOAyPNSp8BFzs9HgXMVEqtU0r9VSmVC0wE1mqtW7TWewGLUqrInvYt+36rgbPClDYq4uH3+fdvn+L1uQFF2a3/d8sNzwioX5832G1btC9ifzC5X9iOdee0ASEeIfhTWWlxPjeN78Ok/oHXruLhuycCk5WaEtbjZYb5eIHy26yktX5GKdXXadNm4FGt9Val1M+AxUA5cMQpTSWQD5i01i0u2/LCkLbMOY85OelYLMG/kSkpZqzWrNbHjpNhfn4WmWnGj+t8DF/bzV4uC68Y3YvM1BSs1izM9kyc1COfgqxUjlU3uB3ntJLO7Co7QWZmGpef2ocvKup49O09PvNntrfNZma610wy0lMZ1Nv9ROYtv57KZlSqjy/+haOLuW+d93L4k52T0fp/r6557Cqv9Zo2L6/9/b7T020/iczMNKzWLLKzgwu6GempFBZk8+NzB/PAG7tZ//nRgPbPzc3wnyioMfJ3AAAT/ElEQVQOpaVZ/H4nUkP4rfoTzJ0Sc3ODu+e7azlHFOez0eVzds6Pr++8J3l5/r8DVmuW2/krXIKZIb1Ka+1oMFwF3A88B+Q6pcnFFjCaPWyrCEPadqqq6oIoRhurNYvy8urWx47RROXHq6kL4AN1PgbAG9+b4HH7wKJs9h93P2H9aEr/1vTN9kxUVtTwr2tGcfREg9tx6uxtmTU19Rw/XsNIt5E37vlrbrIdt7a2we352jr31wBoaLR9NKN7W3nXpa3YU3ojGhqavD5XUVET1DEdqqra3tvy8mpOnPD+/aioqOFv3xrJ3BUfAFBXZ3tfamsb/O7ri/N7OXtEd/70+u6A9q+qDO07HSv19Y1+vxMNjd4/+1B5GqLtT2VlcN8313I6fife8uPrO+9JRYX3ixrnPLievwJRVJTr9blgRiutUUqNtf9/JrAV2ABMV0qZlVK9AbPW+jDwvlJqqj3tDGB9mNJGVKDXHg9cOozHPAxjzUm3kJPuHn/vOncQf73S2LBXgMKsNEqcmpCizRGo+hWG7+rEHEcdrt5GmYWLJZgOhBi9PWcNjHyrbbz1OURSsN/zLjmxXzo/mJrDLcADSql64ABwk9a6Qim1HtiILeDMs6edDyxTSqUBO4CVWuumMKSNK+P6BNZJnZmawvAeeaguOVTXN/KVj2aPeNBs/zWHs5N05pCuvL4r4nE+YcVP6AxOj7x09lckZu0nnLrmplNe415L92fSSZ1iHkQNBQet9RfAqfb/3wMmeEizBFjism0nttFGYU3bUTxxdSkAY+5Z5/bcT88s4d63Po/YXZ4C4agahzL6xlVako1L75SdxpET9YbTh6NmteS8k1ny4ichHycY/547hol/ejtqrxfKxFK5259nMgkuTk0d0JnnbhiLJcX7RzShn63GMsK+hk9pcfBr+TjLz2h/zdDH3pw0sMh3n0a4hHvo7KAu7fN9XQAL4gXTwelJdgADG2wvHPprFsbgrn6O86yve6LMn2p8Xa9o+csVI/jjRUPDftxEvgSS4ODBPRcOYfJJnciI4E1/wuHUvoVsvH0SQ7rZOpVSnQLJCzeO9bhPSxCV1Yn9C3lyzijOPTk66/0Ecz72NZ+hc077EUdnlHhfXqOn1TZyxbE44oR+wU3yi4NbjQfFx7WIIUby3Sk7OrXhogDa7U/plc9pQQw5dhbKnJrxQcyfirT4PvvFyNg+Bdxz4ZCwXTX6k2ExM2dMcVD7euvs7JaXwZvfd2v982mAl5pBZmoKJUXZUXs/gqnmO++Savb+tT7Lz7pLFw3rxkOXDWeafTqNxWziliDW63Etgq93zlOevL3V/QqzmDOmV8D5MWp+AKv1euSScW81iLG9raG9ju+XBeA7p/XljjNLwvo6voQ+p6ZNPNQ4JDjEgfW3TuT7YZr49fS1o3nmujEAZKe5dyl5a7J5+trRrSdEZ7dO6c/0Qf5rDJmp8fNVGuWheW2KfRTOzCFdfe5rMpkY3dsacCA8qXPwI7mKC9zH2ZtdPifHYoI9rRl8f3L/oF/Ln4Kstqvt527wXPv0xTnXvzh3EE/O8Tz7eFaU17/y97kH69HZI1ov0DyNTDTKU39erGfJx88vWoRF305ZrctyB7qfJ1eN7uW1I/o8px/cW98PfPG9cPnxGe2vDk0mEw9fPpz/3DAmanl45PIR5KR771fw1QY/qpeHq2iXt9zbZ3r3uYMM5S8YPfIDn4jnnO1zBnehuCCTR64YzhNXlYYvY0GIVBPxiJ75vHTzOB6dPcLj80bvR/8zD7WOnkG8/+EkwUEEbWj3tgk0gV5p++p0DuRQK+aUctnI7m7bRxVb6ZnvP0ga/fH6k5+ZyqCu3icU+RpY4Gm9Lue34OHLh3u9g+D0OLvvg6dRVqW9rB6WRnf31LWjfAZYIy4tbWtyC+eF9y98BOGCrLTWQSGu7p45iIFOc5S+N8m9hWB4jzy3fjEI32CIYElw6OCevS56V8++jA6gjTktgF7RAUU5hn5EN060/SiHdmt/ks010BTgrVYVCNe+oX5+jtnL2hbYYnkFeee0AVwzNoD+MAPnswwvqw7075RNjoem0EAUu0zU9NZ/9d+bxvHgpcMotma0e6+9OX2A8XuEOOuSm87NTn1WAb2XMSbBoYPz1J7tylvTxB9mDQn59QcWZTPz5C7cf8mwkI/larCBq1GHcf0K2TJ/Mtas9iNKUg0EojOCPDE4u3tm23tc0jmbFV7a4h3COackFBcN7x7QidFIrmOxoJwJ6Ow0tLdLbjpj+xTw7PVjw1Z79Pa64RDwUOgwkOCQZBxDWXPsX7bzh3T12jQxomfoy0o8eNlwlswY5HMJCdd5CEY9cGlbwAnk7m+x0D0vgxduHMu5J3fhgUuHBbykRqLM0zLaEuKt8/Y3F5wc8Gd5cjfPzXmueXFMOg2G0U9r4dkDPC6l44vrvCLwXqZokuCQpIZ2z+OXMwfx4wgP9YvU9a/qkkNeRlst4EdnRG/IYrC65WXw8xmDInevjjhgdGb3+L4FLJo+kBtcJiQO6ZbLb84/2W/fQ0nntnb8ZVd47gx2Fcr7bjQ4zxrWnSEBrNX14zNK+L9zlNv281xGV8ViLTIJDkns7EFdQqriu35d771oCL85fzCLprfdpCRaX+qgFrcLwfc9dCx62hYKx0Q8CH+QnT6o/bDlmyf0Cct7aPQIJpOJC4Z2a9ce78zoMNqRPfNIi/PJqr5cfkoPj0vkOPrRHr58ONMHFbWrxUdrZGDivqsi7kzs34kzBxZxwdBurW2kzrFhy/zJrRO+LCkmTjHQbHXT+LbbsgYztNKTXgWBH8dxY6UHLx3GI1cMZ3A396awk7vlBjVhzpv7Lh7GnDG96BqmGzk5u3vmYB66rO32tTeM78PG2ycFdayHnW6D62twwKvfHc8r3x1v6JjOtUJv1v/gtHZlcJWoayZtuHVi6/+jiq3cPXNw68rIAFlR6n8IbWiA6JC652VwvLaKFA8/9C3zJ/OrV3ay6qMDPo/h7Ye5YNoAhvXIo7RXPvdfOpzq+kZ+8Mz2cGTbME+TA/1ZfuVIahqa2k0Si7S+nbIiOuEtXEYVGxuJlu9leYnvTuxLnYd7ITg8OWcUJUXZbgtUOo96ykpN4XiT7f4mpb3yeW/fccwmU1zcitsxQdSxvEb/Tll8fsT9/gtPXF1KZW2jx5pQU3P0I50EB+HmT5cM5YN9x8n10FFmlKPj2/XHmZeRyrdG2caip1tMpFvan2xf/e54GmPwQ/AnIzXF6xDMcDhbFTGqOJ9fvxrYTYH8eeHGsZy/bHNIx+gVQI0tmFFWc8f5XgjR071MXL9Xj145kg2fHyXdYqabvTmuhRbOH9KVnYeq+E6QNbq0FBP1TaF9H0cXW1kwbQDn2FcaeOSKEUz780a3dMrHwIwQsxAUaVYSbgqz0jgjxJu+tLTeA8L/ycLitHy369XlhcOdlllI1HYCA3553mAuHtEj7MftZuBWk56WG3GWn5nKlvmTDb1etMbxu34V+hZm8e3RtosO529cRmoKPzt7oNdaiy/zTz8p5FFiJpMJk8nExcO7tzYHBbMMf3MMLpgkOIiIcHyVjVxH/uq8wR63F2alUuRh5igEdzvIZNEtAn0URsViPL6rUL4Zjk751+dNYHZpz9btsW6dao7B912alZLMnDHF3LVmJ11yg287d7S7+1poLJCTd3eXq1vHDGnn4YqA30H0a285lVi3SA2yT8wbEuZx6kaLNaRbLt3y0jkQwj2oJ/UvZGfZiaD3jwYjfQnB3BfkH1eXsvnLYyE1qUZCk/cumYiJr3dARNz5Q7tx9cT+Qd+QHOCGU3vTIy/d4yquDq01hyB6BHMzLDx8+XCfbbCeRLOz2JsJ/Qp58aZxQY8wevGmcVTWNQa0z/cm9eOB9Xv8putdkMneYzV+0y2NwE1vEkVJ52z3i5I4cPqATmz7piKqr2koOCilxgG/1VpPVUqVAI9h+/1vB+ZprZuVUouBmUAjcJvWenOk0oap7CJIqSlmZg1zX+zOWVufQ3Cv4TwC5rkbxnKwso4lL+vgDhZloQw97ZqbHvD+14wtZlRxPnNXfOAz3cKzB3LTUx8yMgwz31WXHPShqtbHGRYztT5GHAXjvkuGog9W+U8YZU9cVUrnAG4kFA5Xje7FfevaLgD6FWax52jwF3hG+A0OSqk7gKsBRz1zKbBQa/2mUuphYJZS6kts938eBxQDzwBjIphWxLkBRdnsOFgVlpUle+RnuM1xSKQFzKLB0ck5pFsuR6rb36v6spE9KOmc1TqKZ2L/TiG/Xt/CzHbBIRLG9y1kfF/Pd2czOnw2EoysMOvPQ5cNN7Too4Pr7+ivV47kcAD3JA+Gkdx9BlwM/MP+eBTwlv3/1cDZgAbWaq1bgL1KKYtSqihSabXWZcEXWUTD/ZcM47MjJyIyc3nV9WMMraQZadeNK2b5pq+C3n9Y91y2fVMZ1L5zxvRqN8SylzWTJ64upX+nLBa99Gm7tM53Q3vllvHkZ4bemjzj5K6s+TQ2P8NV148xNAor3H593mCOGDwhn9Irn/f3Hff6fCCrFHuSm2GJeL+I36NrrZ9RSvV12mSyn6wBKoF8IA844pTGsT1SaSU4BOC6ccVYo9wen5+ZSqmnm9h0ILdM7BdScPjzZcOpbQiuKcbT5DgjfTTOq9L2LbQF2POHBH5Xtp4xODk7RPPCwDYU2zZr5ywffWyu7r1oCAcqgh8UEA+CCT3O3+ZcoByosP/vuj1SadvJyUnHYgl+CF1KihmrNfQ1++PVgvPaL70dj+XNSDWT6idfZnstJC8vM+D8eyuz67Zg35dIv5/Z2bYmnNTUFL+vlWqfrGc2m3ymtVqz2PWLcwLOy7ofTaG7042UrNas1maP/PxMskK8J4M3WxacQWqKmWwfzTEpKWbSUm3PZ2WleS2/0c/r6ZtOZfXHB+jaObCmJCvQM8z3YXrjh5NJs5ix5rYPzJH6PQfzKb6vlJqqtX4TmAG8AewGfqeU+gPQCzBrrQ8rpSKS1jVDVVWhRWirNSuk0TuJJh7L+/q8CZjAZ76a7eP5KipqKA9who63MrtuC/Z9ifT7eeKE7Tve0NDk97VuPrU35VX1TCrpFNZ8/fD0kxjUJYfMlpZ2xy0vr24dunz8eA31EZxJ3gCU13hv2rFas6irt432qq6u91p+o+9L90wL143uFRe/lxwT0NTslpdQfs9FRT7uXhjE8eYDy5RSacAOYKXWukkptR7YiG1i3bwIpxUdjJGb7jhEYr2cif0Lwz7aJpwcC//NMHBb0F7WTO6/dBhZaRbqq8PXaXml06SwRBAP6yolMkPBQWv9BXCq/f+d2EYQuaZZAixx2RaRtEKE271xPra/e16G4SUsYqFfpyzb6LRYZ0SEjUyCE0npgqFd0YfiexZwIrnvkmHog1URXZxQRJcEB5GUFk13v/uWCJ41M5VxfQtinQ0RRhIchAjB1JJOAS93IUQikOAgRAh+P2uI/0QdlOsSGomgT0EmXxpYX0pIcBBCBGn5lSNpaI7fEV6eLJs9wtDig0Lu5yASyHn2mbz5Bu4vLCIvzWIO6parkTahn209Jk+rqxZkpTGip++bGwmb+PtkhfDihvG9uWZsscd77ArhcM7gLkzsX+jzfiPCP3n3RMIwmUykWWQkvfBPAkPo5BJMCCGEGwkOQggh3EhwEEII4UaCgxBCCDcSHIQQQriR4CCEEMKNBAchhBBuTI47OAkhhBAOUnMQQgjhRoKDEEIINxIchBBCuEnaBUiUUmbgz8AIoA64QWu9O7a5Co1SKhVYDvQF0oG7gU+Ax4AWYDswT2vdrJRaDMwEGoHbtNablVIlntJGuRgBU0p1AbYC07CV5zE6cHkBlFILgAuANGzf47fowOW2f7f/ju273QTcSAf+rJVS44Dfaq2nest7IOX0lNZfHpK55nAhkKG1Hg/8FLgnxvkJh6uAI1rrScAM4AFgKbDQvs0EzFJKlQJTgHHAbOBB+/5uaaOc/4DZTxqPAI5F+jt0eQGUUlOBCcBp2MpVTMcv97mARWs9AbgL+CUdtMxKqTuAR4EM+6aQyukjrU/JHBwmAi8DaK3fAUbHNjth8TSwyOlxIzAK21UlwGrgLGxlX6u1btFa7wUsSqkiL2nj3R+Ah4H99scdvbwA04FtwCrgBeBFOn65d2LLvxnIAxrouGX+DLjY6XGo5fSW1qdkDg55wHGnx01KqYRuZtNaV2mtK5VSucBKYCFg0lo7xitXAvm4l92x3VPauKWUuhYo01qvcdrcYcvrpDO2i5nLgO8A/wTMHbzcVdialD4FlgH30UE/a631M9iCn0Oo5fSW1qdkDg4VQK7TY7PWOuHvFK+UKgbeAP6htV4BOLer5gLluJfdsd1T2nh2HTBNKfUmMBJ4HOji9HxHK6/DEWCN1rpea62BWtr/2DtiuW/HVuaB2PoJ/46tv8WhI5bZIdTfsLe0PiVzcNiArR0TpdSp2KrpCU0p1RVYC/xEa73cvvl9exs12Poh1mMr+3SllFkp1RtbYDzsJW3c0lpP1lpP0VpPBT4A5gCrO2p5nbwNnKOUMimlegDZwGsdvNzHaLv6PQqk0oG/2y5CLae3tD4ldDNKiFZhu+r8H7aOm7kxzk843AkUAIuUUo6+h1uB+5RSacAOYKXWukkptR7YiO0CYZ497XxgmXPaqOY+PNzK0NHKq7V+USk1GdhMW3n20LHLfS+w3F6eNGzf9Xfp2GV2COk77SOtT7J8hhBCCDfJ3KwkhBDCCwkOQggh3EhwEEII4UaCgxBCCDcSHIQQQriR4CCEEMKNBAchhBBuJDgIIYRw8//laz1whmxI2wAAAABJRU5ErkJggg==\n", + "image/png": "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\n", "text/plain": [ "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -497,16 +513,16 @@ "name": "stdout", "output_type": "stream", "text": [ - "Topic #0: people think god don just said know say time like\n", - "Topic #1: file use windows drive program using scsi does like software\n", - "Topic #2: ax max g9v b8f 75u a86 34u bhj pl 1d9\n", - "Topic #3: space key use information chip new encryption data public government\n", - "Topic #4: just like don good year time car think team better\n", - "Topic #5: know don like just does thanks think good ve need\n", - "Topic #6: 00 10 25 11 15 20 17 12 16 14\n", - "Topic #7: know like thanks new mail good just does don price\n", - "Topic #8: edu com mail cs like send just know don list\n", - "Topic #9: know like just don does thanks good edu mail new\n" + "Topic #0: car good just like use new used power don time\n", + "Topic #1: space key information use encryption new chip data public edu\n", + "Topic #2: don like just know people think ve time good want\n", + "Topic #3: year people said just team don like time think game\n", + "Topic #4: file use windows edu drive program scsi does using like\n", + "Topic #5: 00 10 25 15 11 17 20 16 12 14\n", + "Topic #6: ax max g9v b8f a86 75u pl bhj giz 1t\n", + "Topic #7: people god think don does just know believe say said\n", + "Topic #8: young just people know don like think does work good\n", + "Topic #9: like just know don think does people use time good\n" ] } ], @@ -536,20 +552,12 @@ "execution_count": 14, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/anaconda3/lib/python3.6/site-packages/sklearn/decomposition/online_lda.py:314: DeprecationWarning: n_topics has been renamed to n_components in version 0.19 and will be removed in 0.21\n", - " DeprecationWarning)\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 49.7 s, sys: 538 ms, total: 50.3 s\n", - "Wall time: 37.9 s\n", + "CPU times: user 39.7 s, sys: 50.8 ms, total: 39.8 s\n", + "Wall time: 39.8 s\n", "Topic #0: people gun armenian war armenians turkish states said state 000\n", "Topic #1: government people law mr president use don think right public\n", "Topic #2: space science nasa program data research center output earth launch\n", @@ -566,7 +574,7 @@ "source": [ "from sklearn.decomposition import LatentDirichletAllocation\n", "\n", - "lda = LatentDirichletAllocation(n_topics=n_topics, max_iter=5,\n", + "lda = LatentDirichletAllocation(n_components=n_topics, max_iter=5,\n", " learning_method='online', learning_offset=50.,\n", " random_state=0)\n", "%time lda.fit(docs_tr)\n", @@ -685,9 +693,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 50.6 s, sys: 740 ms, total: 51.3 s\n", - "Wall time: 40.8 s\n", - "Predictive log prob (pm3) = -6.184892268516339\n" + "CPU times: user 7min 46s, sys: 7min 17s, total: 15min 3s\n", + "Wall time: 36 s\n", + "Predictive log prob (pm3) = -6.213144040486087\n" ] } ], @@ -712,9 +720,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 1min 40s, sys: 1.26 s, total: 1min 41s\n", - "Wall time: 1min 17s\n", - "Predictive log prob (sklearn) = -6.014771065227896\n" + "CPU times: user 3min 44s, sys: 4min 4s, total: 7min 49s\n", + "Wall time: 1min 23s\n", + "Predictive log prob (sklearn) = -6.014771065227894\n" ] } ], @@ -752,20 +760,21 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "pymc3 3.8\n", - "arviz 0.8.3\n", - "numpy 1.17.5\n", - "last updated: Thu Jun 11 2020 \n", + "theano 1.0.5\n", + "seaborn 0.11.0\n", + "numpy 1.17.3\n", + "pymc3 3.9.3\n", + "last updated: Sat Sep 26 2020 \n", "\n", - "CPython 3.8.2\n", - "IPython 7.11.0\n", + "CPython 3.7.8\n", + "IPython 7.17.0\n", "watermark 2.0.2\n" ] } @@ -792,7 +801,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.2" + "version": "3.7.8" }, "latex_envs": { "bibliofile": "biblio.bib", diff --git a/pymc3/distributions/transforms.py b/pymc3/distributions/transforms.py index d9381a48a82..efe321411cb 100644 --- a/pymc3/distributions/transforms.py +++ b/pymc3/distributions/transforms.py @@ -12,13 +12,13 @@ # See the License for the specific language governing permissions and # limitations under the License. -import theano +import warnings import theano.tensor as tt from ..model import FreeRV from ..theanof import gradient, floatX from . import distribution -from ..math import logit, invlogit +from ..math import logit, invlogit, logsumexp from .distribution import draw_values import numpy as np from scipy.special import logit as nplogit @@ -36,7 +36,6 @@ "ordered", "log", "sum_to_1", - "t_stick_breaking", "circular", "CholeskyCovPacked", "Chain", @@ -106,7 +105,8 @@ def backward(self, z): raise NotImplementedError def jacobian_det(self, x): - """Calculates logarithm of the absolute value of the Jacobian determinant for input `x`. + """Calculates logarithm of the absolute value of the Jacobian determinant + of the backward transformation for input `x`. Parameters ---------- @@ -430,75 +430,56 @@ def jacobian_det(self, x): class StickBreaking(Transform): """ Transforms K - 1 dimensional simplex space (k values in [0,1] and that sum to 1) to a K - 1 vector of real values. - Primarily borrowed from the Stan implementation. - - Parameters - ---------- - eps: float, positive value - A small value for numerical stability in invlogit. + This is a variant of the isometric logration transformation: + Egozcue, J.J., Pawlowsky-Glahn, V., Mateu-Figueras, G. et al. + Isometric Logratio Transformations for Compositional Data Analysis. + Mathematical Geology 35, 279–300 (2003). https://doi.org/10.1023/A:1023818214614 """ name = "stickbreaking" - def __init__(self, eps=floatX(np.finfo(theano.config.floatX).eps)): - self.eps = eps + def __init__(self, eps=None): + if eps is not None: + warnings.warn("The argument `eps` is deprecated and will not be used.", + DeprecationWarning) def forward(self, x_): x = x_.T - # reverse cumsum - x0 = x[:-1] - s = tt.extra_ops.cumsum(x0[::-1], 0)[::-1] + x[-1] - z = x0 / s - Km1 = x.shape[0] - 1 - k = tt.arange(Km1)[(slice(None),) + (None,) * (x.ndim - 1)] - eq_share = logit(1.0 / (Km1 + 1 - k).astype(str(x_.dtype))) - y = logit(z) - eq_share + n = x.shape[0] + lx = tt.log(x) + shift = tt.sum(lx, 0, keepdims=True) / n + y = lx[:-1] - shift return floatX(y.T) def forward_val(self, x_, point=None): x = x_.T - # reverse cumsum - x0 = x[:-1] - s = np.cumsum(x0[::-1], 0)[::-1] + x[-1] - z = x0 / s - Km1 = x.shape[0] - 1 - k = np.arange(Km1)[(slice(None),) + (None,) * (x.ndim - 1)] - eq_share = nplogit(1.0 / (Km1 + 1 - k).astype(str(x_.dtype))) - y = nplogit(z) - eq_share + n = x.shape[0] + lx = np.log(x) + shift = np.sum(lx, 0, keepdims=True) / n + y = lx[:-1] - shift return floatX(y.T) def backward(self, y_): y = y_.T - Km1 = y.shape[0] - k = tt.arange(Km1)[(slice(None),) + (None,) * (y.ndim - 1)] - eq_share = logit(1.0 / (Km1 + 1 - k).astype(str(y_.dtype))) - z = invlogit(y + eq_share, self.eps) - yl = tt.concatenate([z, tt.ones(y[:1].shape)]) - yu = tt.concatenate([tt.ones(y[:1].shape), 1 - z]) - S = tt.extra_ops.cumprod(yu, 0) - x = S * yl + y = tt.concatenate([y, -tt.sum(y, 0, keepdims=True)]) + # "softmax" with vector support and no deprication warning: + e_y = tt.exp(y - tt.max(y, 0, keepdims=True)) + x = e_y / tt.sum(e_y, 0, keepdims=True) return floatX(x.T) def jacobian_det(self, y_): y = y_.T - Km1 = y.shape[0] - k = tt.arange(Km1)[(slice(None),) + (None,) * (y.ndim - 1)] - eq_share = logit(1.0 / (Km1 + 1 - k).astype(str(y_.dtype))) - yl = y + eq_share - yu = tt.concatenate([tt.ones(y[:1].shape), 1 - invlogit(yl, self.eps)]) - S = tt.extra_ops.cumprod(yu, 0) - return tt.sum(tt.log(S[:-1]) - tt.log1p(tt.exp(yl)) - tt.log1p(tt.exp(-yl)), 0).T + Km1 = y.shape[0] + 1 + sy = tt.sum(y, 0, keepdims=True) + r = tt.concatenate([y+sy, tt.zeros(sy.shape)]) + sr = logsumexp(r, 0, keepdims=True) + d = tt.log(Km1) + (Km1*sy) - (Km1*sr) + return tt.sum(d, 0).T stick_breaking = StickBreaking() -def t_stick_breaking(eps: float) -> StickBreaking: - """Return a new :class:`StickBreaking` transform with specified eps(ilon), - instead of the default.""" - return StickBreaking(eps) - - class Circular(ElemwiseTransform): """Transforms a linear space into a circular one. """ diff --git a/pymc3/tests/test_transforms.py b/pymc3/tests/test_transforms.py index 4984eccf7b0..fafb160406c 100644 --- a/pymc3/tests/test_transforms.py +++ b/pymc3/tests/test_transforms.py @@ -84,7 +84,12 @@ def check_jacobian_det(transform, domain, computed_ljd(yval), tol) -def test_simplex(): +def test_stickbreaking(): + with pytest.warns( + DeprecationWarning, + match="The argument `eps` is deprecated and will not be used." + ): + tr.StickBreaking(eps=1e-9) check_vector_transform(tr.stick_breaking, Simplex(2)) check_vector_transform(tr.stick_breaking, Simplex(4)) @@ -92,7 +97,7 @@ def test_simplex(): 3, 2), constructor=tt.dmatrix, test=np.zeros((2, 2))) -def test_simplex_bounds(): +def test_stickbreaking_bounds(): vals = get_values(tr.stick_breaking, Vector(R, 2), tt.dvector, np.array([0, 0])) @@ -103,6 +108,16 @@ def test_simplex_bounds(): check_jacobian_det(tr.stick_breaking, Vector( R, 2), tt.dvector, np.array([0, 0]), lambda x: x[:-1]) +def test_stickbreaking_accuracy(): + val = np.array([-30]) + x = tt.dvector('x') + x.tag.test_value = val + identity_f = theano.function( + [x], + tr.stick_breaking.forward(tr.stick_breaking.backward(x)) + ) + close_to(val, identity_f(val), tol) + def test_sum_to_1(): check_vector_transform(tr.sum_to_1, Simplex(2))