---------------------------------------------------------------------------
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
Может кто-нибудь объяснить, в чем на самом деле проблема?
Из этой статьи ЗДЕСЬ, опубликованной в журнале «PeerJ Comput. Sci». Я взял последний код (стр. 28): [code]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() [/code] Это приводит к длинной ошибке, которую я не понимаю: [code]--------------------------------------------------------------------------- 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\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 [/code] Может кто-нибудь объяснить, в чем на самом деле проблема?