IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 菜菜PyTorch深度学习框架最全笔记(第一次课) -> 正文阅读

[人工智能]菜菜PyTorch深度学习框架最全笔记(第一次课)

最近在学深度学习PyTorch框架,本来想把本周学到的内容整合梳理分享给大家,但是突然搜索到有人已经把课件分享出来了,那么希望我这篇文章可以充当一个字典的作用,我大体提炼出一些内容和方法函数,具体的实现方法和细节我都附上课件的链接,相信两者结合会更加高效。

目录

学习建议:将张量和numpy中的array类比来进行理解和学习

一、张量的创建和常用方法

一些常见函数:

二、张量的索引、分片、合并及维度调整

1、张量的符号索引

2、张量的函数索引

3、tensor.view方法

4、张量的分片函数

5、张量的合并操作

6、张量的维度变换

三、张量的广播和科学运算

四、基本优化方法和最小二乘法

五、动态计算图和梯度下降算法

AutoGrad的回溯机制与动态计算图

反向传播与梯度计算

阻止计算图追踪??

识别叶节点??.is_leaf

学习建议:将张量和numpy中的array类比来进行理解和学习

一、张量的创建和常用方法

1、整数型的数组默认创建int32(整型)类型,而张量则默认创建int64(长整型)类型

2、创建浮点型数组时,张量默认是float32(单精度浮点型),而array则是默认float64

3、未来的应用当中,Torch中很多函数不能使用整型,要改成浮点数

一些常见函数:

t = torch.tensor()创建张量
t.ndim查看t的维度
t.numel返回总共拥有几个数
torch.rand(2,3)服从0-1分布
torch.randn(2,3)服从标准正态分布
torch.nomal(2,3,size =(2,2))服从指定正态分布张量(均值为2,标准差为3)
torch.arrange(1,5,0.5)从1到5(左闭右开),每隔0.5取值
torch.linspace(1,5,3)从一到5(左右都包括),等距取3个数
.float()、.int()对张量进行类型转换

t.flatten()

将张量压成一维
torch.zeros([2, 3])创建全0张量

torch.ones([2, 3])

创建全1张量
torch.eye(5)创建单位矩阵
torch.diag(t1)创建对角矩阵
torch.empty(2, 3)生成未初始化的指定形状矩阵
torch.full([2, 4], 2)根据指定形状,填充指定数值
_like

上述函数后面加上_like

根据指定对象的形状进行数值填充

item()转化为数值

4、张量的维度:

如何理解零维张量?目前,我们将零维张量视为拥有张量属性的单独一个数,没有方向。

为什么会有零维张量?张量可存在GPU上,但Python原生的数值型对象不行,所以使用零维张量代替一个单独的数值。

5、张量的深拷贝:

Python中其他对象类型一样,等号赋值操作实际上是浅拷贝,需要进行深拷贝,则需要使用clone方法

一些代码以及其余更多细节可参考文章:

Lesson 1.张量(Tensor)的创建和常用方法_Grateful_Dead424的博客-CSDN博客_python定义tensor

二、张量的索引、分片、合并及维度调整

1、张量的符号索引

一维张量的索引过程和Python原生对象类型的索引一致,基本格式遵循[start: end: step],索引的基本要点回顾如下。

二维张量的索引逻辑和一维张量的索引逻辑基本相同,二维张量可以视为两个一维张量组合而成,而在实际的索引过程中,需要用逗号进行分隔,分别表示对哪个一维张量进行索引、以及具体的一维张量的索引。

在二维张量索引的基础上,三维张量拥有三个索引的维度。我们将三维张量视作矩阵组成的序列,则在实际索引过程中拥有三个维度,分别是索引矩阵、索引矩阵的行、索引矩阵的列。

2、张量的函数索引

在PyTorch中,我们还可以使用index_select函数,通过指定index来对张量进行索引。

t1
#tensor([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10])
 
t1.ndim
#1
 
indices = torch.tensor([1, 2])
indices
#tensor([1, 2])
 
t1[1: 3]
#tensor([2, 3])
 
t1[[1, 2]]
#tensor([2, 3])
 
torch.index_select(t1, 0, indices)
#tensor([2, 3])

在index_select函数中,第二个参数实际上代表的是索引的维度。对于t1这个一维向量来说,由于只有一个维度,因此第二个参数取值为0,就代表在第一个维度上进行索引

3、tensor.view方法

在正式介绍张量的切分方法之前,需要首先介绍PyTorch中的.view()方法。该方法会返回一个类似视图的结果,该结果和原张量对象共享一块数据存储空间,并且通过.view()方法,还可以改变对象结构,生成一个不同结构,但共享一个存储空间的张量。当然,共享一个存储空间,也就代表二者是“浅拷贝”的关系,修改其中一个,另一个也会同步进行更改。

4、张量的分片函数

分块:chunk函数能够按照某维度,对张量进行均匀切分,并且返回结果是原张量的视图

拆分:split既能进行均分,也能进行自定义切分。当然,需要注意的是,和chunk函数一样,split返回结果也是view。

5、张量的合并操作

拼接函数:cat

堆叠函数:stack? (和拼接不同,堆叠不是将元素拆分重装,而是简单的将各参与堆叠的对象分装到一个更高维度的张量里)

6、张量的维度变换

此前我们介绍过,通过reshape方法,能够灵活调整张量的形状。而在实际操作张量进行计算时,往往需要另外进行降维和升维的操作,当我们需要除去不必要的维度时,可以使用squeeze函数,而需要手动升维时,则可采用unsqueeze函数

一些代码以及其余更多细节可参考文章:

Lesson 2.张量的索引、分片、合并以及维度调整_Grateful_Dead424的博客-CSDN博客

三、张量的广播和科学运算

Tensor基本数学运算:

Tensor数值调整函数:

?

Tensor常用科学计算:

  • tensor的大多数科学计算只能作用于tensor对象
  • tensor的大多数科学运算具有一定的静态性(?所谓静态性,指的是对输入的张量类型有明确的要求,例如部分函数只能输入浮点型张量,而不能输入整型张量。)

Tensor统计分析函数:

?Tensor比较运算函数:

?关于以上函数的详细解释和运用:

Lesson 3.张量的广播和科学运算_Grateful_Dead424的博客-CSDN博客

四、基本优化方法和最小二乘法

1、torch.lstsq(B, A)调用最小二乘法函数

2、torch.linalg.norm(t)求向量或矩阵的范数

3、torch.autograd.grad函数 通用微分函数,当只输入一个自变量时计算结果就是导数,输入多个自变量时则会计算偏导数

详情参考:

Lesson 5.基本优化思想与最小二乘法_Grateful_Dead424的博客-CSDN博客

五、动态计算图和梯度下降算法

AutoGrad的回溯机制与动态计算图

反向传播与梯度计算

阻止计算图追踪??

  • with torch.no_grad():阻止计算图记录
  • .detach()方法:创建一个不可导的相同张量

识别叶节点??.is_leaf

.backward()

.grad

详情参考:

Lesson 6.动态计算图与梯度下降入门_Grateful_Dead424的博客-CSDN博客

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-02-09 20:42:12  更:2022-02-09 20:42:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 19:46:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码