当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python PyTorch lu用法及代码示例


本文简要介绍python语言中 torch.lu 的用法。

用法:

torch.lu(*args, **kwargs)

参数

  • A(Tensor) -张量大小因子

  • pivot(bool,可选的) -控制是否完成旋转。默认值:True

  • get_infos(bool,可选的) -如果设置为 True ,则返回信息 IntTensor。默认值:False

  • out(tuple,可选的) -可选的输出元组。如果 get_infosTrue ,则元组中的元素是 Tensor、IntTensor 和 IntTensor。如果 get_infosFalse ,则元组中的元素是 Tensor、IntTensor。默认值:None

返回

张量元组包含

  • 因式分解(Tensor):尺寸的因式分解(*, m, n)

  • 枢轴(IntTensor): 尺寸的枢纽(*, \text{min}(m, n)) .pivots存储行的所有中间转置。最后的排列perm可以通过应用重建swap(perm[i], perm[pivots[i] - 1])为了i = 0, ..., pivots.size(-1) - 1,其中perm最初是的恒等排列m 元素(本质上这就是torch.lu_unpack是在做)。

  • 信息(IntTensor,可选的): 如果get_infosTrue, 这是一个大小的张量(*) 其中非零值表示矩阵或每个小批量的因式分解是成功还是失败

返回类型

(Tensor,IntTensor,IntTensor(可选))

计算一个或多个矩阵的 LU 分解 A 。返回一个包含 LU 分解和 A 的元组的元组。如果 pivot 设置为 True ,则完成旋转。

注意

  • 该函数返回的枢轴是 1 索引的。如果 pivotFalse ,则返回的枢轴是一个用适当大小的零填充的张量。

  • pivot = False 的 LU 因式分解不适用于 CPU,尝试这样做会引发错误。但是,pivot = False 的 LU 分解可用于 CUDA。

  • 如果get_infosTrue,则此函数不检查分解是否成功,因为分解的状态存在于返回元组的第三个元素中。

  • 在 CUDA 设备上批量小于或等于 32 的方阵的情况下,由于 MAGMA 库中的错误(参见 magma issue 13),对奇异矩阵重复 LU 分解。

  • LUP 可以使用 torch.lu_unpack() 导出。

警告

此函数的梯度仅在A 为满秩时是有限的。这是因为 LU 分解在满秩矩阵上是可微的。此外,如果 A 接近未满秩,则梯度将在数值上不稳定,因为它取决于 的计算。

例子:

>>> A = torch.randn(2, 3, 3)
>>> A_LU, pivots = torch.lu(A)
>>> A_LU
tensor([[[ 1.3506,  2.5558, -0.0816],
         [ 0.1684,  1.1551,  0.1940],
         [ 0.1193,  0.6189, -0.5497]],

        [[ 0.4526,  1.2526, -0.3285],
         [-0.7988,  0.7175, -0.9701],
         [ 0.2634, -0.9255, -0.3459]]])
>>> pivots
tensor([[ 3,  3,  3],
        [ 3,  3,  3]], dtype=torch.int32)
>>> A_LU, pivots, info = torch.lu(A, get_infos=True)
>>> if info.nonzero().size(0) == 0:
...   print('LU factorization succeeded for all samples!')
LU factorization succeeded for all samples!

相关用法


注:本文由纯净天空筛选整理自pytorch.org大神的英文原创作品 torch.lu。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。