矩阵
矩阵初始化
矩阵元素运算
矩阵的乘法
矩阵的转置
矩阵对应列行的最大值,最小值,和
矩阵的其他操作:行列数、切片、复制、非0元素的下标
矩阵的行列式
矩阵的逆和伪逆
矩阵的对称
矩阵的秩、迹
矩阵求解
矩阵的特征值与特征向量(EVD)
矩阵
1. 矩阵初始化
Tensor的初始化
# 全零矩阵
In [1]: import torch
In [2]: myZero = torch.zeros(3,3)
In [3]: myZero
Out[3]:
tensor([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])
In [4]: type(myZero)
Out[4]: torch.Tensor
In [5]: myZero.dtype
Out[5]: torch.float32
# 全一矩阵
In [6]: myOnes = torch.ones(3,3)
In [8]: myOnes
Out[8]:
tensor([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
# 单位矩阵
In [9]: myEye = torch.eye(5)
In [10]: myEye
Out[10]:
tensor([[1., 0., 0., 0., 0.],
[0., 1., 0., 0., 0.],
[0., 0., 1., 0., 0.],
[0., 0., 0., 1., 0.],
[0., 0., 0., 0., 1.]])
# 对称矩阵
In [11]: a1 = [1,2,3,4,5]
In [13]: a1 = torch.tensor(a1)
In [14]: a1
Out[14]: tensor([1, 2, 3, 4, 5])
In [15]: myDiag = torch.diag(a1)
In [16]: myDiag
Out[16]:
tensor([[1, 0, 0, 0, 0],
[0, 2, 0, 0, 0],
[0, 0, 3, 0, 0],
[0, 0, 0, 4, 0],
[0, 0, 0, 0, 5]])
# 随机矩阵
In [17]: myRand = torch.rand(3,3)
In [18]: myRand
Out[18]:
tensor([[0.9588, 0.0139, 0.2303],
[0.4332, 0.1916, 0.4152],
[0.4848, 0.3361, 0.9799]])
直接创建tensor
In [19]: a = torch.tensor([[1,2,3],[4,5,6]])
In [20]: a
Out[20]:
tensor([[1, 2, 3],
[4, 5, 6]])
通过from_numpy() 函数将ndarray数据类型转化成矩阵(tensor)
In [21]: import numpy as np
In [22]: a = np.arange(12).reshape(3,4)
In [23]: b = torch.from_numpy(a)
In [24]: b
Out[24]:
tensor([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]], dtype=torch.int32)
2. 矩阵元素运算
矩阵的元素运算是指矩阵在元素级别的加、减、乘、除运算。
(1)元素相加和相减。
条件:矩阵的行数和列数必须相同。
数学公式:
In [27]: myOnes = torch.ones(4,4)
In [28]: myOnes
Out[28]:
tensor([[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]])
In [29]: myEye = torch.eye(4)
In [30]: myEye
Out[30]:
tensor([[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.]])
In [31]: myOnes + myEye
Out[31]:
tensor([[2., 1., 1., 1.],
[1., 2.,