问题标签 [pyro.ai]
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.
pymc - Pyro vs Pymc?这些概率编程框架之间有什么区别?
我使用了基于 Clojure 的“Anglican”,我认为这对我不利。糟糕的文档和太小的社区无法找到帮助。此外,我仍然无法熟悉基于 Scheme 的语言。所以我想把语言改成基于 Python 的东西。
也许 Pyro 或 PyMC 可能是这种情况,但我完全不知道这两者。
- 这两个框架有什么区别?
- 它们可以用于相同的问题吗?
- 有没有比较突出的例子?
apache-spark - Spark 上的 PyMC3/Edward/Pyro?
有没有人尝试过在 Spark 中使用 python 概率编程库?或者有没有人知道这需要什么?
我觉得 Edward 会是最简单的,因为已经有连接 Tensorflow 和 Spark 的工具,但仍然不清楚需要进行哪些低级代码更改。
我知道分布式 MCMC 仍然是一个积极研究的领域(参见MC-Stan on Spark?),那么这是否合理实施?谢谢!
probability - 从 Pyro 中的联合分布中抽样
我了解如何从多维分类或多元正态抽样(每列内具有相关性)。例如,对于多变量分类,可以按如下方式完成:
我的问题是,如果有多个分布,我们怎么能做同样的事情?例如,以下不是我想要的obs1
,obs2
并且obs3
是相互独立的。
我想做类似的事情
pytorch - Pyro 更改 AutodiagonalNormal 设置
我使用 pyro-ppl 3.0 进行概率编程。当我阅读有关贝叶斯回归的教程时。我使用 AutoGuide 和 pyro.random_module 将正常的前馈网络传输到贝叶斯网络。
结果显示如下: auto_loc tensor([-2.1585, -0.9799, -0.0378, -0.5000, -1.0241, 2.6091, -1.3760, 1.6920, 0.2553, 4.5768], requires_grad=True) auto_scale tensor([0.1432, 0.1017, 0.0368, 0.7588, 0.4160, 0.0624, 0.6657, 0.0431, 0.2972, 0.0901], grad_fn=)
潜在变量的数量自动设置为 10。我想更改数字。如教程中所述,我添加
在上面提到的#============= 之间。
但结果还是一样。数字不变。那么,如何设置 AutoDiagnalNormal 函数来更改潜在变量的数量
pytorch - Pyro:使用 SVI 的简单逆图形示例不起作用
我是 pyro 的新手,并试图实现一个简单的逆图形问题,涉及估计在黑白 32x32 图像上渲染的三角形点的坐标。
所以我定义了一个生成模型,它生成 3 个均匀随机的点,将它们渲染成图像并观察结果。然后我使用SVI
自动引导 ( AutoMultivariateNormal
) 来尝试估计固定三角形图像的点。
SVI
似乎运行良好并且ELBO
损失减少,但是当尝试从后验采样时,我得到的只是均匀随机的点,没有学习的迹象。
我在 Jupyter 笔记本中的代码与结果:
我在这里想念什么?
python - 卡尔曼滤波器随着时间的推移改变已知方差?
我有一个简单的卡尔曼模型:
现在我知道 e_1_t 和 e_2_t 随时间的变化 - 它们不是恒定的。有没有我可以用来估计这个模型的 python 包?
参数 phi 未知。如果模型可以估计是否会很棒。如果不是,也可以提供它,因为存在近似估计。
非常感谢任何提示。
PS:我还检查了图书馆pykalman。https://pykalman.github.io/#mathematical-formulation。似乎这里假设方差随时间保持不变。
python - Pyro - 似然函数和采样维度
我正在学习 Pyro,尽管有丰富而详细的文档,但我发现尺寸令人困惑
这是我的模型的草图:
我在这里设置了浓度 ( alpha
, beta
) 的先验。
我的理解是,对数据pyro.sample
进行observations
拟合 - 我认为它可以最大限度地提高给定数据的浓度的可能性。
我得到的输出:
这size()
我得到的值看起来不错。的平均值simulated_daily_demand
大约为 0.5,平均值model()
为 ~15,即 ~30*0.5。我不知道张量的大小。我本来希望它是.size()
torch.Size([1])
.
我也注意到了这个警告。我想 Pyro 是在抱怨,因为它希望我在能够从“每日需求”中采样之前编写一个指南并对参数(例如 SVI)进行一些推断。我还想知道在推断出潜在浓度之后如何运行模型。代码的小草图会很有帮助,谢谢!
事后看来,我想我可能误解了板块的使用。现在,如果我假设观察结果是独立的,我需要设置一个盘子。就像是:
它返回一个嵌套的大小列表(NUM_RUNS,SIMULATION_DAYS),其中包含大小为 DATA_SIZE 的张量。元素 ( daily_demand
) 在模拟天数中是相同的。可能越来越近了,但没有雪茄。
像这样的事情似乎是有道理的并且似乎收敛:SVI 吐出近似正确的参数值。现在,问题仍然存在 - 我如何使用推断的alpha
and运行模拟beta
?
python-3.x - 使用 pyro 的深度生成模型中的小批量概念
我是概率编程和 ML 的新手。我正在关注 pyro 网站上给出的深度马尔可夫模型的代码。该代码的 github 页面的链接是:
https://github.com/pyro-ppl/pyro/blob/dev/examples/dmm/dmm.py
我了解大部分代码。我不明白的部分是他们从第 175 行开始使用的小批量想法。
问题 1: 有人可以解释他们在使用 mini-batch 时在做什么吗?
他们在 pyro 文档中说
mini_batch 是一个三维张量,第一个维度是批次维度,第二个维度是时间维度,最后一个维度是特征(在我们的例子中是 88 维)
问题2: 这里的时间维度是什么意思?
因为我想在我的数据集上使用这个代码,这是一个顺序数据。我对我的数据进行了一次热编码,使其维度为(10000,500,20),其中 10000 是示例/序列的数量,500 是每个序列的长度,20 是特征的数量。
问题 3: 我如何在这里使用我的一个热编码数据作为小批量?
如果这是一个非常基本的问题,我很抱歉,但我们将不胜感激。
该文档的链接是:
probabilistic-programming - Pyro Paramstore 的不同访问方法给出不同的结果
我正在关注预测中的 Pyro 入门教程,并在训练模型后尝试访问学习的参数,我对其中一些使用不同的访问方法得到了不同的结果(而对另一些得到相同的结果)。
这是教程中精简的可重现代码:
到目前为止,一切都很好; 现在,我想检查存储在Paramstore
. 似乎有不止一种方法可以做到这一点;使用get_all_param_names()
方法:
我明白了
但是使用named_parameters()
方法:
为 location ( locs
) 参数提供相同的值,但为所有参数提供不同scales
的值:
这怎么可能?根据文档,Paramstore
是一个简单的键值存储;里面只有这六个键:
因此,不可能一种方法访问一组项目而另一种访问不同的项目。
我在这里错过了什么吗?
pytorch - NumPyro vs Pyro:为什么前者快 100 倍,我什么时候应该使用后者?
来自 Pytorch-Pyro 的网站:
我们很高兴地宣布发布 NumPyro,这是一个由 NumPy 支持的 Pyro,使用 JAX 进行自动微分和 JIT 编译,HMC 和 NUTS 的加速超过 100 倍!
我的问题:
- NumPyro(超过 Pyro)的性能增益(有时是 340 倍或 2 倍)究竟来自哪里?
- 更重要的是,为什么(更确切地说,在哪里)我会继续使用 Pyro?
额外的:
- 与 Tensorflow Probability 相比,我应该如何查看 NumPyro 的性能和功能,以决定在哪里使用哪个?