Код: Выделить всё
import pymc as pm
import pytensor
import pytensor.tensor as pt
a = pm.Uniform.dist()
b = pm.Normal.dist(mu=a, sigma=1)
x = b + pt.as_tensor([2, 3, 4])
x_draws = pm.draw(x, draws=1_000)
x_logp = pm.logp(rv=x, value=[x_draws]).eval()
Код: Выделить всё
---------------------------------------------------------------------------
NotImplementedError Traceback (most recent call last)
~\anaconda3\lib\site-packages\pymc\distributions\logprob.py in logp(rv, value)
176 try:
--> 177 return logp_logprob(rv, value)
178 except NotImplementedError:
~\anaconda3\lib\site-packages\pymc\logprob\abstract.py in logprob(rv_var, *rv_values, **kwargs)
52 """Create a graph for the log-probability of a ``RandomVariable``."""
---> 53 logprob = _logprob(rv_var.owner.op, rv_values, *rv_var.owner.inputs, **kwargs)
54
~\anaconda3\lib\functools.py in wrapper(*args, **kw)
876
--> 877 return dispatch(args[0].__class__)(*args, **kw)
878
~\anaconda3\lib\site-packages\pymc\logprob\abstract.py in _logprob(op, values, *inputs, **kwargs)
93 """
---> 94 raise NotImplementedError(f"Logprob method not implemented for {op}")
95
NotImplementedError: Logprob method not implemented for Elemwise{add,no_inplace}
During handling of the above exception, another exception occurred:
TypeError Traceback (most recent call last)
~\anaconda3\lib\site-packages\pymc\distributions\logprob.py in logp(rv, value)
179 try:
--> 180 value = rv.type.filter_variable(value)
181 except TypeError as exc:
~\anaconda3\lib\site-packages\pytensor\tensor\type.py in filter_variable(self, other, allow_convert)
271
--> 272 raise TypeError(
273 f"Cannot convert Type {other.type} "
TypeError: Cannot convert Type TensorType(float64, (1, 1000, 3)) (of Variable TensorConstant{[[[3.41809..6263971]]]}) into Type TensorType(float64, (3,)). You can try to manually convert TensorConstant{[[[3.41809..6263971]]]} into a TensorType(float64, (3,)).
The above exception was the direct cause of the following exception:
TypeError Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_129020\3313924450.py in
8 x = b + pt.as_tensor([2, 3, 4])
9 x_draws = pm.draw(x, draws=1_000)
---> 10 x_logp = pm.logp(rv=x, value=[x_draws]).eval()
~\anaconda3\lib\site-packages\pymc\distributions\logprob.py in logp(rv, value)
180 value = rv.type.filter_variable(value)
181 except TypeError as exc:
--> 182 raise TypeError(
183 "When RV is not a pure distribution, value variable must have the same type"
184 ) from exc
TypeError: When RV is not a pure distribution, value variable must have the same type