问题标签 [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.
python - 在 PyMC3 中设置确定性分布
我是 PyMC3 的新手 这里有一些 PyMC2 - 我是否需要做一些特定的事情,比如在 Theano 中编译才能将其转换为 PyMC3 代码?
我收到一个错误,例如
python - 将 PyMC2 代码移植到 PyMC3 - 体育分析的层次模型
我尝试了以下代码,但遇到了问题。我认为 .values 是问题所在,但我如何将其编码为 Theano 对象?
以下是我的数据源
这是有效的 PyMC2 代码:data_file = DATA_DIR + 'results_2014.csv'
我尝试移植到 PyMC3 :) 我包括了争论的代码。我定义了自己的数据目录等。
我得到一个错误,比如 values 不是 Theano 对象。我认为这是上面的 .values 部分。但我对如何将其转换为 Theano 张量感到困惑。张量让我感到困惑:)
为了清楚起见,错误是因为我误解了 PyMC3 语法中的某些内容。
theano - 是否可以在 PyMC3 中将 NUTS 与涉及参数特征分解的模型一起使用?
我有一个模型,其中可能性涉及计算矩阵中所有项的总和
P = U exp(tD) U^-1
在哪里
UDU^-1 = Q
Q 是我的参数矩阵。如果我想在 PyMC3 中使用 NUTS,NUTS 必须能够计算 P 中所有元素相对于 Q 中每个元素的导数。这是否可以使用符号微分器在 PyMC3 使用的 Theano 中?
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 类型而无法使用数组/矩阵操作进行分析而受到限制?
提前感谢您的建议和反馈。请让我知道可能需要澄清的内容!
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 时,结果才会变成这样: 但是这么高噪音水平是不可取的。
python-2.7 - 在 pymc3 之外使用 pymc3 可能性/后验:如何?
出于比较目的,我想利用 PyMC3 之外的后验密度函数。
对于我的研究项目,我想了解 PyMC3 与我自己的定制代码相比的性能如何。因此,我需要将其与我们自己的内部采样器和似然函数进行比较。
我想我知道如何调用内部PyMC3后置,但是感觉很尴尬,我想知道是否有更好的方法。现在我正在手动转换变量,而我应该能够向 pymc 传递参数字典并获得后验密度。这可能以直接的方式吗?
非常感谢!
演示代码:
pymc - 从 PyMC3 中用户提供的目标密度采样
是否可以以简单的方式从 PyMC3 中用户提供的目标度量中进行采样?即我希望能够提供黑盒功能logposterior(theta)
,grad_logposterior(theta)
并从中采样,而不是在 PyMC3s 建模语言中指定模型。
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,我无法让它工作,而且我认为原作者也无法做到。有谁知道我可以研究的任何资源以弄清楚如何构建它?
lda - PyMC3如何实现潜在狄利克雷分配?
我正在尝试使用 PyMC3 实现 lda。
但是,在定义模型的最后一部分时,根据主题对单词进行采样,我不断收到错误消息:TypeError: list indices must be integers, not TensorVariable
如何解决问题?
代码如下:
任何帮助将非常感激!
python - 使用 pymc3 和信念的线性回归
我试图掌握贝叶斯统计数据pymc3
我运行此代码进行简单的线性回归
我不明白 trace 代表什么
如果我对贝叶斯理论足够了解,应该有一个belief
函数可以得到alpha
,beta
并sigma
输出它们组合的概率。
我怎样才能从变量中得到这个belief
结构?trace