- 随机张量的生成:torch.randn函数
- 卷积和池化的计算公式(可以不掌握,模型会自动计算的)
- pytorch的广播机制:加法和乘法的广播机制
ps:numpy运算也有类似的广播机制,基本一致
作业:借助ai举几个例子帮助自己理解
一、PyTorch张量
1.张量的定义
张量(Tensor)是深度学习中,PyTorch操作的基本数据类型,详细解释如下
张量是多维数组的泛化,可以看作是标量、向量、矩阵的高维扩展。例如:
-
标量(0维张量):只有一个数值,如
5
。 -
向量(1维张量):一维数组,如
[1, 2, 3]
。 -
矩阵(2维张量):二维数组,如
[[1, 2], [3, 4]]
。 -
更高维的张量:如三维张量可以表示图像数据(高×宽×通道数)。
2.生成随机张量
(1)使用场景:权重的初始化,或者计算输入纬度经过模块后输出的维度
(2)常用函数:
torch.randn(size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)
- size:必选参数,表示输出张量的形状,如(3, 4)表示 3 行 4 列的矩阵
- dtype:可选参数,指定张量的数据类型,如torch.float32、torch.int64
- device:可选参数,指定张量存储的设备,如cpu或cuda)
- requires_grad:可选参数,是否需要计算梯度,常用于训练模型时
二、PyTorch广播机制
PyTorch 的广播机制是一种张量运算性质(即自动扩展特性),允许在不同形状的张量之间进行运算(如加法、乘法),而无需显式扩展或复制数据。这种机制通过自动调整张量维度来实现形状兼容,使代码更简洁、计算更高效。
当对两个形状不同的张量进行运算时,PyTorch 会按以下规则自动调整维度,使两个张量相互兼容:
1. 从右向左比较维度:PyTorch 从张量的最后一个维度(最右侧)开始向前逐维比较。
2. 维度扩展条件:
- 相等维度:若两个张量在某一维度上大小相同,则继续比较下一维度。
- 一维扩展:若其中一个张量在某一维度上大小为 1,则该维度会被扩展为另一个张量对应维度的大小。
- 不兼容错误:若某一维度大小既不相同也不为 1,则抛出 RuntimeError。-----维度必须满足广播规则,否则会报错。
3. 维度补全规则:若一个张量的维度少于另一个,则在其左侧补 1, 直至维度数匹配。