【深度学习之PyTorch】

news/2025/1/15 6:44:23/

目录

一、什么是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 构建训练模型函数


http://www.ppmy.cn/news/1562912.html

相关文章

加强移动应用安全,应用加固不可或缺

随着移动设备的普及,手机应用已经成为我们生活中不可或缺的一部分。无论是在线购物、银行支付,还是日常通讯、娱乐,移动应用都在处理中大量敏感数据,这使得它们成为网络攻击者的主要目标。针对这一不断加剧的安全威胁,…

109周四复盘 (183)慢速

1、关键词: 战斗体验、慢速 2、昨晚新增了伤害数值UI,虽然只是简单的数字动画,但对打击感还是有所帮助的。 3、白天主要是某关卡的战斗体验优化, 起初的版本问题很多,但一直没有下决心去彻底解决,各种杂事…

基于ILI9341液晶屏+STM32U5单片的显示试验

试验要求: 1、通过串口,下发两个命令 STR和PIC; 2、STR模式: (1)串口输入什么,屏幕上显示什么 (2)如果屏幕满,自动下滚 (3)输入回车&a…

【轻量级推荐算法框架】‌ReChorus‌ 是一个高效、可扩展的轻量级推荐算法框架

‌ReChorus‌ 是一个高效、可扩展的轻量级推荐算法框架,基于PyTorch实现。该框架旨在解决推荐系统中算法实现细节、评价方式、数据集处理等方面的差异,帮助缓解可复现性问题。ReChorus实现了多种不同类型的推荐算法,包括常规推荐、序列推荐、…

STM32供电参考设计

STM32供电参考设计 ​ 在图中有VDD,VSS和VDDA,VSSA两种类型的供电引脚,其数据手册解释如下: ​ 令我不解的是:VDDA和VSSA必须分别连接到VDD和VSS,这是什么意思?有大佬能够解答一下吗&#xff1f…

Python Selenium 库学习指南

Python Selenium 库学习指南 目录 Selenium 基础介绍 Selenium 是什么安装 SeleniumSelenium 的工作原理 Selenium 基本用法 启动浏览器定位元素常见操作:点击、输入、滚动 高级用法 切换窗口与标签页模拟鼠标操作与键盘输入动态加载的网页处理 等待机制 显式等待…

Transformer:深度学习的变革力量

深度学习领域的发展日新月异,在自然语言处理(NLP)、计算机视觉等领域取得了巨大突破。然而,早期的循环神经网络(RNN)在处理长序列时面临着梯度消失、并行计算能力不足等瓶颈。而 Transformer 的横空出世&am…

微服务的配置共享

1.什么是微服务的配置共享 微服务架构中,配置共享是一个重要环节,它有助于提升服务间的协同效率和数据一致性。以下是对微服务配置共享的详细阐述: 1.1.配置共享的概念 配置共享是指在微服务架构中,将某些通用或全局的配置信息…