假设我在X_0
有一个观察y_0
,我想用一个超参数的高斯过程来建模。假设我然后通过分层抽样后验点来确定超参数theta
中的一个分布。在
现在,我想评估另一个观察的对数后验概率,比如y_1
,在X_1
处,在超参数分布上取平均值,
E_theta [ log P(y_1 | y_0, X_0, X_1, theta) ]
理想情况下,我会从后面画出theta
,然后计算log P(y_1 | y_0, X_0, X_1, theta)
,然后取几何平均值。在
假设我有一个采样的结果,即一个跟踪,例如:
with pm.Model() as model:
...
trace = pm.sample(1000)
如何计算这些样本(或其中的一个子集)上的另一个张量?我只能使用定义为模型一部分的pm.Deterministic
找到部分解决方案
这感觉不太对劲。我觉得你应该能够在采样后对跟踪的子集进行评估。在
在pymc3中,pm.gp
有没有一个方法部分可以创建表示log P(y_1 | y_0 X_0 X_1 theta)
的张量,或者我必须自己创建它,它需要写出后验均值和协方差(在pm.gp
中已经做过了),然后调用cholesky decomp等
我将用这个用例的一个例子来回答。 从本质上讲,把抽样和条件定义分开, 然后使用下面方法2的方法1。在
方法1在我的机器上似乎快了2-3倍。在
相关问题 更多 >
编程相关推荐