2016-10-26 1 views
0

Hier ist ein nacktes Stück Code herausziehen, die einen Fehler erzeugt:PyMC: Direkt eines Objekts Namensänderung gilt nicht, wenn Spuren

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' 

Ich verstehe nicht, warum ich ein KeyError: 'b_0' bekommen, wenn ich versuche, um die Spur von b_0 und alle anderen b's zu extrahieren. Werden die Spuren nicht gespeichert? Wenn ja, gibt es eine Möglichkeit, einen Schalter direkt zu wechseln, um das zu ändern, ohne das Objekt mit @deterministic zu machen.

Antwort

0

Ich schaute durch, anscheinend wurde die Spur nicht gespeichert. Außerdem ist die "Flag-Variable" zum Speichern der Ablaufverfolgung nicht .trace, sondern .keep_trace