数据维度

维度是什么

维度=数据需要“几个”索引才能定位到一个元素,也叫做轴数(axis)或阶(rank)。

可以看成"套盒子"的层数,盒子里面装盒子,再装数字。每多一层外括号/分类,就多一维。

0维=一个数;1维=一排数;2维=表格;3维=一摞表格;更高维=外面再套一层一层分类;

判断有几个维度的方法

  • 获取一个元素需要几个索引才能定位到。
  • 多一层外括号=多一维;形状从外到内写“有多少个”。(外层是更粗粒度的分类,写在前面,如小批量彩色图像 (B, C, H, W);批次B、通道C、高H、宽W)
1D: ──●──●──●──           一条线
2D:   行×列                 一张表
     ┌───────┐
     │● ● ● │
     │● ● ● │
     └───────┘
3D: 多张2D表叠成“砖块”

从0到多维的例子

0维(标量):单个数

42
  • 标量 shape:(), 只要“指它自己”就能找到,例:体温36.5。

1维(向量):一排数

[3, 5, 8]
  • 向量shape:(N),需要1个索引(第几个)才能定位。

2维(矩阵/表格):多排多列

[ [1, 2, 3],
  [4, 5, 6]
  [7, 8, 9]]
  • 矩阵shape:(R,C),需要2个索引(第几行,第几列)才能定位到。

3维度(立体):多张矩阵堆叠

[ [[1,2,3],
  [4,5,6]],
 [[7,8,9],
[11,12,13]] ]

或

层0: [ [...], [...], ... ]
层1: [ [...], [...], ... ]
...
  • 立体shape:(D,R,C),需要3个索引(第几层、第几行、第几列)才能定位到。

n维(张量):继续外面套一层索引

  • 如4维度,小批量彩色图像 (B, C, H, W);批次B、通道C、高H、宽W

深度学习场景维度含义

  • 图像/CNN:(B,C,H,W),B为batch个数,C为图像通道,H为图像高度,W为图像宽度。

  • 文本/transformer:(B,S,C),Batch size,批大小。一次前向里同时处理的样本数。S有时也写作L,Sequence length,序列长度/时间步数(NLP 的 token 数、语音/时序的帧数)。在图像等场景里,若把二维特征展平成序列,也可表示展平后的步数。Channels/Features,特征维度。NLP 里常指 embedding 或 d_model;CV 里指通道数;时序里指每步的特征维度。[B, S, C] 通常表示“B 个样本,每个样本有 S 个时间步/位置,每个时间步有 C 维特征”。

怎么理解C(特征维/通道数)?

在一个张量形状 [B, S, C] 中,C 表示“每个位置(序列中的每个 token/时间步)所携带的特征向量维度”。也就是“描述一个位置所需的数值属性个数”。

  • 表达能力上限: C 越大,单个位置能承载的信息越丰富(更“宽”的向量空间),可拟合更复杂的模式。
  • 稳定性与信息瓶颈: 太小的 C 可能造成信息瓶颈,难以表达远距离依赖或复杂结构。
  • 计算与显存代价: 层内线性/注意力的主计算大多与 C^2 成正比,激活占用与 BLC 成正比。增大 C 会显著提高计算/显存成本。
x.dim()        # 轴数,也就是多少个维度。
x.shape        # 形状,如 (B,L,C)
x.size(-1)     # 最后一维长度