PyMC:拉出痕迹时,直接更改对象的名称不适用

PyMC: Directly changing an object's name doesn't apply when pulling out traces

这里是一小段会产生错误的代码:

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 来制作对象。

我翻了一下,显然痕迹没有被保存。此外,用于保留跟踪的 "flag variable" 不是 .trace,而是 .keep_trace