【深度学习之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 构建训练模型函数

相关推荐
老蒋新思维几秒前
创客匠人 2025 高峰论谈(11.22-25):AI 智能体重构创始人 IP 打造与知识变现的管理逻辑
大数据·网络·人工智能·网络协议·tcp/ip·重构·知识付费
嵌入式-老费4 分钟前
自己动手写深度学习框架(pytorch转ncnn)
人工智能·pytorch·深度学习
咚咚王者17 分钟前
人工智能之数据分析 numpy:第八章 数组广播
人工智能·数据分析·numpy
工业机器视觉设计和实现19 分钟前
我的第一个cudnn(cuda)人工智能程序(lenet)
人工智能
我叫侯小科25 分钟前
PyTorch 实战:手写数字识别(MNIST)从入门到精通
人工智能·pytorch·python
Sirius Wu29 分钟前
开源训练框架:MS-SWIFT详解
开发语言·人工智能·语言模型·开源·aigc·swift
Baihai_IDP31 分钟前
当前的“LLM 智能”,是来自模型突破,还是工程堆砌?
人工智能·llm·aigc
Gitpchy34 分钟前
Day 47 注意力热图可视化
python·深度学习·cnn
IT_陈寒34 分钟前
Redis 性能提升30%的7个关键优化策略,90%开发者都忽略了第3点!
前端·人工智能·后端
慕云紫英41 分钟前
投票理论(voting theory)(social choice theory)
人工智能·aigc