qml.math

该包包含用于框架无关的张量和数组操作的统一函数。根据输入的类似张量的对象,调用会分派到相应的数组操作框架,从而允许保持端到端的微分。

警告

这些函数是实验性的,仅支持一部分常见功能。此外,这些函数的名称和行为可能与常见框架中的类似函数不同;请参考函数文档字符串以获取更多细节。

当前支持以下框架:

  • NumPy

  • 自动微分

  • 张量流

  • 深度学习框架

  • JAX

函数

add(*args[, like])

逐元素添加参数。

allclose(a, b[, rtol, atol])

如果两个数组在容差范围内逐元素相等,则返回 True。

allequal(tensor1, tensor2, **kwargs)

如果两个张量在给定轴上逐元素相等,则返回True。

array(*args[, like])

创建目标框架的数组或张量对象。

block_diag(值[, 类似])

将一系列 2D 张量组合成一个块对角张量。

cast(张量, 数据类型)

将给定的张量转换为新类型。

cast_like(tensor1, tensor2)

将一个张量转换为与另一个相同的数据类型。

concatenate(值[, 轴, 类似])

沿指定轴连接一系列张量。

convert_like(tensor1, tensor2)

将一个张量转换为与另一个相同的类型。

cov_matrix(prob, obs[, wires, diag_approx])

计算一组可交换观测量的协方差矩阵,给定系统在共享特征基中的联合概率分布。

detach(张量[, 类似])

从张量中分离其迹,并仅返回其数值。

diag(值[, k, like])

从一组标量构造对角张量。

dm_from_state_vector(状态[, 检查状态, ...])

便捷函数,用于从状态向量计算(完整)密度矩阵。

dot(tensor1, tensor2[, like])

返回两个张量的矩阵或点积。

einsum(indices, *operands[, like, optimize])

对操作数评估爱因斯坦求和约定。

expand_matrix(mat, wires[, wire_order, ...])

根据全局导线顺序,对由一组导线标签定义的子空间上作用的矩阵进行重新表达。

expand_vector(向量, 原始_wires, ...)

将向量扩展到更多的线。

expectation_value(operator_matrix, state_vector)

计算一个算符 respecto 一个纯态的期望值。

eye(*args[, like])

创建目标框架的单位数组或张量对象。

fidelity(state0, state1[, check_state, c_dtype])

计算两个状态的保真度(以密度矩阵的形式给出),作用于相同大小的量子系统。

fidelity_statevector(state0, state1[, ...])

计算两个状态的保真度(以状态向量的形式给出),作用于相同大小的量子系统上。

frobenius_inner_product(A, B[, normalize, like])

两个矩阵之间的Frobenius内积。

get_dtype_name(x)

一种与接口无关的获取数据类型名称的方法。

get_interface(*值)

根据给定的张量类型对象或张量类型对象序列,确定正确的框架以进行分发。

get_canonical_interface_name(user_input)

帮助函数以获取标准接口名称。

get_deep_interface(值)

给定一个深层数据结构,底部具有特定于接口的标量,返回它们的接口名称。

get_trainable_indices(值[, 类似])

返回一个包含可训练索引的值序列的集合。

grad(f[, argnums])

以类似于jax的方式计算任何接口的梯度。

in_backprop(张量[, 接口])

如果张量被认为处于反向传播环境中,则返回True,它适用于Autograd、TensorFlow和Jax。

is_abstract(张量[, 像])

如果张量被认为是抽象的,则返回True。

is_independent(函数, 接口, 参数[, ...])

测试一个函数是否独立于其输入参数,包括数值和解析方法。

iscomplex(张量[, 类似])

如果张量具有非零复数分量,则返回 True。

jacobian(f[, argnums])

以jax的方式计算任何接口的雅可比矩阵。

marginal_prob(概率, 轴)

根据作为张量表示的联合概率分布计算边际概率。

max_entropy(状态, 索引[, 基数, ...])

计算给定子系统的密度矩阵的最大熵。

min_entropy(state, indices[, base, ...])

计算密度矩阵的最小熵。

multi_dispatch([argnum, tensor_list])

用于调度接口处理的参数的装饰器。

mutual_info(state, indices0, indices1[, ...])

计算给定状态下两个子系统之间的互信息:

ones_like(张量[, 数据类型])

返回一个与输入张量形状和数据类型相同的全为一的张量。

partial_trace(矩阵, 索引[, c_dtype])

通过对提供的索引进行追踪计算约化密度矩阵。

purity(状态, 索引[, 检查状态, 数据类型])

计算密度矩阵的纯度。

reduce_dm(密度矩阵, 索引[, ...])

从用密度矩阵表示的状态计算密度矩阵。

reduce_statevector(state, indices[, ...])

从状态向量计算密度矩阵。

relative_entropy(state0, state1[, base, ...])

计算一个状态相对于另一个状态的量子相对熵。

requires_grad(张量[, 接口])

如果张量被认为是可训练的,则返回 True。

sqrt_matrix(density_matrix)

计算密度矩阵的平方根矩阵,其中 \(\rho = \sqrt{\rho} \times \sqrt{\rho}\)

scatter_element_add(tensor, index, value[, like])

在张量的各个索引上对多维值进行就地加法。

stack(值[, 轴, 类似])

沿指定轴堆叠一系列张量。

svd(张量[, 像])

计算每个接口中张量的奇异值分解。

tensordot(tensor1, tensor2[, axes, like])

返回两个张量的张量积。

trace_distance(state0, state1[, ...])

计算两个量子态之间的迹距离。

unwrap(值[, 最大深度])

将一系列对象解包为NumPy数组。

vn_entropy(状态, 索引[, 基数, ...])

计算给定子系统上的密度矩阵的冯·诺依曼熵。

vn_entanglement_entropy(state, indices0, ...)

计算给定状态下两个子系统之间的冯·诺依曼纠缠熵。

where(条件[, x, y])

根据布尔张量条件从x或y中返回选择的元素,或返回满足条件的条目的索引。

内容