目录
一、什么是PyThon?
二、张量的创建
2.1 指定数据创建
2.2 指定形状、指定数据创建
2.3 创建指定类型的张量
2.4 创建线性张量
2.5 创建随机张量
2.6 创建全0张量
2.7 创建全1张量
2.8 创建指定张量
2.9 总结
三、张量的类型转换
3.1 张量元素的类型转换
3.2 张量转换为numpy数组
3.3 numpy转换为张量
3.4 标量张量和数字转换
3.5 总结
四、张量的数值计算
4.1 张量基本运算
4.2 点乘运算
4.3 矩阵乘法运算
4.4 总结
五、张量运算函数
六、张量索引操作
6.1 简单行、列索引
6.2 列表索引
6.3 范围索引
6.4 布尔索引
6.5 多维索引
七、张量形状操作
7.1 reshape()函数
7.2 squeez()降维、unsqueeze ()升维
7.3 transpose()和permute()函数指定维度
7.4 view()和contiguous()函数修改张量形状
7.5 总结
八、张量拼接操作
九、自动微分模块
十、案例(线性回归)
1 导入工具包
2 数据集构建
3 使用dataloader构建数据加载器并进行模型构建
4 设置损失函数和优化器
5 模型训练
6 构建训练模型函数
一、什么是PyThon?
PyThon:一个 Python 深度学习框架,它将数据封装成张量(Tensor)来进行处理。PyTorch 中的张量就是元素为同一种数据类 型的多维矩阵。在 PyTorch 中,张量以 "类" 的形式封装起来,对张量的一些运算、处理的方法被封装在类中
Pytorch的安装:pip install torch===1.10.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
conda 安装及操作:
二、张量的创建
torch.tensor 根据指定数据创建张量
torch.Tensor 根据形状创建张量, 其也可用来创建指定数据的张量
torch.IntTensor、torch.FloatTensor、torch.DoubleTensor 创建指定类型的张量
torch.arange 和 torch.linspace 创建线性张量
torch.random.init_seed 和 torch.random.manual_seed 随机种子设置
torch.randn 创建随机张量
torch.ones 和 torch.ones_like 创建全1张量
torch.zeros 和 torch.zeros_like 创建全0张量
torch.full 和 torch.full_like 创建全为指定值张量
2.1 指定数据创建
torch.tensor():
2.2 指定形状、指定数据创建
torch.Tensor():
2.3 创建指定类型的张量
torch.IntTensor()、torch.FloatTensor()、torch.DoubleTensor()
2.4 创建线性张量
torch.arange()、torch.linspace() 创建线性张量
2.5 创建随机张量
torch.random.initial_seed()、torch.random.manual_seed() 随机数种子设置,torch.randn() 创建随机张量
2.6 创建全0张量
torch.zeros()、torch.zeros_like() 创建全0张量
2.7 创建全1张量
torch.ones()、torch.ones_like() 创建全1张量
2.8 创建指定张量
torch.full()、torch.full_like() 创建全为指定值张量
2.9 总结
三、张量的类型转换
3.1 张量元素的类型转换
①data.type(torch.DoubleTensor)
②data.double()
3.2 张量转换为numpy数组
使用 Tensor.numpy 函数可以将张量转换为 ndarray 数组,但是共享内存,可 以使用 copy 函数避免共享。
3.3 numpy转换为张量
使用 from_numpy 可以将 ndarray 数组转换为 Tensor,默认共享内存,使用 copy 函数避 免共享。
使用 torch.tensor 可以将 ndarray 数组转换为 Tensor,默认不共享内存。
3.4 标量张量和数字转换
3.5 总结
四、张量的数值计算
4.1 张量基本运算
加减乘除取负号:
add、sub、mul、div、neg
add_、sub_、mul_、div_、neg_(其中带下划线的版本会修改原数据)
4.2 点乘运算
点乘指(Hadamard)的是两个同维矩阵对应位置的元素相乘,使用 mul 和运算符 * 实现 。
4.3 矩阵乘法运算
矩阵乘法运算要求第一个矩阵 shape: (n, m),第二个矩阵 shape: (m, p), 两个矩阵点积运算 shape 为: (n, p)。
1.运算符 @ 用于进行两个矩阵的乘积运算
2.torch.matmul 对进行乘积运算的两矩阵形状没有限定.对数输入的 shape 不同的张量, 对应的最后几个维度必须符合 矩阵运算规则
4.4 总结
五、张量运算函数
PyTorch 为每个张量封装很多实用的计算函数:
均值 平方根 求和 指数计算 对数计算等等
六、张量索引操作
数据准备:
6.1 简单行、列索引
6.2 列表索引
6.3 范围索引
6.4 布尔索引
6.5 多维索引
七、张量形状操作
7.1 reshape()函数
7.2 squeez()降维、unsqueeze ()升维
7.3 transpose()和permute()函数指定维度
7.4 view()和contiguous()函数修改张量形状
7.5 总结
八、张量拼接操作
torch.cat()
torch.cat()函数可以将两个张量根据指定的维度拼接起来,不改变维度数。
九、自动微分模块
自动微分模块
训练神经网络时,最常用的算法就是反向传播。在该算法中,参数(模型权重)会根据损失函数关于对应 参数的梯度进行调整。为了计算这些梯度,PyTorch内置了名为 torch.autograd 的微分引擎。它支持任意 计算图的自动梯度计算:
使用 backward 方法、 grad 属性来实 现梯度的计算和访问
十、案例(线性回归)
我们使用 PyTorch 的各个组件来构建线性回归的实现。在pytorch中进行模型构建的整个流程一般分为四 个步骤:
l 准备训练集数据
l 构建要使用的模型
l 设置损失函数和优化器
l 模型训练
要使用的API
①使用 PyTorch 的 nn.MSELoss() 代替自定义的 平方损失函数
②使用 PyTorch 的 data.DataLoader 代替自定义的 数据加载器
③使用 PyTorch 的 optim.SGD 代替自定义的 优化器
④使用 PyTorch 的 nn.Linear 代替自定义的 假设函数
1 导入工具包
2 数据集构建
3 使用dataloader构建数据加载器并进行模型构建
4 设置损失函数和优化器
5 模型训练
6 构建训练模型函数