AttributeError:带有pymc的__exit__

时间:2014-09-22 09:43:06

标签: python ipython anaconda with-statement pymc

我在Ubuntu 12.04上使用anaconda python当我尝试执行以下python代码时

import pymc as pm
import numpy as np

trace = None
with pm.Model() as model:
    alpha = pm.Normal('alpha', mu=0, sd=20)
    beta = pm.Normal('beta', mu=0, sd=20)
    sigma = pm.Uniform('sigma', lower=0, upper=20)

    y_est = alpha + beta * x

    likelihood = pm.Normal('y', mu=y_est, sd=sigma, observed=y)

    start = pm.find_MAP()
    step = pm.NUTS(state=start)
    trace = pm.sample(2000, step, start=start, progressbar=False)

    pm.traceplot(trace);

我收到以下错误

AttributeError                            Traceback (most recent call last)
<ipython-input-7-0d27d14303ac> in <module>()
      3 
      4 trace = None
----> 5 with pm.Model() as model:
      6     alpha = pm.Normal('alpha', mu=0, sd=20)
      7     beta = pm.Normal('beta', mu=0, sd=20)

AttributeError: __exit__

我该如何解决? 这有什么问题?

1 个答案:

答案 0 :(得分:1)

pm.Model()不是上下文管理器;它没有实现必要的方法。您可能正在运行尚未添加该功能的pymc版本。

只需将其分配给变量并直接使用,之后创建元素:

alpha = pm.Normal('alpha', mu=0, sd=20)
beta = pm.Normal('beta', mu=0, sd=20)
sigma = pm.Uniform('sigma', lower=0, upper=20)
# etc.
model = pm.Model([alpha, beta, sigma, ...])

model fitting tutorial使用函数生成输入。