2017-09-25 4 views
2

J'utilise un modèle de mélange de processus de Dirichlet (DPMM) pour déduire des affectations de grappes et des paramètres de grappe sur un ensemble de données synthétique en utilisant Edward basé sur le community post suivant. J'utilise Metropolis Hastings accéléré par GPU pour apprendre la distribution postérieure sur les paramètres du modèle. Par exemple, des moyens de cluster, nous avons:Tracé de tracé MCMC dans Edward

D = 2 #dimension of the data 
K = 5 #cluster truncation 
T = 10000 #number of samples 
mu = Normal(loc=tf.zeros(D), scale=tf.ones(D), sample_shape=K) 
qmu = Normal(loc=tf.zeros(D), scale=tf.ones(D), sample_shape=K) #posterior 
gmu = Normal(loc=tf.zeros(D), scale=tf.ones(D), sample_shape=K) #proposal 

inference = ed.MetropolisHastings(
    latent_vars={mu: qmu, ...}, 
    proposal_vars={mu: gmu, ...}, 
    data={x: x_data}) 

Je suis intéressé à générer une trace parcelle pour visualiser des échantillons de la distribution postérieure qmu. Je cherche quelque chose de similaire à PyMC pm.traceplot() Comment générer un tracé dans Edward?

Répondre

2

Pour une distribution Empirical utilisée dans l'échantillonnage, on peut accéder aux valeurs de l'échantillon comme suit:

thin=4 
burnin=2000 
qmu_trace = qmu.params[burnin::thin].eval() 

On peut alors tracer la trace et calculer l'histogramme et comme d'habitude auto-corrélation.