问题标签 [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.
theano - 无法在分层 pymc3 模型中创建 lambda 函数
我正在尝试使用 PyMC 3 创建下面显示的模型,但无法弄清楚如何使用 lambda 函数将概率正确映射到观察到的数据。
我得到的错误是
在我试图建立的模型中,元素z
指示哪个元素phi
给出了相应观察值的概率data
(放置在 RV 中w
)。换句话说,
我猜我需要用 Theano 表达式定义概率或使用 Theano as_op
,但我不知道如何为这个模型完成它。
python - 使用`LKJCorr`先验修改PyMC3中的BPMF:使用`NUTS`的PositiveDefiniteError
我之前在pymc3
. 请参阅我之前的问题以获取参考、数据源和问题设置。根据@twiecki 对该问题的回答,我已经使用LKJCorr
相关矩阵的先验和标准差的统一先验实现了模型的变体。在原始模型中,协方差矩阵是从 Wishart 分布中提取的,但由于当前的限制pymc3
,无法正确地从 Wishart 分布中采样。这个对一个松散相关问题的回答为LKJCorr
先验的选择提供了简洁的解释。新模型如下。
这种重新实现的目标是生成一个可以使用NUTS
采样器进行估计的模型。不幸的是,我在最后一行仍然遇到同样的错误:
我已将 PMF、BPMF 和此修改后的 BPMF 的所有代码都放在此 gist中,以便更轻松地复制错误。您需要做的就是下载数据(也在要点中引用)。
python - 如何处理 pymc3 确定性变量的形状
我一直致力于在 pymc3 中建立和运行一些心理物理行为数据的分层模型。总的来说,我对事情印象深刻,但是在尝试跟上 Theano 和 pymc3 的速度后,我有一个大部分工作的模型,但是有几个问题。
该代码旨在将 Weibull 的参数化版本适合七组数据。每个试验都被建模为二元伯努利结果,而阈值(thact 的输出作为 y 值,用于拟合高度、宽度和高度的高斯函数(典型高斯上的 a、c 和 d)。
使用参数化 Weibull 似乎工作得很好,现在 Weibull 的斜率是分层的,而阈值分别适合每个数据块。但是 - 我从 k 和 y_est 得到的输出让我相信它们可能不是正确的大小,并且与概率分布不同,它看起来不像我可以指定形状(除非有一种 theano 方法可以做到这一点我还没有找到——尽管从我读到的在 theano 中指定形状很棘手)。
最终,我想使用 y_est 来估计高斯高度或宽度,但是现在的输出导致了令人难以置信的混乱,我认为这源于 y_est 和 k 中的大小问题。任何帮助都会很棒——下面的代码应该模拟一些数据,然后是模型。该模型可以很好地拟合每个单独的阈值并获得斜率,但在处理其余部分时会崩溃。
感谢您观看 - 到目前为止,我对 pymc3 印象深刻!
编辑:好的,所以 y_est.tag.test_value.shape 输出的形状看起来像这样
我认为这是我遇到麻烦的地方,尽管它可能只是我的构造不佳。k 具有正确的形状(每个 unique_xval 一个 k 值)。y_est 输出一整套数据 (101x7),而不是每个难度级别的单个估计值(每个 unique_xval 一个 y_est)。有没有办法指定 y_est 获取 df_y_vals 的特定子集来控制它?
neural-network - 使用 Pymc3 的神经网络
我正在尝试使用 pymc3 从后部采样,一组单隐藏层神经网络,以便我可以将模型转换为分层模型,与 Radford M.Neal 的论文中相同。我的第一个模型如下所示:
在第二个模型中添加了超先验,即噪声精度、输入到隐藏和隐藏到输出的权重和偏差(例如 bihTau = 输入精度->隐藏偏差)。选择超先验的参数,以便它们可以是广泛的并且也可以进行对数转换。
其中 bho,who,bin 和 win 是隐藏到输出和输入到隐藏层的偏差和权重。
为了检查我的模型,从以下形式的一维玩具函数中抽取了 3 到 5 个样本点 [0,1)
第一个模型(恒定超参数)工作正常!但是当我从超参数+参数的后部进行采样时,例如将第一个(上面)列表中的先验替换为第二个列表中的先验,无论样本数量如何,find_MAP() 和采样方法都不会收敛,结果 ANNs 获胜'不插入样本点。然后我尝试将超先验一一集成到我的模型中。唯一可以毫无问题地集成的是噪声精度。如果我包括其他任何一个,那么采样器将不会收敛到后验。我尝试对所有模型变量使用一个“步进函数”,并在参数和超参数上结合两个单独的步进方法。在所有情况下,并且样本数量不同,问题仍然存在。
python - PyMC3 和 Theano - 工作的 Theano 代码在 pymc3 导入后停止工作
一些可以完美运行的简单theano代码,当我导入pymc3时停止工作
这里有一些片段以重现错误:
对于前面的每个片段,我都会收到以下错误:
有任何想法吗 ?提前致谢
probability - PyMC:隐马尔可夫模型
PyMC 在其当前可用版本中对连续发射 HMM 建模的适用性如何?
我有兴趣拥有一个可以轻松探索模型变化的框架,而无需更新 E 步和 M 步,并为我对模型所做的每次更改进行动态编程递归。
更具体的问题是:
- 在 PyMC 中对 HMM 进行建模时,我能否回答人们想要解决的“典型”任务——即,除了参数估计之外,还可以推断出最可能的序列(通常使用 Viterbi 算法),或者解决平滑问题?
- 与期望最大化的实现相比,我预计基于采样的方法会更慢。如果这让我在模型构建方面有更大的灵活性,那很好。我会想象使用 PyMC 来制作原型模型。不过,我想知道,我是否可以期望 PyMC 处理具有 > 10k 观察值的模型的推理以在任何合理的时间内完成。
- 您是否建议从 PyMC2 或 PyMC3 开始进行模型构建。我知道推理引擎在版本之间发生了变化,所以我特别想知道哪种类型的采样器可能更适合。
如果您认为 PyMC 对于我的用例来说不是一个好的选择,那肯定也有帮助。
bayesian - pymc3 的优化错误
我正在尝试使用 pymc3 创建一个相对简单的分层贝叶斯模型。但是,我不断收到错误消息。代码是:
但是我一直收到关于 find_MAP() 函数的错误。谁能向我解释这个错误?
python - 在 PyMC3 中使用 Theano 共享变量
我的可观察数据非常大,它的似然函数非常复杂,所以我将所有可观察数据加载到 GPU 中,然后使用 theano 函数根据我试图估计的参数来获得它们的似然性。
我不知道这是否是正确的方法。我收到错误消息:
----------//----------- 我试着用John Salvatier给出的例子做一个简单的例子:PS这个模型没有任何意义..我我只是想弄清楚 Theano 如何与 pymc3 一起工作
我得到这个错误:
theano - 是否有一种解决方法可以不将观察到的数据融合到 Pymc3 中的模型定义中?
问题定义:考虑类似于以下模型的“Simpletest”模型(来自 pymc3 示例):
我想更改它,以便我将拥有一个固定的模型结构,但运行采样数次迭代,每次都将一个新数据点添加到前一个(观察到的)数据集。由于观察到的数据以某种方式嵌入到模型定义中,我知道这样做的唯一方法是将整个模型定义放在一个循环中:
如果模型很大,这可能会产生一些不必要的开销。为了避免重复定义相同模型的开销,我想知道是否有解决方案可以通过类似于以下想法的方式实现相同的结果:
甚至更好:
for-loop - 提高 Theano for 循环的性能
我有以下代码可以完成我想做的事情。但我想知道是否有更好的方法来避免 For 循环。性能在这里很重要,因为我多次调用这些操作。
我认为可以通过使用“扫描”和“功能”来改进它,但我对 Theano 的经验不够,所以对我来说很明显。我确实尝试将所有内容都放在 theano.function 中,但没有奏效。
顺便说一句,这是约束概率矩阵分解的实现(Salakhutdinov 和 Mnih 的论文中的方程 7)。我是用 pymc3 做的,所以“W”和“Y”真的是随机的 pymc3 张量(我相信它们只是 theano 张量)。
谢谢!