python-2.7 - pymc3 多重高斯过程回归

标签 python-2.7 theano pymc3

我试图通过扩展 https://pymc-devs.github.io/pymc3/notebooks/GP-introduction.html 中的第一个示例来运行具有两个特征的高斯过程回归

n = 20
X = np.array([list(a) for a in zip(np.sort(3*np.random.rand(n)), np.sort(3*np.random.rand(n)))])
y = np.random.normal(size=n)

with pm.Model() as model:
    # priors on the covariance function hyperparameters
    l = np.array([pm.Uniform('l1', 0, 10), pm.Uniform('l2', 0, 10)])

    # uninformative prior on the function variance
    log_s2_f = pm.Uniform('log_s2_f', lower=-10, upper=5)
    s2_f = pm.Deterministic('s2_f', tt.exp(log_s2_f))

    # uninformative prior on the noise variance
    log_s2_n = pm.Uniform('log_s2_n', lower=-10, upper=5)
    s2_n = pm.Deterministic('s2_n', tt.exp(log_s2_n))

    # covariance functions for the function f and the noise
    f_cov = s2_f * pm.gp.cov.ExpQuad(input_dim=2, lengthscales=l)

    y_obs = pm.gp.GP('y_obs', cov_func=f_cov, sigma=s2_n, observed={'X':X, 'Y':y})

这里是 X 的输入和 y用于测试输入的形状。
当我运行代码时,我得到一个 theano AsTensorError在 pymc3 中追溯到此的错误
/usr/local/lib/python2.7/site-packages/pymc3/gp/cov.pyc in square_dist(self, X, Z)
    124 
    125     def square_dist(self, X, Z):
--> 126         X = tt.mul(X, 1.0 / self.lengthscales)
    127         Xs = tt.sum(tt.square(X), 1)
    128         if Z is None:

是否可以在 pymc3 中运行多个高斯回归?如果是这样,我确定我在某处弄乱了尺寸。

最佳答案

我在以下博客中找到了我的问题的解决方案,这显然是 pymc3 的引用点。

https://discourse.pymc.io/t/multidimensional-input-using-gaussian-process/128 ,

它们不是将协方差先验定义为分布数组,而是定义为具有相应分量数量的多项式分布。通过更改上面的代码的以下行,一切都按预期工作

with pm.Model() as model:
    # priors on the covariance function hyperparameters
    l = pm.Gamma('l', 1, 1, shape=2)

关于python-2.7 - pymc3 多重高斯过程回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45577974/

相关文章:

python - 如何在 Python 2.7 中使用 "setup.cfg"而不是 setup.py

python - statsmodels 与 pymc 中的对数似然

python - 在 PyMC3 中重现 Hamilton 1989 马尔可夫切换模型

python - 我们如何在 PyMC3 的分层模型中预测新的看不见的组?

python - 如何在 Python 中获取 timedelta 的总小时数和分钟数

python - 在模块中以字符串形式访问变量

python - BFS 和 UCS 算法。我的 BFS 实现有效,但我的 UCS 无效。不知道为什么

python - 在 Keras 模型中获取中间层输出的正确方法?

sentiment-analysis - Theano 分类任务总是给出 50% 的验证错误和测试错误?

python-2.7 - 如何在 Windows 上的 Anaconda Python 中安装 Keras 和 Theano?