当前位置: 首页 > news >正文

述FunsorFunsor是一个类似张量的函数和分布库。概率规划的泛函张量获取系统描述 ppl,pyro的衍生项目,人工智能python编程 ,深度神经网络

项目描述

Funsor

Funsor是一个类似张量的函数和分布库。

看见概率规划的泛函张量获取系统描述。

安装

使用pip安装:

Funsor支持Python 3.7+。

pip install funsor

从源安装:

git clone git@github.com:pyro-ppl/funsor.git
cd funsor
git checkout master
pip install .

使用funsor

Funsor可以通过许多界面使用:

  • Funsors可以直接用于概率计算,在标准的训练循环中使用PyTorch优化器。从这些例子开始:离散_嗯, eeg_slds, 卡尔曼滤波器, pcfg, 传感器, slds,以及静脉气泡栓塞.
  • Funsors可以用来在Pyro中实现定制的推理算法,使用标准的定制elbo实现pyro.infer.SVI培训。参见这些例子:混合_嗯和bart预测.
  • funsor.pyro提供了一些兼容Pyro(和PyTorch)的分发职业,也使用了引擎盖下的funsors公用事业在funsors和发行版之间转换。
  • funsor.minipyro为Pyro概率编程语言提供了一个有限的备用后端,可以精确地执行一些ELBO计算。

设计

看见设计文档.

这个库的目标是概括放火狂者的延迟推理算法从离散变量到连续变量,并创造机器,使部分延迟采样兼容的普遍性。为了实现这一目标,该库选择了三种正交设计:

  1. 开放术语是对象。Funsors将张量接口一般化,以涵盖多变量的任意函数(“输入”),其中变量可以是整数、实数或实张量。函数求值/替换是基本操作,广义张量索引。这允许概率分布是第一类有趣的,并利用现有的张量机制,例如,我们可以将张量压缩推广到计算共轭概率模型中的解析积分。

  2. 支持非标准解读。Funsors支持用户定义的解释,包括,eager,lazy,混合eager+lazy,memoized(像opt_einsum的共享),以及近似解释,像积分运算的蒙特卡罗近似(例如.sum()在一个有趣的维度上)。

  3. 命名维度。换人是搞笑者最基本的操作。为了避免位置索引张量库中广播和高级索引的困难,所有的函数维都被命名。索引使用.__call__()方法,并且可以解释为替换(具有很好理解的语义)。Funsors被视为每维有一个代数自由变量的代数表达式。每个维度要么是协变的(一个输出),要么是逆变的(一个输入)。

使用funsor我们可以很容易地实现Pyro风格延迟采样,大致是:

trace_log_prob = 0.def pyro_sample(name, dist, obs=None):assert isinstance(dist, Funsor)if obs is not None:value = obselif lazy:# delayed sampling (like Pyro's parallel enumeration)value = funsor.Variable(name, dist.support)else:value = dist.sample('value')[0]['value']# save log_prob in tracetrace_log_prob += dist(value)return value# ...later during inference...
loss = -trace_log_prob.reduce(logaddexp)  # collapses delayed variables

看见funsor/minipyro.py完整的实现。

相关项目

  • Pyro的操作.打包, ops.einsum,以及运营合同
  • 桦树s延迟采样
  • 自动插入
  • dyna
  • PSI求解器
  • 哈卡鲁
  • 交响乐
  • 命名传感器

引用

如果您使用Funsor,请考虑引用:

@article{obermeyer2019functional,author = {Obermeyer, Fritz and Bingham, Eli and Jankowiak, Martin andPhan, Du and Chen, Jonathan P},title = {{Functional Tensors for Probabilistic Programming}},journal = {arXiv preprint arXiv:1910.10775},year = {2019}
}

http://www.mrgr.cn/news/12250.html

相关文章:

  • MyBatis之注解使用
  • 九、枚举和注解
  • npm install报错,解决记录:11个步骤诊断和解决问题
  • PowerShell | git log 中文乱码问题解决
  • Python实现t-分布随机邻域嵌入(t-SNE)降维算法
  • 使用Oracle的PL/SQL编写自定义函数来实现split
  • Java线程池
  • 阿里云创建的SpringBoot项目打包时找不到主清单属性
  • 《重生到现代之从零开始的C语言生活》—— 指针6
  • 华为数通方向HCIP-DataCom H12-821题库(更新单选真题:21-30)
  • JAVA基础面试题总结(十四)——JVM(下)
  • python可视化-折线图
  • 6.2K star!推荐一款开源混沌工程测试平台:Chaos Mesh
  • 命令模式的实际应用案例:从电梯控制系统到文本编辑器
  • 基于事件总线EventBus实现邮件推送功能
  • UniApp轻松实现图片放大查看功能
  • 用ChatGPT精确营销:如何让AI深度理解并推广你的产品
  • 软件测试学习笔记丨Chrome开发者模式
  • 实战OpenCV之图像的数学运算
  • 【Unity输入】Input Manager 和 Input System对比