3、线性代数

1、矩阵转置 Ai,j=Aj,i

2、对称矩阵 :A转置=A

0,2,3

2 1 5

3,5,1

3、三维矩阵 求和 axis=0 两个矩阵相加 axis=1 两个向量相加 ,axis=2 向量内部相加

keepdims=True 求和后维度保持不变

4、cumsum累加求和

5、torch.mm() 或 torch.bmm()【矩阵乘法,前二维后三维,均不可广播】

torch.mm() 用于两个二维向量之间的矩阵乘法。如果 input1 是一个n×m张量,input2 是一个 m×p张量,将会输出一个 n×p 张量

>>> a = torch.ones(3,4)

>>> b = torch.ones(4,2)

>>> torch.mm(a, b) # torch.Size(3, 2)

tensor(\[4., 4.,

4., 4.,

4., 4.])

而 torch.bmm() 是用于两个三维张量之间的批次矩阵乘法(其中第0维为批次大小)。由于神经网络训练一般采用mini-batch,经常输入的是三维带batch矩阵。如果 input1 是一个 b×n×m 张量,input2 是一个 b×m×p 张量,将会输出一个 b×n×p 张量

>>> a = torch.ones(3,4,5)

>>> b = torch.ones(3,5,6)

>>> torch.bmm(a, b) # torch.Size(3, 4, 6)

tensor(\[\[5., 5., 5., 5., 5., 5.,

5., 5., 5., 5., 5., 5.,

5., 5., 5., 5., 5., 5.,

5., 5., 5., 5., 5., 5.],

\[5., 5., 5., 5., 5., 5.,

5., 5., 5., 5., 5., 5.,

5., 5., 5., 5., 5., 5.,

5., 5., 5., 5., 5., 5.],

\[5., 5., 5., 5., 5., 5.,

5., 5., 5., 5., 5., 5.,

5., 5., 5., 5., 5., 5.,

5., 5., 5., 5., 5., 5.]])

另外,这两个函数都无法广播
6、torch.mv()【矩阵-向量乘法,不可广播】

torch.mv(input, vec) 只支持矩阵和向量之间的乘法。如果 input 为 n×m,vec向量的长度为m,那么输出为 n×1的向量。不支持广播机制

In1: vec = torch.arange(4)

In2: mat = torch.arange(12).reshape(3,4)

In3: torch.mv(mat, vec)

Out1: tensor(14, 38, 62)

torch.dot()【仅支持两个一维向量点积】

只能支持两个一维向量,两向量相乘相加得到一个标量

与 np.dot() 不同,np.dot() 既能向量点积,又能矩阵乘法

a = torch.tensor(2,3)

b = torch.tensor(1,2)

c = torch.dot(a,b)

print('a:',a.shape) # a: torch.Size(2)

print('b:',b.shape) # b: torch.Size(2)

print('torch.dot:',c,c.shape) # torch.dot: tensor(8) torch.Size(\[\])

7、@【等价于 torch.dot() + torch.mv() + torch.mm()】

mat1 @ mat2

若mat1和mat2都是一维向量,那么对应操作就是torch.dot()

若mat1是二维向量,mat2是一维向量,那么对应操作就是torch.mv()

若mat1和mat2都是二维向量,那么对应操作就是torch.mm()

vec1 = torch.arange(4)

vec2 = torch.tensor(4,3,2,1)

mat1 = torch.arange(12).reshape(4,3)

mat2 = torch.arange(12).reshape(3,4)

print(vec1 @ vec2) # 两个一维向量

print(mat2 @ vec1) # 一个二维和一个一维

print(mat1 @ mat2) # 两个二维向量

Output:

tensor(10)

tensor(14, 38, 62)

tensor(\[ 20, 23, 26, 29,

56, 68, 80, 92,

92, 113, 134, 155,

128, 158, 188, 218])

torch.matmul() 【矩阵乘法,可高维,可广播】

torch.matmul() 与 @ 类似,但它不止局限于一维和二维,可以扩展到高维,且可以广播

如果输入的两个张量都是一维的,那么返回点积,得到一个数,对应的操作就是torch.dot()

如果输入的两个张量都是二维的,那么返回矩阵乘积,对应的操作就是torch.mm()

如果输入的第一个张量是二维的,第二个张量是一维的,matrix第二维需要与 vector维度相同,返回矩阵向量乘积,对应的操作就是torch.mv()

8、L2 元素平方求和开根号

L1 元素绝对值求和

相关推荐
benchmark_cc6 小时前
如何用 Python + QuantDash 快速构建高胜率“配对交易(Pairs Trading)”策略?
开发语言·人工智能·python·pandas·量化交易·quantdash
Python+998 小时前
Java 枚举类(Enum)详解:从基础到高级应用
java·开发语言·python
dunge20269 小时前
2026年7月最新ChatGPT Plus / Pro 与 Codex:当 AI Agent 最新5.6版本来袭,必须理解事务、幂等与补偿
开发语言·人工智能·python
小白学大数据10 小时前
两周完成爬虫技术栈升级:Scrapy 迁移 Crawlo 的路径与取舍
爬虫·python·scrapy
用户83562907805111 小时前
使用 Python 在 Excel 中添加和自定义文本框
后端·python
总裁余(余登武)11 小时前
python多个py文件打包【解决exe不能移动运行bug】
python
kisloy12 小时前
【python零基础教程第24讲】代码规范与质量管控
开发语言·python
xywww16812 小时前
AWS 账号权限怎么分:根用户和 IAM 用户区别及日常使用建议
大数据·开发语言·人工智能·python·gpt·云计算·aws
许彰午13 小时前
100_Python面试常见问题汇总
java·python·面试
皓悦编程记14 小时前
【YOLO26 系列】基于YOLO26的垃圾分类检测系统【python源码+Pyqt5界面/WEB+数据集+训练代码】
python·qt·分类