當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。