编译器与跟踪器

lower(expr: Funsor) Funsor[source]

降低一个 funsor 表达式: - 消除绑定变量 - 将 Contraction 转换为 Binary

参数

expr (Funsor) – 任意 funsor 表达式。

返回值

一个降低后的 funsor 表达式。

返回值类型

Funsor

trace_function(fn, kwargs: dict, *, allow_constants=False)[source]

将函数跟踪到一个在后端值上运行的 OpProgram

示例

# Create a function involving ops.
def fn(a, b, x):
    return ops.add(ops.matmul(a, x), b)

# Evaluate via Funsor substitution.
data = dict(a=randn(3, 3), b=randn(3), x=randn(3))
expected = fn(**data)

# Alternatively evaluate via a program.
program = trace_function(expr, data)
actual = program(**data)
assert (acutal == expected).all()
参数

expr (Funsor) – 要评估的 funsor 表达式。

返回值

一个操作程序(op program)。

返回值类型

OpProgram

class OpProgram(constants, inputs, operations)[source]

基类:object

用于评估符号化 funsor 表达式的后端程序。

程序仅通过 funsor.ops 和操作注册依赖于 funsor 库;程序评估不涉及 funsor 的解释或重写。程序可以被序列化和反序列化(pickled and unpickled)。

参数
  • constants (iterable) – 内置常量列表(叶节点)。

  • inputs (iterable) – 程序输入(叶节点)的字符串名称列表。

  • operations (iterable) – 定义程序有向无环图(DAG)中非叶节点的程序操作列表。每个操作是一个元组 (op, arg_ids),其中 op 是一个 funsor 操作,arg_ids 是值的索引元组,从零开始计数:常量、输入和操作输出。

as_code(name='program')[source]

返回定义与此程序等效的直线式函数的 Python 代码文本。

参数

name (str) – 函数的可选名称,默认为“program”。

返回值

一个定义与此程序等效的 python 函数的字符串。

返回值类型

str