Python AttributeError:_退出_与pymc

Python AttributeError:_退出_与pymc,python,ipython,anaconda,with-statement,pymc,Python,Ipython,Anaconda,With Statement,Pymc,当我尝试执行以下python代码时,我正在Ubuntu 12.04上使用anaconda 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', low

当我尝试执行以下python代码时,我正在Ubuntu 12.04上使用anaconda 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__
AttributeError回溯(最近一次调用)
在()
3.
4跟踪=无
---->5使用pm.Model()作为模型:
6 alpha=pm.正常('alpha',μ=0,sd=20)
7β=pm.正常('beta',μ=0,标准差=20)
AttributeError:\uuu退出__
我怎样才能修好它? 这里有什么问题?

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, ...])

使用函数生成输入。

@martijin是的,你说得对。我使用的是pymc的旧版本,而不是pymc 3