深度学习张量的秩、轴和形状

深度学习张量的秩、轴和形状

秩、轴和形状是在深度学习中我们最关心的张量属性。

  • 形状

秩、轴和形状是在深度学习中开始使用张量时我们最关心的三个属性。这些概念相互建立,从秩开始,然后是轴,最后构建到形状,所以请注意这三个概念之间的关系。

img

秩、轴和形状都与我们在前一篇文章中讨论的索引概念密切相关。如果你还没有看过那篇文章,我强烈建议你去查看。让我们从基础开始,介绍张量的秩。

张量的秩

张量的 指的是张量内部存在的维度数量。假设我们被告知有一个秩为 2 的张量。这意味着以下所有情况:

  • 我们有一个矩阵
  • 我们有一个二维数组
  • 我们有一个二维张量

我们在这里引入 这个词,因为它在深度学习中常用来指代给定张量内部存在的维度数量。这是不同研究领域使用不同词汇来指代同一概念的另一个例子。不要让它迷惑你!

秩和索引

张量的秩告诉我们需要多少个索引来访问(引用)张量数据结构中包含的特定数据元素。

张量的秩告诉我们需要多少个索引来引用张量中的特定元素。

让我们通过查看张量的轴来进一步理解秩的概念。

张量的轴

如果我们有一个张量,我们想要引用特定的 维度,我们在深度学习中使用 这个词。

张量的轴是张量的特定维度。

如果我们说一个张量是一个秩为 2 的张量,我们的意思是张量有 2 个维度,或者等效地,张量有两个轴。

元素被说成存在于轴上或沿着轴运行。这种 运行 受到每个轴长度的限制。让我们现在看看轴的长度。

轴的长度

每个轴的长度告诉我们沿着每个轴有多少个索引可用。

假设我们有一个名为 t​ 的张量,我们知道第一个轴的长度为三,而第二个轴的长度为四。

由于第一个轴的长度为三,这意味着我们可以沿着第一个轴索引三个位置,如下所示:

t[0]
t[1]
t[2]

所有这些索引都是有效的,但我们不能超过索引 2​。

由于第二个轴的长度为四,我们可以沿着第二个轴索引四个位置。这对于第一个轴的每个索引都是可能的,所以我们有

t[0][0]
t[1][0]
t[2][0]

t[0][1]
t[1][1]
t[2][1]

t[0][2]
t[1][2]
t[2][2]

t[0][3]
t[1][3]
t[2][3]
张量轴的例子

让我们看一些例子来巩固这一点。我们将考虑与之前相同的张量 dd​:

> dd = [
[1,2,3],
[4,5,6],
[7,8,9]
]

沿着第一个轴的每个元素都是一个数组:

> dd[0]
[1, 2, 3]

> dd[1]
[4, 5, 6]

> dd[2]
[7, 8, 9]

沿着第二个轴的每个元素都是一个数字:

> dd[0][0]
1

> dd[1][0]
4

> dd[2][0]
7

> dd[0][1]
2

> dd[1][1]
5

> dd[2][1]
8

> dd[0][2]
3

> dd[1][2]
6

> dd[2][2]
9

请注意,对于张量,最后一个轴的元素始终是数字。其他每个轴都将包含 n 维数组。这在我们的例子中可以看到,但这个概念是通用的。

张量的秩告诉我们张量有多少个轴,而这些轴的长度引导我们到一个非常重要的概念,即张量的 形状

张量的形状

张量的 形状 由每个轴的长度决定,所以如果我们知道给定张量的形状,那么我们知道每个轴的长度,这告诉我们沿着每个轴有多少个索引可用。

张量的形状给出了张量每个轴的长度。

让我们再次考虑之前相同的张量 dd​:

> dd = [
[1,2,3],
[4,5,6],
[7,8,9]
]

为了处理这个张量的形状,我们将创建一个 torch.Tensor​ 对象,如下所示:

> t = torch.tensor(dd)
> t
tensor([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])

> type(t)
torch.Tensor

现在,我们有一个 torch.Tensor​ 对象,所以我们可以要求查看张量的 shape​:

> t.shape
torch.Size([3,3])

这使我们能够看到张量的形状是 3 x 3​。请注意,在 PyTorch 中,张量的大小和形状是一回事。

3 x 3​ 的形状告诉我们,这个秩为二的张量的每个轴的长度都是 3​,这意味着我们沿着每个轴有三个索引可用。现在,让我们看看为什么张量的形状如此重要。

张量的形状很重要

张量的形状很重要有几个原因。第一个原因是形状允许我们从概念上思考,甚至可视化张量。更高秩的张量变得更加抽象,形状给我们提供了一些具体的东西来思考。

形状还编码了关于轴、秩,因此索引的所有相关信息。

img

此外,我们在编程神经网络时必须经常执行的一种操作称为 重塑

随着我们的张量流经网络,在网络内部的不同点期望有不同的形状,作为神经网络程序员,我们的任务是理解输入的形状,并有能力根据需要进行重塑。

重塑张量

在我们查看重塑张量之前,回想一下我们如何重塑我们开始时的术语列表:

形状 6 x 1

  • 数字
  • 标量
  • 数组
  • 向量
  • 二维数组
  • 矩阵

形状 2 x 3

  • 数字,数组,二维数组
  • 标量,向量,矩阵

形状 3 x 2

  • 数字,标量
  • 数组,向量
  • 二维数组,矩阵

每组术语都代表了相同的底层数据,只是形状不同。这只是一个小例子,以激发重塑的概念。

从这个动机中得到的重要的收获是,形状改变了术语的分组,但没有改变底层术语本身。

让我们再次看看我们的例子张量 dd​:

> t = torch.tensor(dd)
> t
tensor([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])

这个 torch.Tensor​ 是一个秩为 2​ 的张量,形状为 [3,3]​ 或 3 x 3​。

现在,假设我们需要将 t​ 重塑为形状 [1,9]​。这将给我们第一个轴上一个数组和第二个轴上九个数字:

> t.reshape(1,9)
tensor([[1, 2, 3, 4, 5, 6, 7, 8, 9]])

> t.reshape(1,9).shape
torch.Size([1, 9])

现在,关于重塑值得注意的一点是,形状中组件值的乘积必须等于张量中元素的总数。

例如:

  • 3 * 3 = 9
  • 1 * 9 = 9

这确保了在重塑后,张量数据结构内有足够的位置来包含所有原始数据元素。

重塑改变了形状,但没有改变底层的数据元素。

这只是对张量重塑的简单介绍。在将来的文章中,我们将更详细地介绍这个概念。

总结

这为张量提供了一个介绍。现在我们应该对张量和用于描述它们的术语,如秩、轴和形状有了很好的理解。很快,我们将看到在 PyTorch 中创建张量的各种方式。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Observability:将 OpenTelemetry 添加到你的 Flask 应用程序

作者:来自 Elastic jessgarson 待办事项列表可以帮助管理与假期计划相关的所有购物和任务。使用 Flask,你可以轻松创建待办事项列表应用程序,并使用 Elastic 作为遥测后端,通过 OpenTelemetry 对其进行监控。 Flask 是一个轻量级…

项目开发实践——基于SpringBoot+Vue3实现的在线考试系统(五)

文章目录 一、学生管理模块功能实现1、添加学生功能实现1.1 页面设计1.2 前端功能实现1.3 后端功能实现1.4 效果展示2、学生管理功能实现2.1 页面设计2.2 前端功能实现2.3 后端功能实现2.3.1 后端查询接口实现2.3.2 后端编辑接口实现2.3.3 后端删除接口实现2.4 效果展示二、代码…

使用Cilium/eBPF实现大规模云原生网络和安全

大家读完觉得有帮助记得关注和点赞!!! 目录 抽象 1 Trip.com 云基础设施 1.1 分层架构 1.2 更多细节 2 纤毛在 Trip.com 2.1 推出时间表 2.2 自定义 2.3 优化和调整 2.3.1 解耦安装 2.3.2 避免重试/重启风暴 2.3.3 稳定性优先 2…

CTFshow—文件包含

Web78-81 Web78 这题是最基础的文件包含,直接?fileflag.php是不行的,不知道为啥,直接用下面我们之前在命令执行讲过的payload即可。 ?filephp://filter/readconvert.base64-encode/resourceflag.php Web79 这题是过滤了php,…

62.在 Vue 3 中使用 OpenLayers 设置不同的坐标点,用不同的颜色区分

前言 在现代 Web 开发中,地图功能已经成为许多应用的重要组成部分。OpenLayers 是一个强大的开源地图库,支持多种地图源和地图操作。结合 Vue 3 的响应式特性,我们可以轻松实现地图的交互功能。本文将详细介绍如何在 Vue 3 中使用 OpenLayer…

Spring 项目 基于 Tomcat容器进行部署

文章目录 一、前置知识二、项目部署1. 将写好的 Spring 项目先打包成 war 包2. 查看项目工件(Artifact)是否存在3. 配置 Tomcat3.1 添加一个本地 Tomcat 容器3.2 将项目部署到 Tomcat 4. 运行项目 尽管市场上许多新项目都已经转向 Spring Boot&#xff0…

【学习笔记】数据结构(十一)

外部排序 文章目录 外部排序11.1 外存信息的存取11.2 外部排序的方法11.3 多路平衡归并的实现 - 增加k11.4 置换-选择排序 - 减少m11.5 最佳归并树 外部排序 指的是大文件的排序,即待排序的记录存储在外存储器 上,在排序过程中需进行多次的内、外存之间的…

《跟我学Spring Boot开发》系列文章索引❤(2025.01.09更新)

章节文章名备注第1节Spring Boot(1)基于Eclipse搭建Spring Boot开发环境环境搭建第2节Spring Boot(2)解决Maven下载依赖缓慢的问题给火车头提提速第3节Spring Boot(3)教你手工搭建Spring Boot项目纯手工玩法…

【Linux笔记】Day1

基于韩顺平老师课程记录: https://www.bilibili.com/video/BV1Sv411r7vd 安装CentOS 给CentOS手动分区 分为三个区: boot分区(给1G就行) 交换分区(和内存相关,这里和虚拟机的内存2G一致) …

【网络】:网络编程套接字

目录 源IP地址和目的IP地址 源MAC地址和目的MAC地址 源端口号和目的端口号 端口号 VS 进程ID TCP协议和UDP协议 网络字节序 字符串IP和整数IP相互转换 查看当前网络的状态 socket编程接口 socket常见API 创建套接字 绑定端口号 发送数据 接收数据 sockaddr结构…

使用 Multer 上传图片到阿里云 OSS

文件上传到哪里更好? 上传到服务器本地 上传到服务器本地,这种方法在现今商业项目中,几乎已经见不到了。因为服务器带宽,磁盘 IO 都是非常有限的。将文件上传和读取放在自己服务器上,并不是明智的选择。 上传到云储存…

【端云一体化】云函数的使用

前言 为丰富HarmonyOS对云端开发的支持、实现端云联动,DevEco Studio以Cloud Foundation Kit(云开发服务)为底座、在传统的“端开发”基础上新增“云开发”能力,开发者在创建工程时选择合适的云开发工程模板,即可在De…

YARN 架构组件及原理

一、YARN 体系架构 YARN(Yet Another Resource Negotiator,另一种资源协调者) 是 Hadoop 2.0 中的资源管理系统,它的基本设计思想是将 MRv1 中的 JobTracker拆分成了两个独立的服务 :一个全局的资源管理器 ResourceMa…

C# GDI+的DrawString无法绘制Tab键的现象

【啰嗦2句】 现在用C#的人很少了吧?GDI更少了吧?所以这个问题估计也冷门。没关系,分享给特定需要的人也不错。 【问题现象】 工作中开发了一个报告编辑器,实现图文排版等功能,用着没什么问题,直到有一天…

最近在盘gitlab.0.先review了一下docker

# 正文 本猿所在产品的代码是保存到了一个本地gitlab实例上,实例是别的同事搭建的。最近又又又想了解一下,而且已经盘了一些了,所以写写记录一下。因为这个事儿没太多的进度压力,索性写到哪儿算哪儿,只要是新了解到的…

春秋云镜——initial

初步认识内网渗透流程 thinkphp外网打点 打开环境后尝试登陆无果,用fscan扫一下看看 fscan.exe -h 39.99.224.87 发现是think PHP漏洞 补充: fscan:一款内网综合扫描工具,方便一键自动化、全方位漏扫扫描。支持主机存活探测、端…

【C++】string的关系运算与比较分析

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯基础知识:C 中的 string 关系运算器1. 关系运算器概述2. 字符串比较的本质 💯代码解析与扩展代码例一:相等比较代码解析输出 代码例二&a…

Qt C++读写NFC标签NDEF网址URI

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.1d292c1biFgjSs&ftt&id615391857885 #include "mainwindow.h" #include "ui_mainwindow.h" #include <QDebug> #include "QLibrary" …

NVIDIA Clara平台助力医学影像处理:编程案例与实践探索(上)

一、引言 1.1 研究背景与意义 在现代医学领域,医学影像技术已然成为疾病诊断、治疗方案制定以及疗效评估的关键支柱。从早期的 X 射线成像,到如今的计算机断层扫描(CT)、磁共振成像(MRI)、正电子发射断层扫描(PET)等先进技术,医学影像为医生提供了直观、精准的人体内…

【硬件介绍】Type-C接口详解

一、Type-C接口概述 Type-C接口特点&#xff1a;以其独特的扁头设计和无需区分正反两面的便捷性而广受欢迎。这种设计大大提高了用户的使用体验&#xff0c;避免了传统USB接口需要多次尝试才能正确插入的问题。Type-C接口内部结构&#xff1a;内部上下两排引脚的设计虽然可能不…