介绍PyTorch张量
介绍PyTorch张量
介绍PyTorch张量
PyTorch张量是我们在PyTorch中编程神经网络时将使用的数据结构。
在编程神经网络时,数据预处理通常是整个过程的第一步,数据预处理的一个目标是将原始输入数据转换为张量形式。
torch.Tensor类的实例
PyTorch张量是torch.Tensor Python类的实例。我们可以使用类构造函数创建一个torch.Tensor对象,如下所示:
> t = torch.Tensor()
> type(t)
torch.Tensor
这创建了一个空张量(没有数据的张量),但我们很快就会添加数据。
张量属性
首先,让我们看看一些张量属性。每个torch.Tensor都有这些属性:
-
torch.dtype -
torch.device -
torch.layout
查看我们的张量t,我们可以看到以下默认属性值:
> print(t.dtype)
> print(t.device)
> print(t.layout)
torch.float32
cpu
torch.strided
张量具有torch.dtype
dtype,在我们的例子中是torch.float32,指定了张量中包含的数据类型。张量包含统一(相同类型)的数值数据,类型如下:
| 数据类型 | dtype | CPU张量 | GPU张量 |
|---|---|---|---|
| 32位浮点数 | torch.float32 | torch.FloatTensor | torch.cuda.FloatTensor |
| 64位浮点数 | torch.float64 | torch.DoubleTensor | torch.cuda.DoubleTensor |
| 16位浮点数 | torch.float16 | torch.HalfTensor | torch.cuda.HalfTensor |
| 8位整数(无符号) | torch.uint8 | torch.ByteTensor | torch.cuda.ByteTensor |
| 8位整数(有符号) | torch.int8 | torch.CharTensor | torch.cuda.CharTensor |
| 16位整数(有符号) | torch.int16 | torch.ShortTensor | torch.cuda.ShortTensor |
| 32位整数(有符号) | torch.int32 | torch.IntTensor | torch.cuda.IntTensor |
| 64位整数(有符号) | torch.int64 | torch.LongTensor | torch.cuda.LongTensor |
注意每种类型都有CPU和GPU版本。关于张量数据类型的一点需要注意,张量之间的张量操作必须在具有相同数据类型的张量之间进行。然而,这个声明只适用于PyTorch版本低于1.3。有关详细信息,请参阅下面的_PyTorch张量类型提升_部分。
PyTorch张量类型提升
从PyTorch版本1.3开始,算术和比较操作可以执行混合类型操作,这些操作提升为共同的dtype。
下面的例子在版本1.2中是不允许的。然而,在版本1.3及以上,相同的代码返回一个dtype=torch.float32的张量。
torch.tensor([1], dtype=torch.int) +
torch.tensor([1], dtype=torch.float32)
有关更多详细信息,请参阅完整文档。
-
torch.result_type 提供函数以确定混合类型操作的结果 -
torch.can_cast 公开类型提升的转换规则 -
torch.promote_types 公开提升逻辑
张量具有torch.device
设备,在我们的例子中是cpu,指定了张量数据分配的设备(CPU或GPU)。这决定了给定张量的张量计算将在哪里执行。
PyTorch支持使用多个设备,它们使用索引指定:
> device = torch.device('cuda:0')
> device
device(type='cuda', index=0)
如果我们有这样的设备,我们可以通过将设备传递给张量的构造函数来在设备上创建张量。关于使用多个设备的一点需要注意,张量之间的张量操作必须在存在于同一设备上的张量之间进行。
使用多个设备通常是我们在成为更高级用户时会做的事情,所以现在不必担心。
张量具有torch.layout
布局,在我们的例子中是strided,指定了张量如何在内存中存储。要了解更多关于步幅的信息,请点击这里。
目前,这就是我们需要知道的全部。
从张量属性中提取的信息
作为神经网络程序员,我们需要意识到以下几点:
- 张量包含统一类型的数据(
dtype)。 - 张量之间的张量计算取决于
dtype和device。
现在,让我们看看在PyTorch中使用数据创建张量的常见方法。
使用数据创建张量
这些是在PyTorch中使用数据(类似数组)创建张量对象(torch.Tensor类的实例)的主要方法:
-
torch.Tensor(data) -
torch.tensor(data) -
torch.as_tensor(data) -
torch.from_numpy(data)
让我们看看这些选项。它们都接受某种形式的数据,并给我们一个torch.Tensor类的实例。有时,当有多种方法可以实现相同的结果时,事情可能会变得混乱,所以让我们来分解一下。
我们将首先使用每个选项创建一个张量,看看我们得到了什么。我们将首先创建一些数据。
我们可以使用Python列表或序列,但numpy.ndarray将是更常见的选项,所以我们将使用一个numpy.ndarray,如下所示:
> data = np.array([1,2,3])
> type(data)
numpy.ndarray
这给我们提供了一个类型为numpy.ndarray的简单数据。
现在,让我们使用这些选项1-4创建我们的张量,并看看我们得到了什么:
> o1 = torch.Tensor(data)
> o2 = torch.tensor(data)
> o3 = torch.as_tensor(data)
> o4 = torch.from_numpy(data)> print(o1)
> print(o2)
> print(o3)
> print(o4)
tensor([1., 2., 3.])
tensor([1, 2, 3], dtype=torch.int32)
tensor([1, 2, 3], dtype=torch.int32)
tensor([1, 2, 3], dtype=torch.int32)
所有选项(o1,o2,o3,o4)似乎都产生了相同的张量,除了第一个。第一个选项(o1)在数字后面有点,表示这些数字是float,而接下来的三个选项类型为int32。
// Python代码示例,说明我们的意思> type(2.)
float> type(2)
int
在下一篇文章中,我们将更深入地探讨这种差异以及其他一些重要的差异,这些差异隐藏在幕后。
下一篇文章的讨论将使我们能够看到这些选项中哪一个最适合创建张量。目前,让我们看看一些无需任何数据即可创建张量的创建选项。
无需数据的创建选项
以下是一些其他可用的创建选项。
我们有torch.eye()函数,它返回一个2-D张量,对角线上是1,其他地方是0。eye()这个名字与单位矩阵的概念有关,单位矩阵是一个方阵,主对角线上是1,其他地方都是0。
> print(torch.eye(2))
tensor([[1., 0.],[0., 1.]
])
我们有torch.zeros()函数,它创建一个指定形状参数的零张量。
> print(torch.zeros([2,2]))
tensor([[0., 0.],[0., 0.]
])
同样,我们有torch.ones()函数,它创建一个1的张量。
> print(torch.ones([2,2]))
tensor([[1., 1.],[1., 1.]
])
我们还有torch.rand()函数,它创建一个指定参数形状的张量,其值是随机的。
> print(torch.rand([2,2]))
tensor([[0.0465, 0.4557],[0.6596, 0.0941]
])
这是不需要数据的可用创建函数的一小部分。查看PyTorch文档以获取完整列表。
我希望现在你对如何使用PyTorch从数据以及不需要数据的内置函数创建张量有了很好的理解。如果我们使用numpy.ndarray,这个任务将变得轻而易举,所以如果你已经熟悉NumPy,那么恭喜你。
相关文章:
介绍PyTorch张量
介绍PyTorch张量 介绍PyTorch张量 PyTorch张量是我们在PyTorch中编程神经网络时将使用的数据结构。 在编程神经网络时,数据预处理通常是整个过程的第一步,数据预处理的一个目标是将原始输入数据转换为张量形式。 torch.Tensor类的实例 PyTorch张量…...
Vision Transformer (ViT)原理
Vision Transformer (ViT)原理 flyfish Transformer缺乏卷积神经网络(CNNs)的归纳偏差(inductive biases),比如平移不变性和局部受限的感受野。不变性意味着即使实体entity(即对象)的外观或位…...
移动云自研云原生数据库入围国采!
近日,中央国家机关2024年度事务型数据库软件框架协议联合征集采购项目产品名单正式公布,移动云自主研发的云原生数据库产品顺利入围。这一成就不仅彰显了移动云在数据库领域深耕多年造就的领先技术优势,更标志着国家权威评审机构对移动云在数…...
Unity中对象池的使用(用一个简单粗暴的例子)
问题描述:Unity在创建和销毁对象的时候是很消耗性能的,所以我们在销毁一个对象的时候,可以不用Destroy,而是将这个物体隐藏后放到回收池里面,当再次需要的时候如果回收池里面有之前回收的对象,就直接拿来用…...
linux命令行连接Postgresql常用命令
1.linux系统命令行连接数据库命令 psql -h hostname -p port -U username -d databasename -h 主机名或IP地址 -p 端口 -U 用户名 -d 连接的数据库 2.查询数据库表命令 select version() #查看版本号 \dg #查看用户 \l #查询数据库 \c mydb #切换…...
每日一题-单链表排序
为了对给定的单链表按升序排序,我们可以考虑以下解决方法: 思路 归并排序(Merge Sort):由于归并排序的时间复杂度为 O ( n log n ) O(n \log n) O(nlogn),并且归并排序不需要额外的空间(空…...
webpack04服务器配置
webpack配置 entryoutput filenamepathpublicPath 。。 打包引入的基本路径,,,比如引入一个bundle.js,。引用之后的路径就是 publicPathfilename -devServer:static : 静态文件的位置。。。hostportopencompress : 静态资源是否用gzip压缩hi…...
JDK下载安装配置
一.JDK安装配置。 1.安装注意路径,其他直接下一步。 2.配置。 下接第4步. 或者 代码复制: JAVA_HOME D:\Program Files\Java\jdk1.8.0_91 %JAVA_HOME%\bin 或者直接配置 D:\Program Files\Java\jdk1.8.0_91\bin 3.验证(CMD)。 java javac java -version javac -version 二.下…...
30_Redis哨兵模式
在Redis主从复制模式中,因为系统不具备自动恢复的功能,所以当主服务器(master)宕机后,需要手动把一台从服务器(slave)切换为主服务器。在这个过程中,不仅需要人为干预,而且还会造成一段时间内服务器处于不可用状态,同时数据安全性也得不到保障,因此主从模式的可用性…...
NLP三大特征抽取器:CNN、RNN与Transformer全面解析
引言 自然语言处理(NLP)领域的快速发展离不开深度学习技术的推动。随着应用需求的不断增加,如何高效地从文本中抽取特征成为NLP研究中的核心问题。深度学习中三大主要特征抽取器——卷积神经网络(Convolutional Neural Network, …...
《使用 YOLOV8 和 KerasCV 进行高效目标检测》
《使用 YOLOV8 和 KerasCV 进行高效目标检测》 作者:Gitesh Chawda创建日期:2023/06/26最后修改时间:2023/06/26描述:使用 KerasCV 训练自定义 YOLOV8 对象检测模型。 (i) 此示例使用 Keras 2 在 Colab 中…...
从MySQL迁移到PostgreSQL的完整指南
1.引言 在现代数据库管理中,选择合适的数据库系统对业务的成功至关重要。随着企业数据量的增长和对性能要求的提高,许多公司开始考虑从MySQL迁移到PostgreSQL。这一迁移的主要原因包括以下几个方面: 1.1 性能和扩展性 PostgreSQL以其高性能…...
服务器一次性部署One API + ChatGPT-Next-Web
服务器一次性部署One API ChatGPT-Next-Web One API ChatGPT-Next-Web 介绍One APIChatGPT-Next-Web docker-compose 部署One API ChatGPT-Next-WebOpen API docker-compose 配置ChatGPT-Next-Web docker-compose 配置docker-compose 启动容器 后续配置 同步发布在个人笔记服…...
51单片机 和 STM32 的烧录方式和通信协议的区别
51单片机 和 STM32 的烧录方式和通信协议的区别 1. 为什么51单片机需要额外的软件(如ISP)? (1)51单片机的烧录方式 ISP(In-System Programming): 51单片机通常通过 串口(…...
(STM32笔记)十二、DMA的基础知识与用法 第二部分
我用的是正点的STM32F103来进行学习,板子和教程是野火的指南者。 之后的这个系列笔记开头未标明的话,用的也是这个板子和教程。 DMA的基础知识与用法 二、DMA传输设置1、数据来源与数据去向外设到存储器存储器到外设存储器到存储器 2、每次传输大小3、传…...
【优选算法篇】:模拟算法的力量--解决复杂问题的新视角
✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨ 个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:优选算法篇–CSDN博客 文章目录 一.模拟算法二.例题1.替换所有的问号2.提莫攻击3.外观数列4…...
探秘 JMeter (Interleave Controller)交错控制器:解锁性能测试的隐藏密码
嘿,小伙伴们!今天咱们要把 JMeter 里超厉害的 Interleave Controller(交错控制器)研究个透,让你从新手直接进阶成高手,轻松拿捏各种性能测试难题! 一、Interleave Controller 深度剖析 所属家族…...
脚本化挂在物理盘、nfs、yum、pg数据库、nginx(已上传脚本)
文章目录 前言一、什么是脚本化安装二、使用步骤1.物理磁盘脚本挂载(离线)2.yum脚本化安装(离线)3.nfs脚本化安装(离线)4.pg数据库脚本化安装(离线)5.nginx脚本化安装(离…...
ESP嵌入式开发环境安装
前期准备,虚拟机,ios镜像,VSCode。 centOS8:centos安装包下载_开源镜像站-阿里云 虚拟机:vmware VSCode:Visual Studio Code - Code Editing. Redefined 如何安装镜像自行查找 完成以上环境后进行一下操…...
Elasticsearch入门学习
Elasticsearch是什么 Elasticsearch 是一个基于 Apache Lucene 构建的分布式搜索和分析引擎、可扩展的数据存储和矢量数据库。 它针对生产规模工作负载的速度和相关性进行了优化。 使用 Elasticsearch 近乎实时地搜索、索引、存储和分析各种形状和大小的数据。 特点 分布式&a…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
