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
这里是一小段会产生错误的代码:
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