Created
March 7, 2020 17:17
-
-
Save fehiepsi/8bc0cd43289a60e79c176d73912a7fb2 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Forecasting I: univariate, heavy tailed\n", | |
"\n", | |
"This tutorial introduces the [pyro.contrib.forecast](http://docs.pyro.ai/en/latest/contrib.forecast.html) module, a framework for forecasting with Pyro models. This tutorial covers only univariate models and simple likelihoods. This tutorial assumes the reader is already familiar with [SVI](http://pyro.ai/examples/svi_part_ii.html) and [tensor shapes](http://pyro.ai/examples/tensor_shapes.html).\n", | |
"\n", | |
"#### Summary\n", | |
"\n", | |
"- To create a forecasting model:\n", | |
" 1. Create a subclass of the [ForecastingModel](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.forecaster.ForecastingModel) class.\n", | |
" 2. Implement the [.model(zero_data, covariates)](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.forecaster.ForecastingModel.model) method using standard Pyro syntax.\n", | |
" 3. Sample all time-local variables inside the [self.time_plate](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.forecaster.ForecastingModel.time_plate) context.\n", | |
" 4. Finally call the [.predict(noise_dist, prediction)](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.forecaster.ForecastingModel.predict) method.\n", | |
"- To train a forecasting model, create a [Forecaster](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.forecaster.Forecaster) object.\n", | |
" - Training can be flaky, you'll need to tune hyperparameters and randomly restart.\n", | |
" - Reparameterization can help learning, e.g. [LocScaleReparam](http://docs.pyro.ai/en/latest/infer.reparam.html#pyro.infer.reparam.loc_scale.LocScaleReparam).\n", | |
"- To forecast the future, draw samples from a `Forecaster` object conditioned on data and covariates.\n", | |
"- To model seasonality, use helpers [periodic_features()](http://docs.pyro.ai/en/latest/ops.html#pyro.ops.tensor_utils.periodic_features), [periodic_repeat()](http://docs.pyro.ai/en/latest/ops.html#pyro.ops.tensor_utils.periodic_repeat), and [periodic_cumsum()](http://docs.pyro.ai/en/latest/ops.html#pyro.ops.tensor_utils.periodic_cumsum).\n", | |
"- To model heavy-tailed data, use [Stable](http://docs.pyro.ai/en/latest/distributions.html#stable) distributions and [StableReparam](http://docs.pyro.ai/en/latest/infer.reparam.html#pyro.infer.reparam.stable.StableReparam).\n", | |
"- To evaluate results, use the [backtest()](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.evaluate.eval_crps) helper or low-level loss functions." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import torch\n", | |
"import pyro\n", | |
"import pyro.distributions as dist\n", | |
"import pyro.poutine as poutine\n", | |
"from pyro.contrib.examples.bart import load_bart_od\n", | |
"from pyro.contrib.forecast import ForecastingModel, HMCForecaster, backtest, eval_crps\n", | |
"from pyro.infer.reparam import LocScaleReparam, StableReparam\n", | |
"from pyro.ops.tensor_utils import periodic_cumsum, periodic_repeat, periodic_features\n", | |
"from pyro.ops.stats import quantile\n", | |
"import matplotlib.pyplot as plt\n", | |
"\n", | |
"%matplotlib inline\n", | |
"assert pyro.__version__.startswith('1.2.1')\n", | |
"pyro.enable_validation(True)\n", | |
"pyro.set_rng_seed(20200221)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"dict_keys(['stations', 'start_date', 'counts'])\n", | |
"torch.Size([78888, 50, 50])\n", | |
"12TH 16TH 19TH 24TH ANTC ASHB BALB BAYF BERY CAST CIVC COLM COLS CONC DALY DBRK DELN DUBL EMBR FRMT FTVL GLEN HAYW LAFY LAKE MCAR MLBR MLPT MONT NBRK NCON OAKL ORIN PCTR PHIL PITT PLZA POWL RICH ROCK SANL SBRN SFIA SHAY SSAN UCTY WARM WCRK WDUB WOAK\n" | |
] | |
} | |
], | |
"source": [ | |
"dataset = load_bart_od()\n", | |
"print(dataset.keys())\n", | |
"print(dataset[\"counts\"].shape)\n", | |
"print(\" \".join(dataset[\"stations\"]))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Intro to Pyro's forecasting framework\n", | |
"\n", | |
"Pyro's forecasting framework consists of:\n", | |
"- a [ForecastingModel](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.forecaster.ForecastingModel) base class, whose ``.model()`` method can be implemented for custom forecasting models,\n", | |
"- a [Forecaster](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.forecaster.Forecaster) class that trains and forecasts using ``ForecastingModel``s, and\n", | |
"- a [backtest()](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.evaluate.backtest) helper to evaluate models on a number of metrics.\n", | |
"\n", | |
"Consider a simple univariate dataset, say weekly [BART train](https://www.bart.gov/about/reports/ridership) ridership aggregated over all stations in the network. This data roughly logarithmic, so we log-transform for modeling." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 648x216 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"T, O, D = dataset[\"counts\"].shape\n", | |
"data = dataset[\"counts\"][:T // (24 * 7) * 24 * 7].reshape(T // (24 * 7), -1).sum(-1).log()\n", | |
"data = data.unsqueeze(-1)\n", | |
"plt.figure(figsize=(9, 3))\n", | |
"plt.plot(data)\n", | |
"plt.title(\"Total weekly ridership\")\n", | |
"plt.ylabel(\"log(# rides)\")\n", | |
"plt.xlabel(\"Week after 2011-01-01\")\n", | |
"plt.xlim(0, len(data));" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Let's start with a simple log-linear regression model, with no trend or seasonality. Note that while this example is univariate, Pyro's forecasting framework is multivariate, so we'll often need to reshape using `.unsqueeze(-1)`, `.expand([1])`, and `.to_event(1)`." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# First we need some boilerplate to create a class and define a .model() method.\n", | |
"class Model1(ForecastingModel):\n", | |
" # We then implement the .model() method. Since this is a generative model, it shouldn't\n", | |
" # look at data; however it is convenient to see the shape of data we're supposed to\n", | |
" # generate, so this inputs a zeros_like(data) tensor instead of the actual data.\n", | |
" def model(self, zero_data, covariates):\n", | |
" data_dim = zero_data.size(-1) # Should be 1 in this univariate tutorial.\n", | |
" feature_dim = covariates.size(-1)\n", | |
"\n", | |
" # The first part of the model is a probabilistic program to create a prediction.\n", | |
" # We use the zero_data as a template for the shape of the prediction.\n", | |
" bias = pyro.sample(\"bias\", dist.Normal(0, 10).expand([data_dim]).to_event(1))\n", | |
" weight = pyro.sample(\"weight\", dist.Normal(0, 0.1).expand([feature_dim]).to_event(1))\n", | |
" prediction = bias + (weight * covariates).sum(-1, keepdim=True)\n", | |
" # The prediction should have the same shape as zero_data (duration, obs_dim),\n", | |
" # but may have additional sample dimensions on the left.\n", | |
" assert prediction.shape[-2:] == zero_data.shape\n", | |
"\n", | |
" # The next part of the model creates a likelihood or noise distribution.\n", | |
" # Again we'll be Bayesian and write this as a probabilistic program with\n", | |
" # priors over parameters, and again we'll use zero_data as a noise template.\n", | |
" noise_scale = pyro.sample(\"noise_scale\", dist.LogNormal(-5, 5).expand([1]).to_event(1))\n", | |
" noise_dist = dist.Normal(zero_data, noise_scale)\n", | |
"\n", | |
" # The final step is to call the .predict() method.\n", | |
" self.predict(noise_dist, prediction)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We can now train this model by creating a [Forecaster](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.forecaster.Forecaster) object. We'll split the data into `[T0,T1)` for training and `[T1,T2)` for testing." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"T0 = 0 # begining\n", | |
"T2 = data.size(-2) # end\n", | |
"T1 = T2 - 52 # train/test split" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"Sample: 100%|██████████| 2000/2000 [00:39, 50.90it/s, step size=3.95e-01, acc. prob=0.930]" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"\n", | |
" mean std median 5.0% 95.0% n_eff r_hat\n", | |
" bias[0] 14.58 0.01 14.58 14.56 14.59 501.54 1.00\n", | |
" weight[0] 0.12 0.02 0.12 0.08 0.14 513.97 1.00\n", | |
"noise_scale[0] 0.13 0.00 0.13 0.12 0.13 592.00 1.00\n", | |
"\n", | |
"Number of divergences: 0\n", | |
"CPU times: user 39.4 s, sys: 194 ms, total: 39.6 s\n", | |
"Wall time: 39.3 s\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\n" | |
] | |
} | |
], | |
"source": [ | |
"%%time\n", | |
"pyro.set_rng_seed(1)\n", | |
"pyro.clear_param_store()\n", | |
"time = torch.arange(float(T2)) / 365\n", | |
"covariates = torch.stack([time], dim=-1)\n", | |
"forecaster = HMCForecaster(Model1(), data[:T1], covariates[:T1])" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Next we can evaluate by drawing posterior samples from the forecaster, passing in full covariates but only partial data. We'll use Pyro's [quantile()](http://docs.pyro.ai/en/latest/ops.html#pyro.ops.stats.quantile) function to plot median and an 80% confidence interval. To evaluate fit we'll use [eval_crps()](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.evaluate.eval_crps) to compute [Continuous Ranked Probability Score](https://www.stat.washington.edu/raftery/Research/PDF/Gneiting2007jasa.pdf); this is an good metric to assess distributional fit of a heavy-tailed distribution." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"torch.Size([1000, 52, 1]) torch.Size([52])\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "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T0/CQ0TkqaeekpCQEKlRo4Y88MADIqJZOfR1u3btKiIi8+fPl65du0paWpp8/PHHRmfAz89PEhISyq1TSkqK0egD8t1330n9+vXl3nvvdcr3448/Ol0frteMbmnatGmTsc7o0aMFkBdffFEACQ0NFaWUzJs3Tw4ePFhme7p169lnn5WBAweK3W6XLl26yG+//SYDBgyQlJQU+e233wSQl156SUQ06827774rEyZMkLi4OImPjzfKMmHCBOnevbvEx8dLu3bt3HYqSkpK3Fp6zBw8eNC4l37++Wd54okn5JNPPpF33323jFD5/PPPneo0dOhQJ8E5bdo0ERHJycmR5557To4dO2aI5h9//FGefvppefvtt438rVq1ErvdLoCMGzfO2M++ffsEkDp16mgLuncXqVlTEza6+KhV65QlBER8fDTRUr36qf8gcvvtmiXm/fdFrrxSW/bQQ5pVZ+JETWA89ZSUjhsn2ydMkJJPPhG5+26RhASRRx/VLC+DBoksWqSts2iR5C9cqAlUxzMDkCAfHyl65x1DXD1z9dUytnNnI12+/lomPfigPNqtm5bnvfcuPWHzd/pYwqbqPPLII0YDWRmOHz8u99xzj9SoUUPi4+OluLjYuOCrV68uPj4+FT6AzoTNmzdLhw4dZNKkSVJYWCilpaXy22+/SXFxcZW206lTJwkLCxPQLB66K0ZE5M4775TGjRsb/19++eUyVoKdO3fKhAkTZOXKlVXa78SJEw3R8eWXXwogcXFxkpGRIf369ZOpU6dKRESEAPLII49ISUmJdOzYUerVqyejRo1yehj36NGjzLGeMmWKkT5jxowKy6ML1GbNmjlt+9dff3XKN3z4cKd0XaDk5OQYeXSRW6NGDafjqfPAAw9IaGioAHLdddfJxo0bjbS2bdvKNddcIyIiaWlpxn7WrFkjIqcsbKBZLcrjyJEjTmXcv39/GbG1bds2ef7558Vut0tpaanhlqpfv76IaOIoNzdX7r33XgHNIumJcePGGdfR888/LyLiJM48WZi2b99u5LnxxhvLrVN6erpxzkGzQrVt27bMeroo/te//uUkykCztv36668CyEcffWSsc9VVV0nnzp2loKDAcJ3Fx8dLrVq1DBfgpk2bjHp27dpVAMnNzRURcRLEgLRr107mzZsnUNbyJyLy3XffGWIANBeVj4+PPPnkk9K/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\n", | |
"text/plain": [ | |
"<Figure size 648x216 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"samples = forecaster(data[:T1], covariates, num_samples=1000)\n", | |
"p10, p50, p90 = quantile(samples, (0.1, 0.5, 0.9)).squeeze(-1)\n", | |
"crps = eval_crps(samples, data[T1:])\n", | |
"print(samples.shape, p10.shape)\n", | |
"\n", | |
"plt.figure(figsize=(9, 3))\n", | |
"plt.fill_between(torch.arange(T1, T2), p10, p90, color=\"red\", alpha=0.3)\n", | |
"plt.plot(torch.arange(T1, T2), p50, 'r-', label='forecast')\n", | |
"plt.plot(data, 'k-', label='truth')\n", | |
"plt.title(\"Total weekly ridership (CRPS = {:0.3g})\".format(crps))\n", | |
"plt.ylabel(\"log(# rides)\")\n", | |
"plt.xlabel(\"Week after 2011-01-01\")\n", | |
"plt.xlim(0, None)\n", | |
"plt.legend(loc=\"best\");" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Zooming in to just the forecasted region, we see this model ignores seasonal behavior." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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4Ac/YMKECUyaNIn58+cD8JOf/ITJkyczadIkLrvsMvbv3w/A448/Tm1tLZMmTWLatGkcOnSIW2+9lccee4y6ujoee+yxzAdERETylnpocsHNN0NjY99es64O7r67yyr33XcfK1eu5KWXXuJ73/seZ599NsuWLePFF1/kqquuojG0af369bzyyiuUlpbywAMPcMopp7Bu3ToOHjzI1KlTmTFjBm+//TbLli1j7dq1DBo0iN27o70/Z82axVe+8hUAFixYwEMPPcRNN93EwoULWbVqFaeddhp79uxhwIABLFy4kIaGBu69996+jYWIiBS8wYMHM2jQICU0J7tXXnmFJ598EoDzzz+f1tZW9u7dC8DMmTMpLS0F4LnnnqOpqYknnngCgL1797JlyxZeeOEFrrnmGgYNGgTA8OHDAWhubmbBggXs2bOHffv2ccEFFwAwdepU5s6dy+WXX86sWbMy+reKiEhhqqyszMlbTidPQpOiJyUT3P1jZbGZRYMHDz6u3j333HMsMYlZuXJl0plIc+fOZdmyZUyaNImlS5eyevVqIOodWrt2Lc888wx1dXXHeoNERER6K1e3P9AYmgyaNm0ajzzyCACrV6+moqKCoUOHfqzeBRdcwI9//GM6OjoA2Lx5Mx9++CEzZsxgyZIlx8bIxG45tbW1UVVVRUdHx7HrA2zdupUpU6awcOFCKioqePfddykrK6OtrS3df6qIiBSoXN3+QAlNBt122200NDQwceJE5s+fz8MPP5y03nXXXcf48eP5zGc+Q21tLV/96lc5fPgwF154ITNnzqS+vp66ujoWLVoEwO23386UKVOYPn06Z5111rHr3HLLLUyYMIHa2lqmTZvGpEmTOO+883jrrbc0KFhERHolV3toLNltkHxUX1/vDQ0Nx5Vt2rSJcePGZalF+UkxExGRrsyfP58777yTgwcPpn1BVjNb7+713amrHhoRERHpthEjRtDR0cEHH3yQ7aYcRwmNiIiIdFuubn+ghEZERES6TQmNiIiI5L1c3XFbCY2IiIh0m3poREREJO/l6n5OSmjSbM+ePSxevLjH5y1dupQdO3YcO66urmbXrl192TQREZEeGzhwIEOHDtUtp5NNZwnNkSNHujwvMaERERHJFbm4uN7Js5dTlsyfP5+tW7dSV1dHcXExQ4YMoaqqisbGRlasWMEll1xCc3Mz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\n", | |
"text/plain": [ | |
"<Figure size 648x216 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.figure(figsize=(9, 3))\n", | |
"plt.fill_between(torch.arange(T1, T2), p10, p90, color=\"red\", alpha=0.3)\n", | |
"plt.plot(torch.arange(T1, T2), p50, 'r-', label='forecast')\n", | |
"plt.plot(torch.arange(T1, T2), data[T1:], 'k-', label='truth')\n", | |
"plt.title(\"Total weekly ridership (CRPS = {:0.3g})\".format(crps))\n", | |
"plt.ylabel(\"log(# rides)\")\n", | |
"plt.xlabel(\"Week after 2011-01-01\")\n", | |
"plt.xlim(T1, None)\n", | |
"plt.legend(loc=\"best\");" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We could add a yearly seasonal component simply by adding new covariates (note we've already taken care in the model to handle `feature_dim > 1`)." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"Sample: 100%|██████████| 2000/2000 [00:58, 34.04it/s, step size=3.49e-01, acc. prob=0.895]" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"\n", | |
" mean std median 5.0% 95.0% n_eff r_hat\n", | |
" bias[0] 14.57 0.01 14.57 14.56 14.59 1531.06 1.00\n", | |
" weight[0] 0.12 0.01 0.12 0.10 0.15 1460.82 1.00\n", | |
" weight[1] -0.04 0.01 -0.04 -0.05 -0.03 1862.32 1.00\n", | |
" weight[2] -0.05 0.01 -0.05 -0.06 -0.04 1810.56 1.00\n", | |
" weight[3] -0.01 0.01 -0.01 -0.02 -0.00 1462.10 1.00\n", | |
" weight[4] -0.02 0.01 -0.02 -0.03 -0.01 2460.94 1.00\n", | |
" weight[5] -0.02 0.01 -0.02 -0.03 -0.01 1898.95 1.00\n", | |
" weight[6] -0.03 0.01 -0.03 -0.04 -0.02 1444.50 1.00\n", | |
" weight[7] -0.01 0.01 -0.01 -0.02 -0.00 2423.26 1.00\n", | |
" weight[8] -0.04 0.01 -0.04 -0.05 -0.03 1654.61 1.00\n", | |
" weight[9] -0.02 0.01 -0.02 -0.03 -0.01 1878.95 1.00\n", | |
" weight[10] -0.03 0.01 -0.03 -0.04 -0.02 2050.28 1.00\n", | |
" weight[11] 0.03 0.01 0.03 0.02 0.04 1454.76 1.00\n", | |
" weight[12] 0.00 0.01 0.00 -0.01 0.01 1848.83 1.00\n", | |
" weight[13] 0.03 0.01 0.03 0.02 0.04 2235.39 1.00\n", | |
" weight[14] 0.01 0.01 0.01 -0.00 0.02 1873.06 1.00\n", | |
" weight[15] 0.01 0.01 0.01 -0.00 0.02 1995.56 1.00\n", | |
" weight[16] 0.00 0.01 0.00 -0.01 0.01 1757.97 1.00\n", | |
" weight[17] 0.01 0.01 0.01 0.01 0.02 1717.18 1.00\n", | |
" weight[18] -0.01 0.01 -0.01 -0.02 0.00 1986.53 1.00\n", | |
" weight[19] 0.02 0.01 0.02 0.01 0.03 1626.81 1.00\n", | |
" weight[20] 0.01 0.01 0.01 -0.00 0.02 2021.86 1.00\n", | |
" weight[21] 0.03 0.01 0.03 0.01 0.04 1716.86 1.00\n", | |
" weight[22] 0.01 0.01 0.01 0.00 0.02 1506.92 1.00\n", | |
" weight[23] 0.02 0.01 0.02 0.00 0.03 1866.89 1.00\n", | |
" weight[24] -0.01 0.01 -0.01 -0.02 0.00 1733.13 1.00\n", | |
" weight[25] -0.00 0.01 -0.00 -0.01 0.01 1551.61 1.00\n", | |
" weight[26] -0.01 0.01 -0.01 -0.02 0.00 1792.28 1.00\n", | |
" weight[27] 0.00 0.01 0.00 -0.01 0.01 1563.69 1.00\n", | |
" weight[28] -0.02 0.01 -0.02 -0.03 -0.01 1930.02 1.00\n", | |
" weight[29] -0.02 0.01 -0.02 -0.03 -0.01 1721.07 1.00\n", | |
" weight[30] -0.01 0.01 -0.01 -0.03 -0.00 1956.95 1.00\n", | |
" weight[31] 0.00 0.01 0.00 -0.01 0.01 2298.21 1.00\n", | |
" weight[32] -0.00 0.01 -0.00 -0.01 0.01 1698.65 1.00\n", | |
" weight[33] -0.02 0.01 -0.02 -0.03 -0.01 1480.71 1.00\n", | |
" weight[34] -0.00 0.01 -0.00 -0.01 0.01 1725.80 1.00\n", | |
" weight[35] -0.02 0.01 -0.02 -0.03 -0.01 1622.77 1.00\n", | |
" weight[36] -0.03 0.01 -0.03 -0.04 -0.02 1649.00 1.00\n", | |
" weight[37] -0.02 0.01 -0.02 -0.03 -0.01 1941.26 1.00\n", | |
" weight[38] -0.03 0.01 -0.03 -0.04 -0.02 1465.99 1.00\n", | |
" weight[39] -0.01 0.01 -0.01 -0.02 -0.00 1757.78 1.00\n", | |
" weight[40] -0.01 0.01 -0.01 -0.02 -0.00 2271.25 1.00\n", | |
" weight[41] -0.01 0.01 -0.01 -0.02 0.00 1805.23 1.00\n", | |
" weight[42] -0.02 0.01 -0.02 -0.03 -0.00 1604.31 1.00\n", | |
" weight[43] -0.00 0.01 -0.00 -0.01 0.01 1767.37 1.00\n", | |
" weight[44] -0.01 0.01 -0.01 -0.02 0.00 1680.94 1.00\n", | |
" weight[45] -0.01 0.01 -0.01 -0.02 -0.00 1844.59 1.00\n", | |
" weight[46] -0.02 0.01 -0.02 -0.03 -0.01 1804.98 1.00\n", | |
" weight[47] 0.00 0.01 0.00 -0.01 0.01 1516.20 1.00\n", | |
" weight[48] -0.02 0.01 -0.02 -0.02 -0.00 1346.75 1.00\n", | |
" weight[49] 0.02 0.01 0.02 0.01 0.03 1521.11 1.00\n", | |
" weight[50] 0.01 0.01 0.01 -0.00 0.02 1747.17 1.00\n", | |
" weight[51] 0.01 0.01 0.01 0.00 0.02 1648.51 1.00\n", | |
" weight[52] 0.00 0.01 0.00 -0.01 0.01 1628.19 1.00\n", | |
"noise_scale[0] 0.09 0.00 0.09 0.08 0.10 1054.48 1.00\n", | |
"\n", | |
"Number of divergences: 0\n", | |
"CPU times: user 1min, sys: 345 ms, total: 1min 1s\n", | |
"Wall time: 58.8 s\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"\n" | |
] | |
} | |
], | |
"source": [ | |
"%%time\n", | |
"pyro.set_rng_seed(1)\n", | |
"pyro.clear_param_store()\n", | |
"time = torch.arange(float(T2)) / 365\n", | |
"covariates = torch.cat([time.unsqueeze(-1),\n", | |
" periodic_features(T2, 365.25 / 7)], dim=-1)\n", | |
"forecaster = HMCForecaster(Model1(), data[:T1], covariates[:T1])" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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/fQT//nPf3jssceYNWsWWVlZjBw50hqyW5awmTp1Kpdffrm1ivS///1vfHx8PK4ptXPnTuLj4xk+fDjHjx9n48aNNGrUiHvuuYdevXrRvn17tm3bhre3N9dff73H88bExLBixQqOHj3KO++8Y73UTGEzadIkvL29efnllzl+/DhBQUHcf//9JV6XoKAgRIScnBySkpKoVasWr776KldffTVr164lOzuboKAg/IzF69yHRpuWls2bN9O+fXsWLlxIZGQkx48ft0SBWUa7aLFjCpuQkJASr7cnvL29qVKlCnFxcdZLujTMxio1NZWqVasyePBgq05fffWVy3Bid2FzthabgIAAl+HV5cHeSy5L2JjngKL6mRabnTt3kpGRYd2rZgMXFBTEvn37GDRoUIXKBa6CzfxfmRY2KF3YmNekLIsN6DplZ2db301BZf8fZWRkuFxbu7AxyxkUFMSsWbOYO3cun376qcd1qexCy36NTEoSNqGhodZ9V1q97XWyW2zi4uIICAhwWZgyxVjk0bxGVapU4eTJkxw8eJBu3brx888/k5GRwZQpU6hbty4A7czh0zbMeuTl5blcF/MeKalO5vQDBw8eLPO+NQV7UlIS2dnZREdH4+3tTZ06dYrEmmFhK2zalOTMTOpVrcpvhw7x+s8/cyQ3lwbVqjF9+HD6tGrFDe3acTwjA28vL7pfdllRehEC/f15tH9/fklO5htDkL83ZgyRShHm42MJkLrx8Sg/P26tX58N48dzZdWqcOwYcbbOQmRQkLbYdO2q16uqU4dqPj78Z8AAxl57LUMMUZVXUMAuwEspLjGFjTFVxIXAETYXkJSUFGbOnEmyuerqX8BXX31Fp06dOHHiBGlpaYgI2dnZrF+/3jrGXPhNKWVZVBITE2nXrh0PPPAAzz33HF27dmXr1q1ER0fz7bffAmULG5PNmzdTpUoVateuTbt27fjuu++KpUlKSiIxMZEbjDkaDh486NKb/9e//gVol0hJFoKYmBjrpVGvXj3LElNYWMjzzz/PnDlzuOOOO7jrrrvo2LEjkydPdnmxuWM2nNnZ2eTl5eHn50dgYCB169YlOzubU6dOERQUhL+xpovdYiMiHD58mCuuuIINGzYA2vXRtGlTl95rp06dAGjSpInHMpjCpl69emX2ej2lLe98QuZLvbCwkODgYKtOubm5luXJbORM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\n", | |
"text/plain": [ | |
"<Figure size 648x216 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"samples = forecaster(data[:T1], covariates, num_samples=1000)\n", | |
"p10, p50, p90 = quantile(samples, (0.1, 0.5, 0.9)).squeeze(-1)\n", | |
"crps = eval_crps(samples, data[T1:])\n", | |
"\n", | |
"plt.figure(figsize=(9, 3))\n", | |
"plt.fill_between(torch.arange(T1, T2), p10, p90, color=\"red\", alpha=0.3)\n", | |
"plt.plot(torch.arange(T1, T2), p50, 'r-', label='forecast')\n", | |
"plt.plot(data, 'k-', label='truth')\n", | |
"plt.title(\"Total weekly ridership (CRPS = {:0.3g})\".format(crps))\n", | |
"plt.ylabel(\"log(# rides)\")\n", | |
"plt.xlabel(\"Week after 2011-01-01\")\n", | |
"plt.xlim(0, None)\n", | |
"plt.legend(loc=\"best\");" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 648x216 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.figure(figsize=(9, 3))\n", | |
"plt.fill_between(torch.arange(T1, T2), p10, p90, color=\"red\", alpha=0.3)\n", | |
"plt.plot(torch.arange(T1, T2), p50, 'r-', label='forecast')\n", | |
"plt.plot(torch.arange(T1, T2), data[T1:], 'k-', label='truth')\n", | |
"plt.title(\"Total weekly ridership (CRPS = {:0.3g})\".format(crps))\n", | |
"plt.ylabel(\"log(# rides)\")\n", | |
"plt.xlabel(\"Week after 2011-01-01\")\n", | |
"plt.xlim(T1, None)\n", | |
"plt.legend(loc=\"best\");" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Time-local random variables: `self.time_plate`\n", | |
"\n", | |
"So far we've seen the ``ForecastingModel.model()`` method and ``self.predict()``. The last piece of forecasting-specific syntax is the ``self.time_plate`` context for time-local variables. To see how this works, consider changing our global linear trend model above to a local level model. Note the [poutine.reparam()](http://docs.pyro.ai/en/latest/poutine.html#pyro.poutine.handlers.reparam) handler is a general Pyro inference trick, not specific to forecasting." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"class Model2(ForecastingModel):\n", | |
" def model(self, zero_data, covariates):\n", | |
" data_dim = zero_data.size(-1)\n", | |
" feature_dim = covariates.size(-1)\n", | |
" bias = pyro.sample(\"bias\", dist.Normal(0, 10).expand([data_dim]).to_event(1))\n", | |
" weight = pyro.sample(\"weight\", dist.Normal(0, 0.1).expand([feature_dim]).to_event(1))\n", | |
"\n", | |
" # We'll sample a time-global scale parameter outside the time plate,\n", | |
" # then time-local iid noise inside the time plate.\n", | |
" drift_scale = pyro.sample(\"drift_scale\",\n", | |
" dist.LogNormal(-20, 5).expand([1]).to_event(1))\n", | |
" with self.time_plate:\n", | |
" # We'll use a reparameterizer to improve variational fit. The model would still be\n", | |
" # correct if you removed this context manager, but the fit appears to be worse.\n", | |
" with poutine.reparam(config={\"drift\": LocScaleReparam()}):\n", | |
" drift = pyro.sample(\"drift\", dist.Normal(zero_data, drift_scale).to_event(1))\n", | |
"\n", | |
" # After we sample the iid \"drift\" noise we can combine it in any time-dependent way.\n", | |
" # It is important to keep everything inside the plate independent and apply dependent\n", | |
" # transforms outside the plate.\n", | |
" motion = drift.cumsum(-2) # A Brownian motion.\n", | |
" \n", | |
" # The prediction now includes three terms.\n", | |
" prediction = motion + bias + (weight * covariates).sum(-1, keepdim=True)\n", | |
" assert prediction.shape[-2:] == zero_data.shape\n", | |
" \n", | |
" # Construct the noise distribution and predict.\n", | |
" noise_scale = pyro.sample(\"noise_scale\", dist.LogNormal(-5, 5).expand([1]).to_event(1))\n", | |
" noise_dist = dist.Normal(zero_data, noise_scale)\n", | |
" self.predict(noise_dist, prediction) " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 13, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"Sample: 100%|██████████| 2000/2000 [14:44, 2.26it/s, step size=4.47e-02, acc. prob=0.941]\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"\n", | |
" mean std median 5.0% 95.0% n_eff r_hat\n", | |
" bias[0] 14.51 0.02 14.51 14.47 14.55 1397.54 1.00\n", | |
" weight[0] -0.04 0.01 -0.04 -0.05 -0.03 1644.47 1.00\n", | |
" weight[1] -0.05 0.01 -0.05 -0.06 -0.04 1449.86 1.00\n", | |
" weight[2] -0.01 0.01 -0.01 -0.02 -0.01 1394.49 1.00\n", | |
" weight[3] -0.02 0.01 -0.02 -0.03 -0.01 1885.88 1.00\n", | |
" weight[4] -0.02 0.01 -0.02 -0.03 -0.01 2369.42 1.00\n", | |
" weight[5] -0.03 0.01 -0.03 -0.04 -0.02 1371.17 1.00\n", | |
" weight[6] -0.01 0.00 -0.01 -0.02 -0.00 1753.90 1.00\n", | |
" weight[7] -0.04 0.01 -0.04 -0.05 -0.03 1948.30 1.00\n", | |
" weight[8] -0.02 0.01 -0.02 -0.03 -0.01 1642.62 1.00\n", | |
" weight[9] -0.03 0.01 -0.03 -0.03 -0.02 1529.05 1.00\n", | |
" weight[10] 0.03 0.01 0.03 0.02 0.03 1447.48 1.00\n", | |
" weight[11] 0.00 0.01 0.00 -0.01 0.01 1756.16 1.00\n", | |
" weight[12] 0.03 0.01 0.03 0.02 0.04 1767.69 1.00\n", | |
" weight[13] 0.01 0.01 0.01 0.00 0.02 2112.39 1.00\n", | |
" weight[14] 0.01 0.01 0.01 0.00 0.02 1763.25 1.00\n", | |
" weight[15] 0.00 0.01 0.00 -0.01 0.01 1121.05 1.00\n", | |
" weight[16] 0.01 0.01 0.01 0.01 0.02 1447.13 1.00\n", | |
" weight[17] -0.01 0.01 -0.01 -0.02 -0.00 1427.15 1.00\n", | |
" weight[18] 0.02 0.01 0.02 0.01 0.03 1717.20 1.00\n", | |
" weight[19] 0.01 0.01 0.01 -0.00 0.02 1336.62 1.00\n", | |
" weight[20] 0.03 0.01 0.03 0.02 0.03 1628.45 1.00\n", | |
" weight[21] 0.01 0.01 0.01 0.00 0.02 2339.68 1.00\n", | |
" weight[22] 0.02 0.01 0.02 0.01 0.02 1490.59 1.00\n", | |
" weight[23] -0.01 0.01 -0.01 -0.01 0.00 2222.28 1.00\n", | |
" weight[24] -0.00 0.01 -0.00 -0.01 0.01 1604.18 1.00\n", | |
" weight[25] -0.01 0.01 -0.01 -0.02 0.00 1914.97 1.00\n", | |
" weight[26] 0.00 0.01 0.00 -0.01 0.01 1952.83 1.00\n", | |
" weight[27] -0.02 0.01 -0.02 -0.03 -0.01 1308.91 1.00\n", | |
" weight[28] -0.02 0.01 -0.02 -0.03 -0.01 1954.75 1.00\n", | |
" weight[29] -0.02 0.01 -0.02 -0.02 -0.01 1768.12 1.00\n", | |
" weight[30] 0.00 0.01 0.00 -0.01 0.01 1879.60 1.00\n", | |
" weight[31] -0.00 0.01 -0.00 -0.01 0.00 2071.55 1.00\n", | |
" weight[32] -0.02 0.01 -0.02 -0.02 -0.01 2316.72 1.00\n", | |
" weight[33] -0.00 0.01 -0.00 -0.01 0.01 1986.63 1.00\n", | |
" weight[34] -0.02 0.01 -0.02 -0.02 -0.01 1692.31 1.00\n", | |
" weight[35] -0.03 0.01 -0.03 -0.04 -0.02 2400.52 1.00\n", | |
" weight[36] -0.02 0.01 -0.02 -0.03 -0.01 2018.29 1.00\n", | |
" weight[37] -0.03 0.01 -0.03 -0.04 -0.02 1550.45 1.00\n", | |
" weight[38] -0.01 0.01 -0.01 -0.02 -0.00 1918.60 1.00\n", | |
" weight[39] -0.01 0.01 -0.01 -0.02 -0.01 1850.17 1.00\n", | |
" weight[40] -0.01 0.01 -0.01 -0.02 0.00 1789.31 1.00\n", | |
" weight[41] -0.02 0.01 -0.02 -0.03 -0.01 2123.44 1.00\n", | |
" weight[42] -0.00 0.01 -0.00 -0.01 0.01 2158.39 1.00\n", | |
" weight[43] -0.01 0.01 -0.01 -0.02 -0.00 1422.64 1.00\n", | |
" weight[44] -0.01 0.01 -0.01 -0.02 -0.01 1863.10 1.00\n", | |
" weight[45] -0.02 0.01 -0.02 -0.03 -0.01 1723.12 1.00\n", | |
" weight[46] 0.00 0.01 0.00 -0.01 0.01 1777.51 1.00\n", | |
" weight[47] -0.02 0.01 -0.02 -0.02 -0.01 2065.29 1.00\n", | |
" weight[48] 0.02 0.01 0.02 0.01 0.03 1472.40 1.00\n", | |
" weight[49] 0.01 0.01 0.01 -0.00 0.02 1637.83 1.00\n", | |
" weight[50] 0.01 0.01 0.01 0.00 0.02 2110.91 1.00\n", | |
" weight[51] 0.00 0.01 0.00 -0.01 0.01 1429.17 1.00\n", | |
" drift_scale[0] 0.01 0.00 0.01 0.00 0.01 56.49 1.00\n", | |
" drift_decentered[0,0] -0.00 0.08 -0.00 -0.13 0.12 2280.56 1.00\n", | |
" drift_decentered[1,0] -0.00 0.08 -0.00 -0.12 0.13 2149.62 1.00\n", | |
" drift_decentered[2,0] -0.00 0.08 -0.00 -0.13 0.13 2960.05 1.00\n", | |
" drift_decentered[3,0] 0.00 0.08 -0.00 -0.12 0.12 1749.26 1.00\n", | |
" drift_decentered[4,0] 0.00 0.08 0.00 -0.12 0.12 1884.39 1.00\n", | |
" drift_decentered[5,0] 0.00 0.07 0.00 -0.11 0.12 1982.12 1.00\n", | |
" drift_decentered[6,0] 0.00 0.08 0.00 -0.14 0.12 2274.62 1.00\n", | |
" drift_decentered[7,0] 0.00 0.08 -0.00 -0.14 0.13 2826.36 1.00\n", | |
" drift_decentered[8,0] 0.01 0.08 0.01 -0.10 0.14 2027.33 1.00\n", | |
" drift_decentered[9,0] 0.01 0.08 0.00 -0.12 0.14 3087.32 1.00\n", | |
" drift_decentered[10,0] 0.01 0.08 0.01 -0.11 0.14 1931.72 1.00\n", | |
" drift_decentered[11,0] 0.01 0.07 0.01 -0.11 0.13 2677.21 1.00\n", | |
" drift_decentered[12,0] 0.01 0.08 0.01 -0.11 0.14 2511.18 1.00\n", | |
" drift_decentered[13,0] 0.01 0.08 0.02 -0.11 0.14 2209.17 1.00\n", | |
" drift_decentered[14,0] 0.01 0.07 0.01 -0.11 0.13 1839.87 1.00\n", | |
" drift_decentered[15,0] 0.01 0.08 0.01 -0.11 0.14 2097.43 1.00\n", | |
" drift_decentered[16,0] 0.01 0.07 0.01 -0.10 0.14 1594.47 1.00\n", | |
" drift_decentered[17,0] 0.02 0.08 0.02 -0.12 0.13 1814.31 1.00\n", | |
" drift_decentered[18,0] 0.01 0.08 0.02 -0.11 0.14 2007.43 1.00\n", | |
" drift_decentered[19,0] 0.01 0.08 0.01 -0.12 0.15 2124.75 1.00\n", | |
" drift_decentered[20,0] 0.01 0.07 0.02 -0.10 0.13 2134.75 1.00\n", | |
" drift_decentered[21,0] 0.01 0.08 0.02 -0.11 0.15 1919.88 1.00\n", | |
" drift_decentered[22,0] 0.02 0.08 0.02 -0.12 0.15 2493.04 1.00\n", | |
" drift_decentered[23,0] 0.02 0.08 0.02 -0.11 0.14 2742.28 1.00\n", | |
" drift_decentered[24,0] 0.02 0.08 0.02 -0.11 0.16 1885.37 1.00\n", | |
" drift_decentered[25,0] 0.02 0.08 0.02 -0.12 0.15 2106.77 1.00\n", | |
" drift_decentered[26,0] 0.02 0.08 0.01 -0.11 0.15 2777.04 1.00\n", | |
" drift_decentered[27,0] 0.01 0.07 0.01 -0.10 0.13 2598.64 1.00\n", | |
" drift_decentered[28,0] 0.01 0.08 0.01 -0.12 0.14 1857.20 1.00\n", | |
" drift_decentered[29,0] 0.01 0.07 0.01 -0.12 0.11 2020.42 1.00\n", | |
" drift_decentered[30,0] 0.01 0.08 0.01 -0.11 0.15 2506.52 1.00\n", | |
" drift_decentered[31,0] 0.01 0.07 0.01 -0.11 0.13 2166.43 1.00\n", | |
" drift_decentered[32,0] 0.01 0.08 0.01 -0.12 0.13 2058.64 1.00\n", | |
" drift_decentered[33,0] 0.01 0.08 0.01 -0.13 0.14 2334.76 1.00\n", | |
" drift_decentered[34,0] 0.01 0.08 0.01 -0.11 0.15 2314.28 1.00\n", | |
" drift_decentered[35,0] 0.01 0.08 0.01 -0.13 0.13 1966.52 1.00\n", | |
" drift_decentered[36,0] 0.01 0.09 0.01 -0.15 0.13 3066.88 1.00\n", | |
" drift_decentered[37,0] 0.00 0.08 0.01 -0.13 0.14 1747.10 1.00\n", | |
" drift_decentered[38,0] 0.01 0.08 0.01 -0.12 0.13 2739.86 1.00\n", | |
" drift_decentered[39,0] 0.01 0.08 0.00 -0.12 0.14 1923.73 1.00\n", | |
" drift_decentered[40,0] 0.01 0.08 0.01 -0.10 0.14 1956.68 1.00\n", | |
" drift_decentered[41,0] 0.02 0.07 0.02 -0.11 0.13 1749.40 1.00\n", | |
" drift_decentered[42,0] 0.03 0.08 0.03 -0.09 0.15 2775.14 1.00\n", | |
" drift_decentered[43,0] 0.02 0.08 0.02 -0.12 0.14 2532.88 1.00\n", | |
" drift_decentered[44,0] 0.02 0.08 0.02 -0.11 0.14 2634.06 1.00\n", | |
" drift_decentered[45,0] 0.03 0.08 0.03 -0.09 0.15 2358.67 1.00\n", | |
" drift_decentered[46,0] 0.03 0.08 0.03 -0.10 0.15 2776.51 1.00\n", | |
" drift_decentered[47,0] 0.03 0.08 0.03 -0.09 0.15 2195.39 1.00\n", | |
" drift_decentered[48,0] 0.03 0.07 0.03 -0.09 0.15 1710.29 1.00\n", | |
" drift_decentered[49,0] 0.03 0.08 0.03 -0.09 0.16 2185.53 1.00\n", | |
" drift_decentered[50,0] 0.03 0.07 0.03 -0.09 0.15 1775.65 1.00\n", | |
" drift_decentered[51,0] 0.03 0.08 0.03 -0.10 0.15 2005.32 1.00\n", | |
" drift_decentered[52,0] 0.02 0.08 0.02 -0.10 0.15 2555.93 1.00\n", | |
" drift_decentered[53,0] 0.01 0.08 0.01 -0.12 0.14 2080.88 1.00\n", | |
" drift_decentered[54,0] 0.01 0.08 0.02 -0.12 0.14 1830.20 1.00\n", | |
" drift_decentered[55,0] 0.01 0.08 0.02 -0.12 0.14 1998.09 1.00\n", | |
" drift_decentered[56,0] 0.01 0.08 0.01 -0.10 0.14 1832.68 1.00\n", | |
" drift_decentered[57,0] 0.02 0.08 0.02 -0.11 0.15 2399.11 1.00\n", | |
" drift_decentered[58,0] 0.02 0.07 0.02 -0.10 0.14 2063.95 1.00\n", | |
" drift_decentered[59,0] 0.01 0.07 0.01 -0.11 0.13 1999.16 1.00\n", | |
" drift_decentered[60,0] 0.01 0.08 0.01 -0.11 0.14 2787.60 1.00\n", | |
" drift_decentered[61,0] 0.01 0.08 0.01 -0.11 0.15 2163.29 1.00\n", | |
" drift_decentered[62,0] 0.01 0.08 0.01 -0.12 0.14 1962.54 1.00\n", | |
" drift_decentered[63,0] 0.01 0.08 0.01 -0.11 0.14 1247.90 1.00\n", | |
" drift_decentered[64,0] 0.01 0.08 0.01 -0.11 0.14 2294.95 1.00\n", | |
" drift_decentered[65,0] 0.02 0.08 0.01 -0.11 0.15 2355.35 1.00\n", | |
" drift_decentered[66,0] 0.02 0.08 0.01 -0.10 0.15 1710.11 1.00\n", | |
" drift_decentered[67,0] 0.02 0.08 0.02 -0.12 0.15 2316.11 1.00\n", | |
" drift_decentered[68,0] 0.02 0.08 0.02 -0.12 0.15 1887.58 1.00\n", | |
" drift_decentered[69,0] 0.02 0.07 0.02 -0.10 0.13 2545.48 1.00\n", | |
" drift_decentered[70,0] 0.02 0.08 0.02 -0.14 0.14 1625.43 1.00\n", | |
" drift_decentered[71,0] 0.02 0.08 0.02 -0.10 0.14 2979.34 1.00\n", | |
" drift_decentered[72,0] 0.02 0.08 0.02 -0.10 0.15 2200.54 1.00\n", | |
" drift_decentered[73,0] 0.02 0.07 0.02 -0.11 0.14 2330.59 1.00\n", | |
" drift_decentered[74,0] 0.02 0.08 0.02 -0.11 0.16 2214.47 1.00\n", | |
" drift_decentered[75,0] 0.02 0.08 0.02 -0.11 0.16 1867.87 1.00\n", | |
" drift_decentered[76,0] 0.03 0.08 0.03 -0.11 0.15 2406.28 1.00\n", | |
" drift_decentered[77,0] 0.03 0.08 0.03 -0.09 0.15 1838.78 1.00\n", | |
" drift_decentered[78,0] 0.02 0.08 0.02 -0.12 0.13 2009.60 1.00\n", | |
" drift_decentered[79,0] 0.02 0.08 0.01 -0.11 0.14 2249.17 1.00\n", | |
" drift_decentered[80,0] 0.02 0.08 0.02 -0.12 0.13 2011.00 1.00\n", | |
" drift_decentered[81,0] 0.02 0.08 0.01 -0.11 0.14 1394.16 1.00\n", | |
" drift_decentered[82,0] 0.02 0.08 0.02 -0.09 0.15 2975.60 1.00\n", | |
" drift_decentered[83,0] 0.02 0.08 0.02 -0.10 0.16 1938.97 1.00\n", | |
" drift_decentered[84,0] 0.02 0.08 0.02 -0.11 0.14 2355.04 1.00\n", | |
" drift_decentered[85,0] 0.02 0.08 0.02 -0.11 0.14 2214.49 1.00\n", | |
" drift_decentered[86,0] 0.02 0.08 0.02 -0.11 0.14 2057.82 1.00\n", | |
" drift_decentered[87,0] 0.02 0.08 0.02 -0.10 0.16 2202.00 1.00\n", | |
" drift_decentered[88,0] 0.02 0.08 0.02 -0.10 0.15 2107.02 1.00\n", | |
" drift_decentered[89,0] 0.02 0.08 0.02 -0.13 0.14 2331.15 1.00\n", | |
" drift_decentered[90,0] 0.02 0.08 0.02 -0.11 0.14 2374.64 1.00\n", | |
" drift_decentered[91,0] 0.02 0.08 0.02 -0.10 0.15 1817.40 1.00\n", | |
" drift_decentered[92,0] 0.02 0.08 0.02 -0.12 0.14 2255.18 1.00\n", | |
" drift_decentered[93,0] 0.01 0.08 0.01 -0.10 0.15 2872.33 1.00\n", | |
" drift_decentered[94,0] 0.01 0.08 0.01 -0.12 0.12 2547.74 1.00\n", | |
" drift_decentered[95,0] -0.00 0.08 -0.00 -0.12 0.13 1736.13 1.00\n", | |
" drift_decentered[96,0] -0.01 0.08 -0.01 -0.13 0.12 2246.23 1.00\n", | |
" drift_decentered[97,0] 0.00 0.07 0.00 -0.11 0.12 1970.27 1.00\n", | |
" drift_decentered[98,0] 0.00 0.08 0.00 -0.11 0.14 2320.80 1.00\n", | |
" drift_decentered[99,0] 0.01 0.08 0.01 -0.12 0.14 2322.81 1.00\n", | |
"drift_decentered[100,0] -0.01 0.07 -0.00 -0.13 0.11 1798.63 1.00\n", | |
"drift_decentered[101,0] -0.00 0.07 -0.00 -0.11 0.13 1964.53 1.00\n", | |
"drift_decentered[102,0] -0.01 0.07 -0.00 -0.13 0.11 1402.21 1.00\n", | |
"drift_decentered[103,0] -0.00 0.08 -0.01 -0.14 0.11 3041.40 1.00\n", | |
"drift_decentered[104,0] -0.00 0.08 0.00 -0.13 0.12 2048.45 1.00\n", | |
"drift_decentered[105,0] -0.00 0.08 -0.00 -0.13 0.13 2501.52 1.00\n", | |
"drift_decentered[106,0] 0.00 0.08 0.00 -0.12 0.12 2223.53 1.00\n", | |
"drift_decentered[107,0] -0.01 0.08 -0.01 -0.13 0.11 2175.94 1.00\n", | |
"drift_decentered[108,0] -0.00 0.07 -0.00 -0.11 0.14 2254.59 1.00\n", | |
"drift_decentered[109,0] 0.00 0.08 0.00 -0.13 0.12 1999.52 1.00\n", | |
"drift_decentered[110,0] 0.00 0.07 -0.00 -0.12 0.12 1656.13 1.00\n", | |
"drift_decentered[111,0] 0.00 0.08 0.00 -0.14 0.12 2371.85 1.00\n", | |
"drift_decentered[112,0] -0.00 0.08 0.00 -0.14 0.11 2022.37 1.00\n", | |
"drift_decentered[113,0] -0.00 0.07 -0.01 -0.13 0.11 1591.65 1.00\n", | |
"drift_decentered[114,0] 0.00 0.08 0.00 -0.12 0.14 2397.95 1.00\n", | |
"drift_decentered[115,0] -0.01 0.08 -0.01 -0.12 0.13 1534.68 1.00\n", | |
"drift_decentered[116,0] -0.01 0.07 -0.01 -0.14 0.11 2088.19 1.00\n", | |
"drift_decentered[117,0] -0.01 0.08 -0.01 -0.16 0.10 1669.96 1.00\n", | |
"drift_decentered[118,0] -0.01 0.08 -0.01 -0.13 0.11 2734.63 1.00\n", | |
"drift_decentered[119,0] -0.02 0.08 -0.02 -0.13 0.11 2288.01 1.00\n", | |
"drift_decentered[120,0] -0.02 0.08 -0.02 -0.16 0.10 2010.31 1.00\n", | |
"drift_decentered[121,0] -0.02 0.08 -0.02 -0.15 0.12 1830.93 1.00\n", | |
"drift_decentered[122,0] -0.03 0.08 -0.03 -0.17 0.10 1942.70 1.00\n", | |
"drift_decentered[123,0] -0.03 0.08 -0.02 -0.16 0.12 1710.74 1.00\n", | |
"drift_decentered[124,0] -0.03 0.08 -0.03 -0.14 0.10 1902.38 1.00\n", | |
"drift_decentered[125,0] -0.03 0.08 -0.03 -0.15 0.10 1834.86 1.00\n", | |
"drift_decentered[126,0] -0.03 0.08 -0.03 -0.16 0.10 1540.11 1.00\n", | |
"drift_decentered[127,0] -0.04 0.08 -0.04 -0.17 0.10 1585.34 1.00\n", | |
"drift_decentered[128,0] -0.04 0.08 -0.04 -0.17 0.09 1134.56 1.00\n", | |
"drift_decentered[129,0] -0.05 0.08 -0.05 -0.17 0.10 1015.88 1.00\n", | |
"drift_decentered[130,0] -0.04 0.08 -0.05 -0.18 0.08 1529.87 1.00\n", | |
"drift_decentered[131,0] 0.04 0.08 0.04 -0.09 0.16 1440.67 1.00\n", | |
"drift_decentered[132,0] 0.03 0.08 0.03 -0.10 0.15 1694.88 1.00\n", | |
"drift_decentered[133,0] 0.04 0.08 0.03 -0.08 0.17 2123.96 1.00\n", | |
"drift_decentered[134,0] 0.03 0.08 0.03 -0.10 0.16 1948.59 1.00\n", | |
"drift_decentered[135,0] 0.03 0.08 0.03 -0.10 0.15 1808.72 1.00\n", | |
"drift_decentered[136,0] 0.03 0.08 0.03 -0.09 0.16 1794.99 1.00\n", | |
"drift_decentered[137,0] 0.03 0.07 0.03 -0.08 0.15 1624.73 1.00\n", | |
"drift_decentered[138,0] 0.03 0.08 0.03 -0.10 0.15 2106.88 1.00\n", | |
"drift_decentered[139,0] 0.02 0.08 0.02 -0.12 0.14 2764.65 1.00\n", | |
"drift_decentered[140,0] 0.01 0.08 0.01 -0.13 0.12 2014.93 1.00\n", | |
"drift_decentered[141,0] -0.00 0.08 -0.00 -0.12 0.12 2051.49 1.00\n", | |
"drift_decentered[142,0] 0.00 0.08 -0.00 -0.13 0.12 2140.06 1.00\n", | |
"drift_decentered[143,0] -0.01 0.08 -0.00 -0.13 0.11 1608.82 1.00\n", | |
"drift_decentered[144,0] -0.01 0.08 -0.01 -0.14 0.12 2735.76 1.00\n", | |
"drift_decentered[145,0] -0.01 0.08 -0.01 -0.14 0.11 1685.73 1.00\n", | |
"drift_decentered[146,0] 0.00 0.08 0.00 -0.12 0.13 2248.70 1.00\n", | |
"drift_decentered[147,0] 0.04 0.08 0.04 -0.10 0.17 2406.98 1.00\n", | |
"drift_decentered[148,0] 0.04 0.07 0.04 -0.08 0.16 1801.11 1.00\n", | |
"drift_decentered[149,0] 0.04 0.08 0.04 -0.08 0.16 2120.64 1.00\n", | |
"drift_decentered[150,0] 0.04 0.08 0.04 -0.10 0.16 2062.52 1.00\n", | |
"drift_decentered[151,0] 0.02 0.08 0.02 -0.11 0.15 2515.49 1.00\n", | |
"drift_decentered[152,0] 0.03 0.08 0.03 -0.10 0.16 2155.51 1.00\n", | |
"drift_decentered[153,0] 0.03 0.08 0.03 -0.11 0.16 1980.07 1.00\n", | |
"drift_decentered[154,0] 0.03 0.08 0.03 -0.10 0.15 1963.91 1.00\n", | |
"drift_decentered[155,0] 0.03 0.08 0.03 -0.09 0.16 2677.89 1.00\n", | |
"drift_decentered[156,0] 0.02 0.07 0.02 -0.10 0.14 2036.48 1.00\n", | |
"drift_decentered[157,0] 0.02 0.07 0.02 -0.09 0.14 2146.23 1.00\n", | |
"drift_decentered[158,0] 0.02 0.07 0.02 -0.09 0.13 2081.89 1.00\n", | |
"drift_decentered[159,0] 0.02 0.08 0.02 -0.11 0.14 1831.78 1.00\n", | |
"drift_decentered[160,0] 0.02 0.08 0.02 -0.09 0.16 2408.98 1.00\n", | |
"drift_decentered[161,0] 0.02 0.08 0.02 -0.10 0.14 2085.32 1.00\n", | |
"drift_decentered[162,0] 0.02 0.08 0.02 -0.09 0.14 2162.36 1.00\n", | |
"drift_decentered[163,0] 0.03 0.08 0.02 -0.12 0.15 2566.22 1.00\n", | |
"drift_decentered[164,0] 0.03 0.07 0.03 -0.10 0.14 2102.31 1.00\n", | |
"drift_decentered[165,0] 0.02 0.08 0.02 -0.11 0.15 2307.18 1.00\n", | |
"drift_decentered[166,0] 0.02 0.08 0.02 -0.12 0.14 1884.98 1.00\n", | |
"drift_decentered[167,0] 0.02 0.08 0.03 -0.10 0.15 2716.65 1.00\n", | |
"drift_decentered[168,0] 0.02 0.07 0.02 -0.10 0.14 2696.14 1.00\n", | |
"drift_decentered[169,0] 0.02 0.08 0.02 -0.09 0.16 1973.99 1.00\n", | |
"drift_decentered[170,0] 0.02 0.08 0.02 -0.10 0.16 2496.70 1.00\n", | |
"drift_decentered[171,0] 0.02 0.08 0.02 -0.12 0.14 2022.09 1.00\n", | |
"drift_decentered[172,0] 0.02 0.08 0.02 -0.10 0.16 2496.27 1.00\n", | |
"drift_decentered[173,0] 0.02 0.08 0.03 -0.11 0.14 1909.92 1.00\n", | |
"drift_decentered[174,0] 0.03 0.08 0.02 -0.09 0.15 1754.82 1.00\n", | |
"drift_decentered[175,0] 0.03 0.08 0.03 -0.09 0.16 2298.14 1.00\n", | |
"drift_decentered[176,0] 0.03 0.07 0.02 -0.10 0.15 2009.08 1.00\n", | |
"drift_decentered[177,0] 0.03 0.08 0.03 -0.11 0.14 2085.97 1.00\n", | |
"drift_decentered[178,0] 0.03 0.08 0.03 -0.12 0.14 2336.24 1.00\n", | |
"drift_decentered[179,0] 0.02 0.08 0.02 -0.10 0.16 2446.19 1.00\n", | |
"drift_decentered[180,0] 0.02 0.07 0.02 -0.09 0.15 2112.43 1.00\n", | |
"drift_decentered[181,0] 0.02 0.07 0.02 -0.09 0.15 1977.64 1.00\n", | |
"drift_decentered[182,0] 0.03 0.07 0.03 -0.07 0.15 1417.35 1.00\n", | |
"drift_decentered[183,0] 0.02 0.08 0.02 -0.11 0.15 2305.05 1.00\n", | |
"drift_decentered[184,0] 0.01 0.08 0.01 -0.11 0.15 2187.09 1.00\n", | |
"drift_decentered[185,0] 0.01 0.08 0.01 -0.11 0.14 1979.78 1.00\n", | |
"drift_decentered[186,0] 0.01 0.08 0.01 -0.12 0.12 1608.55 1.00\n", | |
"drift_decentered[187,0] 0.01 0.08 0.01 -0.10 0.13 1926.19 1.00\n", | |
"drift_decentered[188,0] 0.01 0.08 0.01 -0.12 0.14 2417.16 1.00\n", | |
"drift_decentered[189,0] 0.01 0.08 0.01 -0.11 0.13 2609.61 1.00\n", | |
"drift_decentered[190,0] 0.01 0.07 0.01 -0.11 0.13 2745.14 1.00\n", | |
"drift_decentered[191,0] 0.01 0.08 0.01 -0.11 0.13 2015.62 1.00\n", | |
"drift_decentered[192,0] 0.02 0.08 0.02 -0.10 0.15 2463.93 1.00\n", | |
"drift_decentered[193,0] 0.01 0.07 0.01 -0.12 0.12 1979.96 1.00\n", | |
"drift_decentered[194,0] 0.01 0.08 0.02 -0.12 0.13 2405.08 1.00\n", | |
"drift_decentered[195,0] 0.01 0.08 0.01 -0.12 0.14 1778.21 1.00\n", | |
"drift_decentered[196,0] 0.02 0.09 0.02 -0.14 0.15 1902.61 1.00\n", | |
"drift_decentered[197,0] 0.02 0.08 0.01 -0.10 0.16 1892.38 1.00\n", | |
"drift_decentered[198,0] 0.01 0.08 0.01 -0.13 0.12 1858.10 1.00\n", | |
"drift_decentered[199,0] -0.00 0.07 -0.00 -0.12 0.12 2446.63 1.00\n", | |
"drift_decentered[200,0] 0.00 0.08 0.00 -0.13 0.13 1890.72 1.00\n", | |
"drift_decentered[201,0] -0.00 0.08 -0.00 -0.14 0.11 2212.48 1.00\n", | |
"drift_decentered[202,0] 0.00 0.08 -0.00 -0.13 0.15 2514.32 1.00\n", | |
"drift_decentered[203,0] -0.01 0.08 -0.01 -0.14 0.11 1826.21 1.00\n", | |
"drift_decentered[204,0] -0.01 0.08 -0.01 -0.15 0.10 1877.97 1.00\n", | |
"drift_decentered[205,0] 0.00 0.08 0.00 -0.13 0.13 1970.74 1.00\n", | |
"drift_decentered[206,0] 0.00 0.08 -0.00 -0.11 0.14 2043.26 1.00\n", | |
"drift_decentered[207,0] 0.00 0.08 0.00 -0.12 0.13 1952.14 1.00\n", | |
"drift_decentered[208,0] 0.01 0.07 0.01 -0.12 0.13 2008.58 1.00\n", | |
"drift_decentered[209,0] 0.01 0.07 0.00 -0.10 0.13 3224.89 1.00\n", | |
"drift_decentered[210,0] 0.00 0.08 0.01 -0.12 0.13 2929.19 1.00\n", | |
"drift_decentered[211,0] 0.00 0.07 0.00 -0.12 0.12 1722.44 1.00\n", | |
"drift_decentered[212,0] 0.00 0.09 0.00 -0.14 0.14 2203.02 1.00\n", | |
"drift_decentered[213,0] 0.01 0.08 0.01 -0.12 0.13 2127.38 1.00\n", | |
"drift_decentered[214,0] 0.01 0.07 0.01 -0.11 0.13 1830.46 1.00\n", | |
"drift_decentered[215,0] 0.01 0.08 0.01 -0.10 0.14 1951.80 1.00\n", | |
"drift_decentered[216,0] 0.01 0.08 0.01 -0.11 0.14 1853.59 1.00\n", | |
"drift_decentered[217,0] 0.01 0.08 0.01 -0.12 0.13 1577.28 1.00\n", | |
"drift_decentered[218,0] 0.01 0.07 0.01 -0.12 0.12 2765.80 1.00\n", | |
"drift_decentered[219,0] 0.01 0.07 0.01 -0.12 0.12 2129.92 1.00\n", | |
"drift_decentered[220,0] 0.01 0.08 0.01 -0.11 0.14 2066.79 1.00\n", | |
"drift_decentered[221,0] 0.00 0.08 0.00 -0.13 0.13 2121.65 1.00\n", | |
"drift_decentered[222,0] 0.00 0.08 0.00 -0.12 0.13 1740.52 1.00\n", | |
"drift_decentered[223,0] 0.01 0.08 0.01 -0.11 0.13 2533.83 1.00\n", | |
"drift_decentered[224,0] 0.01 0.08 0.00 -0.11 0.16 1874.91 1.00\n", | |
"drift_decentered[225,0] 0.00 0.08 0.01 -0.13 0.13 2108.99 1.00\n", | |
"drift_decentered[226,0] 0.01 0.08 0.00 -0.12 0.14 2191.95 1.00\n", | |
"drift_decentered[227,0] 0.01 0.08 0.01 -0.14 0.13 2820.79 1.00\n", | |
"drift_decentered[228,0] 0.01 0.08 0.01 -0.12 0.13 1968.55 1.00\n", | |
"drift_decentered[229,0] 0.01 0.07 0.01 -0.12 0.13 2098.27 1.00\n", | |
"drift_decentered[230,0] 0.02 0.08 0.02 -0.11 0.14 2287.92 1.00\n", | |
"drift_decentered[231,0] 0.01 0.08 0.01 -0.13 0.15 2384.30 1.00\n", | |
"drift_decentered[232,0] 0.01 0.08 0.01 -0.13 0.14 1855.01 1.00\n", | |
"drift_decentered[233,0] 0.01 0.07 0.01 -0.11 0.13 2371.62 1.00\n", | |
"drift_decentered[234,0] 0.01 0.08 0.01 -0.12 0.14 1917.48 1.00\n", | |
"drift_decentered[235,0] 0.00 0.08 0.00 -0.12 0.11 2254.28 1.00\n", | |
"drift_decentered[236,0] -0.01 0.08 -0.01 -0.13 0.12 1871.69 1.00\n", | |
"drift_decentered[237,0] -0.00 0.08 -0.00 -0.13 0.11 1856.11 1.00\n", | |
"drift_decentered[238,0] -0.01 0.08 -0.01 -0.14 0.12 2354.03 1.00\n", | |
"drift_decentered[239,0] -0.00 0.08 -0.00 -0.13 0.12 1970.17 1.00\n", | |
"drift_decentered[240,0] -0.00 0.07 0.00 -0.11 0.13 1893.61 1.00\n", | |
"drift_decentered[241,0] 0.00 0.08 0.00 -0.11 0.14 2210.72 1.00\n", | |
"drift_decentered[242,0] 0.00 0.08 0.00 -0.12 0.14 2135.80 1.00\n", | |
"drift_decentered[243,0] 0.00 0.08 0.00 -0.13 0.12 2554.41 1.00\n", | |
"drift_decentered[244,0] -0.00 0.08 -0.00 -0.13 0.13 2055.71 1.00\n", | |
"drift_decentered[245,0] 0.01 0.08 0.01 -0.12 0.13 2078.37 1.00\n", | |
"drift_decentered[246,0] 0.01 0.08 0.01 -0.12 0.14 2090.98 1.00\n", | |
"drift_decentered[247,0] 0.01 0.07 0.01 -0.13 0.11 2075.33 1.00\n", | |
"drift_decentered[248,0] 0.01 0.08 0.01 -0.11 0.13 2967.24 1.00\n", | |
"drift_decentered[249,0] 0.01 0.08 0.01 -0.11 0.14 1886.85 1.00\n", | |
"drift_decentered[250,0] 0.01 0.08 0.01 -0.12 0.13 1857.60 1.00\n", | |
"drift_decentered[251,0] 0.01 0.07 0.00 -0.12 0.12 1676.37 1.00\n", | |
"drift_decentered[252,0] 0.00 0.08 0.00 -0.13 0.14 2476.50 1.00\n", | |
"drift_decentered[253,0] 0.00 0.08 0.00 -0.12 0.14 2244.81 1.00\n", | |
"drift_decentered[254,0] 0.01 0.07 0.00 -0.11 0.12 3151.63 1.00\n", | |
"drift_decentered[255,0] -0.00 0.08 -0.00 -0.13 0.13 2650.73 1.00\n", | |
"drift_decentered[256,0] -0.00 0.08 -0.00 -0.12 0.13 2059.76 1.00\n", | |
"drift_decentered[257,0] 0.00 0.07 0.01 -0.11 0.13 2177.54 1.00\n", | |
"drift_decentered[258,0] -0.00 0.07 -0.00 -0.12 0.11 1819.86 1.00\n", | |
"drift_decentered[259,0] 0.01 0.08 0.00 -0.13 0.13 1870.92 1.00\n", | |
"drift_decentered[260,0] 0.01 0.08 0.01 -0.11 0.13 1972.48 1.00\n", | |
"drift_decentered[261,0] 0.01 0.08 0.00 -0.12 0.13 2648.05 1.00\n", | |
"drift_decentered[262,0] 0.01 0.08 0.01 -0.12 0.14 2107.93 1.00\n", | |
"drift_decentered[263,0] 0.01 0.08 0.01 -0.12 0.13 2010.31 1.00\n", | |
"drift_decentered[264,0] 0.01 0.08 0.01 -0.12 0.15 2289.75 1.00\n", | |
"drift_decentered[265,0] 0.00 0.08 0.00 -0.12 0.13 1988.17 1.00\n", | |
"drift_decentered[266,0] -0.00 0.08 -0.01 -0.14 0.11 2188.06 1.00\n", | |
"drift_decentered[267,0] -0.01 0.07 -0.01 -0.13 0.11 1993.18 1.00\n", | |
"drift_decentered[268,0] -0.01 0.08 -0.01 -0.13 0.11 2204.61 1.00\n", | |
"drift_decentered[269,0] -0.01 0.08 -0.01 -0.14 0.11 2230.24 1.00\n", | |
"drift_decentered[270,0] -0.01 0.08 -0.01 -0.13 0.11 1769.90 1.00\n", | |
"drift_decentered[271,0] -0.01 0.08 -0.01 -0.15 0.11 2336.43 1.00\n", | |
"drift_decentered[272,0] -0.01 0.07 -0.01 -0.12 0.10 2168.20 1.00\n", | |
"drift_decentered[273,0] -0.01 0.07 -0.01 -0.13 0.12 3102.44 1.00\n", | |
"drift_decentered[274,0] -0.00 0.08 -0.00 -0.14 0.13 2418.67 1.00\n", | |
"drift_decentered[275,0] -0.01 0.08 -0.01 -0.14 0.13 2161.31 1.00\n", | |
"drift_decentered[276,0] -0.01 0.08 -0.01 -0.12 0.13 1862.83 1.00\n", | |
"drift_decentered[277,0] -0.01 0.07 -0.01 -0.13 0.11 2816.21 1.00\n", | |
"drift_decentered[278,0] -0.01 0.08 -0.01 -0.15 0.11 3051.01 1.00\n", | |
"drift_decentered[279,0] -0.01 0.07 -0.01 -0.13 0.10 2147.25 1.00\n", | |
"drift_decentered[280,0] -0.01 0.08 -0.01 -0.14 0.11 2749.43 1.00\n", | |
"drift_decentered[281,0] -0.01 0.08 -0.01 -0.14 0.11 2114.90 1.00\n", | |
"drift_decentered[282,0] -0.01 0.07 -0.01 -0.14 0.10 2181.06 1.00\n", | |
"drift_decentered[283,0] -0.01 0.08 -0.01 -0.13 0.12 2433.70 1.00\n", | |
"drift_decentered[284,0] -0.00 0.08 0.00 -0.13 0.13 2611.32 1.00\n", | |
"drift_decentered[285,0] -0.00 0.08 -0.00 -0.12 0.13 2124.17 1.00\n", | |
"drift_decentered[286,0] -0.00 0.08 -0.01 -0.14 0.13 2977.05 1.00\n", | |
"drift_decentered[287,0] -0.01 0.08 -0.01 -0.14 0.11 1762.31 1.00\n", | |
"drift_decentered[288,0] -0.02 0.08 -0.01 -0.15 0.12 3133.33 1.00\n", | |
"drift_decentered[289,0] -0.01 0.08 -0.02 -0.12 0.12 1887.68 1.00\n", | |
"drift_decentered[290,0] -0.01 0.08 -0.01 -0.14 0.11 2091.11 1.00\n", | |
"drift_decentered[291,0] -0.02 0.08 -0.02 -0.14 0.12 2040.60 1.00\n", | |
"drift_decentered[292,0] -0.01 0.08 -0.01 -0.14 0.11 1963.15 1.00\n", | |
"drift_decentered[293,0] -0.01 0.08 -0.01 -0.13 0.12 1821.85 1.00\n", | |
"drift_decentered[294,0] -0.01 0.08 -0.01 -0.15 0.11 2315.90 1.00\n", | |
"drift_decentered[295,0] -0.01 0.07 -0.01 -0.13 0.11 1630.89 1.00\n", | |
"drift_decentered[296,0] -0.01 0.08 -0.00 -0.12 0.13 1629.48 1.00\n", | |
"drift_decentered[297,0] -0.01 0.08 -0.01 -0.14 0.12 2626.41 1.00\n", | |
"drift_decentered[298,0] -0.00 0.08 -0.00 -0.13 0.14 2003.47 1.00\n", | |
"drift_decentered[299,0] -0.00 0.08 -0.01 -0.12 0.13 1785.08 1.00\n", | |
"drift_decentered[300,0] 0.00 0.08 0.00 -0.14 0.11 1992.51 1.00\n", | |
"drift_decentered[301,0] -0.00 0.07 -0.00 -0.13 0.12 2109.78 1.00\n", | |
"drift_decentered[302,0] -0.00 0.07 -0.01 -0.13 0.12 2712.35 1.00\n", | |
"drift_decentered[303,0] -0.01 0.07 -0.01 -0.13 0.11 1653.44 1.00\n", | |
"drift_decentered[304,0] -0.01 0.08 -0.01 -0.14 0.13 3004.20 1.00\n", | |
"drift_decentered[305,0] -0.01 0.08 -0.01 -0.16 0.11 2955.71 1.00\n", | |
"drift_decentered[306,0] -0.01 0.08 -0.01 -0.13 0.13 2201.77 1.00\n", | |
"drift_decentered[307,0] -0.01 0.08 -0.01 -0.14 0.11 2545.16 1.00\n", | |
"drift_decentered[308,0] -0.01 0.08 -0.01 -0.13 0.13 2125.86 1.00\n", | |
"drift_decentered[309,0] -0.01 0.08 -0.01 -0.13 0.11 2319.22 1.00\n", | |
"drift_decentered[310,0] -0.01 0.08 -0.01 -0.14 0.11 2804.59 1.00\n", | |
"drift_decentered[311,0] -0.01 0.08 -0.01 -0.13 0.12 1680.62 1.00\n", | |
"drift_decentered[312,0] -0.02 0.07 -0.02 -0.15 0.09 2111.40 1.00\n", | |
"drift_decentered[313,0] -0.02 0.08 -0.02 -0.15 0.11 1990.56 1.00\n", | |
"drift_decentered[314,0] -0.01 0.08 -0.01 -0.15 0.12 2197.25 1.00\n", | |
"drift_decentered[315,0] -0.01 0.07 -0.01 -0.12 0.11 2203.74 1.00\n", | |
"drift_decentered[316,0] -0.01 0.08 -0.01 -0.14 0.12 2563.04 1.00\n", | |
"drift_decentered[317,0] -0.01 0.08 -0.01 -0.13 0.13 2517.32 1.00\n", | |
"drift_decentered[318,0] -0.01 0.08 -0.01 -0.13 0.12 2542.85 1.00\n", | |
"drift_decentered[319,0] -0.01 0.08 -0.01 -0.14 0.12 3152.07 1.00\n", | |
"drift_decentered[320,0] -0.01 0.08 -0.02 -0.14 0.13 2068.76 1.00\n", | |
"drift_decentered[321,0] -0.01 0.07 -0.01 -0.13 0.11 1590.10 1.00\n", | |
"drift_decentered[322,0] -0.01 0.08 -0.01 -0.13 0.14 1903.17 1.00\n", | |
"drift_decentered[323,0] -0.01 0.08 -0.01 -0.14 0.11 1692.83 1.00\n", | |
"drift_decentered[324,0] -0.01 0.08 -0.01 -0.13 0.11 1619.67 1.00\n", | |
"drift_decentered[325,0] -0.01 0.08 -0.01 -0.14 0.13 2083.94 1.00\n", | |
"drift_decentered[326,0] -0.01 0.08 -0.01 -0.12 0.14 1755.35 1.00\n", | |
"drift_decentered[327,0] -0.01 0.07 -0.01 -0.15 0.10 2749.83 1.00\n", | |
"drift_decentered[328,0] -0.00 0.08 -0.00 -0.14 0.12 2462.57 1.00\n", | |
"drift_decentered[329,0] -0.01 0.07 -0.01 -0.12 0.12 2129.79 1.00\n", | |
"drift_decentered[330,0] -0.01 0.07 -0.01 -0.14 0.11 1991.33 1.00\n", | |
"drift_decentered[331,0] -0.01 0.08 -0.01 -0.13 0.14 2144.75 1.00\n", | |
"drift_decentered[332,0] -0.00 0.08 -0.01 -0.15 0.12 1747.65 1.00\n", | |
"drift_decentered[333,0] -0.00 0.08 -0.01 -0.13 0.12 2256.85 1.00\n", | |
"drift_decentered[334,0] -0.01 0.07 -0.01 -0.13 0.11 2032.04 1.00\n", | |
"drift_decentered[335,0] -0.00 0.07 -0.00 -0.14 0.10 1893.35 1.00\n", | |
"drift_decentered[336,0] -0.00 0.08 -0.00 -0.13 0.12 2272.23 1.00\n", | |
"drift_decentered[337,0] -0.00 0.08 -0.00 -0.15 0.12 1864.94 1.00\n", | |
"drift_decentered[338,0] -0.00 0.08 0.00 -0.12 0.13 2524.94 1.00\n", | |
"drift_decentered[339,0] -0.01 0.08 -0.01 -0.13 0.12 2758.25 1.00\n", | |
"drift_decentered[340,0] -0.01 0.08 -0.01 -0.14 0.14 2419.34 1.00\n", | |
"drift_decentered[341,0] -0.01 0.08 -0.01 -0.15 0.10 1592.87 1.00\n", | |
"drift_decentered[342,0] -0.01 0.08 -0.01 -0.12 0.13 1671.89 1.00\n", | |
"drift_decentered[343,0] -0.01 0.08 -0.01 -0.14 0.11 2073.63 1.00\n", | |
"drift_decentered[344,0] -0.01 0.08 -0.01 -0.15 0.10 2001.33 1.00\n", | |
"drift_decentered[345,0] -0.01 0.08 -0.01 -0.14 0.11 2059.34 1.00\n", | |
"drift_decentered[346,0] -0.01 0.08 -0.01 -0.14 0.11 1953.27 1.00\n", | |
"drift_decentered[347,0] -0.01 0.08 -0.01 -0.16 0.12 2032.89 1.00\n", | |
"drift_decentered[348,0] -0.01 0.08 -0.01 -0.13 0.12 1912.42 1.00\n", | |
"drift_decentered[349,0] -0.00 0.08 -0.00 -0.14 0.10 2352.34 1.00\n", | |
"drift_decentered[350,0] -0.00 0.08 -0.00 -0.12 0.12 2170.38 1.00\n", | |
"drift_decentered[351,0] -0.00 0.08 -0.01 -0.12 0.13 2234.80 1.00\n", | |
"drift_decentered[352,0] -0.00 0.08 -0.00 -0.14 0.13 2765.89 1.00\n", | |
"drift_decentered[353,0] 0.00 0.08 0.00 -0.12 0.13 1772.89 1.00\n", | |
"drift_decentered[354,0] 0.00 0.08 0.00 -0.13 0.14 2685.68 1.00\n", | |
"drift_decentered[355,0] -0.00 0.07 -0.01 -0.11 0.12 1998.39 1.00\n", | |
"drift_decentered[356,0] -0.01 0.08 -0.01 -0.13 0.12 2487.86 1.00\n", | |
"drift_decentered[357,0] -0.00 0.08 -0.00 -0.15 0.11 2307.93 1.00\n", | |
"drift_decentered[358,0] -0.01 0.07 -0.01 -0.12 0.12 2238.92 1.00\n", | |
"drift_decentered[359,0] -0.01 0.07 -0.01 -0.12 0.10 3087.89 1.00\n", | |
"drift_decentered[360,0] -0.00 0.07 -0.00 -0.13 0.11 2121.82 1.00\n", | |
"drift_decentered[361,0] -0.01 0.08 -0.01 -0.14 0.13 2218.94 1.00\n", | |
"drift_decentered[362,0] -0.01 0.08 -0.01 -0.15 0.10 2701.36 1.00\n", | |
"drift_decentered[363,0] -0.01 0.07 -0.01 -0.14 0.10 1882.65 1.00\n", | |
"drift_decentered[364,0] -0.02 0.07 -0.02 -0.15 0.10 1723.27 1.00\n", | |
"drift_decentered[365,0] -0.01 0.08 -0.01 -0.14 0.12 3001.26 1.00\n", | |
"drift_decentered[366,0] -0.00 0.08 -0.00 -0.13 0.12 1785.72 1.00\n", | |
"drift_decentered[367,0] -0.00 0.08 -0.00 -0.14 0.12 1898.94 1.00\n", | |
"drift_decentered[368,0] -0.00 0.08 -0.01 -0.14 0.12 2161.14 1.00\n", | |
"drift_decentered[369,0] -0.00 0.07 -0.00 -0.13 0.10 1931.30 1.00\n", | |
"drift_decentered[370,0] -0.00 0.08 -0.00 -0.14 0.12 2246.09 1.00\n", | |
"drift_decentered[371,0] 0.00 0.08 -0.00 -0.13 0.13 2213.35 1.00\n", | |
"drift_decentered[372,0] -0.00 0.07 -0.00 -0.12 0.12 1852.47 1.00\n", | |
"drift_decentered[373,0] 0.00 0.08 0.00 -0.13 0.12 2500.73 1.00\n", | |
"drift_decentered[374,0] 0.00 0.07 -0.00 -0.13 0.11 1900.90 1.00\n", | |
"drift_decentered[375,0] 0.00 0.08 0.00 -0.13 0.12 2284.26 1.00\n", | |
"drift_decentered[376,0] 0.00 0.08 0.00 -0.13 0.12 2582.45 1.00\n", | |
"drift_decentered[377,0] 0.01 0.08 0.00 -0.12 0.15 2693.59 1.00\n", | |
"drift_decentered[378,0] 0.00 0.08 0.00 -0.12 0.13 1882.20 1.00\n", | |
"drift_decentered[379,0] 0.00 0.07 0.00 -0.12 0.12 1999.26 1.00\n", | |
"drift_decentered[380,0] -0.00 0.08 0.00 -0.12 0.13 1709.70 1.00\n", | |
"drift_decentered[381,0] 0.00 0.08 0.00 -0.13 0.13 2554.62 1.00\n", | |
"drift_decentered[382,0] 0.00 0.07 0.00 -0.12 0.12 1874.54 1.00\n", | |
"drift_decentered[383,0] -0.00 0.07 -0.00 -0.11 0.12 1647.29 1.00\n", | |
"drift_decentered[384,0] -0.00 0.08 -0.00 -0.14 0.12 2162.98 1.00\n", | |
"drift_decentered[385,0] 0.00 0.08 0.00 -0.11 0.14 2066.03 1.00\n", | |
"drift_decentered[386,0] -0.00 0.08 0.00 -0.12 0.13 1966.27 1.00\n", | |
"drift_decentered[387,0] 0.00 0.08 0.00 -0.12 0.13 1742.30 1.00\n", | |
"drift_decentered[388,0] 0.00 0.08 0.00 -0.11 0.13 1900.77 1.00\n", | |
"drift_decentered[389,0] -0.00 0.08 -0.01 -0.14 0.11 3195.64 1.00\n", | |
"drift_decentered[390,0] -0.00 0.08 -0.00 -0.13 0.12 1834.62 1.00\n", | |
"drift_decentered[391,0] -0.00 0.08 -0.01 -0.12 0.12 1786.30 1.00\n", | |
"drift_decentered[392,0] -0.01 0.08 -0.01 -0.12 0.12 2303.43 1.00\n", | |
"drift_decentered[393,0] -0.01 0.08 -0.01 -0.15 0.11 2214.20 1.00\n", | |
"drift_decentered[394,0] -0.01 0.08 -0.01 -0.13 0.11 2009.54 1.00\n", | |
"drift_decentered[395,0] -0.01 0.08 -0.01 -0.14 0.12 2606.63 1.00\n", | |
"drift_decentered[396,0] -0.01 0.07 -0.01 -0.14 0.10 2020.66 1.00\n", | |
"drift_decentered[397,0] -0.02 0.08 -0.02 -0.13 0.13 1817.33 1.00\n", | |
"drift_decentered[398,0] -0.01 0.08 -0.01 -0.14 0.12 2027.84 1.00\n", | |
"drift_decentered[399,0] -0.01 0.08 -0.02 -0.15 0.11 2276.22 1.00\n", | |
"drift_decentered[400,0] -0.01 0.08 -0.01 -0.15 0.11 1823.10 1.00\n", | |
"drift_decentered[401,0] -0.01 0.08 -0.01 -0.14 0.11 2340.22 1.00\n", | |
"drift_decentered[402,0] -0.01 0.08 -0.01 -0.14 0.11 1716.01 1.00\n", | |
"drift_decentered[403,0] -0.01 0.08 -0.00 -0.15 0.11 2211.88 1.00\n", | |
"drift_decentered[404,0] -0.01 0.08 -0.02 -0.13 0.12 2606.33 1.00\n", | |
"drift_decentered[405,0] -0.01 0.08 -0.01 -0.13 0.13 2485.40 1.00\n", | |
"drift_decentered[406,0] -0.01 0.08 -0.01 -0.14 0.10 2287.87 1.00\n", | |
"drift_decentered[407,0] -0.01 0.08 -0.01 -0.14 0.13 2492.25 1.00\n", | |
"drift_decentered[408,0] -0.03 0.07 -0.03 -0.14 0.10 1779.69 1.00\n", | |
"drift_decentered[409,0] -0.02 0.07 -0.02 -0.15 0.09 2111.82 1.00\n", | |
"drift_decentered[410,0] -0.03 0.08 -0.03 -0.15 0.10 3095.77 1.00\n", | |
"drift_decentered[411,0] -0.02 0.08 -0.02 -0.14 0.11 1863.08 1.00\n", | |
"drift_decentered[412,0] -0.00 0.07 -0.00 -0.12 0.11 1627.66 1.00\n", | |
"drift_decentered[413,0] -0.01 0.08 -0.01 -0.13 0.14 2377.45 1.00\n", | |
"drift_decentered[414,0] -0.01 0.08 -0.01 -0.15 0.11 2548.59 1.00\n", | |
"drift_decentered[415,0] -0.01 0.08 -0.01 -0.14 0.12 2221.67 1.00\n", | |
"drift_decentered[416,0] -0.01 0.08 -0.01 -0.14 0.12 2512.91 1.00\n", | |
" noise_scale[0] 0.08 0.00 0.08 0.07 0.08 1619.35 1.00\n", | |
"\n", | |
"Number of divergences: 0\n", | |
"CPU times: user 14min 41s, sys: 2.97 s, total: 14min 44s\n", | |
"Wall time: 14min 45s\n" | |
] | |
} | |
], | |
"source": [ | |
"%%time\n", | |
"pyro.set_rng_seed(1)\n", | |
"pyro.clear_param_store()\n", | |
"time = torch.arange(float(T2)) / 365\n", | |
"covariates = periodic_features(T2, 365.25 / 7)\n", | |
"forecaster = HMCForecaster(Model2(), data[:T1], covariates[:T1])" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 14, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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gF3aibr9Pn4XPCmeK+nPcmwqz8033yyAzJ49u9x1CwsLxd/fX9q1aydTp06V/fv3i4jIvn375Pz58/L2228LIBcuXDC2iY2NFUD27NlTofJs3rxZhgwZInl5efL555/L1VdfLVlZWU692y5dukjNmjUlKSlJmjZtKoDMnDlTRERSUlLkhhtukClTpojdbnd7jH379gkgb7/9tiQlJcl9993ntHzw4MESHx8vIiIFBQUSFBQkgPzyyy8iIpKbm2v05P38/Cp0XiIiP//8s1Nv+rbbbjPOKTw8XCIiIqRatWoyatQoue6666Rdu3YSHBwsCQkJsm3bNvnll18EkHr16nk8hvk6rV69utwyffnllwJI+/btnXpsulOic88990ijRo2kuLhYAgMDBZCkpKRS+1u3bp3k5OS4PdaYMWOM/X/22WdllishIUEAw5lLTk42th09enSZ26alpQkgNWvWFEAuXrzotN0XX3whgCilJDExUURENm3aZNxbruzdu9fo6btjwYIFRtlmzJghIiWuESBPPfWU2+2ysrKMdQYOHFjmORUWFgogrVu3FkA2b94s/fr1k/r16zut9/777wsgBw4ckODgYKfv9OOPPxYRkTp16sg999wje/fule+++87JsU1LS5Pjx4/Lv/71LwHk3nvvNe433YVq2rSpBAUFOR23oKBAduzYIatWrRJA7r77bgEkJSWlzPPy9/eXRx55xHAY33rrrVJ1iIg4nYefn5/Mnz/fafnp06eN5fr+9u7dayyfP3++sfzJJ58UQH744Qd58MEHBTDut7Nnz8onn3wigPTv31/8/PwEkA4dOhjuy6lTpzyez+233y6tW7cWETGcwmsdrsjJkye1lWw2kalTRRYulFvi4gQQ+xdfaA7J9OkiS5eKLFsmXVq2FEAOzpghE+6/XwDx9/WVZnXqiLeXlzSqVUvOzpolMnas5vRMmyZvO5wnQGa3bCnHX35ZaoMM8/GRrHvvlT0jR4oyXcsHIyIEkMUgMmeOZH/6qbGsdkSEvOfi5ABSBOLreP06iBw+XOZ3/GvBcmwsKosez9bjyGWRmpqKzWajb9++PP744zRo0ACAhg0bEhUVZfQ69Z6yiBi9F703Xx4ffPABM2fOZNCgQfTs2ZOff/6ZDRs28OmnnxIaGsrQoUOZP38+S5YsITU11egZ6jkikyZNYsuWLTz5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\n", | |
"text/plain": [ | |
"<Figure size 648x216 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"samples = forecaster(data[:T1], covariates, num_samples=1000)\n", | |
"p10, p50, p90 = quantile(samples, (0.1, 0.5, 0.9)).squeeze(-1)\n", | |
"crps = eval_crps(samples, data[T1:])\n", | |
"\n", | |
"plt.figure(figsize=(9, 3))\n", | |
"plt.fill_between(torch.arange(T1, T2), p10, p90, color=\"red\", alpha=0.3)\n", | |
"plt.plot(torch.arange(T1, T2), p50, 'r-', label='forecast')\n", | |
"plt.plot(data, 'k-', label='truth')\n", | |
"plt.title(\"Total weekly ridership (CRPS = {:0.3g})\".format(crps))\n", | |
"plt.ylabel(\"log(# rides)\")\n", | |
"plt.xlabel(\"Week after 2011-01-01\")\n", | |
"plt.xlim(0, None)\n", | |
"plt.legend(loc=\"best\");" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 15, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 648x216 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.figure(figsize=(9, 3))\n", | |
"plt.fill_between(torch.arange(T1, T2), p10, p90, color=\"red\", alpha=0.3)\n", | |
"plt.plot(torch.arange(T1, T2), p50, 'r-', label='forecast')\n", | |
"plt.plot(torch.arange(T1, T2), data[T1:], 'k-', label='truth')\n", | |
"plt.title(\"Total weekly ridership (CRPS = {:0.3g})\".format(crps))\n", | |
"plt.ylabel(\"log(# rides)\")\n", | |
"plt.xlabel(\"Week after 2011-01-01\")\n", | |
"plt.xlim(T1, None)\n", | |
"plt.legend(loc=\"best\");" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Error" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 23, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"Warmup: 0%| | 0/2000 [00:00, ?it/s]" | |
] | |
}, | |
{ | |
"ename": "RuntimeError", | |
"evalue": "Cannot insert a Tensor that requires grad as a constant. Consider making it a parameter or input, or detaching the gradient\nTensor:\n 0\n[ torch.FloatTensor{1} ]\n Trace Shapes: \n Param Sites: \n Sample Sites: \n time dist | \n value 417 | \n bias dist | tensor(1)\n value | 1\n weight dist | tensor(52)\n value | 52\ndrift_scale dist | 1\n value | 1", | |
"output_type": "error", | |
"traceback": [ | |
"\u001b[0;31m----------------------------------------------------------\u001b[0m", | |
"\u001b[0;31mRuntimeError\u001b[0m Traceback (most recent call last)", | |
"\u001b[0;32m~/pyro/pyro/poutine/trace_messenger.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 164\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 165\u001b[0;31m \u001b[0mret\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 166\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mValueError\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mRuntimeError\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/poutine/messenger.py\u001b[0m in \u001b[0;36m_context_wrap\u001b[0;34m(context, fn, *args, **kwargs)\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mcontext\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 11\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/poutine/messenger.py\u001b[0m in \u001b[0;36m_context_wrap\u001b[0;34m(context, fn, *args, **kwargs)\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mcontext\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 11\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/poutine/messenger.py\u001b[0m in \u001b[0;36m_context_wrap\u001b[0;34m(context, fn, *args, **kwargs)\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mcontext\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 11\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/nn/module.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 287\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_pyro_context\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 288\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__call__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 289\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/miniconda3/envs/pydata/lib/python3.6/site-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *input, **kwargs)\u001b[0m\n\u001b[1;32m 529\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_C\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_tracing_state\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 530\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_slow_forward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0minput\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 531\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/miniconda3/envs/pydata/lib/python3.6/site-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_slow_forward\u001b[0;34m(self, *input, **kwargs)\u001b[0m\n\u001b[1;32m 515\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 516\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mforward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0minput\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 517\u001b[0m \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/contrib/forecast/forecaster.py\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, data, covariates)\u001b[0m\n\u001b[1;32m 164\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 165\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mzero_data\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcovariates\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 166\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m<ipython-input-12-971d7db4b79b>\u001b[0m in \u001b[0;36mmodel\u001b[0;34m(self, zero_data, covariates)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mpoutine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreparam\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mconfig\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m{\u001b[0m\u001b[0;34m\"drift\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mLocScaleReparam\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 16\u001b[0;31m \u001b[0mdrift\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpyro\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msample\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"drift\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdist\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mNormal\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mzero_data\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdrift_scale\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_event\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 17\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/primitives.py\u001b[0m in \u001b[0;36msample\u001b[0;34m(name, fn, *args, **kwargs)\u001b[0m\n\u001b[1;32m 112\u001b[0m \u001b[0;31m# apply the stack and return its return value\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 113\u001b[0;31m \u001b[0mapply_stack\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 114\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"value\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/poutine/runtime.py\u001b[0m in \u001b[0;36mapply_stack\u001b[0;34m(initial_msg)\u001b[0m\n\u001b[1;32m 192\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 193\u001b[0;31m \u001b[0mframe\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_process_message\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 194\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/poutine/messenger.py\u001b[0m in \u001b[0;36m_process_message\u001b[0;34m(self, msg)\u001b[0m\n\u001b[1;32m 134\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhasattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmethod_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 135\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmethod_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 136\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/poutine/reparam_messenger.py\u001b[0m in \u001b[0;36m_pyro_sample\u001b[0;34m(self, msg)\u001b[0m\n\u001b[1;32m 48\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 49\u001b[0;31m \u001b[0mnew_fn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mreparam\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"name\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"fn\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"value\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 50\u001b[0m \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/infer/reparam/loc_scale.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, name, fn, obs)\u001b[0m\n\u001b[1;32m 60\u001b[0m \u001b[0;32mlambda\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mloc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnew_full\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mevent_shape\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.5\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 61\u001b[0;31m constraint=constraints.unit_interval)\n\u001b[0m\u001b[1;32m 62\u001b[0m \u001b[0mparams\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"loc\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mloc\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mcentered\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/primitives.py\u001b[0m in \u001b[0;36mparam\u001b[0;34m(name, *args, **kwargs)\u001b[0m\n\u001b[1;32m 60\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"name\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 61\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0m_param\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 62\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/poutine/runtime.py\u001b[0m in \u001b[0;36m_fn\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 261\u001b[0m \u001b[0;31m# apply the stack and return its return value\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 262\u001b[0;31m \u001b[0mapply_stack\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 263\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"value\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/poutine/runtime.py\u001b[0m in \u001b[0;36mapply_stack\u001b[0;34m(initial_msg)\u001b[0m\n\u001b[1;32m 197\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 198\u001b[0;31m \u001b[0mdefault_process_message\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 199\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/poutine/runtime.py\u001b[0m in \u001b[0;36mdefault_process_message\u001b[0;34m(msg)\u001b[0m\n\u001b[1;32m 158\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 159\u001b[0;31m \u001b[0mmsg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"value\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"fn\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"args\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"kwargs\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 160\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/params/param_store.py\u001b[0m in \u001b[0;36mget_param\u001b[0;34m(self, name, init_tensor, constraint, event_dim)\u001b[0m\n\u001b[1;32m 204\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 205\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msetdefault\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minit_tensor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mconstraint\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 206\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/params/param_store.py\u001b[0m in \u001b[0;36msetdefault\u001b[0;34m(self, name, init_constrained_value, constraint)\u001b[0m\n\u001b[1;32m 162\u001b[0m \u001b[0;31m# get the param, which is guaranteed to exist\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 163\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 164\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/params/param_store.py\u001b[0m in \u001b[0;36m__getitem__\u001b[0;34m(self, name)\u001b[0m\n\u001b[1;32m 104\u001b[0m \u001b[0mconstraint\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_constraints\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 105\u001b[0;31m \u001b[0mconstrained_value\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtransform_to\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mconstraint\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0munconstrained_value\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 106\u001b[0m \u001b[0mconstrained_value\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0munconstrained\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mweakref\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mref\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0munconstrained_value\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/miniconda3/envs/pydata/lib/python3.6/site-packages/torch/distributions/transforms.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, x)\u001b[0m\n\u001b[1;32m 124\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_cache_size\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 125\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 126\u001b[0m \u001b[0mx_old\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_old\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_cached_x_y\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/miniconda3/envs/pydata/lib/python3.6/site-packages/torch/distributions/transforms.py\u001b[0m in \u001b[0;36m_call\u001b[0;34m(self, x)\u001b[0m\n\u001b[1;32m 364\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 365\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0m_clipped_sigmoid\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 366\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/miniconda3/envs/pydata/lib/python3.6/site-packages/torch/distributions/transforms.py\u001b[0m in \u001b[0;36m_clipped_sigmoid\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 348\u001b[0m \u001b[0mfinfo\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfinfo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 349\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclamp\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msigmoid\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmin\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfinfo\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtiny\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmax\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1.\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0mfinfo\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0meps\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 350\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;31mRuntimeError\u001b[0m: Cannot insert a Tensor that requires grad as a constant. Consider making it a parameter or input, or detaching the gradient\nTensor:\n 0\n[ torch.FloatTensor{1} ]", | |
"\nDuring handling of the above exception, another exception occurred:\n", | |
"\u001b[0;31mRuntimeError\u001b[0m Traceback (most recent call last)", | |
"\u001b[0;32m<timed exec>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/contrib/forecast/forecaster.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, model, data, covariates, num_warmup, num_samples, num_chains, dense_mass, jit_compile, max_tree_depth)\u001b[0m\n\u001b[1;32m 327\u001b[0m max_tree_depth=max_tree_depth, max_plate_nesting=max_plate_nesting)\n\u001b[1;32m 328\u001b[0m \u001b[0mmcmc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mMCMC\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkernel\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwarmup_steps\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnum_warmup\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnum_samples\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnum_samples\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnum_chains\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnum_chains\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 329\u001b[0;31m \u001b[0mmcmc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcovariates\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 330\u001b[0m \u001b[0;31m# conditions to compute rhat\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 331\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mnum_chains\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mnum_samples\u001b[0m \u001b[0;34m>=\u001b[0m \u001b[0;36m4\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mnum_chains\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m1\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mnum_samples\u001b[0m \u001b[0;34m>=\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/poutine/messenger.py\u001b[0m in \u001b[0;36m_context_wrap\u001b[0;34m(context, fn, *args, **kwargs)\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_context_wrap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcontext\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mcontext\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 11\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/infer/mcmc/api.py\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 355\u001b[0m \u001b[0mz_flat_acc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0m_\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnum_chains\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 356\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mpyro\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalidation_enabled\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdisable_validation\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 357\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mchain_id\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msampler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 358\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mnum_samples\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mchain_id\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 359\u001b[0m \u001b[0mnum_samples\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mchain_id\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/infer/mcmc/api.py\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 166\u001b[0m for sample in _gen_samples(self.kernel, self.warmup_steps, self.num_samples, hook_w_logging,\n\u001b[1;32m 167\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnum_chains\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m1\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 168\u001b[0;31m *args, **kwargs):\n\u001b[0m\u001b[1;32m 169\u001b[0m \u001b[0;32myield\u001b[0m \u001b[0msample\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m \u001b[0;31m# sample, chain_id\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 170\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkernel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcleanup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/infer/mcmc/api.py\u001b[0m in \u001b[0;36m_gen_samples\u001b[0;34m(kernel, warmup_steps, num_samples, hook, chain_id, *args, **kwargs)\u001b[0m\n\u001b[1;32m 108\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 109\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_gen_samples\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkernel\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwarmup_steps\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnum_samples\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhook\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mchain_id\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 110\u001b[0;31m \u001b[0mkernel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msetup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mwarmup_steps\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 111\u001b[0m \u001b[0mparams\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mkernel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minitial_params\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 112\u001b[0m \u001b[0;31m# yield structure (key, value.shape) of params\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/infer/mcmc/hmc.py\u001b[0m in \u001b[0;36msetup\u001b[0;34m(self, warmup_steps, *args, **kwargs)\u001b[0m\n\u001b[1;32m 265\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmodel\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 266\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_initialize_model_properties\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 267\u001b[0;31m \u001b[0mpotential_energy\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpotential_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minitial_params\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 268\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_cache\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minitial_params\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpotential_energy\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 269\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minitial_params\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/infer/mcmc/util.py\u001b[0m in \u001b[0;36m_potential_fn_jit\u001b[0;34m(self, skip_jit_warnings, jit_options, params)\u001b[0m\n\u001b[1;32m 281\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mskip_jit_warnings\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 282\u001b[0m \u001b[0m_pe_jit\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mignore_jit_warnings\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_pe_jit\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 283\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_compiled_fn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjit\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrace\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_pe_jit\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvals\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mjit_options\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 284\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_compiled_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mvals\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 285\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/miniconda3/envs/pydata/lib/python3.6/site-packages/torch/jit/__init__.py\u001b[0m in \u001b[0;36mtrace\u001b[0;34m(func, example_inputs, optimize, check_trace, check_inputs, check_tolerance, _force_outplace, _module_class, _compilation_unit)\u001b[0m\n\u001b[1;32m 904\u001b[0m traced = torch._C._create_function_from_trace(name, func, example_inputs,\n\u001b[1;32m 905\u001b[0m \u001b[0mvar_lookup_fn\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 906\u001b[0;31m _force_outplace)\n\u001b[0m\u001b[1;32m 907\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 908\u001b[0m \u001b[0;31m# Check the trace against new traces created from user-specified inputs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/miniconda3/envs/pydata/lib/python3.6/contextlib.py\u001b[0m in \u001b[0;36minner\u001b[0;34m(*args, **kwds)\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0minner\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_recreate_cm\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 52\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 53\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0minner\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/infer/mcmc/util.py\u001b[0m in \u001b[0;36m_pe_jit\u001b[0;34m(*zi)\u001b[0m\n\u001b[1;32m 277\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_pe_jit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mzi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 278\u001b[0m \u001b[0mparams\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mzip\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnames\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mzi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 279\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_potential_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mparams\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 280\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 281\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mskip_jit_warnings\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/infer/mcmc/util.py\u001b[0m in \u001b[0;36m_potential_fn\u001b[0;34m(self, params)\u001b[0m\n\u001b[1;32m 259\u001b[0m \u001b[0mcond_model\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpoutine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcondition\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparams_constrained\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 260\u001b[0m model_trace = poutine.trace(cond_model).get_trace(*self.model_args,\n\u001b[0;32m--> 261\u001b[0;31m **self.model_kwargs)\n\u001b[0m\u001b[1;32m 262\u001b[0m \u001b[0mlog_joint\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrace_prob_evaluator\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlog_prob\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodel_trace\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 263\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mt\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtransforms\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/poutine/trace_messenger.py\u001b[0m in \u001b[0;36mget_trace\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 183\u001b[0m \u001b[0mCalls\u001b[0m \u001b[0mthis\u001b[0m \u001b[0mpoutine\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mreturns\u001b[0m \u001b[0mits\u001b[0m \u001b[0mtrace\u001b[0m \u001b[0minstead\u001b[0m \u001b[0mof\u001b[0m \u001b[0mthe\u001b[0m \u001b[0mfunction\u001b[0m\u001b[0;31m'\u001b[0m\u001b[0ms\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 184\u001b[0m \"\"\"\n\u001b[0;32m--> 185\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 186\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmsngr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_trace\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/poutine/trace_messenger.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 167\u001b[0m \u001b[0mexc_type\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mexc_value\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtraceback\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msys\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexc_info\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 168\u001b[0m \u001b[0mshapes\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmsngr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrace\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat_shapes\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 169\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mexc_type\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mu\"{}\\n{}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexc_value\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mshapes\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwith_traceback\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtraceback\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 170\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmsngr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrace\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd_node\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"_RETURN\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"_RETURN\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"return\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mret\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 171\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mret\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/poutine/trace_messenger.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 163\u001b[0m args=args, kwargs=kwargs)\n\u001b[1;32m 164\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 165\u001b[0;31m \u001b[0mret\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 166\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mValueError\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mRuntimeError\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 167\u001b[0m \u001b[0mexc_type\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mexc_value\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtraceback\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msys\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexc_info\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/poutine/messenger.py\u001b[0m in \u001b[0;36m_context_wrap\u001b[0;34m(context, fn, *args, **kwargs)\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_context_wrap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcontext\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mcontext\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 11\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/poutine/messenger.py\u001b[0m in \u001b[0;36m_context_wrap\u001b[0;34m(context, fn, *args, **kwargs)\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_context_wrap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcontext\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mcontext\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 11\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/poutine/messenger.py\u001b[0m in \u001b[0;36m_context_wrap\u001b[0;34m(context, fn, *args, **kwargs)\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_context_wrap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcontext\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mcontext\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 11\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/nn/module.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 286\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__call__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 287\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_pyro_context\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 288\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__call__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 289\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 290\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__getattr__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/miniconda3/envs/pydata/lib/python3.6/site-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *input, **kwargs)\u001b[0m\n\u001b[1;32m 528\u001b[0m \u001b[0minput\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 529\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_C\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_tracing_state\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 530\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_slow_forward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0minput\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 531\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 532\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mforward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0minput\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/miniconda3/envs/pydata/lib/python3.6/site-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_slow_forward\u001b[0;34m(self, *input, **kwargs)\u001b[0m\n\u001b[1;32m 514\u001b[0m \u001b[0mrecording_scopes\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 515\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 516\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mforward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0minput\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 517\u001b[0m \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 518\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mrecording_scopes\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/contrib/forecast/forecaster.py\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, data, covariates)\u001b[0m\n\u001b[1;32m 163\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_forecast\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 164\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 165\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mzero_data\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcovariates\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 166\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 167\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_forecast\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\".predict() was not called by .model()\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m<ipython-input-12-971d7db4b79b>\u001b[0m in \u001b[0;36mmodel\u001b[0;34m(self, zero_data, covariates)\u001b[0m\n\u001b[1;32m 14\u001b[0m \u001b[0;31m# correct if you removed this context manager, but the fit appears to be worse.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mpoutine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreparam\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mconfig\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m{\u001b[0m\u001b[0;34m\"drift\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mLocScaleReparam\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 16\u001b[0;31m \u001b[0mdrift\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpyro\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msample\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"drift\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdist\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mNormal\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mzero_data\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdrift_scale\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_event\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 17\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 18\u001b[0m \u001b[0;31m# After we sample the iid \"drift\" noise we can combine it in any time-dependent way.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/primitives.py\u001b[0m in \u001b[0;36msample\u001b[0;34m(name, fn, *args, **kwargs)\u001b[0m\n\u001b[1;32m 111\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"is_observed\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 112\u001b[0m \u001b[0;31m# apply the stack and return its return value\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 113\u001b[0;31m \u001b[0mapply_stack\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 114\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"value\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 115\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/poutine/runtime.py\u001b[0m in \u001b[0;36mapply_stack\u001b[0;34m(initial_msg)\u001b[0m\n\u001b[1;32m 191\u001b[0m \u001b[0mpointer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpointer\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 192\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 193\u001b[0;31m \u001b[0mframe\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_process_message\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 194\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 195\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"stop\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/poutine/messenger.py\u001b[0m in \u001b[0;36m_process_message\u001b[0;34m(self, msg)\u001b[0m\n\u001b[1;32m 133\u001b[0m \u001b[0mmethod_name\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"_pyro_{}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"type\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 134\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhasattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmethod_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 135\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmethod_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 136\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 137\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/poutine/reparam_messenger.py\u001b[0m in \u001b[0;36m_pyro_sample\u001b[0;34m(self, msg)\u001b[0m\n\u001b[1;32m 47\u001b[0m \u001b[0mreparam\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margs_kwargs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_args_kwargs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 48\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 49\u001b[0;31m \u001b[0mnew_fn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mreparam\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"name\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"fn\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"value\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 50\u001b[0m \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0mreparam\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margs_kwargs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/infer/reparam/loc_scale.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, name, fn, obs)\u001b[0m\n\u001b[1;32m 59\u001b[0m centered = pyro.param(\"{}_centered\",\n\u001b[1;32m 60\u001b[0m \u001b[0;32mlambda\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mloc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnew_full\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mevent_shape\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.5\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 61\u001b[0;31m constraint=constraints.unit_interval)\n\u001b[0m\u001b[1;32m 62\u001b[0m \u001b[0mparams\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"loc\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mloc\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mcentered\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 63\u001b[0m \u001b[0mparams\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"scale\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mscale\u001b[0m \u001b[0;34m**\u001b[0m \u001b[0mcentered\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/primitives.py\u001b[0m in \u001b[0;36mparam\u001b[0;34m(name, *args, **kwargs)\u001b[0m\n\u001b[1;32m 59\u001b[0m \"\"\"\n\u001b[1;32m 60\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"name\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 61\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0m_param\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 62\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 63\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/poutine/runtime.py\u001b[0m in \u001b[0;36m_fn\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 260\u001b[0m }\n\u001b[1;32m 261\u001b[0m \u001b[0;31m# apply the stack and return its return value\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 262\u001b[0;31m \u001b[0mapply_stack\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 263\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"value\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 264\u001b[0m \u001b[0m_fn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_is_effectful\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/poutine/runtime.py\u001b[0m in \u001b[0;36mapply_stack\u001b[0;34m(initial_msg)\u001b[0m\n\u001b[1;32m 196\u001b[0m \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 197\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 198\u001b[0;31m \u001b[0mdefault_process_message\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 199\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 200\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mframe\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mstack\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mpointer\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/poutine/runtime.py\u001b[0m in \u001b[0;36mdefault_process_message\u001b[0;34m(msg)\u001b[0m\n\u001b[1;32m 157\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 158\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 159\u001b[0;31m \u001b[0mmsg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"value\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"fn\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"args\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"kwargs\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 160\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 161\u001b[0m \u001b[0;31m# after fn has been called, update msg to prevent it from being called again.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/params/param_store.py\u001b[0m in \u001b[0;36mget_param\u001b[0;34m(self, name, init_tensor, constraint, event_dim)\u001b[0m\n\u001b[1;32m 203\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 204\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 205\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msetdefault\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minit_tensor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mconstraint\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 206\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 207\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mmatch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/params/param_store.py\u001b[0m in \u001b[0;36msetdefault\u001b[0;34m(self, name, init_constrained_value, constraint)\u001b[0m\n\u001b[1;32m 161\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 162\u001b[0m \u001b[0;31m# get the param, which is guaranteed to exist\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 163\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 164\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 165\u001b[0m \u001b[0;31m# -------------------------------------------------------------------------------\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/params/param_store.py\u001b[0m in \u001b[0;36m__getitem__\u001b[0;34m(self, name)\u001b[0m\n\u001b[1;32m 103\u001b[0m \u001b[0;31m# compute the constrained value\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 104\u001b[0m \u001b[0mconstraint\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_constraints\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 105\u001b[0;31m \u001b[0mconstrained_value\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtransform_to\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mconstraint\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0munconstrained_value\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 106\u001b[0m \u001b[0mconstrained_value\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0munconstrained\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mweakref\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mref\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0munconstrained_value\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 107\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/miniconda3/envs/pydata/lib/python3.6/site-packages/torch/distributions/transforms.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, x)\u001b[0m\n\u001b[1;32m 123\u001b[0m \"\"\"\n\u001b[1;32m 124\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_cache_size\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 125\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 126\u001b[0m \u001b[0mx_old\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_old\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_cached_x_y\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 127\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0mx_old\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/miniconda3/envs/pydata/lib/python3.6/site-packages/torch/distributions/transforms.py\u001b[0m in \u001b[0;36m_call\u001b[0;34m(self, x)\u001b[0m\n\u001b[1;32m 363\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 364\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 365\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0m_clipped_sigmoid\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 366\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 367\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_inverse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;32m~/miniconda3/envs/pydata/lib/python3.6/site-packages/torch/distributions/transforms.py\u001b[0m in \u001b[0;36m_clipped_sigmoid\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 347\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_clipped_sigmoid\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 348\u001b[0m \u001b[0mfinfo\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfinfo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 349\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclamp\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msigmoid\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmin\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfinfo\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtiny\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmax\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1.\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0mfinfo\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0meps\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 350\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 351\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;31mRuntimeError\u001b[0m: Cannot insert a Tensor that requires grad as a constant. Consider making it a parameter or input, or detaching the gradient\nTensor:\n 0\n[ torch.FloatTensor{1} ]\n Trace Shapes: \n Param Sites: \n Sample Sites: \n time dist | \n value 417 | \n bias dist | tensor(1)\n value | 1\n weight dist | tensor(52)\n value | 52\ndrift_scale dist | 1\n value | 1" | |
] | |
} | |
], | |
"source": [ | |
"%%time\n", | |
"pyro.set_rng_seed(1)\n", | |
"pyro.clear_param_store()\n", | |
"time = torch.arange(float(T2)) / 365\n", | |
"covariates = periodic_features(T2, 365.25 / 7)\n", | |
"forecaster = HMCForecaster(Model2(), data[:T1], covariates[:T1], jit_compile=True)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Heavy-tailed noise\n", | |
"\n", | |
"Our final univariate model will generalize from Gaussian noise to heavy-tailed [Stable](http://docs.pyro.ai/en/latest/distributions.html#stable) noise. The only difference is the `noise_dist` which now takes two new parameters: `stability` determines tail weight and `skew` determines the relative size of positive versus negative spikes.\n", | |
"\n", | |
"The [Stable distribution](https://en.wikipedia.org/wiki/Stable_distribution) is a natural heavy-tailed generalization of the Normal distribution, but it is difficult to work with due to its intractible density function. Pyro implements auxiliary variable methods for working with Stable distributions. To inform Pyro to use those auxiliary variable methods, we wrap the final line in [poutine.reparam()](http://docs.pyro.ai/en/latest/poutine.html#pyro.poutine.handlers.reparam) effect handler that applies the [StableReparam](http://docs.pyro.ai/en/latest/infer.reparam.html#pyro.infer.reparam.stable.StableReparam) transform to the implicit observe site named \"residual\". You can use Stable distributions for other sites by specifying `config={\"my_site_name\": StableReparam()}`." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 16, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"class Model3(ForecastingModel):\n", | |
" def model(self, zero_data, covariates):\n", | |
" data_dim = zero_data.size(-1)\n", | |
" feature_dim = covariates.size(-1)\n", | |
" bias = pyro.sample(\"bias\", dist.Normal(0, 10).expand([data_dim]).to_event(1))\n", | |
" weight = pyro.sample(\"weight\", dist.Normal(0, 0.1).expand([feature_dim]).to_event(1))\n", | |
"\n", | |
" drift_scale = pyro.sample(\"drift_scale\", dist.LogNormal(-20, 5).expand([1]).to_event(1))\n", | |
" with self.time_plate:\n", | |
" with poutine.reparam(config={\"drift\": LocScaleReparam()}):\n", | |
" drift = pyro.sample(\"drift\", dist.Normal(zero_data, drift_scale).to_event(1))\n", | |
" motion = drift.cumsum(-2) # A Brownian motion.\n", | |
" \n", | |
" prediction = motion + bias + (weight * covariates).sum(-1, keepdim=True)\n", | |
" assert prediction.shape[-2:] == zero_data.shape\n", | |
"\n", | |
" # The next part of the model creates a likelihood or noise distribution.\n", | |
" # Again we'll be Bayesian and write this as a probabilistic program with\n", | |
" # priors over parameters, and again we'll use zero_data as a noise template.\n", | |
" stability = pyro.sample(\"noise_stability\", dist.Uniform(1, 2).expand([1]).to_event(1))\n", | |
" skew = pyro.sample(\"noise_skew\", dist.Uniform(-1, 1).expand([1]).to_event(1))\n", | |
" scale = pyro.sample(\"noise_scale\", dist.LogNormal(-5, 5).expand([1]).to_event(1))\n", | |
" noise_dist = dist.Stable(stability, skew, scale, zero_data)\n", | |
"\n", | |
" # We need to use a reparameterizer to handle the Stable distribution.\n", | |
" # Note \"residual\" is the name of Pyro's internal sample site in self.predict().\n", | |
" with poutine.reparam(config={\"residual\": StableReparam()}):\n", | |
" self.predict(noise_dist, prediction) " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"%%time\n", | |
"pyro.set_rng_seed(2)\n", | |
"pyro.clear_param_store()\n", | |
"time = torch.arange(float(T2)) / 365\n", | |
"covariates = periodic_features(T2, 365.25 / 7)\n", | |
"forecaster = HMCForecaster(Model3(), data[:T1], covariates[:T1])\n", | |
"for name, value in forecaster.guide.median().items():\n", | |
" if value.numel() == 1:\n", | |
" print(\"{} = {:0.4g}\".format(name, value.item()))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 18, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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6tVs3bqVhIQExo4dyyOPPEL37t3JysqipKSkQg+t48ePM378eKKjo3njjTe45JJLWLx4MSJihNXOnDlDv379iI6OZt26daxfv57CwkI++eQT7r77bp566inuuece+vbty5w5c1i0aBHe3t40aNDArbCoCcXFxcb364r09HTeeust431GRgYTJ06kefPmJCYmGr890FwnKJ9yY8KECYgIDRs2ZMmSJVx55ZV89dVX3H///QwZMoTt28s78dpsNvr06WP8biqQk1MubPz8ykNTNUHPmzl1ShMjeiK0p6cmbCrB5u3N/R9/zIfArVlZZJWW8sOePZrbExAAjRuz+9gxkk+fZtTcuYboOQz8+skn8MUXFzQUhYhc9H9XXHGFWNSMV199VQCZNm1atbdJTk6WkSNHiqenpyQnJwtazzcBJCQk5HcsrUhZWZmsW7dOCgsLf9N+hgwZ4lDunTt3Gsv69Okjl156qfF+7969smnTpt90PJ1t27ZJw4YNZevWrbJhwwYB5KGHHhIRkSNHjkhJSYkMGDBAABk1apSIiDz55JPi5eUl/fv3Fw8PD6PMwcHBcvToUYf9v/TSS8byN954o8ryfPzxxwLICy+84HA9NmzY4LDexIkTHb7jUaNGCSCnT5821nn44YeNddasWVPhWAMHDpTGjRsb64wZM8ZYVq9ePYmOjhabzeZwT33zzTciIjJ//nzjM/26uOPw4cMCSKdOnQSQ3bt3CyCvvfaaw3ovvviiAFJUVCSff/65ABIZGSk2m01Gjhwp3377rURERAggLVq0cHu8MWPGiKenp4SGhsro0aNFRGTjxo1Gefv27SsiIllZWbJx40YRESkpKZEVK1YY63Tq1KnSc0pLSxNABg4caFyXtm3bSp8+fRzW++qrrwSQNm3aGPtu0aKF8Vq/71esWGFs069fP4mJiZEdO3Y43AO9e/c29nf33XeLn5+fAHLXXXcZv5lTp05J+/btJSAgQHr27CmAzJkzR5YtWyaArF271qF8NptNhg0b5nCcl19+WRo3biw9evSQ2267Tdq2bVvh/L/88ktZv359pdfo7bfflpEjR4qIyKhRo8TT01OaNWsmsbGxMnHiRCkoKJBz586JiBjXUf/r1auXANKsWTMBjO9x27Zt4u3tLatWrTLOaePGjZKWliY5OTnSoUMH6dSpk3zxxRcyaNAg8fLy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\n", | |
"text/plain": [ | |
"<Figure size 648x216 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"samples = forecaster(data[:T1], covariates, num_samples=1000)\n", | |
"p10, p50, p90 = quantile(samples, (0.1, 0.5, 0.9)).squeeze(-1)\n", | |
"crps = eval_crps(samples, data[T1:])\n", | |
"\n", | |
"plt.figure(figsize=(9, 3))\n", | |
"plt.fill_between(torch.arange(T1, T2), p10, p90, color=\"red\", alpha=0.3)\n", | |
"plt.plot(torch.arange(T1, T2), p50, 'r-', label='forecast')\n", | |
"plt.plot(data, 'k-', label='truth')\n", | |
"plt.title(\"Total weekly ridership (CRPS = {:0.3g})\".format(crps))\n", | |
"plt.ylabel(\"log(# rides)\")\n", | |
"plt.xlabel(\"Week after 2011-01-01\")\n", | |
"plt.xlim(0, None)\n", | |
"plt.legend(loc=\"best\");" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 19, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 648x216 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.figure(figsize=(9, 3))\n", | |
"plt.fill_between(torch.arange(T1, T2), p10, p90, color=\"red\", alpha=0.3)\n", | |
"plt.plot(torch.arange(T1, T2), p50, 'r-', label='forecast')\n", | |
"plt.plot(torch.arange(T1, T2), data[T1:], 'k-', label='truth')\n", | |
"plt.title(\"Total weekly ridership (CRPS = {:0.3g})\".format(crps))\n", | |
"plt.ylabel(\"log(# rides)\")\n", | |
"plt.xlabel(\"Week after 2011-01-01\")\n", | |
"plt.xlim(T1, None)\n", | |
"plt.legend(loc=\"best\");" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Backtesting\n", | |
"\n", | |
"To compare our Gaussian `Model2` and Stable `Model3` we'll use a simple [backtesting()](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.evaluate.backtest) helper. This helper by default evaluates three metrics: [CRPS](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.evaluate.eval_crps) assesses distributional accuracy of heavy-tailed data, [MAE](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.evaluate.eval_mae) assesses point accuracy of heavy-tailed data, and [RMSE](http://docs.pyro.ai/en/latest/contrib.forecast.html#pyro.contrib.forecast.evaluate.eval_rmse) assesses accuracy of Normal-tailed data. The one nuance here is to set `warm_start=True` to reduce the need for random restarts." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 20, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"INFO \t Training on window [0:104], testing on window [104:156]\n" | |
] | |
}, | |
{ | |
"ename": "TypeError", | |
"evalue": "__init__() got an unexpected keyword argument 'learning_rate'", | |
"output_type": "error", | |
"traceback": [ | |
"\u001b[0;31m----------------------------------------------------------\u001b[0m", | |
"\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", | |
"\u001b[0;32m<timed exec>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/contrib/forecast/evaluate.py\u001b[0m in \u001b[0;36mbacktest\u001b[0;34m(data, covariates, model_fn, forecaster_fn, metrics, transform, train_window, min_train_window, test_window, min_test_window, stride, seed, num_samples, forecaster_options)\u001b[0m\n\u001b[1;32m 170\u001b[0m \u001b[0mmodel\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmodel_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 171\u001b[0m forecaster = forecaster_fn(model, train_data, train_covariates,\n\u001b[0;32m--> 172\u001b[0;31m **forecaster_options)\n\u001b[0m\u001b[1;32m 173\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 174\u001b[0m \u001b[0;31m# Forecast forward to testing window.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;31mTypeError\u001b[0m: __init__() got an unexpected keyword argument 'learning_rate'" | |
] | |
} | |
], | |
"source": [ | |
"%%time\n", | |
"pyro.set_rng_seed(1)\n", | |
"pyro.clear_param_store()\n", | |
"windows2 = backtest(data, covariates, Model2, forecaster_fn=HMCForecaster,\n", | |
" min_train_window=104, test_window=52, stride=26,\n", | |
" forecaster_options={\"learning_rate\": 0.1, \"log_every\": 1000,\n", | |
" \"warm_start\": True})" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 21, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"INFO \t Training on window [0:104], testing on window [104:156]\n" | |
] | |
}, | |
{ | |
"ename": "TypeError", | |
"evalue": "__init__() got an unexpected keyword argument 'learning_rate'", | |
"output_type": "error", | |
"traceback": [ | |
"\u001b[0;31m----------------------------------------------------------\u001b[0m", | |
"\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", | |
"\u001b[0;32m<timed exec>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n", | |
"\u001b[0;32m~/pyro/pyro/contrib/forecast/evaluate.py\u001b[0m in \u001b[0;36mbacktest\u001b[0;34m(data, covariates, model_fn, forecaster_fn, metrics, transform, train_window, min_train_window, test_window, min_test_window, stride, seed, num_samples, forecaster_options)\u001b[0m\n\u001b[1;32m 170\u001b[0m \u001b[0mmodel\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmodel_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 171\u001b[0m forecaster = forecaster_fn(model, train_data, train_covariates,\n\u001b[0;32m--> 172\u001b[0;31m **forecaster_options)\n\u001b[0m\u001b[1;32m 173\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 174\u001b[0m \u001b[0;31m# Forecast forward to testing window.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;31mTypeError\u001b[0m: __init__() got an unexpected keyword argument 'learning_rate'" | |
] | |
} | |
], | |
"source": [ | |
"%%time\n", | |
"pyro.set_rng_seed(1)\n", | |
"pyro.clear_param_store()\n", | |
"windows3 = backtest(data, covariates, Model3, forecaster_fn=HMCForecaster,\n", | |
" min_train_window=104, test_window=52, stride=26,\n", | |
" forecaster_options={\"learning_rate\": 0.1, \"log_every\": 1000,\n", | |
" \"warm_start\": True})" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 22, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"ename": "NameError", | |
"evalue": "name 'windows2' is not defined", | |
"output_type": "error", | |
"traceback": [ | |
"\u001b[0;31m----------------------------------------------------------\u001b[0m", | |
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", | |
"\u001b[0;32m<ipython-input-22-c97ad25de0fd>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mfig\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxes\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msubplots\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfigsize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m8\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m6\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msharex\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0maxes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_title\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Gaussian versus Stable accuracy over {} windows\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mwindows2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0maxes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mw\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"crps\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mw\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mwindows2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"b<\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"Gaussian\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0maxes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mw\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"crps\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mw\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mwindows3\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"r>\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"Stable\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0maxes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_ylabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"CRPS\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", | |
"\u001b[0;31mNameError\u001b[0m: name 'windows2' is not defined" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 576x432 with 3 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"fig, axes = plt.subplots(3, figsize=(8, 6), sharex=True)\n", | |
"axes[0].set_title(\"Gaussian versus Stable accuracy over {} windows\".format(len(windows2)))\n", | |
"axes[0].plot([w[\"crps\"] for w in windows2], \"b<\", label=\"Gaussian\")\n", | |
"axes[0].plot([w[\"crps\"] for w in windows3], \"r>\", label=\"Stable\")\n", | |
"axes[0].set_ylabel(\"CRPS\")\n", | |
"axes[1].plot([w[\"mae\"] for w in windows2], \"b<\", label=\"Gaussian\")\n", | |
"axes[1].plot([w[\"mae\"] for w in windows3], \"r>\", label=\"Stable\")\n", | |
"axes[1].set_ylabel(\"MAE\")\n", | |
"axes[2].plot([w[\"rmse\"] for w in windows2], \"b<\", label=\"Gaussian\")\n", | |
"axes[2].plot([w[\"rmse\"] for w in windows3], \"r>\", label=\"Stable\")\n", | |
"axes[2].set_ylabel(\"RMSE\")\n", | |
"axes[0].legend(loc=\"best\")\n", | |
"plt.tight_layout()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Note that RMSE is a poor metric for evaluating heavy-tailed data. Our stable model has such heavy tails that its variance is infinite, so we cannot expect RMSE to converge, hence occasional outlying points." | |
] | |
}, | |
{ | |
"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.6.9" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 4 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment