2017-01-18 30 views
0

如果我有一个如下所示的模型,我如何访问theano函数以获取适合我的模型的值(s)?有没有办法从pymc3生成变量?

这是一个相当基本的模型,所以我可以用原始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) 

回答

2

这里典型的做法是从模型的东西后验分布第一个样品一样

with model: 
    trace = pm.sample(N_SAMPLES) 

然后使用样本逼近你的函数的后预期值。

相关问题