问题标签 [gpflow]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - gpflow安装错误:`RuntimeError:超出最大递归深度'
我正在尝试安装 GPflow 以下
https://github.com/GPflow/GPflow/blob/master/README.md
我有 Ubuntu 16.04 LTS。
我成功安装了 tensorflow(我运行了一个简单的 python 脚本来测试它并且它有效)。
我从壳里跑
它给了我找不到文件 setup.py 的错误。所以我在本地文件夹中克隆了 GPflow git 存储库,然后从我执行的那个文件夹中
(我需要使用 sudo 获得访问权限)。但我收到以下错误:
关于如何解决这个问题的任何想法?
python - TensorFlow(或 GPFlow)中的约束优化
一个例子如下:目标是优化一个f(x1,..,xN)
受约束x1 + .. + xN = 1
的函数0 < x_i <= 1
。一般来说,我如何使用 tensorflow(具有任意约束)来做到这一点?
我见过允许这样做的ScipyOptimizerInterface 。
在这种特殊情况下,另一种方法是使用nnsoftmax
转换来编写x_i = exp(y_i)/sum_i(exp(y_i))
, i=1,..,N
。y1,..,yN
现在不受约束,可以使用 SGD 进行优化,即使用 TensorFlow 没有任何约束。在 GPFlow 中,这相当于与变量关联的变换{y1,..,yN}
。
还有其他方法吗?
python - 在 GPflow 中重置内核超参数值
我的用例是这样的:我有一个函数接受用户选择的内核,然后我将遍历数据集中的每个日期,并使用高斯过程回归来估计使用指定内核的模型。但是,由于我指向的是内核对象,所以我需要在运行下一次迭代之前将其重置为默认值。
我在内核上找到了 read_trainables() 方法,所以一种策略是保存用户提供的设置,但似乎没有任何方法可以设置它们?
干杯,史蒂夫
python-3.x - 可以在 gpflow 的 SGPR 中使用除周期性以外的内核吗
我对GPR很陌生。如果您对以下问题提供一些建议,我将不胜感激:
我们可以在稀疏高斯过程中使用Matern52内核吗?
选择伪输入 (Z) 的最佳方法是什么?随机抽样是否合理?
我想提一下,当我使用 Matern52 内核时,以下错误会停止优化过程。我的代码:
InvalidArgumentError(参见上面的回溯):输入矩阵不可逆。[[节点:gradients_25/SGPR-31ceaea6-412/Cholesky_grad/MatrixTriangularSolve = MatrixTriangularSolve[T=DT_DOUBLE, adjoint=false, lower=true, _device="/job:localhost/replica:0/task:0/device:CPU: 0"](SGPR-31ceaea6-412/Cholesky, SGPR-31ceaea6-412/eye_1/MatrixDiag)]
任何帮助将不胜感激,谢谢。
python - 为 GPflow 模型预计算张量流张量
我想将稀疏高斯过程模型(来自 GPflow 库)包含到另一个项目中。问题是我不能一次调用多个输入的预测函数,但我必须按顺序调用它。我检查了 SGPR 类 ( https://github.com/GPflow/GPflow/blob/master/gpflow/models/sgpr.py ) 中的预测函数 predict_F ,发现我可以提前预先计算很多东西。因此,我创建了一个 SGPR 的子类并编写了一个预计算方法,修改了预测函数:
但是当我运行代码时,速度没有区别。我想tensorflow只有在我调用predict_f时才会执行所有表达式,但我不知道如何显式地预先计算一些张量。希望tensorflow大师可以帮助我,在此先感谢!
python - 如何获得完整的协方差矩阵并在 GPflow 中找到它的熵
我想计算 GPFlow 中 GP 回归的协方差矩阵的行列式。我猜我可以用这个函数得到协方差矩阵:
这里建议使用此功能:
https://gpflow.readthedocs.io/en/develop/notebooks/regression.html
但是,我不知道如何使用这个函数或它返回什么。我需要知道一个返回整个模型的协方差矩阵的函数,然后我需要知道如何计算它的行列式。
经过一番努力,我想出了如何给 predict_f_full_cov 一些我感兴趣的点,如下所示:
这返回了两个数组,其中第一个是我沿 x 轴要求的点的预测函数的平均值。第二个数组有点神秘。我猜这是协方差矩阵。我用这个把它拉出来:
然后我查找了如何计算行列式,如下所示:
然后我计算了它的对数以获得协方差矩阵的熵:
我使用两组不同的数据运行了两次。第一个噪音大,第二个噪音低。奇怪的是,低噪声数据集的熵上升了。我很茫然。
我发现,如果我只是在一个应该是线性的小区域上计算协方差矩阵,那么上下调整噪声不会达到我的预期。此外,如果我将 GP 回归到大量点,则行列式变为 0.0。
这是我正在使用的代码:
gpflow - gpflow中的多输出回归
我正在使用 gpflow 进行多输出回归。
我的回归目标是一个三维向量(相关的),我设法用完整的协方差矩阵进行了预测。这是我的实现。更具体地说,我在 tensorflow 之后使用 SVGP,其中 f_x, Y 是张量(我使用的是小批量训练)。在批量训练期间,小批量中的训练示例是相关的,而我们可以假设它们与训练集中的其他示例相互独立。因此,我想在训练期间在每个批次中实现相关内核,并使用完整的协方差矩阵进行预测。
我有两个问题:
- 我应该使用哪个内核?我在https://gpflow.readthedocs.io/en/develop/notebooks/multioutput.html#Shared-Independent-MOK-&-Shared-Independent-Features-(SLOW-CODE)中阅读了关于多输出 GP 的教程,谁能进一步解释以下声明?在我的理解中,不同输出维度之间的内核是不相关的,但是,我们仍然可以在预测中得到完整的协方差矩阵(条件)?
所有输出都是不相关的,并且每个输出使用相同的内核。但是,在条件计算期间,我们不假设这种特定的块对角结构。
- 一个技术问题。当我在 tensorflow 之后使用 gpflow 时,我应该如何设置“功能”。我应该设置一个带有零的numpy matix还是简单地设置为None?似乎在批量训练中,诱导点默认设置为全批量。虽然如何设置特征类型,例如 SharedIndependentMof,我们可以设置大于批量大小的诱导点吗?
谢谢!
gpflow - 保存和检索 Gpflow 模型的参数
我目前正在使用 GPR 实现一个带有 GPflow 的算法。我想在 GPR 训练后保存参数并加载模型进行测试。有人知道命令吗?