cupy.einsum#
- cupy.einsum(subscripts, *operands, dtype=None, optimize=False)[source]#
在操作数上评估爱因斯坦求和约定。使用爱因斯坦求和约定,许多常见的多维数组操作可以用简单的方式表示。此函数提供了一种计算此类求和的方法。
注意
返回数组的内存连续性并非总是与
numpy.einsum()
的兼容。out
、order
和casting
选项不受支持。如果
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。如果提供一对值,则第二个参数假定为创建的最大中间尺寸。
- 返回值:
基于爱因斯坦求和约定的计算结果。
- 返回类型:
另请参阅