cuquantum.cutensornet.experimental.ContractDecomposeAlgorithm

class cuquantum.cutensornet.experimental.ContractDecomposeAlgorithm(qr_method: Optional[Union[cuquantum.cutensornet.tensor.QRMethod, Literal[False, None], Dict]] = <factory>, svd_method: Optional[Union[cuquantum.cutensornet.tensor.SVDMethod, Literal[False, None], Dict]] = False)[源代码]

用于指定合同和分解操作算法的数据类。支持以下三种选择,如下所示

  1. svd_methodFalseqr_method 不为 False (默认) 时,这相当于直接收缩张量网络,然后进行 QR 分解。

  2. qr_methodFalsesvd_method 不为 False 时,这相当于直接收缩张量网络,然后进行奇异值分解。

  3. qr_methodsvd_method 都不为 False 时,这相当于使用奇异值分解的 QR 辅助收缩。QR 分解将首先应用于某些输入张量,以减小网络大小。生成的 R 张量以及剩余的张量形成一个新的网络,该网络将使用 SVD 进行收缩和分解。来自第一次 QR 操作的 Q 张量以及 SVD 输出随后将进行两次收缩,以产生最终输出。

注意

上面的第三种选择(QR 辅助收缩和 SVD)目前仅支持三元操作数,这些操作数彼此完全连接,并且每个张量上都有未收缩的模式。第三种选择的结果预计与第二种选择的结果等效,但通常计算成本更低。

qr_method

用于分解的 QR 方法。参见 QRMethod

类型

Optional[Union[cuquantum.cutensornet.tensor.QRMethod, Literal[False, None], Dict]]

svd_method

用于分解的 SVD 方法。参见 SVDMethod

类型

Optional[Union[cuquantum.cutensornet.tensor.SVDMethod, Literal[False, None], Dict]]