PyTorch – 如何计算矩阵的伪逆?
要计算方阵的伪逆,我们可以应用 **torch.linalg.pinv()** 方法。它返回一个包含给定矩阵伪逆的新张量。它接受一个矩阵、一批矩阵以及矩阵的批次。矩阵是一个 2D 的 torch 张量。它支持 **float、double、cfloat** 和 **cdouble** 数据类型作为输入。
语法
torch.linalg.pinv(M)
其中 M 是一个矩阵或矩阵的批次。
步骤
我们可以使用以下步骤来计算矩阵的伪逆:
导入所需的库。在以下所有示例中,所需的 Python 库是 **torch**。确保您已安装它。
import torch
定义一个矩阵。这里,我们定义一个矩阵(大小为 3x4 的 2D 张量)。
M = torch.randn(3,4)
使用 **torch.linalg.pinv(M)** 计算伪逆矩阵。M 是一个矩阵或矩阵的批次/批次。可以选择将此值分配给一个新变量。
Mpinv = torch.linalg.pinv(M)
打印上面计算出的伪逆矩阵
print("Norm:", Mpinv)示例 1
在这个程序中,我们计算给定输入矩阵的伪逆矩阵。
# Python program to compute the pseudoinverse of a matrix
# import required library
import torch
# define a matrix of size 3x4
M = torch.randn(3,4)
print("Matrix M:
", M)
print("Matrix size:", M.size())
# compute the inverse of above defined matrix
Mpinv = torch.linalg.pinv(M)
print("Pseudo inverse Matrix:
", Mpinv)
print("Pseudo inverse Matrix size:", Mpinv.size())输出
它将产生以下输出:
Matrix M: tensor([[ 1.1350, -1.0521, -0.6431, -0.1302], [-0.5745, 1.2299, 0.9296, 1.6188], [ 0.6129, -1.0834, -0.0711, 0.2382]]) Matrix size: torch.Size([3, 4]) Pseudo inverse Matrix: tensor([[ 1.1440, 0.3123, -0.6687], [ 0.7733, 0.2948, -1.3105], [-0.8647, -0.0376, 0.9169], [ 0.3150, 0.5262, 0.2319]]) Pseudo inverse Matrix size: torch.Size([4, 3])
示例 2
在这个程序中,我们计算给定输入复数矩阵的伪逆矩阵。
# Python program to compute the
# pseudo inverse of a complex matrix
# import required library
import torch
# define a 3x2 matrix of random complex numbers
M = torch.randn(3,2, dtype = torch.cfloat)
print("Matrix M:
", M)
print("Matrix size:", M.size())
# compute the inverse of above defined matrix
Minv = torch.linalg.pinv(M)
print("Pseudo inverse Matrix:
", Minv)
print("Pseudo inverse Matrix size:", Minv.size())输出
它将产生以下输出:
Matrix M: tensor([[ 0.5273-0.7986j, 0.7881+0.0765j], [-0.6390-0.3126j, -0.1926+0.0727j], [-0.7445-0.2163j, 0.0649+0.1611j]]) Matrix size: torch.Size([3, 2]) Pseudo inverse Matrix: tensor([[ 0.0384+0.2124j, -0.3826+0.3125j, -0.5792+0.1700j], [ 0.9675-0.1972j, -0.2763-0.5200j, 0.2895-0.6992j]]) Pseudo inverse Matrix size: torch.Size([2, 3])
示例 3
在这个程序中,我们计算三个矩阵批次的伪逆。
# Python program to compute the
# pseudo inverse of batch of matrices
# import the required library
import torch
# define a batch of three 3x2 matrices
B = torch.randn(3,3,2)
print("Batch of Matrices :
", B)
print(B.size())
# compute the inverse of above defined batch of matrices
Binv = torch.linalg.pinv(B)
print("Pseudo inverse Matrices:
", Binv)
print(Binv.size())输出
它将产生以下输出:
Batch of Matrices : tensor([[[-0.1761, -1.4982], [ 0.7792, -0.0071], [-0.6187, -0.2396]], [[-1.1825, 1.2347], [ 0.0127, 1.0387], [ 0.0319, 0.5046]], [[-1.2648, -0.7298], [-1.8663, -1.1158], [-0.0148, 0.5049]]]) torch.Size([3, 3, 2]) Pseudo inverse Matrices: tensor([[[ 0.0932, 0.8222, -0.6073], [-0.6673, -0.1483, 0.0032]], [[-0.8261, 0.7798, 0.4164], [ 0.0185, 0.7538, 0.3850]], [[-0.2850, -0.3336, -1.1492], [ 0.0613, -0.0569, 1.9435]]]) torch.Size([3, 2, 3])
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP