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