Pytorch框架基础

news2024/10/7 12:23:23

目录

1-02张量的简介与创建

pytorch中的Tensor

张量的创建

1-03张量的操作

1. 拼接

2.张量的拼接与切分

3.张量索引

4.张量变换


1-02张量的简介与创建

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

pytorch中的Tensor

在pytorch中的属性主要有8个

data:张量的数据类型,如torch.FloatTensor,torch.cuda.FloatTensor

shape:张量的形状

devcie:张量所在设备,如GPU/CPU

张量的创建

 1:直接创建

Torch.tensor(data,dtype=None,device=None,requires_grad=False,pin_memory=False)

各参数解释

从numpy创建tensor

torch.form_numpy(ndarray).

从torch.form_numpy(ndarray)创建的tensor与原ndarray共享内存,当修改其中的一个数据另一也会被改动。

2:依据数值创建

torch.zero(*size,out=None,dtype=None,layout=torch.stride,required_grad=False)

torch.zeros_like(input,dtype=None,layout=None,required_grad=False):功能是根据input形状创建全0张量

创建全1张量,只需要将上述的zeros替换成ones即可。

创建自定义数值的张量分别为:torch.full()和torch.full_like().比如torch.full((3,3),10) 为创建一个3*3的值为10的张量。

 创建等差的一维张量:torch.arange()--比如torch.arange(2,10,2).则创建的一维张量为[2,4,6,8]

创建均分的一维张量:torch.linspace(2,10,5)创建的一维张量为([2,4,6,8,10])使用这个函数的步长为[strat-end]/steps-1

3:依据概率分布创建张量

生成正态分布:torch.normal(mean,std,out=None).mean为均值,std为标准1

生成标准正态分布:torch.randn(),torch.randn_like()生成一个均值为0,标准差为1的标准正态分布。

 torch.rand(),torch.rand_like()在区间[0,1]上生成均匀分布

torch.randint();torch.randint_like()在区间[low,high]生成整数均匀分布。

1-03张量的操作

1. 拼接

torch.cat():将张量按维度dim进行拼接

torch.stack():在新创建的维度dim上进行拼接

两者的区别在于,cat()是在原有的张量的维度上进行拼接,不会拓展张量的维度。stack()是在新创建的维度上,如果选择的维度已经存在,那原有的维度往后移。

这两个函数的主要参数都是:tensors:张量序列 dim:要拼接的维度。

2.张量的拼接与切分

torch.chunk():将张量按维度dim进行平均切分,返回值为张量列表。(若不能整除,最后一份张量小于其他张量)input:要切分的张量,Chunks要切分的份数。Dim要切分的维度。

torch.split():按照张量指定的维度进行切分。Tensor:要切分的张量。Split_size_or_sections:为int时,表示每一份的长度,为list时,按list中元素切分,也就是切分得到张量中个数和list的元素对应。Dim:要切分的维度。

3.张量索引

torch.index_select():在维度dim上,按照index索引数据。返回值是依照index索引数据拼接的张量。 Input:要索引的张量。Dim:索引的维度。Index:要索引的序号

Torch.masked_select() :按mask中True进行索引。 返回值为一维张量。 Input:要索引的张量。Mask:与input同形状的布尔类型张量。

4.张量变换

Torch.reshape() :变换张量形状。注意:当张量在内存中连续时,新张量与input共享数据内存(一改全改)。 Input:要变换的张量。 Shape:新张量的形状。

Torch.transpose() :交换张量的两个维度。 Input:要变换的张量。 Dim0:要交换的维度。Dim1:要交换的维度

Torch.t() :2维张量转置,对矩阵而言等价于torch.transpose(input,0,1)

Torch.squeeze() :压缩长度为1的维度(轴)  dim:若为None,移除所有长度为1的轴,若指定维度当且仅当该轴长度为1时可以被移除。(当且仅当指定的轴长度为1时才会被移除)

Torch.unsqueeze() 依据dim扩展维度,dim:扩展的维度。(扩展的维度的轴的长度为1)

1-04计算图与动态图机制

计算图是用来描述运算的有向无环图,计算图主要有两个主要元素:结点和表。结点表示数据,如向量,矩阵,张量。边表示运算,如加减乘除卷积等。

动态图:运算与搭建同时进行。灵活,易调节

静态图:先搭建图,后运算。高效,不灵活

叶子结点:用户创建的结点称为叶子结点,如x与w

1-05自动求导和Logist回归

1:Autograd:自动求导系统

torch.autograd.backward:自动求导梯度

torch.autograd.grad 求取梯度 这里进行高阶求导时,需要在低阶中 torch.autograd.grad(y,x,create_graph=True)#create_graph=True这里是创建导数的计算图。

注意1)在autograd中梯度不自动清0
2)依赖于叶子结点的结点,requires_grad默认为True

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

2:Logist回归

逻辑回归模型是线性的二分类模型

机器学习模型训练步骤: 数据 模型 损失函数 优化器

2-01DataLoader和Dataset

机器学习学习模型训练包括五大步骤:数据,模型,损失函数,优化器,迭代训练

数据模块包括:1)数据收集:img;label 2)数据划分train训练模型,valid验证模型是否过拟合,test用于测试性能 3.)数据读取:DataLoader 4)数据预处理:transforms

其中DataLodaer还会继续细分为Sampler和DataSet,其中Sampler的功能是生成索引(也就是样本的序号),而Dataset是根据索引去读取图片以及其标签

DataLoader

torch.utils.data.Dataloader构建可迭代的数据装载器

常用参数:

dataset,batchsize,num_works,shuffle,drop_last

注意:

Epoch:所有训练样本都已输入到模型中

Iteration:一批样本输入到模型中

Batchsize:批大小,决定一个Epoch有多少个Iteration

DataSet

 

其中返回的这个样本包括数据和其对应标签。主要通过__getitem__()来读取数据

 整体流程可以用下图表示:

首先在For循环中使用DataLoader,经过DataLoader之后会经过DataLoaderlter来判断是否使用多进程,之后会使用Sampler来获取index,拿到索引之后将索引送入DatasetFetcher。在DatasetFetcher中会调用Dataset。在Dataset中getitem根据先前给定的索引获取单个实际的数据和标签。在获取完一个Batchsize大小的数据后通过Collate_fn进行整理,整理成一个BatchData的形式,然后就输入到模型之中去训练。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/13870.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++】C++基础知识(七)---指针

C基础知识(七)1. 指针的定义与使用2. 指针的内存3. 空指针和野指针4. const修饰指针5. 指针与数组6. 指针与函数7. 指针用于数组和函数的案例1. 指针的定义与使用 指针的作用: ------通过指针可以直接的访问变量的内存,内存编号一…

企业在线培训场景下讲师+ppt课件直播应用效果

阿酷TONY / 原创 / 2022-11-17 / 长沙 企业在线培训场景下讲师ppt课件直播应用效果 : 图 / 直播示意图 设备需求: 1. 现场布摄像头,用于采集讲师摄像头视频和音频数据; 2. PC电脑或笔记本电脑一台( 安装直播客户端&…

学会Python开发的第一步:写一个桌面小程序

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 又到了学Python时刻~ 当使用桌面应用程序的时候,有没有那么一瞬间, 想学习一下桌面应用程序开发? 建议此次课程大家稍作了解不要浪费太多时间, 因为没有哪家公司会招聘…

科普系列:AUTOSAR与OSEK网络管理比较(下)

在上篇中我们分别在状态机和报文格式方面对OSEK和AUTOSAR网络管理进行了简单介绍,感兴趣的小伙伴请移步至文章《科普系列:AUTOSAR与OSEK网络管理比较(上)》。 三、OSEK与AUTOSAR网络管理特点对比 本篇就是本文的重点了&#xff…

华为机试 - 区间交集

目录 题目描述 输入描述 输出描述 用例 题目解析 算法源码 题目描述 给定一组闭区间,其中部分区间存在交集。 任意两个给定区间的交集,称为公共区间(如:[1,2],[2,3]的公共区间为[2,2],[3,5],[3,6]的公共区间为[3,5])。 公共区间之间…

Springboot普通类获取运行时环境,获取运行时容器,获取Bean,等等获取运行时一切参数总结大全

文章目录获取ApplicationContextApplicationContext有什么用获取ApplicationContext使用ApplicationContext获取EnvironmentEnvironment有什么用获取Environment使用Environment获取ApplicationContext ApplicationContext有什么用 ApplicationContext为应用程序提供配置的中…

供应点击化学PEG试剂Azide-PEG-Rhodamine B,叠氮聚乙二醇罗丹明

点击化学PEG试剂——叠氮-聚乙二醇-罗丹明,化学试剂其英文名为Azide-PEG-Rhodamine B,N3-PEG-RB,它所属分类为Azide PEG Fluorescent PEG。 peg试剂的分子量均可定制,有:5000、2000、1000、3400、10000、20000 。该试…

java计算机毕业设计ssm气象百事通系统-天气预报系统

项目介绍 本气象百事通系统是针对目前仓库的实际需求,从实际工作出发,对过去的天气系统存在的问题进行分析,完善用户的使用体会。采用计算机系统来管理信息,取代人工管理模式,查询便利,信息准确率高,节省了开支,提高了工作的效率。 本系统结合计算机系统的结构、概念、模型、原…

Matlab:设置日期和时间显示格式

Matlab:设置日期和时间显示格式单个日期和持续时间数组的格式datetime 显示格式duration 显示格式calendarDuration 显示格式默认 格式datetime单个日期和持续时间数组的格式 datetime、duration 和 calendarDuration 数组有一个 Format 属性,可控制每个…

【java篇】你真的了解“基本数据类型”吗?

目录 基本介绍: 整数类型 浮点类型 布尔类型和char类型 自动类型转换 数据类型转换必须满足如下规则: 基本介绍: Java是一门强类型语言,这就意味着必须为每一个变量声明一种类型。Java为我们提供了八种基本类…

基于Qlearning强化学习的机器人路线规划仿真

目录 1.算法概述 2.仿真效果预览 3.核心MATLAB代码预览 4.完整MATLAB程序 1.算法概述 假设我们的行为准则已经学习好了, 现在我们处于状态s1, 我在写作业, 我有两个行为 a1, a2, 分别是看电视和写作业, 根据我的经验, 在这种 s1 状态下, a2 写作业 带来的潜在奖励要比 a1 看…

C++ Reference: Standard C++ Library reference: Containers: deque: deque: assign

C官网参考链接&#xff1a;https://cplusplus.com/reference/deque/deque/assign/ 公有成员函数 <deque> std::deque::assign C98 范围 (1) template <class InputIterator> void assign (InputIterator first, InputIterator last); 填充 (2) void ass…

用户体验成为继MAU后,手机银行竞争分化的下一分水岭,易观千帆重磅发布手机银行APP用户体验GX评测

作为银行金融服务线上场景渗透的有效抓手&#xff0c;当前手机银行APP已经成为其触达用户的重要渠道。随着银行发力场景服务平台成为发展趋势&#xff0c;5G技术问世对金融服务场景端提出新要求&#xff0c;用户体验反馈成为银行线上场景化运营的重要一环。 手机银行APP作为银…

自定义node版本,实现node多版本控制

这是我在安装依赖时报的两个错&#xff0c;一个是关于Cant find Python的问题&#xff0c;一个是node版本过高的问题。我一开始解决这边的Python的问题&#xff0c;网上找了好几个方法&#xff0c;安装了Python&#xff0c;环境配置也配置了&#xff0c;但是还是在报这个错&…

【python3】6.pickle json 序列化

2022.11.17 本学习内容总结于莫烦python:6.pickle/json 序列化 https://mofanpy.com/tutorials/python-basic/interactive-python/pickle-json 参考&#xff1a;https://blog.csdn.net/weixin_43625577/article/details/866997896 pickle/json 序列化 6.1 序列化 序列化&…

Linux-RPM与YUM

RPM包 rpm用于互联网下载包的打包及安装工具&#xff0c;它包含在某些Linux分发版中&#xff0c;它生成具有.RPM扩展名的文件&#xff0c;RPM是RedHat Package Manager&#xff08;RedHat软件包管理工具&#xff09;的缩写&#xff0c;类似于windows的setup.exe rpm包的管理 …

【Hack The Box】windows练习-- Timelapse

HTB 学习笔记 【Hack The Box】windows练习-- Timelapse &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月17日&#x1f334; &…

原理图与 PCB 绘制备忘

PCB 绘制 考虑到各制板厂的工艺水平的不同&#xff0c;过孔不可过小&#xff0c;最小为 12/25 mil&#xff0c;常用过孔为 16/28 mil 和 24/40mil 。铺铜时&#xff0c;与管脚有连接时做成部分相连。这是因为整体相连后&#xff0c;焊接元器件时因为铜皮散热快而难以化开焊锡。…

如何使用 Spring Data JPA 在存储过程中使用 IN、OUT 和 INOUT 参数

介绍 在本教程中&#xff0c;我将向您展示如何使用 Spring Data JPA 在存储过程中使用 IN、OUT 和 INOUT 参数。我还将调用一个完全没有参数的存储过程。 我将使用 MySQL 服务器&#xff0c;因此 MySQL 服务器可能存在一些限制&#xff0c;或者 Spring Data JPA 本身在调用存…

【网络安全】记一次APP登录爆破

使用工具 安卓12 jadx-gui 抓取登录HTTP请求包 安装burp证书&#xff0c;并抓取登录请求。 POST /loginUser HTTP/1.1 Host: api.xxxx.xxxxx.comapiaccountvrpuc-aaf91f835147ce2d01216bd3bd5c3516&phonexxxx&sign72C132B392873B3F4F6C0872E5EC4B5A&encM%2F8h…