当前位置: 首页 > 工具软件 > LAPACK > 使用案例 >

day17 BLAS/LAPACK 操作3 入门 一起学 PyTorch吧,PyTorch从入门开始 每天都更新 超详细 参数 常用方法 简单案列 共同学习,共同进步 坚持

幸鸿轩
2023-12-01

torch.geqrf(input, out=None) -> (Tensor, Tensor)这是一个直接调用LAPACK的底层函数。一般使用torch.qr()计算输入的QR分解,但是并不会分别创建Q,R两个矩阵,而是直接调用LAPACK函数。

参数:

--input (Tensor):输入矩阵

--out (tuple, optional):元组,包含输出张量 (Tensor, Tensor)

import  torch
input=torch.Tensor([[0,0,1],
               [0,1,0],
               [1,0,0]])
a=torch.geqrf(input)
print(a)

torch.return_types.geqrf(
a=tensor([[-1.,  0.,  0.],
        [ 0.,  1.,  0.],
        [ 1.,  0., -1.]]),
tau=tensor([1., 0., 0.]))
torch . ger(vec1, vec2, out = None ) --> Tensor计算两个向量vec1,vec2的张量积。如果vec1的长度为n,vec2长度为m,则输出out应为形如nxm的矩阵。
参数:
        --vec1 (Tensor) 1D 输入向量
        --vec2 (Tensor) 1D 输入向量
        --out (tuple, optional) :输出张量
例子:
>>> v1 = torch.arange(1, 5)
>>> v2 = torch.arange(1, 4)
>>> torch.ger(v1, v2)

1 2 3 
2 4 6 
3 6 9 
4 8 12
[torch.FloatTensor of size 4x3]
torch . gesv(B, A, out = None ) -> (Tensor, Tensor)X,LU=torch.gesv(B,A) 返回线性方程组 AX=B 的解。
LU包含两个矩阵L,U。A须为非奇异方阵,如果A是一个mxm矩阵,B是mxk矩阵,则LU是mxm矩阵,X为mxk矩阵。
参数:
        --B (Tensor): m × k 矩阵
        -- A (Tensor) m × m 矩阵
        --out (Tensor, optional) :可选地输出矩阵 X
例子:
>>> A = torch.Tensor([[6.80, -2.11, 5.66, 5.97, 8.23],
... [-6.05, -3.30, 5.36, -4.44, 1.08],
... [-0.45, 2.58, -2.70, 0.27, 9.04],
... [8.32, 2.71, 4.35, -7.17, 2.14],
... [-9.67, -5.14, -7.26, 6.08,
-6.87]]).t() , →

>>> B = torch.Tensor([[4.02, 6.19, -8.22, -7.57, -3.03],
... [-1.56, 4.00, -8.67, 1.75, 2.86],
... [9.81, -4.09, -4.57, -8.61,
8.99]]).t() , →

>>> X, LU = torch.gesv(B, A)
>>> torch.dist(B, torch.mm(A, X))
9.250057093890353e-06
torch . inverse( input , out = None ) --> Tensor :对方阵输入input取逆。注意:Irrespective of the original strides, the returned matrix will be transposed, i.ewith strides (1, m) instead of (m, 1)
参数:
        --input (Tensor) :输入 2 维张量
        --out (Tensor, optional) :输出张量
例子:
x = torch.rand(3,3) 
y = torch.inverse(x) x
tensor([[0.2118, 0.0633, 0.1377], 
        [0.9734, 0.0831, 0.6557], 
        [0.4508, 0.5611, 0.1341]])
y
tensor([[-72.4581, 13.9640, 6.1119], 
        [ 33.5259, -6.8370, -0.9899], 
        [103.3160, -18.3383, -8.9477]])

z = torch.mm(x,y)
tensor([[ 1.0000e+00, -1.3698e-07, -8.9408e-08], 
        [ 5.8442e-06, 1.0000e+00, -5.7722e-07], 
        [-1.8157e-07, 7.7508e-08, 1.0000e+00]])
torch . mm(mat1, mat2, out = None ) --> Tensor:对矩阵mat1和mat2进行相乘。如果mat1是一个nxm张量,mat2是一个mxp张量,将会输出一个nxp张量out。
参数:
        --mat1(Tensor) :第一个相乘矩阵
        --mat2 (Tensor) :第二个相乘矩阵
        --out (Tensor, optional):输出张量
例子:
>>> mat1 = torch.randn(2, 3)
>>> mat2 = torch.randn(3, 3)
>>> torch.mm(mat1, mat2)
0.0519 -0.3304 1.2232
4.3910 -5.1498 2.7571
[torch.FloatTensor of size 2x3]
torch . mv(mat, vec, out = None ) --> Tensor:对矩阵mat和向量vec进行相乘。如果mat是一个nxm张量,vec是一个m元1维张量,将会输出一个n元1维张量。
参数:
        --mat (Tensor) :相乘矩阵
        --vec (Tensor) :相乘向量
        --out (Tensor, optional):输出张量
例子:
>>> mat = torch.randn(2, 3)
>>> vec = torch.randn(3)
>>> torch.mv(mat, vec)
-2.0939
-2.2950
[torch.FloatTensor of size 2]
• torch.orgqr
• torch.orgqr()
• torch.ormqr
• torch.ormqr()
• torch.potrf
• torch.potrf()
• torch.potri
• torch.potri()
• torch.potrs
• torch.potrs()
• torch.pstrf
• torch.pstrf()
torch . qr( input , out = None ) -> (Tensor, Tensor) :计算输入矩阵的QR分解:返回两个矩阵q,r,使得x=q*r,这里q是一个半正交矩阵与r是一个上三角矩阵本函数返回一个thin(reduced)QR分解。
        如果输入很大,可能可能会丢失精度。本函数依赖于你的LAPACK实现,虽然总能返回一个合法的分解,但不同平台可能得到不同的结果。
Irrespective of the original strides, the returned matrix q will be transposed, i.e. with strides (1, m) instead of (m, 1).
参数:
        --input (Tensor):输入的 2 维张量 out (tuple, optional) :输出元组 tuple ,包含 Q和R
例子:
>>> a = torch.Tensor([[12, -51, 4], [6, 167, -68], [-4, 24,
-41]]) , →
>>> q, r = torch.qr(a)
>>> q
-0.8571 0.3943 0.3314
-0.4286 -0.9029 -0.0343
0.2857 -0.1714 0.9429
[torch.FloatTensor of size 3x3]

>>> r
-14.0000 -21.0000 14.0000
0.0000 -175.0000 70.0000
0.0000 0.0000 -35.0000
[torch.FloatTensor of size 3x3]

>>> torch.mm(q, r).round()
12 -51 4
6 167 -68
-4 24 -41
[torch.FloatTensor of size 3x3]

>>> torch.mm(q.t(), q).round()
1 -0 0
-0 1 0 
 0 0 1 
[torch.FloatTensor of size 3x3]

 类似资料: