PyMC:拉出跟踪时直接更改对象名称不适用

  • 本文关键字:对象 不适用 跟踪 PyMC pymc
  • 更新时间 :
  • 英文 :


下面是产生错误的一小段代码:

import pymc
import numpy as np
a = pymc.Normal('a', 1, 1)
b = np.empty(4, dtype=object)
for i in range(4):
    b[i] = 1*a
    b[i].__name__ = 'b_%i'%i
M = pymc.MCMC([a,b])
M.sample(10)
M.trace('b_0')        # Causes a KeyError:'b_0'

我不明白为什么当我试图提取b_0和所有其他b的踪迹时,我会得到KeyError: 'b_0'。是这些痕迹没有被保存吗?如果是这样,是否有一种方法可以直接拨动一些开关来改变它,而不必使用@deterministic.

创建对象。

我查看了它,显然跟踪没有被保存。此外,用于保持跟踪的"标志变量"不是.trace,而是.keep_trace

最新更新