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

介绍:

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

  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])
相关推荐
好看资源平台12 分钟前
网络爬虫——综合实战项目:多平台房源信息采集与分析系统
爬虫·python
余生H13 分钟前
transformer.js(三):底层架构及性能优化指南
javascript·深度学习·架构·transformer
果冻人工智能32 分钟前
2025 年将颠覆商业的 8 大 AI 应用场景
人工智能·ai员工
代码不行的搬运工33 分钟前
神经网络12-Time-Series Transformer (TST)模型
人工智能·神经网络·transformer
进击的六角龙33 分钟前
深入浅出:使用Python调用API实现智能天气预报
开发语言·python
檀越剑指大厂33 分钟前
【Python系列】浅析 Python 中的字典更新与应用场景
开发语言·python
石小石Orz35 分钟前
Three.js + AI:AI 算法生成 3D 萤火虫飞舞效果~
javascript·人工智能·算法
罗小罗同学41 分钟前
医工交叉入门书籍分享:Transformer模型在机器学习领域的应用|个人观点·24-11-22
深度学习·机器学习·transformer
湫ccc41 分钟前
Python简介以及解释器安装(保姆级教学)
开发语言·python
孤独且没人爱的纸鹤44 分钟前
【深度学习】:从人工神经网络的基础原理到循环神经网络的先进技术,跨越智能算法的关键发展阶段及其未来趋势,探索技术进步与应用挑战
人工智能·python·深度学习·机器学习·ai