本文简要介绍python语言中 torch.linalg.lstsq 的用法。
用法:
torch.linalg.lstsq(A, B, rcond=None, *, driver=None)driver(str,可选的) -要使用的 LAPACK/MAGMA 方法的名称。如果
None,‘gelsy’用于 CPU 输入,‘gels’用于 CUDA 输入。默认值:None。命名元组
(solution, residuals, rank, singular_values)。计算线性方程组的最小二乘问题的解。
让是或者, 这最小二乘问题对于线性系统和定义为
其中 表示 Frobenius 范数。
支持 float、double、cfloat 和 cdouble dtypes 的输入。还支持矩阵批次,如果输入是矩阵批次,则输出具有相同的批次尺寸。
driver选择将使用的 LAPACK/MAGMA 函数。对于 CPU 输入,有效值为‘gels’、‘gelsy’、‘gelsd、‘gelss’。对于 CUDA 输入,唯一有效的驱动程序是‘gels’,它假定A是满秩的。要在 CPU 上选择最佳驱动程序,请考虑:如果
A条件良好(它的condition number 不是太大),或者您不介意一些精度损失。对于一般矩阵:
‘gelsy’(带旋转的 QR)(默认)如果
A是满秩:‘gels’(QR)
如果
A条件不佳。‘gelsd’(三对角缩减和 SVD)但是,如果您遇到内存问题:
‘gelss’(完整的 SVD)。
另见full description of these drivers
当
driver是(‘gelsy’、‘gelsd’、‘gelss’)之一时,rcond用于确定A中矩阵的有效秩。在这种情况下,如果 是A的降序奇异值,如果 ,则 将向下舍入为零。如果rcond= None(默认),rcond设置为Adtype 的机器精度。此函数在四个张量
(solution, residuals, rank, singular_values)的命名元组中返回问题的解决方案和一些额外信息。对于形状为(*, m, n)、(*, m, k)的输入A、B,它包含solution:最小二乘解。它的形状为(*, n, k)。residuals:解的平方残差,即 。它的形状等于A的批量尺寸。当m > n和A中的每个矩阵都是满秩时计算它,否则它是一个空张量。如果A是一批矩阵并且该批中的任何矩阵不是满秩的,则返回一个空张量。此行为可能会在未来的PyTorch 版本中发生变化。rank:A中矩阵的秩张量。它的形状等于A的批量尺寸。当driver是(‘gelsy’、‘gelsd’、‘gelss’)之一时计算,否则为空张量。singular_values:A中矩阵的奇异值的张量。它的形状为(*, min(m, n))。当driver是 (‘gelsd’,‘gelss’) 之一时计算它,否则它是一个空张量。
注意
此函数计算
X =A.pinverse() @B比单独执行计算更快且数值更稳定。警告
rcond的默认值可能会在未来的 PyTorch 版本中更改。因此,建议使用固定值以避免潜在的破坏性变化。例子:
>>> A = torch.tensor([[[10, 2, 3], [3, 10, 5], [5, 6, 12]]], dtype=torch.float) # shape (1, 3, 3) >>> B = torch.tensor([[[2, 5, 1], [3, 2, 1], [5, 1, 9]], [[4, 2, 9], [2, 0, 3], [2, 5, 3]]], dtype=torch.float) # shape (2, 3, 3) >>> X = torch.linalg.lstsq(A, B).solution # A is broadcasted to shape (2, 3, 3) >>> torch.dist(X, torch.linalg.pinv(A) @ B) tensor(2.0862e-07) >>> S = torch.linalg.lstsq(A, B, driver='gelsd').singular_values >>> torch.dist(S, torch.linalg.svdvals(A)) tensor(5.7220e-06) >>> A[:, 0].zero_() # Decrease the rank of A >>> rank = torch.linalg.lstsq(A, B).rank >>> rank tensor([2])
参数:
关键字参数:
返回:
相关用法
- Python PyTorch log2用法及代码示例
- Python PyTorch lerp用法及代码示例
- Python PyTorch logical_xor用法及代码示例
- Python PyTorch load_state_dict_from_url用法及代码示例
- Python PyTorch logical_and用法及代码示例
- Python PyTorch lt用法及代码示例
- Python PyTorch log_softmax用法及代码示例
- Python PyTorch lgamma用法及代码示例
- Python PyTorch logical_or用法及代码示例
- Python PyTorch lazy_apply用法及代码示例
- Python PyTorch logit用法及代码示例
- Python PyTorch logical_not用法及代码示例
- Python PyTorch ldexp用法及代码示例
- Python PyTorch logcumsumexp用法及代码示例
- Python PyTorch log10用法及代码示例
- Python PyTorch logaddexp用法及代码示例
- Python PyTorch logdet用法及代码示例
- Python PyTorch load_sp_model用法及代码示例
- Python PyTorch log用法及代码示例
- Python PyTorch list用法及代码示例
- Python PyTorch logsumexp用法及代码示例
- Python PyTorch linspace用法及代码示例
- Python PyTorch lu_solve用法及代码示例
- Python PyTorch logspace用法及代码示例
- Python PyTorch l1_unstructured用法及代码示例
注:本文由纯净天空筛选整理自pytorch.org大神的英文原创作品 torch.linalg.lstsq。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
