目录
一、线性变换
线性代数的本质:https://www.bilibili.com/video/BV1ys411472E
可以将线性变换看做对空间的挤压伸展,它保持网络线平行且等距分布,并且保持原点不变。
例如:
二维矩阵的复合变换:
二、标量
三、向量
四、矩阵
五、代码示例
import torch
# 向量
x = torch.ones(4, dtype=torch.float32)
y = torch.ones(4, dtype=torch.float32)
print('向量x: ', x)
print('向量y: ', y)
# 向量点乘
print('向量点乘: ', torch.dot(x, y))
# 矩阵
A = torch.arange(12, dtype=torch.float32).reshape(3, 4)
print('矩阵A:', A)
print('矩阵A转置: ', A.T) # 转置
print('矩阵A求和: ', A.sum()) # 和
print('矩阵A平均值: ', A.mean()) # 平均值
# 矩阵 连结(concatenate)
B = torch.tensor([[2.0, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])
print('矩阵B: ', B)
print('连结:', torch.cat((A, B), dim=0))
print('连结:', torch.cat((A, B), dim=1))
# 矩阵-向量积
print('矩阵-向量积:', torch.mv(A, x))
# 矩阵-矩阵乘法
C = torch.arange(12, dtype=torch.float32).reshape(4, 3)
print('矩阵-矩阵乘法:', torch.mm(A, C))
# 范数
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)))) # 弗罗贝尼乌斯范数