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

torch . svd( input , some = True , out = None ) -> (Tensor, Tensor, Tensor) :U,S,V = torch . svd(A) 返回对形如nxm的实矩阵A进行奇异值分解的结果,使得A = USV 。U形状为nxn,S形状为nxm,V形状为mxm。
some 代表了需要计算的奇异值数目。如果 some=True, it computes some and some=Falsecomputes all。
Irrespective of the original strides, the returned matrix U will be transposed,i.e. withstrides (1, n) instead of (n, 1)。
参数:
        --input (Tensor) :输入的 2 维张量
        -- some (bool, optional) :布尔值,控制需计算的奇异值数目
        --out (tuple, optional) :结果 tuple
例子:
>>> a = torch.Tensor([[8.79, 6.11, -9.15, 9.57, -3.49,
9.84], , →
... [9.93, 6.91, -7.93, 1.64, 4.02,
0.15], , →
... [9.83, 5.04, 4.86, 8.83, 9.80,
-8.99], , →
... [5.45, -0.27, 4.85, 0.74, 10.00,
-6.02], , →
... [3.16, 7.98, 3.01, 5.80, 4.27,
-5.31]]).t() , →
>>> a
8.7900 9.9300 9.8300 5.4500 3.1600
6.1100 6.9100 5.0400 -0.2700 7.9800
-9.1500 -7.9300 4.8600 4.8500 3.0100
9.5700 1.6400 8.8300 0.7400 5.8000
-3.4900 4.0200 9.8000 10.0000 4.2700
9.8400 0.1500 -8.9900 -6.0200 -5.3100
[torch.FloatTensor of size 6x5]

>>> u, s, v = torch.svd(a)
>>> u
-0.5911 0.2632 0.3554 0.3143 0.2299
-0.3976 0.2438 -0.2224 -0.7535 -0.3636
-0.0335 -0.6003 -0.4508 0.2334 -0.3055
-0.4297 0.2362 -0.6859 0.3319 0.1649
-0.4697 -0.3509 0.3874 0.1587 -0.5183
0.2934 0.5763 -0.0209 0.3791 -0.6526
[torch.FloatTensor of size 6x5]

>>> s
27.4687
22.6432
8.5584
5.9857
2.0149
[torch.FloatTensor of size 5]

>>> v
-0.2514 0.8148 -0.2606 0.3967 -0.2180
-0.3968 0.3587 0.7008 -0.4507 0.1402
-0.6922 -0.2489 -0.2208 0.2513 0.5891
-0.3662 -0.3686 0.3859 0.4342 -0.6265
-0.4076 -0.0980 -0.4932 -0.6227 -0.4396
[torch.FloatTensor of size 5x5]

>>> torch.dist(a, torch.mm(torch.mm(u, torch.diag(s)),
v.t())) , →
8.934150226306685e-06
torch . symeig( input , eigenvectors = False , upper = True , out = None ) -> (Tensor, Tensor):
e,V = torch . symeig( input )返回实对称矩阵Input的特征值和特征向量。input和V为mxm矩阵,e是一个m维向量。此函数计算Input的所有特征值(和特征向量),使得input=Vdiag(e)V布尔值参数eigenvectors规定是否只计算特征向量。如果为False,则只计算特征值;若设为True,则两者都会计算。因为输入矩阵Input是对称的,所以默认只需要上三角矩阵。如果参数upper为False,下三角矩阵部分也被利用。
参数:
        --input (Tensor) :输入对称矩阵
        --eigenvectors (boolean, optional) :布尔值(可选),控制是否计算特征向量
        --upper (boolean, optional) :布尔值(可选),控制是否考虑上三角或下三角区域
        --out (tuple, optional) :输出元组 (Tensor, Tensor)
例子:
>>> a = torch.Tensor([[ 1.96, 0.00, 0.00, 0.00, 0.00],
... [-6.49, 3.80, 0.00, 0.00, 0.00],
... [-0.47, -6.39, 4.17, 0.00, 0.00],
... [-7.20, 1.50, -1.51, 5.70, 0.00],
... [-0.65, -6.34, 2.67, 1.80,
-7.10]]).t() , →

>>> e, v = torch.symeig(a, eigenvectors=True)
>>> e
-11.0656
-6.2287
0.8640
8.8655
16.0948
[torch.FloatTensor of size 5]

>>> v
-0.2981 -0.6075 0.4026 -0.3745 0.4896
-0.5078 -0.2880 -0.4066 -0.3572 -0.6053
-0.0816 -0.3843 -0.6600 0.5008 0.3991
-0.0036 -0.4467 0.4553 0.6204 -0.4564
-0.8041 0.4480 0.1725 0.3108 0.1622
[torch.FloatTensor of size 5x5]
torch . trtrs() :求解AX=b的解,A是上三角矩阵。A的形状为(N,N),b的形状为(N,C),output[0]的形状为(N,C),output[1]的形状为(N,N)。

 

>>> A = torch.randn(2, 2).triu()
>>> A
tensor([[ 1.1527, -1.0753],
        [ 0.0000, 0.7986]])

>>> b = torch.randn(2, 3) 
>>> b 
tensor([[-0.0210, 2.3513, -1.5492],
        [ 1.5429, 0.7403, -1.0243]])
>>> torch.trtrs(b, A)
(tensor([[ 1.7840, 2.9045, -2.5405], 
        [ 1.9319, 0.9269, -1.2826]]), 
tensor([[ 1.1527, -1.0753], , →
         [ 0.0000, 0.7986]]))

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值