cuquantum.cutensornet.tensor.SVDMethod

class cuquantum.cutensornet.tensor.SVDMethod(max_extent: Optional[int] = None, abs_cutoff: Optional[float] = 0.0, rel_cutoff: Optional[float] = 0.0, discarded_weight_cutoff: Optional[float] = 0.0, partition: Optional[str] = None, normalization: Optional[str] = None, algorithm: Optional[str] = 'gesvd', gesvdj_tol: Optional[float] = 0, gesvdj_max_sweeps: Optional[int] = 0, gesvdr_oversampling: Optional[int] = 0, gesvdr_niters: Optional[int] = 0)[源代码]

一个数据类,用于为 cuquantum.cutensornet.tensor.decompose() 函数提供 SVD 选项。

max_extent

在输出操作数中保留不超过最大 max_extent 个最大的奇异值(其余部分将被截断)。

类型

Optional[int]

abs_cutoff

低于此值的奇异值将在输出操作数中被修剪。

类型

Optional[float]

rel_cutoff

低于此值与最大奇异值的乘积的奇异值将在输出操作数中被修剪。

类型

Optional[float]

discarded_weight_cutoff

丢弃权重(平方和除以总平方和)低于此值的奇异值将被修剪。

类型

Optional[float]

partition

默认情况下,奇异值 S 将被显式返回 (partition=None)。或者,奇异值可以被分解到输出张量 U (partition="U")、输出张量 V (partition="V") 或均匀地分解到输出张量 U 和输出张量 V (partition="UV")。当选择这些分区方案中的任何一种时,来自 cuquantum.cutensornet.tensor.decompose()cuquantum.cutensornet.experimental.contract_decompose() 返回的 S 操作数将为 None

类型

Optional[str]

normalization

奇异值的指定范数(截断后)将被归一化为 1。当前支持 None"L1""L2""LInf"

类型

Optional[str]

algorithm

要使用的 SVD 算法。当前支持 "gesvd" (默认)、"gesvdj""gesvdp""gesvdr"

类型

Optional[str]

gesvdj_tol

algorithm 设置为 "gesvdj" 时要使用的容差。默认值 0 表示机器精度。

类型

Optional[float]

gesvdj_max_sweeps

algorithm 设置为 "gesvdj" 时,最大扫描次数。默认值 0 表示 100。

类型

Optional[int]

gesvdr_oversampling

algorithm 设置为 "gesvdr" 时,过采样的尺寸。默认值 0 表示 4 倍 max_extent 与满秩和 max_extent 之间差值的较小值。

类型

Optional[int]

gesvdr_niters

algorithm 设置为 "gesvdr" 时,幂方法的迭代次数,默认值 (0) 为 10。

类型

Optional[int]

注意

如果设置了多个截断参数,例如 max_extentdiscarded_weight_cutoff,则截断范围将确定为所有参数中最低的。

注意

有关不同 SVD 算法和相应参数的详细说明,请参阅 cuSolver 文档页面

注意

对于截断 SVD,即使截断参数设置为修剪掉所有奇异值,当前也至少会保留一个奇异值在输出中。此行为在未来的版本中可能会发生变化。