【动手学深度学习】课程笔记 05-07 线性代数、矩阵计算和自动求导

05 线性代数

1. 基础知识补充

向量相关

矩阵相关

简单来说,范数是用来衡量矩阵(张量)大小的值,范数的值有不同的规定。

2. 代码实现

仅记录一些我比较陌生的知识。

张量的克隆

python 复制代码
A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
B = A.clone()  # 通过分配新内存,将A的一个副本分配给B
A, A + B

张量的降维

首先定义一个张量x,指定其元素的数据类型为32位的float:

python 复制代码
x = torch.arange(4, dtype=torch.float32)
x, x.sum()

接着调用求和函数,因为会对张量中的一些维度进行求和,求和后就相当于是降维了,这里的维度用轴axis来表示,0表示行,1表示列,下面是对行和列同时求和:

python 复制代码
A.sum(axis=[0, 1])  # 结果和A.sum()相同

axis = 0按照行,可以理解为把"行"给抹去只剩1行,也就是上下压扁。

axis = 1按照列,可以理解为把"列"给抹去只剩1列,也就是左右压扁。

点积

给定两个向量,它们的点积就是相同位置的元素乘积之和:

python 复制代码
y = torch.ones(4, dtype = torch.float32)
x, y, torch.dot(x, y)

矩阵-向量积、矩阵-矩阵积

矩阵和向量相乘:

python 复制代码
A.shape, x.shape, torch.mv(A, x)

矩阵和矩阵相乘:

python 复制代码
B = torch.ones(4, 3)
torch.mm(A, B)

范数

向量的范数表示一个向量有多大,这里的大小不涉及维度,指的是分量的大小。

常用的L2范数表示向量元素平方和的平方根,其实是将向量输入一个求平方和平方根的函数,就输出这个向量对应的L2范数:

python 复制代码
u = torch.tensor([3.0, -4.0])
torch.norm(u)

这也是唯一一个pytorch中定义的求范数函数,还有一个常用范数叫L1范数,其实就是元素的绝对值之和,它就没有特定的函数来计算了,因为比较好实现:

python 复制代码
torch.abs(u).sum()

前两个是对于向量来说的,矩阵的范数一般用的是Frobenius范数,它和L2范数一样,都是求平方和的平方根:

python 复制代码
torch.norm(torch.ones((4, 9)))
相关推荐
【建模先锋】9 分钟前
独家原创!基于特征—时间双图注意力与BiGRU全局注意力并行融合的高创新预测模型
人工智能·深度学习·注意力机制·预测模型·gat·时间序列预测模型
voidmort14 分钟前
8. 模型如何读写数据(Tokenizer 与 Token)
人工智能·深度学习·机器学习
東隅已逝,桑榆非晚19 分钟前
编译和链接
c语言·笔记
05候补工程师22 分钟前
【考研高数核心突破】极限的本质、高频解题套路与海涅定理深度解析(附经典例题思维导图式拆解)
经验分享·笔记·考研·算法
智者知已应修善业26 分钟前
【51单片机8个LED的花样12亮34熄56间隔78闪烁3秒3闪烁】2023-11-4
c++·经验分享·笔记·算法·51单片机
bryant_meng31 分钟前
【SAMv1】 The “Segment Anything” Revolution in Computer Vision
人工智能·深度学习·计算机视觉·大模型·sam·分割一切
老鱼说AI32 分钟前
统计学习方法第五章:从浅入深解析决策树
人工智能·深度学习·算法·决策树·机器学习·学习方法
Upsy-Daisy1 小时前
IOTA 学习笔记(六):Move 语言入门
笔记·学习
searchforAI1 小时前
网盘视频转文字后,如何高效做笔记并长期归档?
人工智能·笔记·学习·ai·音视频·语音识别·网盘
土狗TuGou1 小时前
SQL内功笔记 · 第9篇:UPDATE FROM 进阶——告别逐行子查询,拥抱集合更新
java·数据库·笔记·sql·mysql