【深度学习之PyTorch】

目录

一、什么是PyThon?

二、张量的创建

[2.1 指定数据创建](#2.1 指定数据创建)

[2.2 指定形状、指定数据创建](#2.2 指定形状、指定数据创建)

[2.3 创建指定类型的张量](#2.3 创建指定类型的张量)

[2.4 创建线性张量](#2.4 创建线性张量)

[2.5 创建随机张量](#2.5 创建随机张量)

[2.6 创建全0张量](#2.6 创建全0张量)

[2.7 创建全1张量](#2.7 创建全1张量)

[2.8 创建指定张量](#2.8 创建指定张量)

[2.9 总结](#2.9 总结)

三、张量的类型转换

[3.1 张量元素的类型转换](#3.1 张量元素的类型转换)

[3.2 张量转换为numpy数组](#3.2 张量转换为numpy数组)

[3.3 numpy转换为张量](#3.3 numpy转换为张量)

[3.4 标量张量和数字转换](#3.4 标量张量和数字转换)

[3.5 总结](#3.5 总结)

四、张量的数值计算

[4.1 张量基本运算](#4.1 张量基本运算)

[4.2 点乘运算](#4.2 点乘运算)

[4.3 矩阵乘法运算](#4.3 矩阵乘法运算)

[4.4 总结](#4.4 总结)

五、张量运算函数

六、张量索引操作

[6.1 简单行、列索引](#6.1 简单行、列索引)

[6.2 列表索引](#6.2 列表索引)

[6.3 范围索引](#6.3 范围索引)

[6.4 布尔索引](#6.4 布尔索引)

[6.5 多维索引](#6.5 多维索引)

七、张量形状操作

[7.1 reshape()函数](#7.1 reshape()函数)

[7.2 squeez()降维、unsqueeze ()升维](#7.2 squeez()降维、unsqueeze ()升维)

[7.3 transpose()和permute()函数指定维度](#7.3 transpose()和permute()函数指定维度)

[7.4 view()和contiguous()函数修改张量形状](#7.4 view()和contiguous()函数修改张量形状)

[7.5 总结](#7.5 总结)

八、张量拼接操作

九、自动微分模块

十、案例(线性回归)

[1 导入工具包](#1 导入工具包)

[2 数据集构建](#2 数据集构建)

[3 使用dataloader构建数据加载器并进行模型构建](#3 使用dataloader构建数据加载器并进行模型构建)

[4 设置损失函数和优化器](#4 设置损失函数和优化器)

[5 模型训练](#5 模型训练)

[6 构建训练模型函数](#6 构建训练模型函数)


一、什么是PyThon?

**PyThon:**一个 Python 深度学习框架,它将数据封装成张量(Tensor)来进行处理。PyTorch 中的张量就是元素为同一种数据类 型的多维矩阵。在 PyTorch 中,张量以 "类" 的形式封装起来,对张量的一些运算、处理的方法被封装在类中

Pytorch的安装 :pip install torch===1.10.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

二、张量的创建

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 构建训练模型函数

相关推荐
小a杰.1 小时前
Flutter 与 AI 深度集成指南:从基础实现到高级应用
人工智能·flutter
colorknight1 小时前
数据编织-异构数据存储的自动化治理
数据仓库·人工智能·数据治理·数据湖·数据科学·数据编织·自动化治理
Lun3866buzha2 小时前
篮球场景目标检测与定位_YOLO11-RFPN实现详解
人工智能·目标检测·计算机视觉
janefir2 小时前
LangChain框架下DirectoryLoader使用报错zipfile.BadZipFile
人工智能·langchain
齐齐大魔王2 小时前
COCO 数据集
人工智能·机器学习
AI营销实验室3 小时前
原圈科技AI CRM系统赋能销售新未来,行业应用与创新点评
人工智能·科技
爱笑的眼睛113 小时前
超越MSE与交叉熵:深度解析损失函数的动态本质与高阶设计
java·人工智能·python·ai
tap.AI3 小时前
RAG系列(一) 架构基础与原理
人工智能·架构
北邮刘老师4 小时前
【智能体互联协议解析】北邮ACPs协议和代码与智能体互联AIP标准的关系
人工智能·大模型·智能体·智能体互联网
亚马逊云开发者4 小时前
使用Amazon Q Developer CLI快速构建市场分析智能体
人工智能