from_pymc3 fails in certain circumstances
See original GitHub issueDescribe the bug A clear and concise description of what the bug is.
To Reproduce
import arviz as az
import pymc3 as pm
print(az.__version__)
print(pm.__version__)
with pm.Model() as planetmodel:
p_water = pm.Uniform("p", 0 ,1)
w = pm.Binomial("w", p=p_water, n=2, observed=1)
trace = pm.sample(5000, chains=2)
water_data = az.from_pymc3(trace=trace)
0.4.0 3.7 Auto-assigning NUTS sampler… Initializing NUTS using jitter+adapt_diag… Multiprocess sampling (2 chains in 2 jobs) NUTS: [p] Sampling 2 chains: 100%|███████████████████████████████████████████████████████████████| 11000/11000 [00:03<00:00, 2882.36draws/s] /Users/canyon/.miniconda3/envs/bayestutorial/lib/python3.6/site-packages/arviz/data/io_pymc3.py:56: FutureWarning: arrays to stack must be passed as a “sequence” type such as list or tuple. Support for non-sequence iterables such as generators is deprecated as of NumPy 1.16 and will raise an error in the future. chain_likelihoods.append(np.stack(log_like)) Traceback (most recent call last): File “trace_error.py”, line 11, in <module> water_data = az.from_pymc3(trace=trace) File “/Users/canyon/.miniconda3/envs/bayestutorial/lib/python3.6/site-packages/arviz/data/io_pymc3.py”, line 152, in from_pymc3 dims=dims, File “/Users/canyon/.miniconda3/envs/bayestutorial/lib/python3.6/site-packages/arviz/data/io_pymc3.py”, line 137, in to_inference_data “sample_stats”: self.sample_stats_to_xarray(), File “/Users/canyon/.miniconda3/envs/bayestutorial/lib/python3.6/site-packages/arviz/data/base.py”, line 25, in wrapped return func(cls, *args, **kwargs) File “/Users/canyon/.miniconda3/envs/bayestutorial/lib/python3.6/site-packages/arviz/data/io_pymc3.py”, line 78, in sample_stats_to_xarray log_likelihood, dims = self._extract_log_likelihood() File “/Users/canyon/.miniconda3/envs/bayestutorial/lib/python3.6/site-packages/arviz/data/base.py”, line 25, in wrapped return func(cls, *args, **kwargs) File “/Users/canyon/.miniconda3/envs/bayestutorial/lib/python3.6/site-packages/arviz/data/io_pymc3.py”, line 56, in _extract_log_likelihood chain_likelihoods.append(np.stack(log_like)) File “/Users/canyon/.miniconda3/envs/bayestutorial/lib/python3.6/site-packages/numpy/core/shape_base.py”, line 410, in stack arrays = [asanyarray(arr) for arr in arrays] File “/Users/canyon/.miniconda3/envs/bayestutorial/lib/python3.6/site-packages/numpy/core/shape_base.py”, line 410, in <listcomp> arrays = [asanyarray(arr) for arr in arrays] File “/Users/canyon/.miniconda3/envs/bayestutorial/lib/python3.6/site-packages/arviz/data/io_pymc3.py”, line 55, in <genexpr> log_like = (log_likelihood_vals_point(point) for point in self.trace.points([chain])) File “/Users/canyon/.miniconda3/envs/bayestutorial/lib/python3.6/site-packages/arviz/data/io_pymc3.py”, line 51, in log_likelihood_vals_point return np.concatenate(log_like_vals) ValueError: zero-dimensional arrays cannot be concatenated
Expected behavior An Inferencedata object should be created Additional context
Issue Analytics
- State:
- Created 4 years ago
- Comments:7 (7 by maintainers)
Tutorial has pinned version? No matter, I’ll just fix and move on with life. Thanks @ahartikainen
In this func
log_like(point)
returns a 0-dim array (np.array(num)
), which can’t be concatenated.One option is to wrap that to
np.atleast_1d(log_like(point))