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

news2025/1/10 16:16:59

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

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

  • 形状

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

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 中创建张量的各种方式。

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

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

相关文章

积分与签到设计

积分 在交互系统中,可以通过看视频、发评论、点赞、签到等操作获取积分,获取的积分又可以参与排行榜、兑换优惠券等,提高用户使用系统的积极性,实现引流。这些功能在很多项目中都很常见,关于功能的实现我的思路如下。 …

vue实现虚拟列表滚动

<template> <div class"cont"> //box 视图区域Y轴滚动 滚动的是box盒子 滚动条显示的也是因为box<div class"box">//itemBox。 一个空白的盒子 计算高度为所有数据的高度 固定每一条数据高度为50px<div class"itemBox" :st…

IEC61850遥控-增强安全选控是什么?

摘要&#xff1a;遥控服务是IEC61850协议中非常重要的一项服务&#xff0c;其通常会被应用在电源开关、指示灯、档位调节等器件的操作。 遥控是一类比较特殊的操作&#xff0c;其通过远程方式操作指定的设备器件&#xff0c;在一些重要的场景中需要有严谨的机制来进行约束&…

【Uniapp-Vue3】创建自定义页面模板

大多数情况下我们都使用的是默认模板&#xff0c;但是默认模板是Vue2格式的&#xff0c;如果我们想要定义一个Vue3模板的页面就需要自定义。 一、我们先复制下面的模板代码&#xff08;可根据自身需要进行修改&#xff09;&#xff1a; <template><view class"…

如何操作github,gitee,gitcode三个git平台建立镜像仓库机制,这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈

如何操作github&#xff0c;gitee&#xff0c;gitcode三个git平台建立镜像仓库机制&#xff0c;这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈 问题背景 由于我司最早期19年使用的是gitee&#xff0c;因此大部分仓库都在gitee有几百个库的代码&#xff0c;…

QThread多线程详解

本文结构如下 文章目录 本文结构如下 1.概述2.开始多线程之旅2.1应该把耗时代码放在哪里&#xff1f;2.2再谈moveToThread() 3.启动线程前的准备工作3.1开多少个线程比较合适&#xff1f;3.2设置栈大小 4.启动线程/退出线程4.1启动线程4.2优雅的退出线程 5.操作运行中的线程5.1…

深度学习数据集有没有规范或指导意见,数据集的建立都需要做哪些研究工作?

一、数据集的核心原则是什么&#xff1f; 数据集的目标&#xff1a;它需要回答“你要解决什么问题&#xff1f;” 在构建数据集之前&#xff0c;最重要的不是去采集数据&#xff0c;而是明确目标&#xff1a; 你的模型是要做图像分类&#xff0c;还是目标检测&#xff1f;是要…

前端for循环遍历——foreach、map使用

title: 前端不同类型的for循环遍历——foreach、map date: 2025-01-04 11:02:17 tags: javascript 前端不同类型的for循环遍历 场景&#xff1a;很多时候后端发来的数据是不能够完全契合前端的需求的&#xff0c;比如你要一个数据对象中的值&#xff0c;但是这个值却作为了ke…

MR30分布式 IO 在物流分拣线的卓越应用

在当今物流行业高速发展的时代&#xff0c;物流分拣线的高效与精准运作至关重要&#xff0c;而其中对于货物点数较多情况下的有效控制更是一大关键环节。明达技术MR30分布式 IO 系统凭借其独特的优势&#xff0c;在物流分拣线中大放异彩&#xff0c;为实现精准的点数控制提供了…

5 分布式ID

这里讲一个比较常用的分布式防重复的ID生成策略&#xff0c;雪花算法 一个用户体量比较大的分布式系统必然伴随着分表分库&#xff0c;分机房部署&#xff0c;单体的部署方式肯定是承载不了这么大的体量。 雪花算法的结构说明 如下图所示: 雪花算法组成 从上图我们可以看…

Android wifi常见问题及分析

参考 Android Network/WiFi 那些事儿 前言 本文将讨论几个有意思的网络问题&#xff0c;同时介绍 Android 上常见WiFi 问题的分析思路。 网络基础Q & A 一. 网络分层缘由 分层想必大家很熟悉&#xff0c;是否想过为何需要这样分层&#xff1f; 网上大多都是介绍每一层…

音视频入门基础:MPEG2-PS专题(6)——FFmpeg源码中,获取PS流的视频信息的实现

音视频入门基础&#xff1a;MPEG2-PS专题系列文章&#xff1a; 音视频入门基础&#xff1a;MPEG2-PS专题&#xff08;1&#xff09;——MPEG2-PS官方文档下载 音视频入门基础&#xff1a;MPEG2-PS专题&#xff08;2&#xff09;——使用FFmpeg命令生成ps文件 音视频入门基础…

读书笔记:分布式系统原理介绍

写在前面 已经大概三个月左右没有更新博客了&#xff0c;哈哈哈哈&#xff1b; 此博客是笔者在对《分布式系统原理介绍》进行概述&#xff0c;对于整个分布式系统协议的理解基于一些量化的指标考虑了数据的分布副本协议&#xff08;中心化/去中心化&#xff09;进行了总结&…

Dexcap复现代码数据预处理全流程(四)——demo_clipping_3d.py

此脚本的主要功能是可视化点云数据文件&#xff08;.pcd 文件&#xff09;&#xff0c;并通过键盘交互选择演示数据的起始帧和结束帧&#xff0c;生成片段标记文件 (clip_marks.json) 主要流程包括&#xff1a; 用户指定数据目录&#xff1a;检查目录是否存在并处理标记文件 -…

MBM指尖六维力触觉传感器:高灵敏度、低漂移,精准掌控力学世界

MBM指尖六维力触觉传感器是一种专为机器人设计的高性能传感器。它通过集成三轴力和三轴力矩的感知能力&#xff0c;能够精准捕捉复杂的力学信息。传感器采用MEMS与应变体复合测量技术&#xff0c;具备数字输出功能&#xff0c;显著降低漂移并减少安装偏移的影响。其紧凑轻便的设…

C#,图论与图算法,任意一对节点之间最短距离的弗洛伊德·沃肖尔(Floyd Warshall)算法与源程序

一、弗洛伊德沃肖尔算法 Floyd-Warshall算法是图的最短路径算法。与Bellman-Ford算法或Dijkstra算法一样&#xff0c;它计算图中的最短路径。然而&#xff0c;Bellman Ford和Dijkstra都是单源最短路径算法。这意味着他们只计算来自单个源的最短路径。另一方面&#xff0c;Floy…

为答疑机器人扩展问题分类与路由功能

1.意图识别 2. 构建路由模块 简单的意图识别 from chatbot import llmfrom config.load_key import load_key load_key()prompt 【角色背景】 你是一个问题分类路由器&#xff0c;需要识别问题的类型。 --- 【任务要求】 问题的类型目前有&#xff1a;公司内部文档查询、内…

spring boot启动源码分析(三)之Environment准备

上一篇《spring-boot启动源码分析&#xff08;二&#xff09;之SpringApplicationRunListener》 环境介绍&#xff1a; spring boot版本&#xff1a;2.7.18 主要starter:spring-boot-starter-web 本篇开始讲启动过程中Environment环境准备&#xff0c;Environment是管理所有…

Pandas-RFM会员价值度模型

文章目录 一. 会员价值度模型介绍二. RFM计算与显示1. 背景2. 技术点3. 数据4. 代码① 导入模块② 读取数据③ 数据预处理Ⅰ. 数据清洗, 即: 删除缺失值, 去掉异常值.Ⅱ. 查看清洗后的数据Ⅲ. 把前四年的数据, 拼接到一起 ④ 计算RFM的原始值⑤ 确定RFM划分区间⑥ RFM计算过程⑦…

【理论】测试框架体系TDD、BDD、ATDD、DDT介绍

一、测试框架是什么 测试框架是一组用于创建和设计测试用例的指南或规则。框架由旨在帮助 QA 专业人员更有效地测试的实践和工具的组合组成。 这些指南可能包括编码标准、测试数据处理方法、对象存储库、存储测试结果的过程或有关如何访问外部资源的信息。 A testing framewo…