述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可以通过许多界面使用:

设计

看见设计文档.

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

  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 = obs
    elif 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 trace
    trace_log_prob += dist(value)

    return value

# ...later during inference...
loss = -trace_log_prob.reduce(logaddexp)  # collapses delayed variables

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

相关项目

引用

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

复制代码
@article{obermeyer2019functional,
  author = {Obermeyer, Fritz and Bingham, Eli and Jankowiak, Martin and
            Phan, Du and Chen, Jonathan P},
  title = {{Functional Tensors for Probabilistic Programming}},
  journal = {arXiv preprint arXiv:1910.10775},
  year = {2019}
}
相关推荐
昂好的day17 小时前
固高运动控制卡实战(下):点位运动与直线/圆弧插补 API 详解
开发语言·c#
充值内卷17 小时前
[特殊字符] 自己动手做一个类 tldraw 的桌面白板:StepDraw 开源啦(C++ + WebView2 + Canvas)
开发语言·c++
raindayinrain17 小时前
c++对象模型--内存布局,多态,运行时类型识别
开发语言·c++
aa小小17 小时前
从0到1:Windows 本地部署 Qwen3 + Flask 接口(RAG 学习路线第1周踩坑实录)
python
镜子AI17 小时前
镜子AI工程实践:用熵权法 + TOPSIS 做多方案选型排序(零依赖 Python)
开发语言·人工智能·python
估值探索者17 小时前
【Python量化组合管理实战 02】钱该怎么分?等权、波动率倒数与动态评分三种配权实测
java·开发语言·python·接口·股票数据api接口
西索斯coding18 小时前
Kimi K2.6 与 Qwen3.7 Max:跨文件修复评测与成本核算方法(2026)
开发语言·python·ai
梯度下降者18 小时前
桌面应用自动化python——uiautomation API 如何找元素
python·自动化·窗口操作·uiautomation·控件识别
wuyk55518 小时前
PyQt6-第10讲-PDF工具箱
python·microsoft·pdf·pyqt
从小白到软工18 小时前
5-2 从查表到控件:造按钮
c语言·开发语言·数据结构·经验分享·ai编程