目录
前言
PyTorch 是一个 Python 深度学习框架,学习PyTorch在当今深度学习领域至关重要。PyTorch以其动态计算图、易于使用的API和强大的社区支持,成为科研人员、数据科学家及工程师的首选框架。它不仅简化了模型设计、训练与部署流程,还极大地提高了实验效率和创新能力。掌握PyTorch,能够加速科研进度,促进项目落地,是在AI时代保持竞争力的关键技能之一。满满的都是干货,希望能帮助到大家!
1. 张量的创建
1.1 张量的基本概念
-
PyTorch 是一个 Python 深度学习框架,它将数据封装成张量(Tensor)来进行运算。
-
PyTorch 中的张量就是元素为同一种数据类型的多维矩阵。
-
PyTorch 中,张量以 "类" 的形式封装起来,对张量的一些运算、处理的方法被封装在类中。
1.2 张量的基本创建
-
torch.tensor 根据指定数据创建张量
-
torch.Tensor 根据形状创建张量, 其也可用来创建指定数据的张量
-
torch.IntTensor、torch.FloatTensor、torch.DoubleTensor 创建指定类型的张量
1.3 创建线性和随机张量
-
torch.arange 和 torch.linspace 创建线性张量
-
torch.random.init_seed 和 torch.random.manual_seed 随机种子设置
-
torch.randn 创建随机张量
1.4 创建全01张量
-
torch.ones 和 torch.ones_like 创建全1张量
-
torch.zeros 和 torch.zeros_like 创建全0张量
-
torch.full 和 torch.full_like 创建全为指定值张量
1.5 张量的类型转换
-
tensor.type(torch.DoubleTensor)
-
torch.double()
1.6 小节
在本小节中,我们主要学习了以下内容:
-
创建张量的方式
-
torch.tensor 根据指定数据创建张量
-
torch.Tensor 根据形状创建张量, 其也可用来创建指定数据的张量
-
torch.IntTensor、torch.FloatTensor、torch.DoubleTensor 创建指定类型的张量
-
-
创建线性和随机张量
-
torch.arange 和 torch.linspace 创建线性张量
-
torch.random.init_seed 和 torch.random.manual_seed 随机种子设置
-
torch.randn 创建随机张量
-
-
创建01张量
-
torch.ones 和 torch.ones_like 创建全1张量
-
torch.zeros 和 torch.zeros_like 创建全0张量
-
torch.full 和 torch.full_like 创建全为指定值张量
-
-
张量元素类型转换
-
tensor.type(torch.DoubleTensor)
-
torch.double()
-
2. 张量的数值计算
2.1 张量基本运算
基本运算中,包括 add、sub、mul、div、neg 等函数, 以及这些函数的带下划线的版本 add_、sub_、mul_、div_、neg_,其中带下划线的版本为修改原数据。
2.2 阿达玛积
阿达玛积指的是矩阵对应位置的元素相乘. 可以使用乘号运算符、也可以使用 mul 函数来完成计算。
2.3 点积运算
点积运算要求第一个矩阵 shape: (n, m),第二个矩阵 shape: (m, p), 两个矩阵点积运算 shape 为: (n, p)。
-
运算符 @ 用于进行两个矩阵的点乘运算
-
torch.mm 用于进行两个矩阵点乘运算, 要求输入的矩阵为2维
-
torch.bmm 用于批量进行矩阵点乘运算, 要求输入的矩阵为3维
-
torch.matmul 对进行点乘运算的两矩阵形状没有限定.
-
对于输入都是二维的张量相当于 mm 运算.
-
对于输入都是三维的张量相当于 bmm 运算
-
对数输入的 shape 不同的张量, 对应的最后几个维度必须符合矩阵运算规则
-
2.4 指定设备运算
PyTorch 默认会将张量创建在 CPU 控制的内存中, 即: 默认的运算设备为 CPU。我们也可以将张量创建在 GPU 上, 能够利用对于矩阵计算的优势加快模型训练。将张量移动到 GPU 上有两种方法:
-
使用 cuda 方法
-
直接在 GPU 上创建张量
-
使用 to 方法指定设备
2.5 小节
在本小节中,我们主要学习的主要内容如下:
-
张量基本运算函数 add、sub、mul、div、neg 等函数, add、sub、mul、div、neg_ 等 inplace 函数
-
张量的阿达玛积运算 mul 和运算符 * 的用法
-
点积运算:
-
运算符 @ 用于进行两个矩阵的点乘运算
-
torch.mm 用于进行两个矩阵点乘运算, 要求输入的矩阵为2维
-
torch.bmm 用于批量进行矩阵点乘运算, 要求输入的矩阵为3维
-
torch.matmul 对进行点乘运算的两矩阵形状没有限定.
-
对于输入都是二维的张量相当于 mm 运算.
-
对于输入都是三维的张量相当于 bmm 运算
-
对数输入的 shape 不同的张量, 对应的最后几个维度必须符合矩阵运算规则
-
-
-
将变量移动到 GPU 设备的方法,例如: cuda 方法、直接在 GPU 上创建张量、使用 to 方法指定设备