问题标签 [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.

0 投票
2 回答
346 浏览

gradient - gpflow SVGP的爆炸梯度

在为大数据集优化具有泊松似然的 SVGP 时,我看到了我认为的爆炸梯度。几个时期后,我看到 ELBO 急剧下降,然后在摆脱之前取得的所有进展后非常缓慢地恢复。大约 21 次迭代对应于一个 Epoch。

埃尔博

这个尖峰(至少是第二个尖峰)导致了参数的完全变化(对于参数向量,我刚刚绘制了范数以查看变化): 参数

我该如何处理?我的第一种方法是裁剪渐变,但这似乎需要挖掘 gpflow 代码。

我的设置:

通过自然梯度对变分参数进行训练,通过 ADAM 对其余参数进行训练,自然梯度 Gamma 的时间表缓慢(线性)增加。

对于我的设置,批处理和诱导点的大小尽可能大(均为 2^12,数据集由约 88k 样本组成)。我包括 1e-5 抖动并用 kmeans 初始化诱导点。

我使用组合内核,由 RBF、Matern52、周期性和线性内核的组合组成,共有 95 个特征(其中很多是由于单热编码),所有特征都是可学习的。长度尺度使用 gpflow.transforms 进行转换。

更新:仅使用 ADAM 按照 Mark 的建议,我只使用 ADAM,这帮助我摆脱了突然的爆炸。但是,我仍然只使用 natgrad 的一个 epoch 进行初始化,这似乎节省了很多时间。

ADAM+NATGRAD(灰色)与仅 ADAM(红色)的比较

此外,变分参数的变化似乎不那么突然(至少就它们的规范而言)。我想他们现在收敛速度会慢一些,但至少它是稳定的。 ADAM+NATGRAD(灰色)与仅 ADAM(红色)的比较

0 投票
2 回答
174 浏览

tensorflow - 如何使用时间轴分析 GPflow 优化过程?

我正在尝试使用时间线分析 GPflow 并使用 chrome 跟踪对其进行可视化。但迹线似乎没有显示优化过程(仅模型构建和预测)。我定义了一个自定义配置:

并尝试在优化后做一个简单的预测:

其中 Adam 优化器定义为:

是否有可能在时间线上也显示优化跟踪?

0 投票
1 回答
115 浏览

tensorflow - 使用 GPflow 获得 FLOPS

是否有可能GPflow获得 FLOPS?我找到了一个使用Tensorflow但不知道如何在GPflow上下文中使用它的示例:

0 投票
1 回答
282 浏览

python - gpflow:是否可以使用不适合内存的数据?

我正在尝试使用大量不适合内存的数据来训练 gpflow 模型。

我正在考虑使用带有 minibatch 选项的 SVGP,但它似乎需要一个完整数据的 numpy 数组,而且我不想一次加载所有内容。

是否可以使用 gpflow 对不适合内存的数据进行训练?有没有这样做的例子?

谢谢你的帮助。

0 投票
1 回答
205 浏览

gpflow - 泊松的变分期望

我想知道泊松似然的变分期望 \int q(f)logp(y|f) df 的分析形式来自哪里(使用对数链接时)。

在文档中只提到可以近似难以处理的可能性,但是我对该主题不够熟悉,无法知道到底使用了什么。

你能指出我的近似方法吗?

谢谢。

0 投票
2 回答
184 浏览

gpflow - 缺少输入的 GPFlow 中的多任务学习?

是否可以在缺少某些输入的情况下使用 GPFlow 进行多任务学习?具体来说,我试图拟合来自几个相关个人的空间数据,但这些数据并不是所有个人的相同输入位置。我知道我应该在这里做分层 GP,但它们往往不能很好地扩展。我希望可以改用多任务学习,尽管用例并没有完全映射到这种方法的典型应用上。

0 投票
1 回答
749 浏览

gpflow - 内存分配 Coregionalized Kernel

我目前正在使用通过 SVGP 优化的共区域化线性模型(参见例如 alvarez notes https://arxiv.org/pdf/1106.6251.pdf )。

我注意到在运行 OOM 之前诱导点数量的上限大大减少(现在大约 5k 诱导点而不是不使用共区域化内核时的 8k)。据我了解,限制瓶颈应该是相同的(仍然是 MxM 内核矩阵),但它似乎发生了更多变化。

此外,我现在收到警告:

内核矩阵的构造如下。我不使用大 Qs 或 Rs (Q=3, R=3)。

是什么占用了这么多内存?来自额外内核的更多参数不应该改变那么多。

谢谢。

0 投票
3 回答
2007 浏览

python - ImportError:无法在 gpflow 中导入名称“AdamOptimizer”

我想将 AdamOptimizer 与 GPFlow 一起使用,但是我无法按照此链接(第 26 行)中指定的源代码的建议导入它。我不确定我错过了什么。我尝试过使用不同的 gpflow 版本(1.1.1 和 1.3)。

谢谢

0 投票
1 回答
221 浏览

gpflow - 预训练的 densenet/vgg16/resnet50 + gp 不在 cifar10 数据上训练

我正在尝试使用 CIFAR10 数据在预训练的 CNN(Densenet、VGG 和 Resnet)之上使用 GP 训练混合模型,模仿 gpflow 文档中的 ex2 函数。但测试结果总是在 0.1~0.2 之间,这通常意味着随机猜测(Wilson+2016 论文显示 CIFAR10 数据的混合模型应该得到 0.7 的准确度)。谁能给我一个提示可能是什么问题?

我用更简单的 cnn 模型(2 个 conv 层或 4 个 conv 层)尝试了相同的代码,并且都有合理的结果。我尝试过使用不同的 Keras 应用程序:Densenet121、VGG16、ResNet50,都不起作用。我试图冻结预训练模型中的权重仍然无法正常工作。

0 投票
0 回答
242 浏览

gpflow - 我将如何为 Gpflow 中的平均函数中的参数实现尖峰和平板先验?

我目前正在尝试在共区域化高斯过程的平均函数内实现贝叶斯变量选择。均值函数是一个线性模型,我想为这个线性模型的参数指定尖峰和平板先验。

我找不到任何有关如何在 gpflow 中为参数指定自定义先验的信息。任何有关如何执行此操作的指导,或者我正在尝试的操作在 gpflow 中是否可行或实用,将不胜感激。

我正在 python 中使用 gpflow。我试图为变量创建一个伯努利先验(下面的代码),但我真的不确定如何在 gpflow 中编写自定义先验,所以这可能是不正确的。