gpt4 book ai didi

python - PyMC3 大 MvNormal 先验

转载 作者:行者123 更新时间:2023-12-01 02:45:26 27 4
gpt4 key购买 nike

我想在 PyMC3 中指定大型多元正态分布作为先验。该分布的精度矩阵的行列式在数值上等于零。看来这是 PyMC3 的问题。有什么建议么?我只需要最大化后验,无论行列式的值如何,都可以这样做。

最佳答案

pymc3通过计算cholesky分解得到行列式。它还以对数尺度执行此操作,因此这实际上不应该下溢。然而,矩阵有可能是病态的,并且乔尔斯基分解失败。在这种情况下,您可以向矩阵添加一条小对角线。

如果您确定要使用病态矩阵,您可以编写自己的 pm.MvNormal 版本,该版本不包含 det。类似这样的事情:

class MvNormalNoDet(pm.Continuous):
def __init__(self, mu, tau, *args, **kwargs):
self._mu = tt.as_tensor_variable(mu)
self._tau = tt.as_tensor_variable(tau)
self.mean = self.median = self.mode = self._mu
super().__init__(*args, **kwargs)

def logp(self, value):
diff = value - self._mu
return -0.5 * (diff * tt.dot(self._tau, diff)).sum(axis=-1)

关于python - PyMC3 大 MvNormal 先验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45298007/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com