当前位置: 首页 > news >正文

Pytorch数据结构:Tensor(张量)及其维度和数据类型

文章目录

  • Tensor基础
    • 1.1、Tensor的维度(Dimensions)
      • 1.1.1、举例说明
      • 1.1.2、高维Tensor
    • 1.2、.dim()和.size()方法
      • 1.2.1、.dim()方法
      • 1.2.2、.size()方法
      • 1.2.3、.shape属性
      • 1.2.3、示例代码
        • 1.2.3.1、一维Tensor
        • 1.2.3.2、二维Tensor
        • 1.2.3.3、三维Tensor
    • 1.3、Tensor数据类型
    • 1.4、观察维度
      • 1.4.1、直接访问

本文参考于: 与凤行——灵界碧苍王:Pytorch教程

Tensor基础

Tensor(张量) 是PyTorch中用于表示多维数据的主要数据结构,类似于多维数组,可以存储和操作数字数据。

1.1、Tensor的维度(Dimensions)

  Tensor的维度可以理解为Tensor包含的数据在不同方向上的层次或级别。在数学和计算机科学中,维度通常用来描述数据结构的复杂性或者数据在空间中的方向。对于Tensor来说,每一个维度都代表了数据的一个特定的方向或特性。
  Tensor(张量)的维度(Dimensions)是指张量的轴数或阶数。可以类似用坐标轴来理解,可以类比的用坐标轴理解,即Tensor有多少个方向。比如1维,x轴只有一个方向;2维,x轴y轴,两个方向,x轴固定长度;3维,x轴y轴z轴,三个方向,x轴和y轴固定长度。

基本的tensor创建,以便于后续学习:

import torch
x=torch.tensor(data)#利用data创建tensor,data可以是各总维度的列表,或一个常数

1.1.1、举例说明

  • 0维Tensor:也就是一个标量(Scalar),它没有维度,仅仅是一个单一的数值。例如,温度值、价格或者某个计数。
    • 举例说明:torch.tensor(1)torch.tensor(2)
  • 1维Tensor:也称作向量(Vector),它有一个维度,可以看作是一系列数值的集合。例如,一维数组 [1, 2, 3] 代表一系列数值或某个特性的不同测量值。当我们将一维张量称为向量时,那么 tensor([1,2,3])是一个3维向量,一个一维张量。
    • 举例说明:torch.tensor([1,2,3,4,5])torch.tensor([15,2,3,4,5,51])
  • 2维Tensor:也称作矩阵(Matrix),它有两个维度,可以表示为行和列。例如,在表格数据中,行可能代表不同的样本,列代表不同的特征或观察值。注意,由于列代表了不同的特征,因此每一行的元素数必须相同,每一行是一个一维的。相当于多个一维构成一个二维。
    • 举例说明:torch.tensor([ [1,2,5],[3,4,2] ]),暂且可以理解为这里有两行分别为[1,2,5]和[3,4,2],这是一个2×3的矩阵。
  • 3维Tensor:可以想象为一个数据立方体,常用于表示时间序列数据、图像数据等。例如,在处理图像时,一个3维Tensor可能有三个维度:高度、宽度和颜色通道。相当于多个二维构成一个三维,每个二维的性状必须相同。
    • 举例说明:torch.tensor([ [[1,2],[3,4]] , [[3,3][2,2]] ]),一个三维中,有两个二维,这是一个2×2×2的三维Tensor。

1.1.2、高维Tensor

随着维度的增加,Tensor可以表示更加复杂的数据结构。例如,在深度学习中,经常会处理4维Tensor来表示一批图像数据,其中维度分别代表样本数、高度、宽度和颜色通道。在自然语言处理(NLP)任务中,可能会使用3维或更高维度的Tensor来表示句子、单词和特征向量。

1.2、.dim()和.size()方法

在PyTorch中,.dim().size()方法用于获取Tensor的维度信息,但它们提供了不同类型的信息:

1.2.1、.dim()方法

  • .dim()方法返回Tensor的维度数,即Tensor有多少轴。(类似多少个坐标轴)
  • 对于一个给定的Tensor,.dim()告诉你这个Tensor是几维的
  • 例如,如果你有一个2D Tensor(比如一个矩阵),.dim()将返回2;如果是一个3D Tensor(比如一个时间序列数据集),.dim()将返回3。

1.2.2、.size()方法

  • .size()方法返回一个Tensor每个维度的大小(长度),以torch.Size类型表示,其实质是一个元组。 (类似告诉你 每一个坐标轴的长度,不过是按照z,y,x的方式给出的。z个矩形,y行,x列,更高维以此类推)
  • 它提供了关于Tensor每个轴的具体大小的详细信息。如果你想知道一个Tensor的形状,比如有多少行和列,你会使用.size()
  • .size()可以返回全部维度的大小,也可以通过指定维度的索引来返回特定维度的大小。例如,对于一个形状为(3, 4, 5)的3D Tensor,.size()将返回torch.Size([3, 4, 5]),而.size(1)将仅返回第二维(即4行)的大小。

1.2.3、.shape属性

  • .shape属性 和 直接调用.size()返回的是一样的。

1.2.3、示例代码

1.2.3.1、一维Tensor
import torch
oneD=torch.tensor([1,3,4,5,5,6,6,0])
print(".size()方法:",oneD.size())
print("一维张量的大小:",oneD.size(0))
print(type(oneD.size()))
print("一维张量的维数:",oneD.dim())
print(type(oneD.dim()))

在这里插入图片描述

1.2.3.2、二维Tensor
import torch
oneD=torch.tensor([[1,3,4,5,5,6,6,0],[1,3,4,5,5,6,6,8],[1,3,4,5,5,6,6,0]])#3×8
print(".size()方法:",oneD.size())
print("二维张量最外层元素数:",oneD.size(0))
print("二维张量的维数:",oneD.dim())

在这里插入图片描述
tensor的维度信息是[3, 8],表示矩阵的大小为3x8。通过调用dim()方法,我们可以得到张量的轴数,这里是2。

1.2.3.3、三维Tensor
import torch
oneD=torch.tensor([ [[1,2],[2,3],[2,3]],[[3,4],[5,6],[2,3]] ])#2×3×2
print(".size()方法:",oneD.size())
print("三维张量最外层元素数:",oneD.size(0))
print("三维张量的维数:",oneD.dim())

在这里插入图片描述
tensor的维度信息是[2, 3, 2],表示有2个矩阵,每个矩阵的大小为3x2。通过调用dim()方法,我们可以得到张量的轴数,这里是3。

1.3、Tensor数据类型

在这里插入图片描述

  • 在创建张量时,可以通过dtype参数指定数据类型:
import torch
x = torch.tensor( [1, 2, 3], dtype=torch.float32 )
print(x)
print(x.dtype)

在这里插入图片描述

1.4、观察维度

在这里插入图片描述

1.4.1、直接访问

有 Python内置类型——序列 的操作,从内到外索引:
在这里插入图片描述
当然还有切片操作。

相关文章:

Pytorch数据结构:Tensor(张量)及其维度和数据类型

文章目录 Tensor基础1.1、Tensor的维度(Dimensions)1.1.1、举例说明1.1.2、高维Tensor 1.2、.dim()和.size()方法1.2.1、.dim()方法1.2.2、.size()方法1.2.3、.shape属性1.2.3、示例代码1.2.3.1、一维Tensor1.2.3.2、二维Tensor1.2.3.3、三维Tensor 1.3、…...

【THM】Protocols and Servers 2(协议和服务器 2

介绍 协议和服务器房间涵盖了许多协议: 远程登录HTTP协议文件传输协议邮件传输协议POP3IMAP实现这些协议的服务器会受到不同类型的攻击。仅举几例,请考虑: 嗅探攻击(网络数据包捕获)中间人 ( MITM ) 攻击密码攻击(身份验证攻击)漏洞从安全的角度来看,我们始终需要思考…...

阿里云服务器可以干什么?阿里云服务器主要用途是干嘛的?

阿里云服务器可以干嘛?能干啥你还不知道么!简单来讲可用来搭建网站、个人博客、企业官网、论坛、电子商务、AI、LLM大语言模型、测试环境等,阿里云百科aliyunbaike.com整理阿里云服务器的用途: 阿里云服务器活动 aliyunbaike.com…...

LeetCode hoot100-22

160. 相交链表给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。这道题几分钟就写出来了。应该是几年前做过,这种思想还能一直记得。所以算法题是不会白做的。 我的…...

蓝桥杯 经验技巧篇

1. 注意事项 👨‍🏫 官方通知 👨‍🏫 资料文档 时间:4月13日 9:00~13:00 (时长 4小时)物品 准考证(赛前一周开放下载,自行打印)学生证身份证笔、水、外套&a…...

QMC5883芯片I2C驱动开发指南

这个芯片纯国产挺好用的,电路很好设计,我这垃圾焊功,纯手焊,,居然能用。 第一部分 硬件连接 画的很简陋,看看就可以了。 第二部分 软件驱动 I2C的具体时序实现需要自己搞定!! 2…...

缓存击穿以及解决方案

1.定义 缓存击穿问题也叫热点Key问题,就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了,无数的请求访问会在瞬间给数据库带来巨大的冲击。 问题描述:假设线程1在查询缓存之后,本来应该去查询数据库,然后把…...

【电路笔记】-逻辑非门

逻辑非门 文章目录 逻辑非门1、概述2、晶体管逻辑非门3、六角施密特反相器逻辑非门是所有逻辑门中最基本的,通常称为反相缓冲器或简称为反相器。 1、概述 反相非门是单输入器件,其输出电平通常为逻辑电平“1”,当其单个输入为逻辑电平“1”时,输出电平变为“低”至逻辑电平…...

vue-element-admin vue3版本搭建

要搭建一个基于Vue 3版本的vue-element-admin项目,你可以按照以下步骤进行: 首先,确保你的开发环境已经安装了Node.js和npm。Node.js是一个JavaScript运行环境,而npm则是Node.js的包管理器,它们将帮助你安装和管理Vue…...

大话设计模式——11.桥接模式(Bridge Pattern)

简介 将抽象部分与它的实现部分分离,使它们可以独立变化。 UML图: 应用场景: 系统需要在构建的抽象化角色和具体化角色之间增加更多的灵活性不想使用继承导致系统类的个数急剧增加某个类存在多个变化维度使用继承方式容易出现类的膨胀 示例…...

新概念英语1:Lesson 25学习笔记

新概念英语1:Lesson 25学习笔记 There is a refrigerator in the kitchen There be句型是英语中一个常用的表达方法,它表示某个地方或某个情况存在某种事物或人。 there是引导词,本身无意义 句型基本上就是Therebe动词主语地点/时间 be动…...

Java 8 内存管理原理解析及内存故障排查实践

介绍Java8虚拟机的内存区域划分、内存垃圾回收工作原理解析、虚拟机内存分配配置,介绍各垃圾收集器优缺点及场景应用、实践内存故障场景排查诊断,方便读者面临内存故障时有一个明确的思路和方向。 一、背景 Java是一种流行的编程语言,可以在不…...

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之RTE模块配置详解(上)

RTE模块配置详解 - 上 一、RTE模块配置实操1.1 打开RTE模块1.2 RTE模块错误消除在这里插入图片描述 这里我们利用工具的自动处理功能。二、Configurator工具Validation总结本节我们就手把手详解RTE配置实现,其实也没有什么过多的操作。。。这个模块更多是工具自动处理的。 一、…...

小米汽车su7全色系展示源码

源码简介 小米汽车全色系展示源码,小米汽车su7全色系展示源码 安装教程 纯HTML,直接将压缩包上传网站目录解压即可 首页截图 源码下载 小米汽车su7全色系展示源码-小8源码屋源码简介 小米汽车全色系展示源码,小米汽车su7全色系展示源码 …...

钉钉事件订阅前缀树算法gin框架解析

当钉钉监测到发生一些事件,如下图 此处举例三个事件user_add_org、user_change_org、user_leave_org,传统的做法是,我们写三个if条件,类似下图 这样字符串匹配效率比较低,于是联想到gin框架中的路由匹配算法&#xff0…...

React18从入门到实战

文章目录 一、React环境的搭建二、项目文件的介绍(1)package.json,他是项目存放依赖包的地方,里面包括了一些项目核心包及下载的其他插件包(2)src文件夹是项目源码目录,平时开发页面就在其中&am…...

【漏洞复现】某科技X2Modbus网关多个漏洞

漏洞描述 最近某科技X2Modbus网关出了一个GetUser的信息泄露的漏洞,但是经过审计发现该系统80%以上的接口均是未授权的,没有添加相应的鉴权机制,以下列举多个未授权接口以及获取相关敏感信息的接口。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律…...

专业140+总410+国防科技大学831信号与系统考研经验国防科大电子信息与通信,真题,大纲,参考书。

应群里同学要求,总结一下我自己的复习经历,希望对大家有所借鉴,报考国防科技大学,专业课831信号与系统140,总分410,大家以前一直认为国防科技大学时军校,从而很少关注这所军中清华,现…...

【Linux】进程管理(2):进程控制

一、进程创建:fork函数 我们在命令行中输入man fork 即可得到fork函数的函数接口的函数的使用方法。 我们可以看到,fork函数位于man手册的第2部分,由于第2部分通常是用于描述系统调用和库函数,所以我们可以了解到fork函数实际是一…...

组合数(费马小定理, 快速幂)

给定 n 组询问,每组询问给定两个整数 a,b,请你输出 Cbamod(1097)的值。 输入格式 第一行包含整数 n。 接下来 n 行,每行包含一组 a 和 b。 输出格式 共 n 行,每行输出一个询问的解。 数据范围 1≤n≤10000, 1≤…...

别再只改yaml了!深入理解YOLOv5检测头:从P2到P5,如何根据你的目标大小选择最优组合?

深入解析YOLOv5多尺度检测头:从理论到实践的选择艺术 在计算机视觉领域,目标检测一直是核心任务之一。YOLO系列算法以其高效的检测速度和良好的精度表现,成为工业界和学术界的热门选择。然而,很多开发者在使用YOLOv5时&#xff0c…...

Unpaywall扩展:一键解锁学术论文的终极免费方案

Unpaywall扩展:一键解锁学术论文的终极免费方案 【免费下载链接】unpaywall-extension Firefox/Chrome extension that gives you a link to a free PDF when you view scholarly articles 项目地址: https://gitcode.com/gh_mirrors/un/unpaywall-extension …...

QGIS插件开发避坑指南:我的第一个批量属性修改工具是怎么炼成的

QGIS插件开发避坑指南:我的第一个批量属性修改工具是怎么炼成的 第一次打开QGIS的Python控制台时,我完全没意识到自己即将踏入一个充满"惊喜"的世界。作为一名有Python基础但缺乏Qt框架经验的开发者,本以为凭借官方文档就能轻松实现…...

简单介绍C语言中的字符串函数

1.首先给出字符分类函数这几个就简单过一下,不做重点说明。这两个为字符转换函数,顾名思义,没什么好介绍的;接下来简单介绍几个字符串函数:strlen.strcpy.strcat.strstr.strncpy.strncat.memcpy.memmove;strlen:求字符…...

Self Service Password与LDAP集成实战:从部署到问题排查

1. Self Service Password与LDAP集成概述 自助密码重置功能已经成为企业IT基础设施中不可或缺的一部分。想象一下,当员工在深夜加班时忘记密码,又找不到IT支持人员,这种场景下的自助解决方案就显得尤为重要。Self Service Password&#xff0…...

Gated DeltaNet 线性注意力:揭秘大模型算力魔咒的破局之道!

文章深入探讨了线性注意力机制在大模型中的重要性,特别是Gated DeltaNet如何通过改变运算顺序,将Transformer的注意力计算复杂度从平方级降低到线性级,从而打破算力瓶颈。文中对比了阿里Qwen、Kimi Linear等模型的线性架构应用,以…...

基于博途1200PLC + HMI的交通灯控制系统仿真:打造灵活交通指挥中枢

基于博途1200PLCHMI交通灯/红绿灯控制系统仿真(时间可设置) 程序: 1、任务:PLC.人机界面控制交通灯 2、系统说明: 系统设有手动模式、自动模式、黄闪模式、红绿灯时间可设置、各灯可单独手动模式、故障模拟模式、数码管显示等模式运行 交通灯…...

go-zero v1.10.1 更新解析:JSON5 配置正式支持 Redis 通用命令 Do DoCtx 上线 Go 1.24 升级与 core/codec 关键安全修复全梳理

一、版本总览:go-zero v1.10.1,微服务框架的又一次关键迭代 2026年3月28日,国产高性能Go微服务框架go-zero正式发布v1.10.1版本。作为一次补丁式更新,该版本并非简单的问题修复,而是集新功能拓展、核心安全加固、底层依…...

从make clean到build.prop:揭秘Android系统属性生成的完整链条

从make clean到build.prop:揭秘Android系统属性生成的完整链条 当你通过adb shell getprop ro.build.display.id查看设备版本号时,是否好奇过这个字符串背后的生成逻辑?在Android编译系统中,从Makefile执行到最终生成build.prop文…...

7步掌握MetaGPT:从单行需求到完整软件的多智能体革命

7步掌握MetaGPT:从单行需求到完整软件的多智能体革命 【免费下载链接】MetaGPT 🌟 The Multi-Agent Framework: First AI Software Company, Towards Natural Language Programming 项目地址: https://gitcode.com/GitHub_Trending/me/MetaGPT 想…...