线性代数知识点
程序员文章站
2022-07-12 14:01:05
...
目录
记录下线性代数部分的知识点。
参考:
- 线性代数的本质:https://www.bilibili.com/video/BV1ys411472E
动手学深度学习:http://zh.d2l.ai/
一、线性变换
可以将线性变换看做对空间的挤压伸展,它保持网络线平行且等距分布,并且保持原点不变。
例如:
二维矩阵的复合变换:
二、标量
三、向量
四、矩阵
代码示例:
import torch
# 向量
x = torch.ones(4, dtype=torch.float32)
y = torch.ones(4, dtype=torch.float32)
print('向量x: ', x)
print('向量y: ', y)
# 矩阵
A = torch.arange(12, dtype=torch.float32).reshape(3, 4)
B = torch.arange(20, dtype=torch.float32).reshape(4, 5)
print('矩阵A:', A)
print('矩阵A转置: ', A.T) # 转置
print('矩阵A求和: ', A.sum()) # 和
print('矩阵A平均值: ', A.mean()) # 平均值
# 向量点积(Dot Product)
print('向量点积: ', torch.dot(x, y))
# 矩阵-向量积(matrix-vector products)
print('矩阵-向量积: ', torch.mv(A, x))
# 矩阵-矩阵乘法(matrix-matrix multiplication)
print('矩阵-矩阵乘法: ', torch.mm(A, B))
# 矩阵 连结(concatenate)
C = torch.tensor([[2.0, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])
print('矩阵C: ', C)
print('连结:', torch.cat((A, C), dim=0))
print('连结:', torch.cat((A, C), dim=1))
# 范数
u = torch.tensor([3.0, -4.0])
print('L1范数:', torch.abs(u).sum()) # L1范数
print('L2范数:', torch.norm(u)) # L2范数
print(torch.norm(torch.ones((4, 9)))) # 弗罗贝尼乌斯范数
上一篇: 线性代数的本质