Tensor 里的数据到底是怎么组织的?——Shape、Axis、Batch 一篇讲清

发布时间:2026/9/2 20:56:10

Tensor 里的数据到底是怎么组织的?——Shape、Axis、Batch 一篇讲清
上一篇我们已经知道深度学习模型真正处理的是一块一块的 Tensor。但仅仅知道 Tensor 是什么还远远不够。真正开始接触 PyTorch 后很快就会遇到x.shape x.ndim x.reshape(...) x.unsqueeze(...) x.permute(...)以及各种看起来有点奇怪的数字[3] [32, 3] [3, 224, 224] [32, 3, 224, 224]问题来了这些数字到底代表什么为什么同样是 Tensor有的是一维有的是二维、三维甚至四维为什么有时候只是把几个数字换个位置程序就可能无法正常处理这篇我们就把 Tensor 最核心的几个概念一次讲清Shape、Dimension、Axis、Batch以及常见的 Tensor 变形操作。而且从这一篇开始要慢慢培养一个之后会反复用到的习惯看到 Tensor第一反应先看 Shape。01Shape 到底是什么先看一个最简单的 Tensorimport torch x torch.tensor([ [1, 2, 3], [4, 5, 6] ])它其实就是这样一张数字表1 2 3 4 5 6有2 行 3 列所以print(x.shape)会得到torch.Size([2, 3])也就是Shape [2, 3]可以先把 Shape 理解成这个 Tensor 在每一个维度上分别有多大。Shape 不等于元素数量这里很容易出现一个误区。例如[2, 3]一共有2 × 3 6个元素。而[6]也有 6 个元素。但两者明显不是同一种结构[2, 3] [ [1, 2, 3], [4, 5, 6] ]而[6] [1, 2, 3, 4, 5, 6]所以元素数量相同不代表 Shape 相同。Shape 真正描述的是这些数字是怎样组织起来的。02Dimension 和 Axis 又是什么有了 Shape接下来两个词就很好理解了Dimension Axis还是Shape [2, 3]Shape 里一共有两个数字所以这是一个2D Tensor也就是说Dimension 2与此同时这两个维度分别有自己的编号Axis 0 Axis 1对应Shape [2, 3] ↑ ↑ Axis0 Axis1因此Axis 0 的大小 2 Axis 1 的大小 3可以用一句话区分Shape 看大小Dimension 看总数Axis 看编号。下面这张图把三者放到了一起为什么 Axis 从 0 开始因为 Python 的索引通常就是从 0 开始的。例如Shape [32, 3, 224, 224]那么Axis 0 → 32 Axis 1 → 3 Axis 2 → 224 Axis 3 → 224所以以后看到x.shape[0] x.shape[1]本质上就是查看某一个 Axis 的大小。03Shape 里的数字其实都有自己的“语义”真正重要的不是2 3 32 224这些数字本身。而是每一个位置上的数字到底表示什么。比如我们想描述一个学生。记录三个信息身高 175 cm 体重 65 kg 年龄 20 岁可以写成[175, 65, 20]它的 Shape[3]这里的 3 表示一个样本有 3 个特征。那么如果现在有 32 个学生呢就可以把它们放到一起[ [175, 65, 20], [168, 55, 19], [182, 70, 21], ... ]Shape 就会变成[32, 3]此时Axis 0 → 样本 Axis 1 → 特征也就是说32 个样本每个样本有 3 个特征。而最前面的这个 32就引出了深度学习中另一个非常常见的概念Batch04Batch 到底是什么Batch 中文通常翻译成批次但它本身一点都不复杂。一个学生[175, 65, 20]Shape 是[3]32 个学生放在一起[32, 3]其中32 Batch Size所以可以先用一个非常直观的方式理解Batch 就是把多个样本放到一起处理。对应关系一个样本 [N] ↓ 多个样本 [B, N]其中B Batch N Feature这张图把“一个样本”和“一批样本”的区别画得很直观现在先知道 Batch 是“多个样本放在一起”就足够了。至于为什么模型训练时通常喜欢一批一批处理而不是一条一条处理我们等真正开始学习模型训练时再详细展开。05图片的数据又是怎么组织的前面的学生数据比较简单[32, 3]但图片比它多了一层空间结构。先从灰度图开始。假设一张图片28 × 28每个位置都是一个像素值。那么它可以表示成[28, 28]也就是[H, W]其中H Height W Width所以灰度图本质上可以看成一张二维数字表。06RGB 图片为什么多一个维度彩色图片通常由三个颜色通道组成R Red G Green B Blue因此一张 RGB 图片可以理解为红色信息 绿色信息 蓝色信息所以它的 Shape 不再只是[H, W]而可能是[C, H, W]例如一张224 × 224的 RGB 图片[3, 224, 224]其中3 → Channel 224 → Height 224 → Width07再加一个 Batch 会怎样一张 RGB 图片[3, 224, 224]如果一次放入 32 张[32, 3, 224, 224]也就是[B, C, H, W]对应B → Batch C → Channel H → Height W → Width所以[32, 3, 224, 224]可以直接读成32 张图片每张有 3 个颜色通道每个通道大小为 224 × 224。从灰度图到 RGB再到一批图片可以用下面这张图一次看懂08为什么 Shape 的位置不能随便换来看[32, 3, 224, 224]和[32, 224, 224, 3]里面的元素总数其实完全相同。但是它们表达的数据组织方式并不一样。如果我们约定[B, C, H, W]那么[32, 3, 224, 224]表示32 个样本 3 个 Channel 224 高 224 宽但[32, 224, 224, 3]如果还按照同样的规则解释就会变成32 个样本 224 个 Channel 224 高 3 宽含义已经完全变了。所以一定要建立这个意识Shape 不只是“几个数字”数字所在的位置同样重要。09为什么 Tensor 经常需要“变形”真实的数据并不一定总是以我们想要的形式出现。有时候我们需要[2, 3]变成[6]有时候需要[28, 28]变成[1, 28, 28]还有时候数据本来是[224, 224, 3]我们却需要[3, 224, 224]因此 PyTorch 中有很多专门调整 Shape 的操作。最常见的包括reshape view squeeze unsqueeze transpose permute flatten其实不用一个一个死记。它们大致就在做三件事情重新组织、增加/删除维度、交换维度。10reshape重新组织 Shape例如x torch.tensor([ [1, 2, 3], [4, 5, 6] ]) y x.reshape(6)原来的 Shape[2, 3]现在变成[6]但是数字依然是1 2 3 4 5 6所以可以先把 reshape 理解为元素本身没有凭空增加或减少只是重新组织。例如[2, 3] ↓ [3, 2] ↓ [6]它们的元素总数都是6view 呢PyTorch 中还经常看到x.view(...)入门阶段可以把它和 reshape 理解为同一类操作都是改变 Tensor 的 Shape。它们更细的区别以后真正遇到时再讲不需要现在增加额外负担。11unsqueeze 和 squeeze假设现在[28, 28]想变成[1, 28, 28]可以使用x x.unsqueeze(0)也就是增加一个大小为 1 的维度。反过来[1, 28, 28]变回[28, 28]可以理解成 squeeze去掉大小为 1 的维度。所以unsqueeze → 加一个大小为 1 的 Axis squeeze → 去掉一个大小为 1 的 Axis12transpose 和 permute有时候数据内容没有变化我们只是想交换不同 Axis 的位置。例如[H, W, C]变成[C, H, W]也就是[224, 224, 3] ↓ [3, 224, 224]这时候经常会用到transpose(...)或者permute(...)可以先把它们理解成重新排列维度的顺序。13flatten把多维数据“摊平”比如[2, 3]可以变成[6]原来的[ [1, 2, 3], [4, 5, 6] ]被展开成[1, 2, 3, 4, 5, 6]这就是Flatten。以后学习全连接神经网络时我们会真正看到它为什么有用。现在只需要知道Flatten 的核心就是把多个维度合并起来。如果觉得这些操作容易混可以直接保存下面这张速查图14除了 ShapeTensor 还有 dtypeTensor 不仅要知道长什么样还需要知道里面的数字是什么类型。这就是dtypePyTorch 中可以查看x.dtype常见的例如float32 int64简单理解float32 → 浮点数 int64 → 整数例如1.2 3.5 -0.7属于浮点数。而0 1 2 3可以用整数表示。以后开始训练模型时我们会遇到“为什么某些数据必须是 float某些标签却经常是 int64”这样的问题。现在先知道 dtype 是 Tensor 的一个重要属性即可。15Tensor 还会存在哪里除了Shape dtypeTensor 还有一个很现实的问题它现在存在哪台计算设备上例如CPU或者GPUPyTorch 中可以通过x.device查看。也经常会看到x x.to(device)意思就是把 Tensor 移动到指定设备上。所以到这里可以先建立一个比较完整的 Tensor 认识Tensor │ ├─ 数值 ├─ Shape ├─ dtype └─ device至于为什么深度学习喜欢 GPU、CUDA 又是什么我们等真正开始训练网络时再讲。16真正重要的是建立“Shape 思维”到这里比记住几个 API 更重要的是开始学会读一个 Tensor。例如看到[32, 3]不要只看到32 和 3而是应该问Axis 0 是什么 Axis 1 是什么假如这是[B, N]那么32 → Batch 3 → Feature再看到[32, 3, 224, 224]也应该尝试读成Axis 0 → Batch Axis 1 → Channel Axis 2 → Height Axis 3 → Width这就从“看一串数字”慢慢变成了“看数据结构”。17以后看到一个 Tensor先问这 4 个问题这是我非常建议以后一直保留的习惯。第一步Shape 是什么例如[32, 10]第二步一共有几个 DimensionShape 里有两个数字2D Tensor第三步每个 Axis 分别是什么意思比如Axis 0 → Batch Axis 1 → Feature第四步下一步操作改变了哪个 Axis例如[32, 10] ↓ [32, 64]可以先观察到32 没变 10 → 64也就是说Batch 没变 Feature 发生变化下一篇开始学习神经元和全连接网络之后我们就会真正遇到这种变化。下面这张图可以作为这一篇最后的总结记住一句话不要只看 Tensor 里有几个数字更要看这些数字在描述怎样的数据结构。18这一篇真正需要记住什么这一篇知识点很多但真正需要带走的其实只有下面几件事。① Shape 描述 Tensor 的结构[2, 3]表示第一个维度大小为 2 第二个维度大小为 3② Dimension 看一共有几个维度例如[32, 3, 224, 224]有四个数字所以是4D Tensor③ Axis 是具体某一个维度Axis 0 Axis 1 Axis 2 Axis 3④ Batch 就是把多个样本放到一起一个样本 [N] ↓ 一批样本 [B, N]⑤ 图片通常具有空间维度和 Channel灰度图 [H, W] RGB 图片 [C, H, W] 一批 RGB 图片 [B, C, H, W]⑥ Tensor 的 Shape 可以改变常见操作reshape / view squeeze / unsqueeze transpose / permute flatten但本质都围绕怎样重新组织数据。⑦ 真正应该养成的是 Shape 思维以后拿到一个 Tensor先看 Shape再看每一个 Axis 代表什么。这会成为后面理解神经网络最重要的基本功之一。接下来会学什么到这里我们已经知道 Tensor 是怎样组织数据的也开始建立了 Shape、Axis 和 Batch 的基本认识。接下来我们会正式进入神经网络本身看看一个最基础的神经元到底怎样接收输入、使用权重和偏置并最终得到一个输出。也就是从“数据是什么样的”逐渐走向“这些数据进入神经网络以后到底发生了什么”从这里开始Tensor 就不再只是被我们观察的数据结构而会真正参与到神经网络的计算过程中。‍

相关新闻

资源站源码选型与部署实战:PHP建站、SEO优化到长期运营

资源站源码选型与部署实战:PHP建站、SEO优化到长期运营

2026/9/2 20:56:10

简介:这是一套基于ASP的完整免费资源站源码,面向网站开发初学者、快速建站用户及二次开发者,可帮助快速搭建并理解完整站点。压缩包内包含完整的前端页面、服务端脚本、数据库配置及样式交互文件,共包含1119个相关文件&#xff0c…

AI视频剪辑工作流:语音转文字与提示词驱动的粗剪实战

AI视频剪辑工作流:语音转文字与提示词驱动的粗剪实战

2026/9/2 20:56:10

在实际的视频剪辑流程中,AI剪视频并不是某一款软件里一个神秘的“一键生成”按钮。真正关键的是你喂给它多少有效信息,以及怎样把语音转文字、AI粗剪、字幕生成、音频处理这些能力按顺序组合起来。很多人卡在中间,不是因为工具不会用&#xf…

绝地潜兵2外观替换MOD安装指南:以VRCChocolateShibuyaMaji为例

绝地潜兵2外观替换MOD安装指南:以VRCChocolateShibuyaMaji为例

2026/9/2 20:56:10

《绝地潜兵2》装备外观类MOD里,像“VRCChocolateShibuyaMaji替换IE-12DS-42”这种命名方式,第一眼容易让人懵。它实际做的事情很直接:把游戏里原本的IE-12和DS-42这两件装备外观,替换成一套以VRCChocolateShibuyaMaji为代号风格的…

喷子猛攻流:恶劣天气与周末活动下的近战战术解析

喷子猛攻流:恶劣天气与周末活动下的近战战术解析

2026/9/2 21:56:12

近段时间,在多个战术射击类游戏的玩家讨论里,一个感受越来越明显:当恶劣天气和周末活动同时出现时,常规远距离架枪打法会变得非常难受,反而是平时容易被低估的“喷子猛攻流”,成为了最爽、最有正反馈的选择…

PCB设计丨AUDIO音频接口

PCB设计丨AUDIO音频接口

2026/9/2 21:56:12

音频接口(audio interface)是连接麦克风、其他声源和计算机的设备,它可以在模拟信号和数字信号之间起到桥梁连接的作用。主要作用是将模拟信号转换为数字信号,并将其传输到计算机中进行处理、编辑或录制。同时,音频接口…

恶劣天气与周末活动下的喷子猛攻流:核心逻辑与实战指南

恶劣天气与周末活动下的喷子猛攻流:核心逻辑与实战指南

2026/9/2 21:56:12

最近很多玩家社群都在讨论一个很有意思的现象:为什么每逢天气恶劣的周末,某种激进的近距离打法会突然变得特别强势,甚至被大家称为“最爽最有正反馈的打法”?其实这背后并不只是运气好,而是天气系统、活动节奏和打法特…

尼亚加拉瀑布周边游:小鸟王国室内观鸟园体验与攻略

尼亚加拉瀑布周边游:小鸟王国室内观鸟园体验与攻略

2026/9/2 21:56:12

这次安排加拿大Niagara Falls周边游,我把Bird Kingdom也就是尼亚加拉小鸟王国,专门排进了行程。很多朋友一听到“鸟园”会下意识以为又是隔着笼子看鸟,但这一站不太一样:它主打室内自由飞行,鸟可以在你头顶、身边、甚至…

AI人才争夺战背后:工程化能力才是技术人的真正护城河

AI人才争夺战背后:工程化能力才是技术人的真正护城河

2026/9/2 21:56:12

台积电 2026 年第二季度奖金约 360 亿新台币、同比增 50.6% 的消息,放在大多数技术人眼里,第一反应可能是“别人家的公司”。但我看到这则新闻时,更在意的是另一层含义:AI 人才争夺已经不只是互联网公司之间的“抢人”&#xff0c…

奥比中光摄像头SDK实战:从深度数据到体感游戏开发指南

奥比中光摄像头SDK实战:从深度数据到体感游戏开发指南

2026/9/2 21:46:12

简介:奥比中光摄像头开发工具包面向嵌入式视觉、安卓与人工智能开发者,集成驱动、接口库、示例代码和文档,帮助快速完成深度图与点云数据的采集和处理,适用于三维建模、机器人导航、增强现实等场景。资源共 2549 个文件&#xff0…

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

2026/9/2 10:08:07

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

2026/9/2 12:11:52

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

2026/9/1 23:49:08

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

单片机毕业设计-基于单片机与蓝牙通讯的输液状态监测终端设计与开发 基于 STM32 或 51 单片机的液位‑滴速‑温度多参数输液监护装置设计(024005)

单片机毕业设计-基于单片机与蓝牙通讯的输液状态监测终端设计与开发 基于 STM32 或 51 单片机的液位‑滴速‑温度多参数输液监护装置设计(024005)

2026/9/2 0:04:59

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

DeepSeek字幕翻译实战:从API调用到批量SRT转中文的完整方案

DeepSeek字幕翻译实战:从API调用到批量SRT转中文的完整方案

2026/9/2 0:04:59

这次我们来看一个很实用的 DeepSeek 落地场景:用 DeepSeek 把英文视频字幕自动翻译成中文。具体案例是《恶魔君》1989 年第 28 集的英转中字幕任务,标题写得很直白,但背后其实是一整套可以复用的技术流程:字幕解析、模型调用、批量…

用Python搭建搞笑语音助手:从语音识别到语音合成全教程

用Python搭建搞笑语音助手:从语音识别到语音合成全教程

2026/9/2 0:04:59

当你家里摆着一台天猫精灵,却总希望语音助手偶尔“不正经”一点,不用官方腔回答问题,而是张口就接几句搞笑段子,会是什么体验?我最近动手验证了一下这个想法——没有去改装任何市面上现有的智能音箱,而是直…

远程协作的工作台整理

远程协作的工作台整理

2026/9/2 6:21:32

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/2 6:21:32

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/2 2:45:06

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…