Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import sys\n",
"sys.path.insert(0, '/Users/taku-y/git/github/taku-y/pymc3/')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n"
]
}
],
"source": [
"%pylab inline\n",
"import numpy as np\n",
"from scipy import stats\n",
"import pymc3 as pm\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Total sample size is 1000, 10 times larger than the full-batch example (advi.ipynb). "
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"total_size = 1000\n",
"data = np.random.randn(total_size)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To make observed variables be mini-batched, give tensors to their 'observed' arguments. "
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Applied log-transform to sd and added transformed sd_log to model.\n"
]
}
],
"source": [
"import theano.tensor as T\n",
"\n",
"data_t = T.vector()\n",
"data_t.tag.test_value=np.zeros(1,)\n",
"\n",
"with pm.Model() as model:\n",
" mu = pm.Normal('mu', mu=0, sd=1, testval=0)\n",
" sd = pm.HalfNormal('sd', sd=1)\n",
" n = pm.Normal('n', mu=mu, sd=sd, observed=data_t)\n",
" \n",
"minibatch_RVs = [n]\n",
"minibatch_tensors = [data_t]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create a generator for mini-batches of size 100. The mini-batches are consumed in the advi function. "
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from copy import deepcopy\n",
"\n",
"def create_minibatch(data):\n",
" data_ = deepcopy(data)\n",
" \n",
" while True:\n",
" data_ = np.roll(data_, 100, axis=0)\n",
" yield data_[:100]\n",
"\n",
"minibatches = [create_minibatch(data)]"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 0 [0%]: ELBO = -18199.42\n",
"Iteration 4000 [10%]: ELBO = -1589.7\n",
"Iteration 8000 [20%]: ELBO = -1659.69\n",
"Iteration 12000 [30%]: ELBO = -1506.56\n",
"Iteration 16000 [40%]: ELBO = -1523.74\n",
"Iteration 20000 [50%]: ELBO = -1515.66\n",
"Iteration 24000 [60%]: ELBO = -1517.05\n",
"Iteration 28000 [70%]: ELBO = -1516.15\n",
"Iteration 32000 [80%]: ELBO = -1521.5\n",
"Iteration 36000 [90%]: ELBO = -1525.87\n",
"Finished [100%]: ELBO = -1471.46\n"
]
}
],
"source": [
"means, sds, elbos = pm.variational.advi_minibatch(\n",
" model=model, n=40000, minibatch_tensors=minibatch_tensors, \n",
" minibatch_RVs=minibatch_RVs, minibatches=minibatches, \n",
" total_size=total_size\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Applied log-transform to sd and added transformed sd_log to model.\n",
" [-----------------100%-----------------] 5000 of 5000 complete in 1.5 sec"
]
}
],
"source": [
"with pm.Model():\n",
" mu = pm.Normal('mu', mu=0, sd=1, testval=0)\n",
" sd = pm.HalfNormal('sd', sd=1)\n",
" n = pm.Normal('n', mu=mu, sd=sd, observed=data)\n",
" step = pm.NUTS()\n",
" trace = pm.sample(5000, step)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"-0.00800816920208\n",
"0.00890622414792\n",
"0.0323732874514\n",
"0.0226791481698\n"
]
}
],
"source": [
"print(trace['mu'].mean())\n",
"print(trace['sd_log'].mean())\n",
"print(trace['mu'].std())\n",
"print(trace['sd_log'].std())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The posterior variance is smaller than the full-batch example because of the total sample size. "
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x153b4ce90>"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAegAAAFeCAYAAABOw4xkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XeUZHd95/33vRW6csfqOB0maoJGWRaSkCyCQLIBsWBA\nWEjOa4OxWZB3WZa04D2we57dA+sHYUtonzVIsDIG2SiwKKCE0mg0OeeZns65qrq6ct3nj5ppqWd6\nZno61K3q/rzO6XPUt+699b2j6v70/d1fMCzLshAREZGSYtpdgIiIiJxNAS0iIlKCFNAiIiIlSAEt\nIiJSghTQIiIiJUgBLSIiUoIU0CIiIiVIAS0iIlKCFNAiZe6NN97gzjvv5K//+q+5/fbb+chHPsLz\nzz/PH//xH/Pud7+bb3/727zxxht88IMfnHLM278XkdLjtLsAEZm73bt387Of/Yy1a9fyZ3/2Zzzw\nwAM8/PDDRKNRbrrpJjZu3Gh3iSJykRTQIotAS0sLa9euBaCtrY1gMIjD4aC6uppAIEAkErG5QhG5\nWGriFlkE3G73lO+dzrf+9jYMg0suuYS3T7ufyWSKVpuIzI4CWmSRsyyLYDBIb28vIyMjWJbFs88+\na3dZInIBauIWWeQMw8DhcPCJT3yCj370o9TX13PLLbfYXZaIXICh5SZFRERKz4yauHfs2MHdd989\nZdvjjz/OnXfeuSBFiYiILHUXbOJ+8MEH+cUvfoHf75/ctnfvXn7+858vaGEiIiJL2QXvoNvb27nv\nvvsmvx8dHeW73/0uX/7ylxe0MBERkaXsggF966234nA4AMjn83zlK1/hP/7H/4jX60WPr0VERBbG\nRQ2z2rNnD52dnfzn//yfuffeezly5Ajf/va3L3icglxEROTizHiYlWVZbNy4kccffxyA7u5u7r33\nXr70pS9d8FjDMBgcjM2+yhIXDgd1fWVM11e+FvO1ga6v3IXDwTkdP+M7aMMw5vRGIiIiMnMzCuiW\nlhYeeeSRC24TERGR+aGpPkVEREqQAlpERKQEKaBFRERKkAJaRESkBCmgRURESpACWkREFp0f//iH\n3HHHbWQyGQC+9a1v8Ad/8En++q//gs985k/5T//p39PX18vExAQf+tD7SSaTU47/4z++i+7uLv7q\nr/6czs4TdlyCAlpERBafp5/+Fe997/t59tmnJrf95V9+jr/7u3/g+99/kE984i6++tUv4vP5uPHG\n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\nDy5FdEYDfAOGAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x153aef090>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ax = sns.distplot(trace['mu'], label='NUTS')\n",
"xlim = ax.get_xlim()\n",
"x = np.linspace(xlim[0], xlim[1], 100)\n",
"y = stats.norm(means['mu'], sds['mu']).pdf(x)\n",
"ax.plot(x, y, label='ADVI')\n",
"ax.set_title('mu')\n",
"ax.legend(loc=0)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x153fe9250>]"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAf4AAAFVCAYAAAAOtI0IAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XlgVPW9///nLJnsk0xCCIGwbwFikCRuCSBarFIFsQRw\nq6h8K+Tb2FqJRNQCUjHQC7T3W2hvLdVSuaIketvb2/Yq/tqSgkYFihEQN1SQRBoIS2ZC1jm/PyJj\nhgSyk+W8Hv+Q85lzznzeOWFeZ5vPsRiGYSAiIiKmYO3qDoiIiMilo+AXERExEQW/iIiIiSj4RURE\nTETBLyIiYiIKfhERERNpV/Bv27aNRYsW+abfffdd5syZw5133sn69et97evXr2f27NnccccdFBUV\nAXDy5Enmz5/P3XffzcMPP0xVVVV7uiIiIiIt0ObgX7lyJT/96U/92pYtW8a6det44YUXKCoq4uDB\ngxw4cIBdu3aRl5fHunXrWLFiBQAbNmxg+vTpbN68mYSEBLZs2dK+SkRERKRZbQ7+5ORkli9f7pt2\nu93U1NQQHx8PwMSJE9m5cye7d+8mPT0dgLi4OLxeL2VlZezZs4dJkyYBMHnyZAoLC9tRhoiIiLSE\nvbkZ8vPz2bRpk19bbm4u06ZN4+233/a1eTwewsLCfNOhoaEcOXKEoKAgIiMj/drdbjcej4fw8HBf\nW3l5ebuLERERkYtrNvgzMjLIyMhodkXnAv0cj8dDREQEAQEBeDweX7vb7cbpdPrmj4qK8tsJuBjD\nMLBYLM3OJyIiIk1rNvhbKiwsDIfDwZEjR4iPj2fHjh1kZWVhs9lYs2YN999/PyUlJRiGQWRkJMnJ\nyRQUFDBz5kwKCgpITU1t9j0sFgulpeY8MxATE27a2kH1q37z1m/m2kH1x8Q0f1DcWh0W/ABPPvkk\n2dnZeL1e0tPTSUpKAiAlJYW5c+diGAZLly4FIDMzk5ycHLZu3YrL5WLt2rUd2RURERFpgqWnPZ3P\nrHt+2utV/arfnPWbuXZQ/Z1xxK8BfERERExEwS8iImIiCn4RERETUfCLiIiYiIJfRETERBT8IiIi\nJqLgFxERMREFv4iIiIko+EVERExEwS8iImIiCn4RERETUfCLiIiYiIJfRETERBT8IiIiJqLgFxER\nMREFv4iIiIko+EVERExEwS8iImIiCn4RERETUfCLiIiYiIJfRETERBT8IiIiJqLgFxERMREFv4iI\niIko+EVEREzEtnz58uVd3YnW8HiqqPMaWK0WamrreOmvH9MnIojwEIdvnrNVtewoKuaPOz+jT2QQ\nP9v6LnVegwF9wrDb/Pd1KiprKTtTSVhwgF/7v06d5f3PTrLv0AmGD4i4aJ/2fFjK479+i2vGxRLo\nsPHqO4fZ+9FxPjxyioRBkXxZVsEfdnzKz/KKCAm084vf7+OLf7kpeLeY/9z2IZ7KGgbHhlNeUcNn\nX57hk+LTFB/38I+iEv737cPU1hnsO1TGW/u/JDzEwcPrd+IKDyQizMHzr37IG/tK+NV/7+eUu4rB\nseH88vf7eKXgE2xWKyfOVPLz/CJGxkdSXlHDqfIqfvuXg3x+rJxxQ6IoPu7hR795i0F9w6mqqeNP\nb37G/751mFEDIznlruaMp5raOi873ithR1EJNqsFr9eg5EQFn5acYcd7JQTYrXxZVkGA3cq2XUfY\n/9lJbFYLpzxVGF74pPg0+X//hAkj+1B8vIJX36r//bz9/jEOHj5JwiAXX/zLzfHTlXi+2h4RofXb\n0zDgg8OniIkKoaa6llPuKv5c+DkD+4bjPltDZXUdf3nrc0bGR1JdW8enJWdwhQVisVgoPXWWs1W1\nGMC2d44QGhyAM8RB8XEPVqsFh93G2apa/lz4OcdPVRISZGffp2X0iQzG+9XfmMViueB2NwyD46cr\nCQm0YxhQW+flxOlKQhv8LXm9Btv3FnOmooYYV7Cvvbn1nv96aGggFRXVABQf93CyvIqIsEDf65XV\ntZzxVFPnNXAE2Jpcr/tsDdW13iZf9zbxnh2pqZpao2H9PUlNbR02a/uOr4KCHZw92/Nq7yg9ddt3\nlNDQwOZnaiWLYRhGh6+1k8x78lXKzlQCcN+3EqisrmPL6x/5zfPgrMv45e/3UVvXdFnPPno9UP9B\nhwEP/vs/OFtVy5TL+3PPTQmUnanklYJDvLHvS98y37lxNDuKivm0pNzXFhYcwE8fTMdmtXL/qr/6\n2gPsVmpqvb7p2dcNJ+9vn7S/eOnVhg9w8snRM35t09OG8EWpm4rKWoYNjGT80Cj+q+AQHxw51ez6\nsr59GYYBG/7rvUavrX9oEr/+4wHclTWN3rPhe5+truX1XV/4tVsskDIqhr6uECoqazh+ppJhcU68\nhsHQfk5+/kr9+yUMiqSispbRg1y8c/AYp9z1H9yXDYvmvUMnGr3f0Dgnn5Y03ZdzBvcL5/brR7D6\nhX/6tV+R0JcBfUIpK6+izutl9pQROAKsHC31sPL53Uy7ahD//Og4X5ZVcOOVA9n3aRlHSz307xNK\n8XGPbz05d07AYrEQGmRn78fH8ZytJcoZyCl3NX8u/ByA2yYP48sTFby5/0tGxkfw0RenAQgJtNMn\nIojD/3IzpF84NbVejjZYd5QzkCmXD2DMYBcrn9/ta793WgIHPivjgyOnOO2uZmR8BFck9GXbriO4\nwgL5sqyCMxU1vvmtFgtew+CWtCEcK6vghtSBDB/gpLbO4N2Pj1NVU8f4EX34S+HnlJyoYO/HxwF4\nYMZYxg6O4r1DJ4gIc3D8dCWv7/rCr/4n77+S0lNnWf/Ke0SEOhgRH8HuD0rr6540lP/6x6cA/HDO\neIbGOSk9dZYvyyqoqKyluraOvL99QsKgSC4f0YfPjpVTuP8Y064eRMIgF3/bc5TB/cL5/MtynKEO\n+kWFsPVvHzN2iIvvz0pi4drtvvquHNOXKRMGEBcdwg/+3w4A5lw3goF9w6isrvP9TV+R0JfgQDvf\numYwwQ4bdpuV/yo4xMC+YRQeOMY3UuJxhjroExHEv235J1+WVZAwyMXhY+WkJcYxICaU3/7loK/+\nb14xkP2flnH0uIdb0gYztJ+TCaNiOO2p5qlN73DiTBWzrh3Gy9sPAXDTVYOoqfVy2bAo/ueNz5l/\n8xj+UVSCYRhMTIrjg8OnCAmyc/Dzk7yx70vm3zKWuOgQ7DYrnxw9zW/+9D6hQXZuumoQFouF/L9/\nwuTxcXz2ZTmHj7l9/frj2lsv+v+iLXpU8E9f9Ae/6ZmThvL7r/4YW+pc8D/+60JKTlT4vfYfi671\n/QG2xNXjYincf6xV7y8iItJSnRH8Pfoa/46iklYvs3DN36mqrmsU+kCrQh9Q6IuISI/To4P/+OnK\nVi9TXevlsy8vfkpRRESkt+rRwd9W+X/XNXcRETEnUwb/J8U64hcREXMyZfCLiIiYlYJfRETERBT8\nIiIiJqLgFxERMREFv4iIiIko+EVERExEwS8iImIiCn4RERETUfCLiIiYiIJfRETERBT8IiIiJtKu\n4N+2bRuLFi3yTb/++uvccMMN3HPPPdxzzz3s2rULgPXr1zN79mzuuOMOioqKADh58iTz58/n7rvv\n5uGHH6aqqqo9XREREZEWsLd1wZUrV7Jz507GjBnja9u3bx+LFy/mhhtu8LUdOHCAXbt2kZeXR0lJ\nCQ8++CD5+fls2LCB6dOnM3PmTJ555hm2bNnCvffe265iRERE5OLafMSfnJzM8uXL/dr279/Pyy+/\nzF133cXq1aupq6tj9+7dpKenAxAXF4fX66WsrIw9e/YwadIkACZPnkxhYWHbqxAREZEWafaIPz8/\nn02bNvm15ebmMm3aNN5++22/9vT0dKZOnUp8fDzLli3jxRdfxO1243K5fPOEhobidrvxeDyEh4f7\n2srLyzuiHhEREbmIZoM/IyODjIyMFq1s1qxZvjC//vrree211xgzZgxut9s3j9vtxul0+nYAoqKi\n/HYCREREpPN06F39M2bM4NixYwAUFhaSmJjIhAkT2LlzJ4ZhUFxcjGEYREZGkpycTEFBAQAFBQWk\npqZ2ZFdERESkCW2+ua8pK1euJCsri6CgIEaMGMGcOXOw2WykpKQwd+5cDMNg6dKlAGRmZpKTk8PW\nrVtxuVysXbu2I7siIiIiTWjXEf+VV17pF9hpaWnk5eXx/PPPs2zZMmw2GwBZWVls3bqVvLw8kpOT\nAYiOjmbjxo288MILbNiwgaCgoPZ0RUSAQX3Dmp0nIsxB7gNX+6Z/8fBkbps09KLrumZcrN9rScOj\nfT87Qx1Nvs/sKcMbtTnsVnIXXM3y+65otp9NiXIGEusKbtUyQ+OcpCX282tzhQf6fk5P7Mfj96Q0\nWi53wdWN2gAG92v6suRDs5OYkT6kUfvFar1QLbd/YyQpo2MuuNzCW8c12X7b5GGsXnjNBZdr6Py/\nldnXNd5efvPH+s9/1w2jGk0vuv1y5lw3gowpw0kYFOn3+sj4CB69K5mbrhzEpKS4FvUx/bJ+RDkD\n/drO/a3m3DnB1/bLRdcyemD9+zlDArhsWLTfMjl3TmBqSjxD45xYLRaW3XsFK+6/kqTh0dxz02i/\nv+dzhvd3+k2vuP9KLh/Rx69t9pTh3HTlIAD69wltUU3nXD6iD2MGuwgOtLVquY5gMQzDuOTv2kbT\nF/2hq7sg3VyfiCCOn64E4PbrR/DiXz9uNE+gw0ZVdZ1vetrVg/hL4WEAZl07jJe3HwLg/9wyho3/\n8z53TB3JyPgIVvy2flyKG68cyKtvHwFgWH8nh4rP+K3/7m+OYvNrHzbZv3unJfDbvxwEIMBu5VfZ\nUwD4+IvTPL15NwBPP3A1jz1T/y2XjTnXUVlVR9bP6i+L/XLRtdisFmpqvVitFjLXbvet+xsp8b4P\n48rqWv7vuvplEgZFcvDwKQDm3zyGa8b1w2q1UF5RTVV1HX0i68Onts6L3eZ/LFBywsPru79g9pTh\nWC0WfrxpF6MGRvKdG0c3qs0wDN86qmu9BAbUf6Ddv+qvANxz42imTBjgm9/rNXjuz++TltiPMUOi\nANj5XgmHj7lxBFi5deJQ/lFUwoSRfRg5tA+lpeW+9wF45+C/+I8/7Cc40Mbc60cydrDLV8t7h07g\nsFspKavg6rGxBDnsfP/f/4HNZuGnWRMBqKmt49jJs/SLCvHV/WnJGf57x6d884qBjBkSxSfFpymv\nqCEsOAD32Rocditjv+pr2ZlK/rrnKIlDoxgUG0ZIUICvtlcKPuF/3vicWFcwuQuu8f0OzvnOjaOJ\njwllZHwkHx45xY6iEu65aTTrX3mPxKFRTE0dCMBr7xzhxf/vIwB+lX0tZ6vr8JytIS46lM+/LCfK\nGUhYcACGATW1XgId9b/zF7Z9yOu7v2DOdSO46ar6YPr3vHf5tOQMZypqmHbVIGZfN8JXc1V1HQmD\nXfyjqJh+USHEukIuuENnGAYWiwWA8opqghw27Darr62h3//jEP+98zPWPzTJ7/cDUF1Th2FA+dlq\nwkMcBAbY2PNhKRZgwqivd3piYsJ9n/2rFlxNX1eI77UdRSUUn/Aw56taGjpZXkXpqbPEx4Q2eu+m\nfPEvNwNiQqmt8xJgr/89HjtZQW2tl37RIdis9X8jtXVe9nxYyoA+oQyIaXpH++cvF/HPj47zswcn\n4gx1sO/QCX6a9y53Th1FWHAAV439ekfaMAwOlZxhUN8wyitqqPUaxETUHwhbLBZiYjr+/jcFv1wy\nv8qewsdHT/NvW/7Z6LX/WHQtCxuEGMDSe1MJDLDx+K/f8mv/ycJr+OdHx9ny1QfiOTekDiRjynCK\nj3uIjQrGEWDjN//zPqMHRfL+5yd568AxBsWGsfy+KzlTUc0fd3xGdEQQN101iJpaLwF2K8fKKljy\nVeg+++j1vnWfLK9i0Yad2G0WnnnkOqA+XIMcdr77k78xtL+T2yYN48+Fn/O92xLxnK3FMAxCgwOw\nWi38v/wipqbGM2Fk/Qea1zCwgO/DsmHwP/vo9b6gONcHR7CDTz4vY+B5R2mP/upN/nXyLI/elcyo\ngf5HWDW1Xuw2C4ePuXnyt+/gCg9k7ffSm9lKHa/sTCVWq4XIsMDmZ76AmJhwX/Cf4/Ua/PGNz7hq\nbCz9okIusGTXqKyu5U9vfs51EwYQ5QziWFkFdV6DmlovldW1jB7kan4lX3FFhfLlsTO+HamWqKn1\n8tEXpxg9KNIXWOd4vQZWa+OQ7iwNdxTaIiYmnMNfnMRigSBHh16d7jSGYVBZXUdwYPv72xnB3zN+\ni9IjNTx6hvoj3PNP/wXYrfSPDsXRxIfakH7ORm0AwUF2brhioF/wb1x8ne/DrOGp2O9OHwvA5PH9\nmXfTaBxf7ck7Qxzc9c2vT1UG2Os/HPu6grklbTBjB0f5vacrPJBHbr+cftFfn8479yH0q+wpWCz1\nIT5msMvvtXMeuWOC37T1vA9Cy3kX3XIXXE1Ag6PviLDARqEP8Ph3Uvj8WHmj0G9Y0+B+4Tw0O4nB\nF/h9drYoZ+dcxrNaLdw6sfEliu4gyGFn1rVfnzqPbceOid1mbVXoQ/22P3dm4nyXMvSBdoX+OR0R\noJeSxWLp1n3uvj2Tbs8VHsiCGeNY9Z97/NqjnUGcOFN5wdNgDf3y4Ws5/3MhNaEvVyb09U3/n1vG\nEBERwtr/rD8iPj80J4/v36IPs5YcLVgsFr49uelrnWM68YN0aD8nKaNiuPqra+mxrpYFRXiIg8Sh\nja9Pni9peJ9m5xERc1DwS5sFOWxNHmn+JPMaamq9nHQ3fv6CxWIhd8HVrH/lPb55xcAmQ/P/zkz0\nm05LjCMmJpxACxwpdfv2pB+5YwJ7PizlzqkjO6iirmO1Wvjety/r6m6IiAko+OWCxg+P5t1PTlzw\n9e/d1jiofjQvFYvFgiPARqwrhJw7J/DB4VN+R/WxrhB+PP+qVvdnRHwEI+IjfNNjBrt8p9ZFRKRl\n9FjeXqolX+u6mPCQgGaPQJv6+srQOP/ryKMHuZgxcSjT07vntVgREbNR8PdC67LSCQ1u/usr5xvf\n4LusU1PiG321S0REej59svcyg2LDiAwL5N5pCS1exvHV3d/XnDfISUMJgyL5RnJ8u/t3MbdOHMq4\nITp1LyLSmXSNv5eKiWz56GZL772CN/d/SerovsD++sbz7pxPHhXD1NSBnKmo5p2D/2rye9PXJQ9o\n1NYa3fWrWSIivYmO+HugB799GT+cM943PfGypoe/bDg61ICYCw8n2b9PKLOuHd7kHfZzr68fEev8\noSqb+mrueH1lTESk29MRfw/UcDhLqB8ituSEh0/OGzo2rsFR+bghURwt9bT6vW68chDfvGKgbxCO\nc2Oc94lofEZhrE7Ti4h0ewr+XsBiqR/IBYCGAzBb/Odp+/q/XvjWiUMJDrT7jbm++I4JlJzw6GZA\nEZEeQMHfjVgs0FlPTmjtei+0nxAcaG90LT5hsIsEfZ9eRKRH0CFaN/LYdxo/GvR8519rr9f2w/ne\nMOqdiIi0nI74u5EBLXiec1tP2Te1XM6dEy74lLAOeK6GiIh0Qzri72L33PT1c80tbTxyt1jgW1cP\nBmDWlKYfMCMiIgIK/i6X0OCI26D5C/Fx0U2fFRgRH8Fvcq7jsmFfj753RYMn3ImIiIBO9fco824a\nzTXjLjy63vnPvY6LDsVht1Jd6231e3XEM7RFRKT70RF/N9Lcqf5rLx+AI8DWunU2CPBoZxBx0Rd/\nznu0s/57+mFtGOtfRES6Px3xd7GLRX1EmIPT7urm13GRlTS8fLA68xoswPzVf/tqucYLPnJnMoX7\nviTtIuP2i4hIz6Uj/m4s6qtR8gAenXdFu9ZlwYLVYmn2FH7fyGBmTByqwXhERHopfbp3Jxa464ZR\nfk3f+eYovndbIulJ/S+ymK7Hi4hIyyj4u5lvpMSTOCzqqykL1yXHkzK67Xfnj4qPBCA2quVP6xMR\nkd5L1/h7g4sc8C+8dRzvHSrTV/tERATQEX+XGBEfcdHXgxz2r/5t2R38FzvRHxIUwFVjY5t85K6+\nsSciYj464u8C/aJC+PiL043az+XwHd8Yid1q4dvXDru0HRMRkV5Pwd8NucIDeWDGuBbP39bBdnTn\nvoiI+Sj4u0DDmLZY6gfLcZ+twWa7NOfeH/tOCu9+fJwh/cIvyfuJiEj3oeDvAmOGuPhHUQkAMZHB\n/FtmGhVVtdisrTsCX3jrOL4o9bT6/UcMiGDEgIvfZyAiIr2Tgr8LjBsSxb9lpuFyBmKxWAh02Ahs\n4Y18DV05JpYrx3RCB0VEpNdS8HeR6Iigru6CiIiYkO7u6gJ68p2IiHQVBX8XCA5s/Wl9ERGRjqDg\nv8RiXcGtvolPRESkoyiBLjWd5hcRkS6k4G+hATGhF3zN1eDxuQAbF1/X2d0RERFpEwV/Cw2Jbflg\nN02Niy8iItIdKPgvNcPo6h6IiIiJKfhbyOVs2/fub75mcAf3REREpO0U/C0UGNC2X5Uj4Lyv7unm\nPhER6UIKfhERERNR8HcyHd+LiEh30qax+t1uN9nZ2Xg8HmpqaliyZAnjx49n7969PP3009jtdtLS\n0sjKygJg/fr1bN++HbvdzpIlS0hKSuLkyZNkZ2dTVVVF3759yc3NJTAwsJl37nl0K5+IiHQnbTri\nf+6550hLS+P5558nNzeXJ598EoDly5ezbt06XnjhBYqKijh48CAHDhxg165d5OXlsW7dOlasWAHA\nhg0bmD59Ops3byYhIYEtW7Z0XFWXwPD+Tr/pEfH1j7mNdva+nRcREek92hT89913H7fffjsAtbW1\nBAYG4na7qampIT4+HoCJEyeyc+dOdu/eTXp6OgBxcXF4vV7KysrYs2cPkyZNAmDy5MkUFhZ2RD2X\nzPlP14uNDP7qJ53cFxGR7qvZU/35+fls2rTJry03N5fExERKS0tZvHgxjz/+OB6Ph7CwMN88oaGh\nHDlyhKCgICIjI/3a3W43Ho+H8PBwX1t5eXlH1dTFdHJfRES6r2aDPyMjg4yMjEbtH3zwAdnZ2eTk\n5JCamorb7cbtdvte93g8REREEBAQgMfj8bW73W6cTqdvByAqKspvJ6C7Cg31P4UfFBjg+9lmtRAY\nVD9ttVmJiQlvsJzDbzmb1eL3emu0dbneQvWrfrMyc+2g+jtam27u+/jjj3nooYf42c9+xujRowEI\nCwvD4XBw5MgR4uPj2bFjB1lZWdhsNtasWcP9999PSUkJhmEQGRlJcnIyBQUFzJw5k4KCAlJTUzu0\nsLYaGR/BR1+cbtTu8VT5TVdW1fh+rvMaVFXWT3vrvJSWljdYrtpvubrzXm+pmJjwNi3XW6h+1W/W\n+s1cO6j+ztjpaVPwr1u3jurqalauXIlhGDidTjZs2MDy5cvJzs7G6/WSnp5OUlISACkpKcydOxfD\nMFi6dCkAmZmZ5OTksHXrVlwuF2vXru24qrpCSy/tawAfERHpQm0K/l/84hdNto8fP56XXnqpUXtW\nVpbvq33nREdHs3Hjxra8fae6bFi074jfarHgbTC2fpDDRmV1XdMLXuDSfv/oCz/VT0RE5FLTAD7n\naTTEbgNtuW0veVQfHpo9nqTh0W3vlIiISAdR8LfGxZL/AmfwLRYLScOjfd/7Hxqnm1RERKTrtOlU\nv/jrFxVCsKP+VxkaFNDkPDddNZg+EcFcPrLPpeyaiIiIHwX/RVgs+B3lGxc45H9gxjhsVgtVNXUX\nfAxvgN3KNYn9OqGXIiIiLadT/eczWnYlf1JSfwDu+1YCEaEOwoIDuO9bY+jrCunM3omIiLSL6YO/\nz3lD717MfdPG+H4eNzSKZx6Z4tsBEBER6QlMHfwzJw2lryvYr+1ix/tXjY31m7bbTP3rExGRHsjU\nyXXt5QO6ugsiIiKXlGmD//ZvjCTivHH0ocWX+EVERHok3dXfSX6alY5NlwJERKSbUfB3koiwwOZn\nEhERucR0SCoiImIipg3+Cz0j70KD9IiIiPQGpg1+ERERM1Lwn08H/CIi0osp+EVERExEwX8eHfCL\niEhvpuAXERExEdMH//l39xsNhu7TKH4iItLbmD74RUREzKTXBf/5T9ATERGRr/W64J8wso/v59Cg\n1o9IbLP2ul+JiIiIT69LuYbX5ZfcncKvsq+9+PznTV97eX/fz5YLDe8nIiLSQ/W64G/IYoEAu+0C\nLzbdHBxo5+ZrBndep0RERLpQrw7+9tJd/SIi0tv0uuDviIfs6BS/iIj0Vr0u+EVEROTCFPwiIiIm\n0vuCX9flRURELqj3BX8LteQyfkfcLyAiItKdmDb4RUREzKjXBX9HHqNbWnReQEREpOfoVcE/uF94\nV3dBRESkW+vxwd9wPP7xw6P9XtMAPCIiIv56fPBHhAX6N3Rg2OvmPhER6W16fPB3Dl3bFxGR3qnX\nBb+O0kVERC6s1wW/iIiIXFiPDv7H70lhRvqQru6GiIhIj9Gjg394/wiuHBPLDakDARg7JApXeJDv\n9X7RIW1ab7DDBoAz1NH+ToqIiHQj9uZn6f5u/8YIbr5mMM5QB4Zh8MCMsSQMcmFt4/N1r0+Jp/R0\nJVNT4nli41sd3FsREZGu0yuC32Kx+I7OLRYLV4/t16JlLiQwwMY9N47usP6JiIh0Fz36VL+IiIi0\njoJfRETERNp0qt/tdpOdnY3H46GmpoYlS5Ywfvx4Xn/9dVavXk1cXBwA3//+90lNTWX9+vVs374d\nu93OkiVLSEpK4uTJk2RnZ1NVVUXfvn3Jzc0lMDCwmXcWERGR9mhT8D/33HOkpaVxzz338Omnn7Jo\n0SJeeeUV9u3bx+LFi7nhhht88x44cIBdu3aRl5dHSUkJDz74IPn5+WzYsIHp06czc+ZMnnnmGbZs\n2cK9997bUXWJiIhIE9p0qv++++7j9ttvB6C2ttZ3pL5//35efvll7rrrLlavXk1dXR27d+8mPT0d\ngLi4OLxeL2VlZezZs4dJkyYBMHnyZAoLCzuiHhEREbmIZo/48/Pz2bRpk19bbm4uiYmJlJaWsnjx\nYh5//HEA0tPTmTp1KvHx8SxbtowXX3wRt9uNy+XyLRsaGorb7cbj8RAeHu5rKy8vb3XnY2La/hje\n8LBAYmLsO6qtAAATFklEQVTCcQT4/woutM7Q0Pr5H7/vSjxna9r13m3VFe/Znah+1W9WZq4dVH9H\nazb4MzIyyMjIaNT+wQcfkJ2dTU5ODqmpqQDMmjXLF+bXX389r732GmPGjMHtdvuWc7vdOJ1O3w5A\nVFSU305Aa5SWtn5n4ZxydxWlpeVU19S2aJ0eT/38w2PD2v3ebRETE37J37M7Uf2q36z1m7l2UP2d\nsdPTplP9H3/8MQ899BBr1qxh4sSJvvYZM2Zw7NgxAAoLC0lMTGTChAns3LkTwzAoLi7GMAwiIyNJ\nTk6moKAAgIKCAt/OQ2e46apBnbZuERGRnqRNN/etW7eO6upqVq5ciWEYOJ1ONmzYwMqVK8nKyiIo\nKIgRI0YwZ84cbDYbKSkpzJ07F8MwWLp0KQCZmZnk5OSwdetWXC4Xa9eu7dDCGppz3Qj+963DnbZ+\nERGRnqJNwf+LX/yiyfa0tDTS0tIatWdlZZGVleXXFh0dzcaNG9vy9iIiItJGph3AJ3lUTIvmOzew\nr9XatnH/RUREuhNTBv+Uy/vjCm/ZYEGPfSeFy0f0YcrlAzq5VyIiIp2vVzykp9Va8dS+4QMi+H5G\nUid2RkRE5NLpsUf8905L6OouiIiI9Dg9NvitrThqFxERkXo9Nvg7imF0dQ9EREQuHdMHv4iIiJmY\nMvh1kUBERMyqxwa/LvGLiIi0Xo8NfhEREWk9Uwa/7ucTERGzMmXwi4iImJUpg1+3B4iIiFmZMvhF\nRETMSsEvIiJiIgp+ERERE1Hwi4iImIg5g19394mIiEmZM/hFRERMSsEvIiJiIgp+EREREzFl8MdG\nBnd1F0RERLqEvas7cKndNy2BaxL7dXU3REREuoTpgn/S+P5d3QUREZEuY8pT/SIiImbVY4Pfou/i\ni4iItFqPDX4RERFpPQW/iIiIiSj4RURETETBLyIiYiIKfhERERNR8IuIiJiIgl9ERMREemzwW9AX\n+UVERFqrxwa/iIiItJ6CX0RExEQU/CIiIiai4BcRETERBb+IiIiJmD749ZQ/ERExE9MHv2F0dQ9E\nREQunZ4b/DpSFxERabWeG/yt1CciiOBAe1d3Q0REpEu1KQnPnj3LokWLOHPmDA6Hg1WrVtG3b1/2\n7t3L008/jd1uJy0tjaysLADWr1/P9u3bsdvtLFmyhKSkJE6ePEl2djZVVVX07duX3NxcAgMDO7S4\nhlYtvAZ0Wl9EREyuTUf8W7duJTExkc2bNzN9+nQ2btwIwPLly1m3bh0vvPACRUVFHDx4kAMHDrBr\n1y7y8vJYt24dK1asAGDDhg1Mnz6dzZs3k5CQwJYtWzquqiZYLRasVl0fEBERc2tT8M+bN4/MzEwA\niouLcTqduN1uampqiI+PB2DixIns3LmT3bt3k56eDkBcXBxer5eysjL27NnDpEmTAJg8eTKFhYUd\nUY+IiIhcRLOn+vPz89m0aZNfW25uLomJicybN4+PPvqIZ599Fo/HQ1hYmG+e0NBQjhw5QlBQEJGR\nkX7tbrcbj8dDeHi4r628vLyjahIREZELaDb4MzIyyMjIaPK1TZs2cejQIRYsWMDvf/973G637zWP\nx0NERAQBAQF4PB5fu9vtxul0+nYAoqKi/HYCWsoZHkRMTOuWaYrDYfOb7oh1dpbu3LdLQfWrfrMy\nc+2g+jtam27ue+aZZ4iNjeXWW28lJCQEm81GaGgoDoeDI0eOEB8fz44dO8jKysJms7FmzRruv/9+\nSkpKMAyDyMhIkpOTKSgoYObMmRQUFJCamtqqPpwpr6S0tP1nCaqr6/ymO2KdnSEmJrzb9u1SUP2q\n36z1m7l2UP2dsdPTpuCfNWsWOTk55OfnYxgGq1atAupv7svOzsbr9ZKenk5SUhIAKSkpzJ07F8Mw\nWLp0KQCZmZnk5OSwdetWXC4Xa9eu7aCSRERE5ELaFPzR0dG+O/kbGj9+PC+99FKj9qysLN9X+5pb\nR0vp/nwREZHWM80APiIiIqLg93PPTaO7ugsiIiKdSsH/lRHxEUy5fEBXd0NERKRT9djg1+i7IiIi\nrddjg19ERERaT8EvIiJiIgp+ERERE+mxwa/v8YuIiLRejw1+ERERaT0Fv4iIiIko+EVERExEwS8i\nImIiCn4RERETUfCLiIiYiIJfRETERHpu8OuL/CIiIq3Wc4NfREREWk3BLyIiYiIKfhERERNR8IuI\niJiIgl9ERMREFPwiIiImouAXERExEQW/iIiIifTY4LdoBB8REZFW67HB39G0GyEiImag4BcRETER\nBb+IiIiJKPhFRERMRMEvIiJiIgp+ERERE1Hwi4iImEiPDX6Lvn8nIiLSaj02+EVERKT1FPwiIiIm\nouAXERExEQW/iIiIiSj4RURETETBLyIiYiIKfhERERNR8IuIiJiIgl9ERMREFPwiIiImYm/LQmfP\nnmXRokWcOXMGh8PBqlWr6Nu3L6+//jqrV68mLi4OgO9///ukpqayfv16tm/fjt1uZ8mSJSQlJXHy\n5Emys7Opqqqib9++5ObmEhgY2KHFiYiIiL82HfFv3bqVxMRENm/ezPTp09m4cSMA+/btY/Hixfzu\nd7/jd7/7HampqRw4cIBdu3aRl5fHunXrWLFiBQAbNmxg+vTpbN68mYSEBLZs2dJxVYmIiEiT2hT8\n8+bNIzMzE4Di4mKcTicA+/fv5+WXX+auu+5i9erV1NXVsXv3btLT0wGIi4vD6/VSVlbGnj17mDRp\nEgCTJ0+msLCwI+oRERGRi2j2VH9+fj6bNm3ya8vNzSUxMZF58+bx0Ucf8eyzzwKQnp7O1KlTiY+P\nZ9myZbz44ou43W5cLpdv2dDQUNxuNx6Ph/DwcF9beXl5R9YlIiIiTWg2+DMyMsjIyGjytU2bNnHo\n0CEWLFjAtm3bmDVrli/Mr7/+el577TXGjBmD2+32LeN2u3E6nb4dgKioKL+dgJZyOoOJiWndMk0J\nCLD5/u2I9XWm7t6/zqb6Vb9Zmbl2UP0drU039z3zzDPExsZy6623EhISgs1WH54zZszgxRdfJDY2\nlsLCQhITE0lKSmLNmjXMnz+fkpISDMMgMjKS5ORkCgoKmDlzJgUFBaSmpraqD2fOnKW0tP1nCWpq\n6nz/dsT6OktMTHi37l9nU/2q36z1m7l2UP2dsdPTpuCfNWsWOTk55OfnYxgGq1atAmDlypVkZWUR\nFBTEiBEjmDNnDjabjZSUFObOnYthGCxduhSAzMxMcnJy2Lp1Ky6Xi7Vr17aqDxaLpS1dFxERMbU2\nBX90dLTvTv6G0tLSSEtLa9SelZVFVlZWi9YhIiIinUcD+IiIiJiIgl9ERMREFPwiIiImouAXEREx\nEQW/iIiIifTY4A8M6LFdFxER6TJt+jpfV1p+3xW8c/BfJA6L7uquiIiI9Dg9LvgHxYYzKFbDN4qI\niLSF6c+XR4Q5vvo3sIt7IiIi0vl63BF/R7vjGyNxhQVy41WDurorIiIinc70wR8e4mD2dSO6uhsi\nIiKXhOlP9YuIiJiJgl9ERMREFPwiIiImouAXERExEQW/iIiIifSo4B+n0fpERETapUcF/5MPXNPV\nXRAREenRelTwBwbYuroLIiIiPVqPCn4RERFpHwW/iIiIiSj4RURETETBLyIiYiIKfhERERNR8IuI\niJiIgl9ERMREFPwiIiImouAXERExEQW/iIiIiSj4RURETETBLyIiYiIKfhERERNR8IuIiJiIgl9E\nRMREFPwiIiImouAXERExEQW/iIiIiSj4RURETETBLyIiYiIKfhERERNR8IuIiJiIgl9ERMREFPwi\nIiIm0q7g/+STT0hNTaW6uhqAvXv3MmfOHO68807Wr1/vm2/9+vXMnj2bO+64g6KiIgBOnjzJ/Pnz\nufvuu3n44YepqqpqT1dERESkBdoc/G63m5/85CcEBgb62pYvX866det44YUXKCoq4uDBgxw4cIBd\nu3aRl5fHunXrWLFiBQAbNmxg+vTpbN68mYSEBLZs2dL+akREROSi2hz8S5cu5eGHHyYoKAio3xGo\nqakhPj4egIkTJ7Jz5052795Neno6AHFxcXi9XsrKytizZw+TJk0CYPLkyRQWFra3FhEREWmGvbkZ\n8vPz2bRpk19b//79ufnmmxk9ejSGYQDg8XgICwvzzRMaGsqRI0cICgoiMjLSr93tduPxeAgPD/e1\nlZeXd0hBIiIicmHNBn9GRgYZGRl+bTfeeCP5+fnk5eVx/Phx5s+fzy9/+UvcbrdvHo/HQ0REBAEB\nAXg8Hl+72+3G6XT6dgCioqL8dgKaExPTsvl6IzPXDqpf9Zu3fjPXDqq/o7XpVP+rr77K7373O55/\n/nn69OnDs88+S1hYGA6HgyNHjmAYBjt27CAlJYUJEyawY8cODMOguLgYwzCIjIwkOTmZgoICAAoK\nCkhNTe3QwkRERKSxZo/4m2OxWHyn+5988kmys7Pxer2kp6eTlJQEQEpKCnPnzsUwDJYuXQpAZmYm\nOTk5bN26FZfLxdq1a9vbFREREWmGxTiX2iIiItLraQAfERERE1Hwi4iImIiCX0RExEQU/CIiIibS\n7rv6O5thGCxfvpwPPvgAh8PBypUrGThwYFd3q0N9+9vf9g1+FB8fz8KFC3n00UexWq2MHDmSZcuW\nAbB161ZeeuklAgICWLhwIVOmTKGqqopHHnmEEydOEBYWxqpVq3C5XF1ZTou8++67rFmzhueff57D\nhw+3u969e/fy9NNPY7fbSUtLIysrq4srvLiG9b///vssWLCAIUOGAHDHHXcwbdq0Xll/bW0tjz32\nGEePHqWmpoaFCxcyYsQI02z/puqPi4szzfb3er088cQTfPrpp1itVp588kkcDocptn9TtdfU1HTN\ntje6uddee8149NFHDcMwjL179xqZmZld3KOOVVVVZdx2221+bQsXLjTeeecdwzAMY+nSpca2bduM\n0tJS45ZbbjFqamqM8vJy45ZbbjGqq6uN5557zvj5z39uGIZh/OlPfzKeeuqpS15Da/361782brnl\nFmPu3LmGYXRMvbfeeqtx5MgRwzAM47vf/a7x/vvvd0FlLXN+/Vu3bjWee+45v3l6a/0vv/yy8fTT\nTxuGYRinT582pkyZYqrt37D+U6dOGVOmTDHy8vJMs/23bdtmPPbYY4ZhGMZbb71lZGZmmmb7N1V7\nV/3f7/an+nfv3u0b03/8+PHs27evi3vUsQ4ePEhFRQXz58/n3nvv5d133+XAgQO+AY0mT57MG2+8\nQVFRESkpKdjtdsLCwhgyZAgHDx5k9+7dTJ482Tfvm2++2ZXltMjgwYPZsGGDb3r//v1trrewsLDJ\n50S88cYbl76wFmqq/r///e/cfffdPPHEE3g8nl5b/7Rp0/jBD34AQF1dHTabrV1/7z25fq/Xi91u\nZ//+/fztb38zxfafOnUqP/7xjwEoLi4mIiLCNNu/Ye1Hjx4lIiKiy7Z9tw9+t9vtN5yv3W7H6/V2\nYY86VlBQEPPnz+c3v/kNy5cvJzs72zcgEjT9bAOAkJAQX/u5ywTn5u3ubrjhBmw2m2+6PfWWl5c3\n+ZyI7vzsh/PrHz9+PIsXL2bz5s0MHDiQ9evXN/q77y31BwcH+2r5wQ9+wA9/+ENTbf/z63/ooYdI\nSkoiJyfHFNsfwGq18uijj/LUU09xyy23mGr7n6t95cqVTJ8+nfHjx3fJtu/2wR8WFuY31r/X68Vq\n7fbdbrEhQ4YwY8YM38+RkZGcOHHC97rH48HpdBIWFtboWQjn2s/9flrzzIPupOH2bEu95+/wnJu3\np5g6dSpjx471/Xzw4EHCw8N7bf0lJSXMmzeP2267jZtvvtl02//8+s22/QFWrVrFq6++yhNPPEFV\nVZWv3Qzbv2Ht6enpXbLtu32CJicns337dgD27t3LqFGjurhHHevll19m1apVABw7dgy32016ejpv\nv/02UP8cg5SUFC677DJ2795NdXU15eXlHDp0iJEjRzJhwgTf72f79u098pkHY8eO5Z133gHaVu+F\nnhPRU8yfP5/33nsPgDfffJNx48b12vrPPdTrkUce4bbbbgNgzJgxptn+TdVvpu3/hz/8gWeeeQaA\nwMBArFYriYmJ7fq86yn1n1+7xWLhwQcfpKioCLi0277bD9lrNLirHyA3N5ehQ4d2ca86Tk1NDUuW\nLKG4uBir1cojjzxCZGQkTzzxBDU1NQwfPpynnnoKi8VCXl4eL730EoZhkJmZydSpU6msrCQnJ4fS\n0lIcDgdr164lOjq6q8tq1tGjR1m0aBEvvvgin332GT/60Y/aVW9RURErV670PSfioYce6uoSL6ph\n/QcOHODHP/4xAQEBxMTEsGLFCkJDQ3tl/StXruQvf/kLw4YNwzAMLBYLjz/+OE899ZQptn9T9f/w\nhz/kJz/5iSm2/9mzZ1myZAnHjx+ntraWBQsWMGzYsHZ/3vWE+s+v/YEHHiAuLo4VK1Zc8m3f7YNf\nREREOk63P9UvIiIiHUfBLyIiYiIKfhERERNR8IuIiJiIgl9ERMREFPwiIiImouAXERExkf8f7Oxa\n2vIPPLoAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x153dd7a50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"plt.plot(elbos[5000:])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.11"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
@p9anand

This comment has been minimized.

Copy link

commented Jul 4, 2016

Getting following error:
TypeError: list object is not an iterator
Please help.

Traceback (most recent call last):
File "/home/pbadmin/PrakashBackup/D_drive/NewMotorPPL/baysian.py", line 37, in
total_size=total_size
File "/usr/local/lib/python2.7/dist-packages/pymc3/variational/advi.py", line 180, in advi_minibatch
uw_i, g, e = f(*next(minibatches))
TypeError: list object is not an iterator

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.