Pytorch学习笔记-01Tensor

简介: Pytorch学习笔记-01Tensor

简介:深度之眼Pytorch框架班学习笔记


2017年 1 月, FAIR( FacebookAI Research )发布 PyTorch


PyTorch是在 Torch 基础上用python 语言重新打造的一款深度学习框架


Torch是采用 Lua 语言为接口的机器学习框架,但因 Lua 语言较为小众,导致 Torch 知名度不高



Why Pytorch?


上手快 :掌握 Numpy 和基本深度学习概念即可上手


代码简洁灵活 :用 nn.module 封装使网络搭建更方便;基于动态图机制,更灵活


Debug 方便 :调试 PyTorch 就像调试 Python 代码一样简单


文档规范 https://pytorch.org/docs/ 可查各版本文档


资源多 arXiv 中的新算法大多有 PyTorch 实现


开发者多 GitHub 上贡献者已超过 1100+


背靠大树 FaceBook 维护开发


Pytorch的张量


张量是什么?

张量是一个多维数组 ,它是标量、向量、矩阵的高维拓展



张量的创建

1 直接创建:

torch.tensor()

功能:从data 创建 tensor


data : 数据 , 可以是 list, numpy

dtype : 数据类型,默认与 data 的一致

device 所在设备 , cuda cpu

requires_grad :是否需要梯度

pin_memory :是否存于锁页内存

2 依据数值创建

torch.zeros

功能:依size 创建全 0 张量


size : 张量的形状 , 如 (3, 、 (3,

out : 输出的张量

layout 内存中布局形式 , 有

strided,sparse_coo 等

device 所在设备 , gpu cpu

requires_grad :是否需要梯度

torch.zeros_like()


功能:依input形状创建全0张量

intput: 创建与input同形状的全0张量

dtype : 数据类型

layout : 内存中布局形式

2.3 torch.ones()

2.4 torch.ones_like()


2.5 torch.full()

2.6 torch.full_like()


2.7 torch.arange()

功能:创建等差的1维张量

注意事项:数值区间为[start, end)


2.8 torch.linspace()

功能:创建均分的1维张量

注意事项:数值区间为[start, end]


2.9 torch.logspace()

功能:创建对数均分的1维张量

注意事项:长度为steps, 底为base


2.10 torch.eye()

功能:创建单位对角矩阵( 2维张量)

注意事项:默认为方阵


3 依概率分布创建张量

3.1 torch.normal()

功能:生成正态分布(高斯分布)


mean : 均值

std : 标准差

四种模式:


mean为标量,std为标量

mean为标量,std为张量

mean为张量,std为标量

mean为张量,std为张量


3.2 torch.randn()

3.3 torch.randn_like()

功能:生成标准正态分布


3.4 torch.rand()

3.5 torch.rand_like()

功能:在区间[0, 1)上,生成均匀分布


3.6 torch.randint()

3.7 torch.randint_like()

功能:区间[low, high)生成整数均匀分布


3.8 torch.randperm()

功能:生成生成从0到n-1的随机排列


3.9 torch.bernoulli()

功能:以input为概率,生成伯努力分布

(0-1分布,两点分布)


张量操作

张量拼接与切分

1.1 torch.cat()

功能:将张量按维度dim进行拼接


1.2 torch.stack()

功能:在新创建的维度dim上进行拼接


1.3 torch.chunk()

功能:将张量按维度dim进行平均切分

返回值:张量列表

注意事项:若不能整除,最后一份张量小于

其他张量


1.4 torch.split()

功能:将张量按维度dim进行切分

返回值:张量列表


张量索引

2.1 torch.index_select()

功能:在维度dim上,按index索引数据

返回值:依index索引数据拼接的张量


2.2 torch.masked_select()

功能:按mask中的True进行索引

返回值:一维张量


张量变换

3.1 torch.reshape()

功能:变换张量形状

注意事项:当张量在内存中是连续时,新张

量与input共享数据内存


3.2 torch.transpose()

功能:交换张量的两个维度


3.4 torch.squeeze()

功能:压缩长度为1的维度(轴)


dim: 若为None,移除所有长度为1的轴;若指定维度,当且仅当该轴长度为1时,可以被移除;


3.5 torch.unsqueeze()

功能:依据dim扩展维度


张量数学运算

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tVkG4ica-1636977797700)(https://i.loli.net/2021/11/15/2VHtkSMmdP36cOs.png)]


计算图


计算图是用来描述运算的有向无环图


计算图有两个主要元素:结点(Node)和边(Edge)


结点表示数据,如向量,矩阵,张量

边表示运算,如加减乘除卷积等


计算图与梯度求导



动态图vs 静态图

Dynamic VS Static Computational Graphs


根据计算图搭建方式,可将计算图分为动态图和静态图


动态图:先搭建图,后运算


灵活 易调节


静态图:


运算与搭建同时进行


autograd-自动求导系统

torch.autograd.backward()


功能:自动求取梯度


tensors: 用于求导的张量,如 loss

retain_graph : 保存计算图

create_graph : 创建导数计算图,用于高阶求导

grad_tensors:多梯度权重

autograd小贴士:


1.梯度不自动清零

2.依赖于叶子结点的结点,requires_grad默认为True


autograd-自动求导系统


torch.autograd.backward()


功能:自动求取梯度


tensors: 用于求导的张量,如 loss

retain_graph : 保存计算图

create_graph : 创建导数计算图,用于高阶求导

grad_tensors:多梯度权重


autograd小贴士:


1.梯度不自动清零

2.依赖于叶子结点的结点,requires_grad默认为True

3.叶子结点不可执行in-place

目录
相关文章
|
4月前
|
PyTorch 算法框架/工具 Python
Pytorch学习笔记(十):Torch对张量的计算、Numpy对数组的计算、它们之间的转换
这篇文章是关于PyTorch张量和Numpy数组的计算方法及其相互转换的详细学习笔记。
72 0
|
4月前
|
算法 PyTorch 算法框架/工具
Pytorch学习笔记(九):Pytorch模型的FLOPs、模型参数量等信息输出(torchstat、thop、ptflops、torchsummary)
本文介绍了如何使用torchstat、thop、ptflops和torchsummary等工具来计算Pytorch模型的FLOPs、模型参数量等信息。
611 2
|
4月前
|
机器学习/深度学习 PyTorch 算法框架/工具
Pytorch学习笔记(八):nn.ModuleList和nn.Sequential函数详解
PyTorch中的nn.ModuleList和nn.Sequential函数,包括它们的语法格式、参数解释和具体代码示例,展示了如何使用这些函数来构建和管理神经网络模型。
326 1
|
4月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
本文介绍了PyTorch中的F.softmax()和F.log_softmax()函数的语法、参数和使用示例,解释了它们在进行归一化处理时的作用和区别。
630 1
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
|
4月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(六):view()和nn.Linear()函数详解
这篇博客文章详细介绍了PyTorch中的`view()`和`nn.Linear()`函数,包括它们的语法格式、参数解释和具体代码示例。`view()`函数用于调整张量的形状,而`nn.Linear()`则作为全连接层,用于固定输出通道数。
203 0
Pytorch学习笔记(六):view()和nn.Linear()函数详解
|
4月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(五):nn.AdaptiveAvgPool2d()函数详解
PyTorch中的`nn.AdaptiveAvgPool2d()`函数用于实现自适应平均池化,能够将输入特征图调整到指定的输出尺寸,而不需要手动计算池化核大小和步长。
360 1
Pytorch学习笔记(五):nn.AdaptiveAvgPool2d()函数详解
|
4月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(四):nn.MaxPool2d()函数详解
这篇博客文章详细介绍了PyTorch中的nn.MaxPool2d()函数,包括其语法格式、参数解释和具体代码示例,旨在指导读者理解和使用这个二维最大池化函数。
266 0
Pytorch学习笔记(四):nn.MaxPool2d()函数详解
|
4月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(三):nn.BatchNorm2d()函数详解
本文介绍了PyTorch中的BatchNorm2d模块,它用于卷积层后的数据归一化处理,以稳定网络性能,并讨论了其参数如num_features、eps和momentum,以及affine参数对权重和偏置的影响。
455 0
Pytorch学习笔记(三):nn.BatchNorm2d()函数详解
|
4月前
|
机器学习/深度学习 PyTorch TensorFlow
Pytorch学习笔记(二):nn.Conv2d()函数详解
这篇文章是关于PyTorch中nn.Conv2d函数的详解,包括其函数语法、参数解释、具体代码示例以及与其他维度卷积函数的区别。
564 0
Pytorch学习笔记(二):nn.Conv2d()函数详解
|
4月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(一):torch.cat()模块的详解
这篇博客文章详细介绍了Pytorch中的torch.cat()函数,包括其定义、使用方法和实际代码示例,用于将两个或多个张量沿着指定维度进行拼接。
210 0
Pytorch学习笔记(一):torch.cat()模块的详解

推荐镜像

更多