首页 > 其他分享 >cholesky分解和cholesky求逆

cholesky分解和cholesky求逆

时间:2023-07-07 17:12:53浏览次数:43  
标签:求逆 cholesky tensor torch 00 分解 0.0000 Out

对于正定对称矩阵\(\mathbf{H}\),可以分解为\(\mathbf{H}=\mathbf{XX}^T\),其中\(\mathbf{X}\)是下三角矩阵。这个分解方法就是cholesky分解,pytorch对应的函数是torch.linalg.cholesky

使用\(\mathbf{X}\)可以求出\(\mathbf{H}^{-1}\),pytorch对应的函数是torch.cholesky_inverse

计算cholesky分解,举个官方文档中的例子:

In [48]: a = torch.randn(3, 3)

In [49]: a = torch.mm(a, a.t()) + 1e-05 * torch.eye(3)

In [50]: a
Out[50]:
tensor([[ 1.4079, -0.1658, -0.2116],
        [-0.1658,  3.1347,  0.9066],
        [-0.2116,  0.9066,  0.4598]])

In [51]: u = torch.linalg.cholesky(a)

In [52]: u
Out[52]: 
tensor([[ 1.1865,  0.0000,  0.0000],
        [-0.1398,  1.7650,  0.0000],
        [-0.1783,  0.4995,  0.4224]])

In [53]: torch.mm(u, u.t())
Out[53]: 
tensor([[ 1.4079, -0.1658, -0.2116],
        [-0.1658,  3.1347,  0.9066],
        [-0.2116,  0.9066,  0.4598]])

In [54]: v = torch.linalg.cholesky(a, upper=True)

In [55]: v
Out[55]: 
tensor([[ 1.1865, -0.1398, -0.1783],
        [ 0.0000,  1.7650,  0.4995],
        [ 0.0000,  0.0000,  0.4224]])

In [56]: torch.mm(v.t(), v)
Out[56]: 
tensor([[ 1.4079, -0.1658, -0.2116],
        [-0.1658,  3.1347,  0.9066],
        [-0.2116,  0.9066,  0.4598]])

In [57]:

可以看到,a是个正定对称矩阵,分解可以得到下三角矩阵\(u\)或者上三角矩阵\(v\),使得\(uu^T=a\)或者\(v^Tv=a\)
实际上,观察可以知道,\(v^T=u\)

再来计算逆

In [77]: a_inverse = torch.cholesky_inverse(u)

In [78]: a_inverse
Out[78]: 
tensor([[ 0.7914, -0.1477,  0.6553],
        [-0.1477,  0.7699, -1.5859],
        [ 0.6553, -1.5859,  5.6035]])

In [79]: a.inverse()
Out[79]: 
tensor([[ 0.7914, -0.1477,  0.6553],
        [-0.1477,  0.7699, -1.5859],
        [ 0.6553, -1.5859,  5.6035]])

验证一下是不是逆矩阵:

In [81]: a @ a.inverse()
Out[81]: 
tensor([[1.0000e+00, 0.0000e+00, 0.0000e+00],
        [8.9407e-08, 1.0000e+00, 4.7684e-07],
        [0.0000e+00, 5.9605e-08, 1.0000e+00]])

In [82]: a @ a_inverse
Out[82]: 
tensor([[ 1.0000e+00,  0.0000e+00,  0.0000e+00],
        [ 5.9605e-08,  1.0000e+00,  4.7684e-07],
        [-1.4901e-08,  1.1921e-07,  1.0000e+00]])

In [83]: (a @ a_inverse).int()
Out[83]: 
tensor([[1, 0, 0],
        [0, 1, 0],
        [0, 0, 1]], dtype=torch.int32)

这里@是矩阵乘法运算符,起始得到的是单位矩阵,因为浮点数表示精度的问题,有的数字不是确切为0,而是接近0的一个很小的数字,转换为int可以更清晰地验证。

标签:求逆,cholesky,tensor,torch,00,分解,0.0000,Out
From: https://www.cnblogs.com/wangbingbing/p/17535540.html

相关文章

  • 微服务设计:分解单块系统
    限界上下文就是一个非常好的接缝,因为它的定义就是组织内高内聚和低耦合的边界。数据库是所有杂乱依赖的源头打破外键关系,把外键约束从数据库转移到代码中实现。这也就意味着,我们可能需要实现跨服务的一致性检查,或者周期性触发清理数据的任务。表结构分离后,对于原先的某个动作而......
  • R语言从经济时间序列中用HP滤波器,小波滤波和经验模态分解等提取周期性成分分析|附代码
    全文下载链接:http://tecdat.cn/?p=9350最近我们被客户要求撰写关于经济时间序列的研究报告,包括一些图形和统计输出。经济时间序列的分析通常需要提取其周期性成分。这篇文章介绍了一些方法,可用于将时间序列分解为它们的不同部分 ( 点击文末“阅读原文”获取完整代码数据*******......
  • matlab中使用VMD(变分模态分解)对信号去噪|附代码数据
    原文链接:http://tecdat.cn/?p=12486最近我们被客户要求撰写关于VMD的研究报告,包括一些图形和统计输出。创建一个以4kHz采样的信号,类似于拨打数字电话的所有键拨号音信号的变模分解将信号另存为MATLAB®时间数据。 fs = 4e3;t = 0:1/fs:0.5-1/fs;绘制时间表的变分模......
  • cholesky分解
    求L的步骤:首先求出l11然后求第一列其他元素 ......
  • 分治/质因数分解 POJ1845 求pow(a, b)的所有约数之和
    //POJ1845求pow(a,b)的所有约数之和//方法:1,分解质因数,将a分解成p1^k1*p2^k2^...*pn^kn//2,那么pow(a,b)为p1^(k1*b)*p2^(k2*b)^...*pn^(kn*b)//3,对于单独的pi^(ki*b),他所有的约数为(1,pi,pi^2,pi^3.....pi^(ki*b));//4,那么整个式子来说,pow(a,......
  • 分解质因数
    /题目:将一个正整数分解质因数。例如:输入90,打印出90=2335。程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于(小于的时候,继续执行循环)n,则说明分解质因数的过程已经结束,另外打印出即可。(2)但n能被k整除,则应打印出k的值,并用n除以k的商,作......
  • POSTGRESQL RC事务处理与ORACLE MYSQL 的区别 --对PGFANS 群里面的问题的分解
    有一个同学在PGFANS群里面提了一个问题,在他实验的某个操作中发现PG和ORACLE使用同样的操作流程后,得到的结果不一致。所以下面准备验证并找到一些可以解释的原因。测试库名test测试表test测试数据id  age 1   202   223   24首先我们要确认 PG的隔离 RC......
  • O(n)求逆元
    结论\(inv[i]=(mod−mod/i)\timesinv[mod\%i]\%mod\)证明设\(t=mod/i,k=mod\%i\)则有:\(t\timesi+k\equiv0\quad\%mod\)有:\(−t∗i\equivk\quad\%mod\)两边同时除以i∗ki∗k得到:\(−t∗inv[k]\equivinv[i]\quad\%mod\)......
  • 求逆元
    1.线性求\(i\)的逆元for(inti=2;i<=N;++i){inv[i]=(mod-mod/i)*inv[mod%i]%mod;}2.费马小定理求\(i\)的逆元inv[i]=QucikPower(i,mod-2);扩展欧几里得求\(i\)的逆元......
  • 简单易学的机器学习算法——因子分解机(Factorization Machine)
    一、因子分解机FM的模型    因子分解机(FactorizationMachine,FM)是由SteffenRendle提出的一种基于矩阵分解的机器学习算法。1、因子分解机FM的优势    对于因子分解机FM来说,最大的特点是对于稀疏的数据具有很好的学习能力。现实中稀疏的数据很多,例......