cupy.einsum#

cupy.einsum(subscripts, *operands, dtype=None, optimize=False)[source]#

在操作数上评估爱因斯坦求和约定。使用爱因斯坦求和约定,许多常见的多维数组操作可以用简单的方式表示。此函数提供了一种计算此类求和的方法。

注意

  • 返回数组的内存连续性并非总是与 numpy.einsum() 的兼容。

  • outordercasting 选项不受支持。

  • 如果 CUPY_ACCELERATORS 包含 cutensornet,则 einsum 计算将尽可能由 cuTensorNet 后端执行。

    • optimize 选项的支持是有限的(目前仅支持 False、‘cutensornet’ 或自定义的成对收缩路径,并且忽略最大中间尺寸)。如果您需要对路径优化进行更精细的控制,请考虑使用 cuquantum.contract() 代替 cupy.einsum()

    • 需要 cuQuantum Python (v22.03+)。

  • 如果 CUPY_ACCELERATORS 包含 cutensor,则 einsum 将尽可能通过 cuTENSOR 后端进行加速。

参数:
  • subscripts (str) – 指定求和的下标。

  • operands (sequence of arrays) – 用于操作的数组。

  • dtype – 如果提供,强制计算使用指定的数据类型。默认值为 None。

  • optimize – 有效选项包括 {False, True, ‘greedy’, ‘optimal’}。控制是否进行中间优化。如果为 False,则不进行优化;如果为 True,则默认为 'greedy' 算法。也接受来自 numpy.einsum_path() 的显式收缩列表。默认为 False。如果提供一对值,则第二个参数假定为创建的最大中间尺寸。

返回值:

基于爱因斯坦求和约定的计算结果。

返回类型:

cupy.ndarray

另请参阅

numpy.einsum()