深度学习预备知识(线性代数)

介绍:

深度学习是一种机器学习的方法,涉及到大量的线性代数运算。线性代数是研究向量空间和线性映射的数学学科。在深度学习中,线性代数常用于表示和处理输入数据和模型参数。下面是一些深度学习中常见的线性代数概念和运算:

  1. 向量:在深度学习中,向量是一种表示数据的结构。它可以表示输入数据、模型参数和梯度等。向量通常用列向量表示,形如x = x1, x2, ..., xn。向量之间可以进行加法、减法和标量乘法等运算。

  2. 矩阵:矩阵是一个二维的数组,通常用于表示线性映射。在深度学习中,矩阵用于表示输入数据和模型的权重。矩阵乘法是深度学习中最常用的运算之一,用于实现神经网络的前向传播和反向传播。

  3. 转置:矩阵的转置是将矩阵的行和列互换得到的新矩阵。在深度学习中,转置常常用于计算梯度和调整矩阵的形状。

  4. 矩阵的逆:一个可逆矩阵的逆矩阵是使得矩阵与其逆矩阵相乘等于单位矩阵的矩阵。在深度学习中,矩阵的逆常用于求解线性方程组和计算梯度。

  5. 行列式:行列式是一个与矩阵相关的标量值。在深度学习中,行列式被用于判断矩阵是否可逆,从而决定是否能够求解线性方程组。

  6. 特征值和特征向量:特征值和特征向量是矩阵运算中的重要概念。特征值表示线性映射中的缩放比例,特征向量表示变换后的方向。在深度学习中,特征值和特征向量常用于降维和分析模型的性质。

以上是深度学习中常见的线性代数概念和运算。深入理解线性代数对于掌握深度学习的原理和实践非常重要。

1、标量与变量

python 复制代码
import torch

print('1.标量与变量')
x = torch.tensor([3.0])
y = torch.tensor([2.0])
print(x + y, x * y, x / y, x ** y)

2、向量

python 复制代码
x = torch.arange(4)
print('2.向量')
print('x:', x)
print('x[3]:', x[3])  # 通过张量的索引来访问任一元素
print('张量的形状:', x.shape)  # 张量的形状
print('张量的长度:', len(x))  # 张量的长度
z = torch.arange(24).reshape(2, 3, 4)
print('三维张量的长度:', len(z))

3、矩阵

python 复制代码
print('3.矩阵')
A = torch.arange(20).reshape(5, 4)
print('A:', A)
print('A.shape:', A.shape)
print('A.shape[-1]:', A.shape[-1])
print('A.T:', A.T)  # 矩阵的转置

B=torch.tensor([[1,2,3],[2,0,4],[3,4,5]])#对称矩阵
B==B.T

4、矩阵计算

python 复制代码
print('4.矩阵的计算')
A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
B = A#内存一样,不会改变
B = A.clone()  # 通过分配新内存,将A的一个副本分配给B
print('A:', A)
print('B:', B)
print('A + B:', A + B)  # 矩阵相加
print('A * B:', A * B)  # 矩阵相乘
python 复制代码
a = 2
X = torch.arange(24).reshape(2, 3, 4)
print('X:', X)
print('a + X:', a + X)  # 矩阵的值加上标量
print('a * X:', a * X)
print((a * X).shape)

5、矩阵的sum运算

python 复制代码
print('5.矩阵的sum运算')
print('A:', A)
print('A.shape:', A.shape)
print('A.sum():', A.sum())
print('A.sum(axis=0):', A.sum(axis=0))  # 沿0轴汇总以生成输出向量
print('A.sum(axis=1):', A.sum(axis=1))  # 沿1轴汇总以生成输出向量
print('A.sum(axis=1, keepdims=True)', A.sum(axis=1, keepdims=True))  # 计算总和保持轴数不变
print('A.sum(axis=[0, 1]):', A.sum(axis=[0, 1]))  # Same as `A.sum()`
print('A.mean():', A.mean())
print('A.sum() / A.numel():', A.sum() / A.numel())


a=torch.ones((2,5,4))
a.shape
#结果:torch.Size([2, 5, 4])

a.sum(axis=1).shape#把中间那一维给丢掉了
#结果:torch.Size([2, 4])

a.sum(axis=1,keepdims=True).shape#保留了中间那一维
#结果:torch.Size([2, 1, 4])
python 复制代码
sum_A=A.sum(axis=1,keepdims=True)#计算总和或均值时保持轴数不变
print('sum_A:',sum_A)
print('通过广播将A除以sum_A:\n',A/sum_A)

6、向量相乘(点积)

python 复制代码
print('6.向量-向量相乘(点积)')
x = torch.arange(4, dtype=torch.float32)
y = torch.ones(4, dtype=torch.float32)
print('x:', x)
print('y:', y)
print('向量-向量点积:', torch.dot(x, y))#对应的相乘再相加

7、矩阵向量乘积(向量积)

python 复制代码
print('7.矩阵-向量相乘(向量积)')
print('A:', A)  # 5*4维
print('x:', x)  # 4*1维
print('torch.mv(A, x):', torch.mv(A, x))

8、矩阵相乘(向量积)

python 复制代码
print('8.矩阵-矩阵相乘(向量积)')
print('A:', A)  # 5*4维
B = torch.ones(4, 3)  # 4*3维
print('B:', B)
print('torch.mm(A, B):', torch.mm(A, B))

9、范数

python 复制代码
print('9.范数')#向量或者矩阵的长度
u = torch.tensor([3.0, -4.0])
print('向量的𝐿2范数:', torch.norm(u))  # 向量的𝐿2范数
print('向量的𝐿1范数:', torch.abs(u).sum())  # 向量的𝐿1范数
v = torch.ones((4, 9))
print('v:', v)
print('矩阵的𝐿2范数:', torch.norm(v))  # 矩阵的𝐿2范数

10、根据索引访问矩阵

python 复制代码
print('10.根据索引访问矩阵')
y = torch.arange(10).reshape(5, 2)
print('y:', y)
index = torch.tensor([1, 4])
print('y[index]:', y[index])
相关推荐
回眸&啤酒鸭4 天前
【回眸】Minicart 电商购物车核心功能落地指南
人工智能
一隅论数智4 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
默_笙4 天前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
AI的探索之旅4 天前
97 个 OpenCV 实例(三十):双目立体,从标定到点云
人工智能·opencv·计算机视觉
AlbertZein4 天前
Step-5-Preview 上手实测:3D 游戏、金融分析、网页设计一次跑完
人工智能·aigc
LaughingZhu4 天前
Product Hunt 每日热榜 | 2026-09-19
人工智能·深度学习·神经网络·搜索引擎·百度
qq_426003964 天前
启动playwright录制codegen生成自动化测试脚本
python·自动化
虎头金猫4 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
美狐美颜SDK开放平台4 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk