Edward 中的 MCMC 跟踪图

MCMC Trace Plot in Edward

我正在使用 Dirichlet 过程混合模型 (DPMM) 在使用 Edward based on the following community post 的合成数据集上推断聚类分配和聚类参数。我正在使用 GPU 加速的 Metropolis Hastings 来学习模型参数的后验分布。例如,对于聚类均值,我们有:

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})

我有兴趣生成跟踪图来可视化后验分布中的样本 qmu。我正在寻找类似于 PyMC pm.traceplot() 的东西 如何在 Edward 中生成轨迹图?

对于采样中使用的 Empirical 分布,我们可以按如下方式访问采样值:

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

然后我们可以像往常一样绘制轨迹并计算直方图和自相关。