【问题标题】:Rationale for number of pymc function evaluationspymc 函数评估次数的基本原理
【发布时间】:2014-12-31 00:35:03
【问题描述】:

我正在使用类似于non linear curvefitting 问题中提出的代码分析数据:

# define the model/function to be fitted.
def model(x, f): 
    amp = pymc.Uniform('amp', 0.05, 0.4, value= 0.15)
    size = pymc.Uniform('size', 0.5, 2.5, value= 1.0)
    ps = pymc.Normal('ps', 0.13, 40, value=0.15)

    @pymc.deterministic(plot=False)
    def gauss(x=x, amp=amp, size=size, ps=ps):
        e = -1*(np.pi**2*size*x/(3600.*180.))**2/(4.*np.log(2.))
        return amp*np.exp(e)+ps
    y = pymc.Normal('y', mu=gauss, tau=1.0/f_error**2, value=f, observed=True)
    return locals()

MDL = pymc.MCMC(model(x,f))
MDL.sample(1e4)

在该示例中,我会说有三个拟合参数,ampsizeps。让我们称正在检查的参数数量为 N。现在让我们调用要抽取的样本数,P(在本例中为 1e4)。我观察到@deterministic 函数gauss 被调用大约 N x P 次。

  1. 我想知道为什么是N x P
  2. MDL 中是否有一个属性可以查明gauss 被调用了多少次?

【问题讨论】:

    标签: python pymc


    【解决方案1】:

    gauss 在需要其对数概率时被调用。 PyMC 试图对此变得聪明,并缓存值,以便仅在节点的父节点更改其值时重新计算它们。因此,gauss 将在每次 ampsizeps 更改时进行评估。

    【讨论】:

    猜你喜欢
    • 2019-09-17
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多