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

目录
相关文章
|
5月前
|
机器学习/深度学习 存储 PyTorch
PyTorch基本数据类型tensor
PyTorch基本数据类型tensor
59 2
|
5月前
|
存储 PyTorch 算法框架/工具
PyTorch 中的 Tensor:属性、数据生成和基本操作
PyTorch 中的 Tensor:属性、数据生成和基本操作
141 0
|
数据采集 PyTorch 数据处理
Pytorch学习笔记(3):图像的预处理(transforms)
Pytorch学习笔记(3):图像的预处理(transforms)
1197 1
Pytorch学习笔记(3):图像的预处理(transforms)
|
机器学习/深度学习 缓存 监控
Pytorch学习笔记(7):优化器、学习率及调整策略、动量
Pytorch学习笔记(7):优化器、学习率及调整策略、动量
817 0
Pytorch学习笔记(7):优化器、学习率及调整策略、动量
|
2月前
|
PyTorch 算法框架/工具
【Pytorch】解决Fan in and fan out can not be computed for tensor with fewer than 2 dimensions
本文提供了两种解决PyTorch中由于torchtext版本问题导致的“Fan in and fan out can not be computed for tensor with fewer than 2 dimensions”错误的方法。
59 2
|
5月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【PyTorch】-了解张量(Tensor)
【PyTorch】-了解张量(Tensor)
|
5月前
|
机器学习/深度学习 存储 PyTorch
PyTorch深度学习基础:张量(Tensor)详解
【4月更文挑战第17天】本文详细介绍了PyTorch中的张量,它是构建和操作深度学习数据的核心。张量是多维数组,用于存储和变换数据。PyTorch支持CPU和GPU张量,后者能加速大规模数据处理。创建张量可通过`torch.zeros()`、`torch.rand()`或直接从Python列表转换。张量操作包括数学运算、切片和拼接。在深度学习中,张量用于神经网络模型的构建和训练。理解张量对于掌握PyTorch至关重要。
|
5月前
|
存储 机器学习/深度学习 PyTorch
PyTorch核心--tensor 张量 !!
PyTorch核心--tensor 张量 !!
53 1
|
数据采集 机器学习/深度学习 PyTorch
Pytorch学习笔记(5):torch.nn---网络层介绍(卷积层、池化层、线性层、激活函数层)
Pytorch学习笔记(5):torch.nn---网络层介绍(卷积层、池化层、线性层、激活函数层)
691 0
Pytorch学习笔记(5):torch.nn---网络层介绍(卷积层、池化层、线性层、激活函数层)
|
存储 PyTorch 算法框架/工具
Pytorch学习笔记(4):模型创建(Module)、模型容器(Containers)、AlexNet构建
Pytorch学习笔记(4):模型创建(Module)、模型容器(Containers)、AlexNet构建
112 0
Pytorch学习笔记(4):模型创建(Module)、模型容器(Containers)、AlexNet构建

热门文章

最新文章

下一篇
无影云桌面