问题标签 [pymc3]

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 投票
0 回答
376 浏览

pymc3 - 没有 U-Turn 采样器进行优化

我希望解决以下性质的优化问题:

这可以通过马尔可夫链蒙特卡罗采样和模拟退火来完成。

theta是否可以通过 HMC 变体 NUTS 方法和模拟退火使用 PyMC3 库优化参数集?

到目前为止,在 PyMC3 库的教程中,我只看到了使用 NUTS 进行采样的示例。这对于计算棘手的积分很有用,但我不知道如何用它解决优化问题。

0 投票
1 回答
92 浏览

python - 'pymc.rnormal' 函数的 PyMC3 等效项是什么?

是否有与该pymc.rnormal功能等效的 PyMC3,或者它是否已被放弃numpy.random.normal

0 投票
1 回答
1178 浏览

bayesian - pymc3 中不正确的、平坦的先验

我正在将来自 Stan 的 ARM 书中的选定模型“翻译”到 pymc3(我希望尽快将它们发布到 Github 上),并且我有一个关于“不正确的先验”的问题。

我知道 Stan 默认是对参数使用统一的先验。如果无界,这意味着统一(-inf,+inf)

我的问题是:无论如何在pymc3中指定这样的先验?

这是一个示例来说明问题以及我到目前为止所做的尝试。

在斯坦(pystan)

在pymc3

我查看了 glm 的源代码,它似乎默认使用模糊的先验,Krutschke 和许多 BUGS 示例也推荐这种做法并且它有效(见上文)。然而,立场参考手册(第 52 页)表示,他们积极劝阻用户不要使用默认比例先验,因为他们将太多的概率质量集中在合理的后验值之外(...)可能会产生倾斜后验的深远影响

0 投票
1 回答
1196 浏览

bayesian - pymc3 中均匀分布的区间变换是什么?

我注意到在 pymc3 中使用均匀分布时,采样器也会扫描_interval参数,除非指定了转换,例如:

不仅会导致对 normMu 的采样,还会导致 normMu_interval:

区间轨迹图

参数轨迹图

通常,当我对尺度参数(如标准化)使用统一先验时,我当然会在对数间隔上进行采样。pymc3 是否以某种方式为我处理这个问题?

干杯

0 投票
0 回答
149 浏览

pymc - How can I optimize this pymc code?

I'd like to perform inference on a simple Ising model with pymc3:

However, the last pm.NUTS step takes 2 minutes on average to complete, and uses ~1 gigabyte of memory as well. This is for N=15, so a pretty small model. Any tips on speeding this up? It's already using very basic operations for which the second-order info should be easy to compute.

0 投票
0 回答
79 浏览

theano - TypeError:MaxAndArgmax 需要一个用于任意/自定义分布函数的常数轴

我正在尝试定义一个非常复杂的多元、连续、自定义/任意分布函数,并使用 NUTS 从中采样。当我这样做时,我收到以下错误:

我已经确保自定义 logp 函数的输出是一个 theano 变量标量,并且在我的自定义分布声明之外,我能够成功编译一个返回 logp 的 theano 函数,然后还有关于多元输入的梯度. 我的自定义分发功能不使用扫描操作,这似乎在生成上述错误中起作用。我还收到关于扫描操作的推断形状警告(我可以在此处跟进该错误消息)。

从我所做的研究来看,在我看来问题可能来自 NUTS 计算粗麻布,但我不确定。我对 pymc3 和 theano 没有经验,所以这里的任何见解都将不胜感激。

谢谢!

亚历克斯

更新:

我现在相当有信心 hessian 导致了这个错误,所以这更像是一个 theano 问题而不是 pymc3 问题。我能够通过theano.gradient.hessian()完全评估 pymc3 之外的函数来测试这一点,并且我收到了与上面完全相同的错误。此外,与此问题类似,我tensor.min()在评估导致上述错误的似然函数时使用了 a。但是,我用 sum() 替换了 min() 以进行仔细检查,而 theano 仍然无法编译我的函数,但没有抛出错误(只是被阻塞)......但仅在 gpu 上。仍然保留“假” sum() 操作,粗麻布在我的 cpu 上成功评估。无论如何,我认为我的似然函数在连续性和凸性方面也存在问题,所以不会沿着这条路走。

0 投票
0 回答
2860 浏览

amazon-ec2 - 如何使用 PYMC3 从 GPU 中受益

使用 GPU 与 CPU 时,我发现 PYMC3 速度的差异为零。

我正在拟合一个需要 500K+ 样本才能收敛的模型。显然它很慢,所以我尝试使用 GPU 加快速度(在 EC2 上使用 GPU 实例)。Theano 报告正在使用 GPU,所以我相信 CUDA/Theano 配置正确。但是,我强烈怀疑 Pymc3 没有使用 GPU。

  • 我需要将我的变量显式设置为 TensorType(float32, scalar) 吗?目前,它们是 float64。
  • 只有一些采样器/可能性可以从 CUDA 中受益吗?我正在拟合基于泊松的模型,因此使用 Metropolis 采样器,而不是 NUTS
  • 有没有办法检查 pymc3 是否正在使用 GPU?
0 投票
0 回答
520 浏览

python - PyMC3:Theano 的 cxxflags 配置不正确

我一直在从 pymc3 运行 find_MAP() 。它一直给我同样的错误。

这是python的例外:

我已经尝试了这里提到的各种步骤:https : //stackoverflow.com/a/10894096/3413239 通过尝试各种 cxxflags 但没有任何效果。

由于我不熟悉 Theano 和 C++,我无法理解到底是什么问题。任何帮助将不胜感激。

是什么vfnmadd312sd .LC14(%rip), %xmn2, %xmn1意思?这些是什么指令?我有很多目录,/tmp/但没有看起来像 : 的文件/tmp/cczHyg7w.s。这些文件的目的是什么?

我安装了 PyMC3,Theano 也随之安装。通过 PyMC3 安装 Theano 会不会有问题?

编辑

numpy 和 scipy 配置存在问题。到目前为止我做了什么:

  • 卸载 numpy 和 scipy
  • 使用正确的配置和 OpenBlas 的链接重建 numpy。使用 OpenBLAS 集成编译 numpy
  • 通过 pip 重新安装了 scipy、theano、pymc3 它仍然给我同样的问题。
0 投票
1 回答
1597 浏览

python - 使用 Pymc3 的条件概率

我的问题是如何使用 PYMC3 包进行条件概率模型。

我有一组数据a_observed、b_observed、c_observed,我想找出它们之间的关系。我怀疑a,b,c都是正态分布,b取决于a,c取决于a,b。我需要找到参数。

到目前为止,我有:

现在我想让A独立,B|A,C|A,B。PYMC3 中执行此操作的最佳方法是什么?我在这里看到了 lambda 函数http://healthyalgorithms.com/2011/11/23/causal-modeling-in-python-bayesian-networks-in-pymc/,但是这种方法直接给出了条件概率。

另外,我想知道将模型扩展到三个以上具有更复杂依赖关系的变量是多么容易。谢谢!

0 投票
0 回答
130 浏览

pymc3 - 在 pymc3 中对 NUTS 的错误推断

对于一个非常简单的连续玩具模型,我使用 NUTS 在 pymc3 中得到了似乎不正确的后验。后验不同意分析计算和 Metropolis 后验。

在下面的代码中,我生成了具有固定随机种子的合成数据(因此结果是可重现的)。然后我在 pymc3 中定义了相同的生成模型,只观察最终数据。最后,我将其中一个潜在变量的边际分布与真正的分析后验和 Metropolis 后验进行比较。结果不同意。

实际上,我以两种略有不同的方式定义了相同的生成模型。上述程序的输出如下。

tau 的真实后验平均值为 3.5,标准差为 2.3,中位数为 3.0,与 Metropolis 一致。使用Stan时,这些值也更加匹配。我正在使用 pymc3 的相对较新的提交 (ca40cd3b2)。