Как определить пользовательскую вероятность в PyMC3? В PyMC2 я мог бы использовать @pymc.potential
. Я попытался использовать pymc.Potential
в PyMC3, однако, кажется, что логические операции не могут быть применены к параметрам (я получаю ошибку, например this, когда я это делаю). Например, следующий код не работает:Пользовательская вероятность в pymc3
from pymc import *
with Model() as model:
x = Normal('x', 1, 1)
def z(u):
if u > 0: #comparisons like this are not supported
# if theano.tensor.lt(0,u): this is how comparison should be done
return u ** 2
return -u**3
x2 = Potential('x2', z(x))
start = model.test_point
h = find_hessian(start)
step = Metropolis(model.vars, h)
sample(100, step, start)
Это невозможно для меня, чтобы изменить все сравнения внутри вероятности к синтаксису Theano (т.е. theano.tensor {л, ль, эк, NEQ, gØ. , GE}). Нужно ли использовать функцию правдоподобия, аналогичную PyMC2?
и как определить детерминированную функцию, которая имеет «я» в сигнатуре, потому что она принадлежит классу? пожалуйста, посмотрите мой связанный пост –
Вам не нужно ничего делать для детерминированной функции, если вы не хотите сохранять свои выборочные значения в трассировке, и в этом случае вы можете обернуть ее в вызов «Определить». См. Документы. –
, к сожалению, это не так просто, и я не нашел информацию в документе ... скажем, это «в строительстве». –