问题标签 [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 投票
1 回答
990 浏览

python - 在 PyMC3 中设置确定性分布

我是 PyMC3 的新手 这里有一些 PyMC2 - 我是否需要做一些特定的事情,比如在 Theano 中编译才能将其转换为 PyMC3 代码?

我收到一个错误,例如

0 投票
3 回答
1061 浏览

python - 将 PyMC2 代码移植到 PyMC3 - 体育分析的层次模型

我尝试了以下代码,但遇到了问题。我认为 .values 是问题所在,但我如何将其编码为 Theano 对象?

以下是我的数据源

这是有效的 PyMC2 代码:data_file = DATA_DIR + 'results_2014.csv'

我尝试移植到 PyMC3 :) 我包括了争论的代码。我定义了自己的数据目录等。

我得到一个错误,比如 values 不是 Theano 对象。我认为这是上面的 .values 部分。但我对如何将其转换为 Theano 张量感到困惑。张量让我感到困惑:)

为了清楚起见,错误是因为我误解了 PyMC3 语法中的某些内容。

0 投票
1 回答
83 浏览

theano - 是否可以在 PyMC3 中将 NUTS 与涉及参数特征分解的模型一起使用?

我有一个模型,其中可能性涉及计算矩阵中所有项的总和

P = U exp(tD) U^-1

在哪里

UDU^-1 = Q

Q 是我的参数矩阵。如果我想在 PyMC3 中使用 NUTS,NUTS 必须能够计算 P 中所有元素相对于 Q 中每个元素的导数。这是否可以使用符号微分器在 PyMC3 使用的 Theano 中?

0 投票
0 回答
986 浏览

pymc - PyMC3:如何使用观察数据更好地为 Theano 编写自定义分布?

我正在尝试在 pymc3 中实现一个相当简单的模型。要点是我有一些数据是从一系列随机选择中生成的。选择可以被认为是多项式,并且该过程选择选择作为先前选择的函数。

类别的总体概率使用 Dirichlet 先验建模。

似然函数必须针对手头的数据进行定制。数据是过程输出的 0 和 1 列表。我已经在 pymc2 中成功制作了模型,你可以在这篇博文中找到它。这是一个为这个问题生成测试数据的python函数:

当我学习/迁移到 pymc3 时,我正在尝试将观察到的数据输入到自定义似然函数中,并且在此过程中遇到了几个问题。这可能是因为这是我第一次使用 Theano,但我希望有人能给一些建议。

这是我的代码(使用上面的 make 函数):

我可以在大约一分钟左右找到 MAP(我的机器是 Windows 7,i7-4790 @3.6GHz)。MAP 与输入概率向量匹配良好,这至少意味着模型正确链接。

但是,当我尝试进行跟踪时,我的内存使用量猛增(高达几个 gig),实际上我还没有足够的耐心让模型完成编译。在跟踪之前,我已经等了 10 分钟 + NUTS 或 HMC 编译。但是,大都会步进工作得很好(并且比 pymc2 快得多)。

我是不是太希望 Theano 能够很好地处理非 theano 数据的 for 循环?有没有更好的方法来编写这段代码,以便 Theano 可以很好地使用它,或者我是否因为我的数据是自定义 python 类型而无法使用数组/矩阵操作进行分析而受到限制?

提前感谢您的建议和反馈。请让我知道可能需要澄清的内容!

0 投票
1 回答
872 浏览

neural-network - pymc3 的 NUTS 在我的贝叶斯神经网络分层模型中表现不佳?

我有一个分层模型,用于学习只有单个隐藏层的贝叶斯网络。网络参数分为 4 组输入到隐藏和隐藏到输出的权重和偏差。在每个参数组上定义一个高斯先验。超参数,这些先验的标准差,具有参数 alpha=1 的 Gamma 分布。和β= 1/60。输出噪声也是高斯噪声;Gamma(alpha=1., beta=200) 超过其标准偏差。NUTS 阶跃函数用于采样,其缩放参数设置为仅参数(不包括超参数)的最大后验。数据是一维的,来自 [0,1],其中使用简单的一维正弦函数提供观察结果。我希望这组采样网络能够对数据进行插值,并在与这些观察点的距离增加时开始不同意/发散,从而创建类似于高斯过程模型产生的形状。令人惊讶的是,结果与我的预期不同。看起来一些烦人的约束阻止了采样器做得很好并从整个后部采样: 在此处输入图像描述 (红线是 MAP 网络产生的,黑线是底层函数,3 个小红点是数据) pymc3 伙计们,你们对这个问题的原因有什么解释吗?我该如何解决?

更新:我按以下方式更改代码:首先,分配模型参数的test_values似乎很麻烦!但是没有 'test_value' 的值, find_MAP 不会收敛到正确的点,所以我删除了 test_value 分配并为 find_MAP() 提供了一个起点(initpoint)。其次,为了让一切更简单,我用 Half_Normals 替换了 Gamma 超先验。Step-method 也被 Metropolis 取代。知道示例函数如下所示: def sample(nHiddenUnts,X,Y): nFeatures = X.shape 1 with pm.Model() 作为模型:

绘制 15000 个样本后的结果是这样的:在此处输入图像描述 只有当我在 initpoint(find_MAP 的起点)中将 NoiseSd 超参数和“noisSd”的标准差增加到 0.1 时,结果才会变成这样:在此处输入图像描述 但是这么高噪音水平是不可取的。

0 投票
1 回答
662 浏览

python-2.7 - 在 pymc3 之外使用 pymc3 可能性/后验:如何?

出于比较目的,我想利用 PyMC3 之外的后验密度函数。

对于我的研究项目,我想了解 PyMC3 与我自己的定制代码相比的性能如何。因此,我需要将其与我们自己的内部采样器和似然函数进行比较。

我想我知道如何调用内部PyMC3后置,但是感觉很尴尬,我想知道是否有更好的方法。现在我正在手动转换变量,而我应该能够向 pymc 传递参数字典并获得后验密度。这可能以直接的方式吗?

非常感谢!

演示代码:

0 投票
1 回答
286 浏览

pymc - 从 PyMC3 中用户提供的目标密度采样

是否可以以简单的方式从 PyMC3 中用户提供的目标度量中进行采样?即我希望能够提供黑盒功能logposterior(theta)grad_logposterior(theta)并从中采样,而不是在 PyMC3s 建模语言中指定模型。

0 投票
1 回答
2201 浏览

python - PyMC3 对创建潜在狄利克雷分配模型有用吗?

过去几周我一直在尝试学习 PyMC,我的主要任务是使用它来构建 LDA 主题模型。我最初使用 PyMC2.3 https://stats.stackexchange.com/questions/104771/latent-dirichlet-allocation-in-pymc尝试了这个示例,但是对于一个非常简单的模型,它在一夜之间运行,甚至从未进入采样步骤. 因此,我已切换到 PyMC3。

由于随机变量是分类的,是否存在任何基本限制?有没有人用 PyMC3 成功创建过 LDA 模型?我在Unable to create lambda function in hierarchy pymc3 model 中找到了部分实现,但如果没有 Container,我无法让它工作,而且我认为原作者也无法做到。有谁知道我可以研究的任何资源以弄清楚如何构建它?

0 投票
3 回答
1226 浏览

lda - PyMC3如何实现潜在狄利克雷分配?

我正在尝试使用 PyMC3 实现 lda。

但是,在定义模型的最后一部分时,根据主题对单词进行采样,我不断收到错误消息:TypeError: list indices must be integers, not TensorVariable

如何解决问题?

代码如下:

任何帮助将非常感激!

0 投票
1 回答
592 浏览

python - 使用 pymc3 和信念的线性回归

我试图掌握贝叶斯统计数据pymc3

我运行此代码进行简单的线性回归

我不明白 trace 代表什么

如果我对贝叶斯理论足够了解,应该有一个belief函数可以得到alphabetasigma输出它们组合的概率。

我怎样才能从变量中得到这个belief结构?trace