【问题标题】:AttributeError: __exit__ with pymcAttributeError: __exit__ with pymc
【发布时间】:2014-09-22 09:43:05
【问题描述】:

当我尝试执行以下 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__

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

【问题讨论】:

    标签: python ipython anaconda with-statement pymc


    【解决方案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 使用一个函数来产生输入。

    【讨论】:

    • @martijin 是的,你是对的。我正在使用旧版本的 pymc 而不是 pymc 3
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-16
    • 2015-01-19
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多