2016-10-26 29 views
0

時不適用這是產生錯誤的代碼裸一下:爲什麼我得到一個KeyError: 'b_0'當我嘗試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的蹤跡。這些痕跡是否未被保存?如果是這樣,有沒有辦法直接輕彈一些開關來改變,而不必使用@deterministic使對象。

回答

0

我翻遍了它,顯然沒有被保存。此外,用於保持跟蹤的「標誌變量」不是.trace,它是.keep_trace