如果我有一个类似下面的模型,我如何访问theano函数以获得我的模型I' m拟合的值?
这是一个非常基本的模型,因此我可以使用原始function
计算我的变量。但是,我打算动态生成pymc3模型,其中一些变量被重用/固定/限制等。
我知道我可以从model.makefn([expected])
访问theano函数,但这将依赖于转换的参数,例如sigma_log_
而不是sigma
。
理想情况下,我正在寻找类似model.evalute([expected], alpha=1, beta=2)
有这样的方法吗?
由于
def function(a, b):
# do something
basic_model = Model()
with basic_model:
# Priors for unknown model parameters
alpha = Normal('alpha', mu=0, sd=10)
beta = Normal('beta', mu=0, sd=10, shape=2)
sigma = HalfNormal('sigma', sd=1)
# Expected value of outcome
expected = Deterministic('expected', function(alpha,beta))
# Likelihood (sampling distribution) of observations
Y_obs = Normal('Y_obs', mu=function, sd=sigma, observed=Y)
答案 0 :(得分:2)
这里的典型方法是首先从模型的后验分布中采样,如
with model:
trace = pm.sample(N_SAMPLES)
然后使用样本来近似函数的后验期望值。