---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
/home/anaconda/workspace/group_code/long_rt/simulation1/jags_test.ipynb Cell 12' in <cell line: 1>()
----> 1 az.from_pyjags(tr)
File ~/anaconda3/envs/mcmc/lib/python3.10/site-packages/arviz/data/io_pyjags.py:374, in from_pyjags(posterior, prior, log_likelihood, coords, dims, save_warmup, warmup_iterations)
313 def from_pyjags(
314 posterior: tp.Optional[tp.Mapping[str, np.ndarray]] = None,
315 prior: tp.Optional[tp.Mapping[str, np.ndarray]] = None,
(...)
320 warmup_iterations: int = 0,
321 ) -> InferenceData:
322 """
323 Convert PyJAGS posterior samples to an ArviZ inference data object.
324
(...)
364 InferenceData
365 """
366 return PyJAGSConverter(
367 posterior=posterior,
368 prior=prior,
369 log_likelihood=log_likelihood,
370 dims=dims,
371 coords=coords,
372 save_warmup=save_warmup,
373 warmup_iterations=warmup_iterations,
--> 374 ).to_inference_data()
File ~/anaconda3/envs/mcmc/lib/python3.10/site-packages/arviz/data/io_pyjags.py:107, in PyJAGSConverter.to_inference_data(self)
103 save_warmup = self.save_warmup and self.warmup_iterations > 0
104 # self.posterior is not None
106 idata_dict = {
--> 107 "posterior": self.posterior_to_xarray(),
108 "prior": self.prior_to_xarray(),
109 "log_likelihood": self.log_likelihood_to_xarray(),
110 "save_warmup": save_warmup,
111 }
113 return InferenceData(**idata_dict)
File ~/anaconda3/envs/mcmc/lib/python3.10/site-packages/arviz/data/io_pyjags.py:83, in PyJAGSConverter.posterior_to_xarray(self)
80 if self.posterior is None:
81 return None
---> 83 return self._pyjags_samples_to_xarray(self.posterior)
File ~/anaconda3/envs/mcmc/lib/python3.10/site-packages/arviz/data/io_pyjags.py:62, in PyJAGSConverter._pyjags_samples_to_xarray(self, pyjags_samples)
59 def _pyjags_samples_to_xarray(
60 self, pyjags_samples: tp.Mapping[str, np.ndarray]
61 ) -> tp.Tuple[xarray.Dataset, xarray.Dataset]:
---> 62 data, data_warmup = get_draws(
63 pyjags_samples=pyjags_samples,
64 warmup_iterations=self.warmup_iterations,
65 warmup=self.save_warmup,
66 )
68 return (
69 dict_to_dataset(data, library=self.pyjags, coords=self.coords, dims=self.dims),
70 dict_to_dataset(
(...)
75 ),
76 )
File ~/anaconda3/envs/mcmc/lib/python3.10/site-packages/arviz/data/io_pyjags.py:165, in get_draws(pyjags_samples, variables, warmup, warmup_iterations)
161 data_warmup = _convert_pyjags_dict_to_arviz_dict(
162 samples=warmup_samples, variable_names=variables
163 )
164 else:
--> 165 data = _convert_pyjags_dict_to_arviz_dict(samples=pyjags_samples, variable_names=variables)
167 return data, data_warmup
File ~/anaconda3/envs/mcmc/lib/python3.10/site-packages/arviz/data/io_pyjags.py:238, in _convert_pyjags_dict_to_arviz_dict(samples, variable_names)
236 for variable_name, chains in samples.items():
237 if variable_name in variable_names:
--> 238 parameter_dimension, _, _ = chains.shape
239 if parameter_dimension == 1:
240 variable_name_to_samples_map[variable_name] = chains[0, :, :].transpose()
ValueError: too many values to unpack (expected 3)
将io_pyjags.py
的_convert_pyjags_dict_to_arviz_dict
函数修改为
def _convert_pyjags_dict_to_arviz_dict(
samples: tp.Mapping[str, np.ndarray],
variable_names: tp.Optional[tp.Tuple[str, ...]] = None,
) -> tp.Mapping[str, np.ndarray]:
"""
Convert a PyJAGS dictionary to an ArviZ dictionary.
Takes a python dictionary of samples that has been generated by the sample
method of a model instance and returns a dictionary of samples in ArviZ
format.
Parameters
----------
samples: a dictionary mapping variable names to P arrays with shape
(parameter_dimension, chain_length, number_of_chains)
Returns
-------
a dictionary mapping variable names to NumPy arrays with shape
(number_of_chains, chain_length, parameter_dimension)
"""
# pyjags returns a dictionary of NumPy arrays with shape
# (parameter_dimension, chain_length, number_of_chains)
# but arviz expects samples with shape
# (number_of_chains, chain_length, parameter_dimension)
variable_name_to_samples_map = {}
if variable_names is None:
variable_names = tuple(samples.keys())
for variable_name, chains in samples.items():
if variable_name in variable_names:
sample_dimension = len(chains.shape)
var_shape = chains.shape
transpose_idx = tuple(np.arange(len(var_shape))[-2:][::-1]) + tuple(np.arange(len(var_shape))[:-2])
variable_name_to_samples_map[variable_name] = chains.transpose(transpose_idx)
return variable_name_to_samples_map
- from_pyjags ValueError expected pyjags valuesfrom_pyjags valueerror expected pyjags from_pyjags valueerror expected celery enough valueerror expected pytorch enough jsondecodeerror value expecting quot pyjags valueerror non-boolean valueerror containing boolean llamatokenizer valueerror tokenizer currently valueerror wordcloud supported truetype